jz2440: linux/arch/arm/下面的plat和mach
plat-s3c24xx
mach-s3c2440mach-s3c2410======================
1. 三星这样分层的理由是s3c系列的soc具有一定的共通性, plat-实现了一些较通用的封装, 这些封装的具体参数一般是宏, 这些宏如寄存器地址可能是在mach-里面被定义; linux/arch/arm/plat-s3c24xx/common-smdk.c static struct s3c24xx_led_platdata smdk_pdata_led5 = { .gpio = S3C2410_GPF5, .flags = S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE, .name = "led5", .def_trigger = "nand-disk", }; linux/include/asm-arm/arch-s3c2410/regs-gpio.h #define S3C2410_GPF5 S3C2410_GPIONO(S3C2410_GPIO_BANKF, 5) 2. 原则上是把所有s3c系列共同的东西放在 plat-里面去, 具体的io或者比较有mach-特色的部分放到mach-里面; 改板时, 实际上大多是直接在mach-里面增删自己的功能. (不按三星预设方案的改动除外) plat里面需要动的相对更少, 不过在linux/arch/arm/plat-s3c24xx/common-smdk.c里面, 我们可以根据实际情形来分配nand的分区(修改static struct mtd_partition smdk_default_nand_part[] );3. 编译时,一般只会选中一个特定的mach-, mach-会调用plat-的功能具体实现平台的资源和设备初始化. 上面是大体的分析, 仅供参考.