Если struct device *hwdev
указывает на ваше оборудование struct device
(например, если hwdev
указывает на dev
член struct platform_device
), то этот фрагмент иллюстрирует, как получить доступ к узлу дерева устройств зарезервированногообласть памяти и преобразовать ее в struct resource
.
struct device_node *memnp;
struct resource mem_res;
int rc;
/* Get pointer to memory region device node from "memory-region" phandle. */
memnp = of_parse_phandle(hwdev->of_node, "memory-region", 0);
if (!memnp) {
dev_err(hwdev, "no memory-region node\n");
rc = -ENXIO;
goto err1;
}
/* Convert memory region to a struct resource */
rc = of_address_to_resource(memnp, 0, &mem_res);
/* finished with memnp */
of_node_put(memnp);
if (rc) {
dev_err(hwdev, "failed to translate memory-region to a resource\n");
goto err1;
}
Начальный адрес заканчивается на mem_res.start
, а длина задается как resource_size(&mem_res);
.