TS-7200 CF glue bits from dwery. Index: linux-2.6.16/arch/arm/mach-ep93xx/ts72xx.c =================================================================== --- linux-2.6.16.orig/arch/arm/mach-ep93xx/ts72xx.c +++ linux-2.6.16/arch/arm/mach-ep93xx/ts72xx.c @@ -111,6 +111,35 @@ static void __init ts72xx_map_io(void) } } +static struct resource ts7200_cf_resources[] = { + [0] = { + .start = TS7200_CF_CTRL_PHYS_BASE, + .end = TS7200_CF_CTRL_PHYS_BASE + 7, + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = TS7200_CF_AUX_PHYS_BASE, + .end = TS7200_CF_AUX_PHYS_BASE + 1, + .flags = IORESOURCE_MEM, + }, + [2] = { + .start = TS7200_CF_DATA_PHYS_BASE, + .end = TS7200_CF_DATA_PHYS_BASE + 2, + .flags = IORESOURCE_MEM, + }, +}; + +static struct platform_device ts7200_cf_device = { + .name = "ts7200-cf", + .id = -1, + .dev = { + .dma_mask = (void *)0xffffffff, + .coherent_dma_mask = 0xffffffff, + }, + .num_resources = ARRAY_SIZE(ts7200_cf_resources), + .resource = ts7200_cf_resources, +}; + static unsigned char ts72xx_rtc_readb(unsigned long addr) { __raw_writeb(addr, TS72XX_RTC_INDEX_VIRT_BASE); @@ -140,8 +169,10 @@ static struct platform_device ts72xx_rtc static void __init ts72xx_init_machine(void) { ep93xx_init_devices(); - if (board_is_ts7200()) + if (board_is_ts7200()) { physmap_configure(TS72XX_NOR_PHYS_BASE, 0x01000000, 1, NULL); + platform_device_register(&ts7200_cf_device); + } platform_device_register(&ts72xx_rtc_device); } Index: linux-2.6.16/include/asm-arm/arch-ep93xx/ts72xx.h =================================================================== --- linux-2.6.16.orig/include/asm-arm/arch-ep93xx/ts72xx.h +++ linux-2.6.16/include/asm-arm/arch-ep93xx/ts72xx.h @@ -59,6 +59,17 @@ #define TS72XX_NAND_BUSY_VIRT_BASE 0xfebfa000 #define TS72XX_NAND_BUSY_SIZE 0x00001000 +/* TS7200 CF memory map: + * + * phys size description + * 11000001 7 CF registers (8-bit) + * 10400006 2 CF aux registers (8-bit) + * 21000000 2 CF data register (16-bit) + */ + +#define TS7200_CF_CTRL_PHYS_BASE 0x11000001 +#define TS7200_CF_AUX_PHYS_BASE 0x10400006 +#define TS7200_CF_DATA_PHYS_BASE 0x21000000 #define TS72XX_RTC_INDEX_VIRT_BASE 0xfebf9000 #define TS72XX_RTC_INDEX_PHYS_BASE 0x10800000