Необходимость и использование devm_ioremap_resource - PullRequest
0 голосов
/ 23 января 2020

Я работал над linux iTCO-wdt. c драйвером (linux ядро ​​4.14.44 hw watchdog драйвер) и в итоге пришел к вызову devm_ioremap_resource () :

p->gcs_pmc = devm_ioremap_resource(dev, p->gcs_pmc_res);

Ресурс является регистром в физическом расположении 0xfdcf000 c. Я понял все предыдущее назначение ресурсов, сделанное в i2 c -i801. c, но не знаю, зачем нужно такое переназначение. Действительно, ищите код в Coreboot, который управляет той же подсистемой (в src / soc / intel / denverton_ns / include / soc / romstage. c)

MMIO32_OR(PCH_PCR_ADDRESS(PID_SMB, PCR_SMBUS_GC),(uint32_t)PCR_SMBUS_GC_NR);

макросы расширяются до тот же физический адрес, что и выше, и переназначение не выполняется, и он работает просто отлично. Если я распечатаю адрес, полученный в результате переназначения выше, я получу другой адрес, который иногда меняется от запуска к запуску (т. Е. 0x0x00d2900 c, 0x80d2900 c, 0xc0d2900 c). Почему такое переназначение, какова его цель?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...