ARM Linux静态映射分析(5)

void __init s3c2410_map_io(struct map_desc *mach_desc, int mach_size)
        {
                /* register our io-tables */

iotable_init(s3c2410_iodesc, ARRAY_SIZE(s3c2410_iodesc));
                iotable_init(mach_desc, mach_size);
        }

接下来看结构s3c2410_iodesc [arch/arm/mach-s3c2410/s3c2410.c],代码如下,

/* Initial IO mappings */
        static struct map_desc s3c2410_iodesc[] __initdata = {
                IODESC_ENT(USBHOST),
                IODESC_ENT(USBDEV),
                IODESC_ENT(CLKPWR),
                IODESC_ENT(LCD),
                IODESC_ENT(TIMER),
                IODESC_ENT(ADC),
                IODESC_ENT(WATCHDOG),
        };

赫然发现IODESC_ENT(TIMER)这一行,结合之前GPIO的类似分析,IODESC_ENT宏如下:
        #define IODESC_ENT(x) { (unsigned long)S3C24XX_VA_##x, S3C2410_PA_##x, S3C24XX_SZ_##x, MT_DEVICE }

至此,TIMER, USBHOST,USBDEV,lcd,adc,watchdog等的静态映射都看得很明白了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwxfzf.html