Вам нужно переназначить область памяти чем-то вроде ioremap () после того, как вы ее запросили.
Затем, как упоминали Цыварев и другие, создайте и экспортируйте функцию в свой «родительский» драйвер, который возвращаетmapped memory.
Вот примерный код:
void * mapped_mem;
void * map_addr(unsigned int phy_addr, char * name) {
struct resource * resource;
void * mapped_mem;
resource = request_mem_region(phy_addr, page_size * 4, name);
// check for errors
mapped_mem= ioremap_nocache(phy_addr, page_size * 4);
// check for errors
return mappedMem;
//handle errors
}
void * get_mapped_addr(void) {
return mapped_mem
}
EXPORT_SYMBOL( get_mapped_addr);
Теперь mapped_mem должен отслеживаться как часть личной информации вашего устройства, но я думаю, что это выходит за рамки вопроса.Также не забудьте проверить все возможные ошибки.Убедитесь, что request_mem_region () возвращает что-то> 0, а не Null.