static void __init vulcan_init(void) { ixp4xx_sys_init(); vulcan_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); vulcan_flash_resource.end = IXP4XX_EXP_BUS_BASE(0) + SZ_32M - 1; *IXP4XX_EXP_CS0 = IXP4XX_EXP_BUS_CS_EN | IXP4XX_EXP_BUS_STROBE_T(3) | IXP4XX_EXP_BUS_SIZE(0xF) | IXP4XX_EXP_BUS_BYTE_RD16 | IXP4XX_EXP_BUS_WR_EN; *IXP4XX_EXP_CS1 = *IXP4XX_EXP_CS0; vulcan_sram_resource.start = IXP4XX_EXP_BUS_BASE(2); vulcan_sram_resource.end = IXP4XX_EXP_BUS_BASE(2) + SZ_256K - 1; *IXP4XX_EXP_CS2 = IXP4XX_EXP_BUS_CS_EN | IXP4XX_EXP_BUS_STROBE_T(1) | IXP4XX_EXP_BUS_HOLD_T(2) | IXP4XX_EXP_BUS_SIZE(9) | IXP4XX_EXP_BUS_SPLT_EN | IXP4XX_EXP_BUS_WR_EN | IXP4XX_EXP_BUS_BYTE_EN; vulcan_uart_resources[2].start = IXP4XX_EXP_BUS_BASE(3); vulcan_uart_resources[2].end = IXP4XX_EXP_BUS_BASE(3) + 16 - 1; vulcan_uart_data[2].mapbase = vulcan_uart_resources[2].start; vulcan_uart_data[3].mapbase = vulcan_uart_data[2].mapbase + 8; *IXP4XX_EXP_CS3 = IXP4XX_EXP_BUS_CS_EN | IXP4XX_EXP_BUS_STROBE_T(3) | IXP4XX_EXP_BUS_CYCLES(IXP4XX_EXP_BUS_CYCLES_MOTOROLA)| IXP4XX_EXP_BUS_WR_EN | IXP4XX_EXP_BUS_BYTE_EN; *IXP4XX_EXP_CS4 = IXP4XX_EXP_BUS_CS_EN | IXP4XX_EXP_BUS_WR_EN | IXP4XX_EXP_BUS_BYTE_EN; vulcan_max6369_resource.start = IXP4XX_EXP_BUS_BASE(5); vulcan_max6369_resource.end = IXP4XX_EXP_BUS_BASE(5); *IXP4XX_EXP_CS5 = IXP4XX_EXP_BUS_CS_EN | IXP4XX_EXP_BUS_WR_EN | IXP4XX_EXP_BUS_BYTE_EN; platform_add_devices(vulcan_devices, ARRAY_SIZE(vulcan_devices)); }
static void __init vulcan_init(void) { ixp4xx_sys_init(); /* Flash is spread over both CS0 and CS1 */ vulcan_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); vulcan_flash_resource.end = IXP4XX_EXP_BUS_BASE(0) + SZ_32M - 1; *IXP4XX_EXP_CS0 = IXP4XX_EXP_BUS_CS_EN | IXP4XX_EXP_BUS_STROBE_T(3) | IXP4XX_EXP_BUS_SIZE(0xF) | IXP4XX_EXP_BUS_BYTE_RD16 | IXP4XX_EXP_BUS_WR_EN; *IXP4XX_EXP_CS1 = *IXP4XX_EXP_CS0; /* SRAM on CS2, (256kB, 8bit, writable) */ vulcan_sram_resource.start = IXP4XX_EXP_BUS_BASE(2); vulcan_sram_resource.end = IXP4XX_EXP_BUS_BASE(2) + SZ_256K - 1; *IXP4XX_EXP_CS2 = IXP4XX_EXP_BUS_CS_EN | IXP4XX_EXP_BUS_STROBE_T(1) | IXP4XX_EXP_BUS_HOLD_T(2) | IXP4XX_EXP_BUS_SIZE(9) | IXP4XX_EXP_BUS_SPLT_EN | IXP4XX_EXP_BUS_WR_EN | IXP4XX_EXP_BUS_BYTE_EN; /* XR16L2551 on CS3 (Moto style, 512 bytes, 8bits, writable) */ vulcan_uart_resources[2].start = IXP4XX_EXP_BUS_BASE(3); vulcan_uart_resources[2].end = IXP4XX_EXP_BUS_BASE(3) + 16 - 1; vulcan_uart_data[2].mapbase = vulcan_uart_resources[2].start; vulcan_uart_data[3].mapbase = vulcan_uart_data[2].mapbase + 8; *IXP4XX_EXP_CS3 = IXP4XX_EXP_BUS_CS_EN | IXP4XX_EXP_BUS_STROBE_T(3) | IXP4XX_EXP_BUS_CYCLES(IXP4XX_EXP_BUS_CYCLES_MOTOROLA)| IXP4XX_EXP_BUS_WR_EN | IXP4XX_EXP_BUS_BYTE_EN; /* GPIOS on CS4 (512 bytes, 8bits, writable) */ *IXP4XX_EXP_CS4 = IXP4XX_EXP_BUS_CS_EN | IXP4XX_EXP_BUS_WR_EN | IXP4XX_EXP_BUS_BYTE_EN; /* max6369 on CS5 (512 bytes, 8bits, writable) */ vulcan_max6369_resource.start = IXP4XX_EXP_BUS_BASE(5); vulcan_max6369_resource.end = IXP4XX_EXP_BUS_BASE(5); *IXP4XX_EXP_CS5 = IXP4XX_EXP_BUS_CS_EN | IXP4XX_EXP_BUS_WR_EN | IXP4XX_EXP_BUS_BYTE_EN; platform_add_devices(vulcan_devices, ARRAY_SIZE(vulcan_devices)); }
static void __init ixdp425_init(void) { ixp4xx_sys_init(); ixdp425_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); ixdp425_flash_resource.end = IXP4XX_EXP_BUS_BASE(0) + ixp4xx_exp_bus_size - 1; #if defined(CONFIG_MTD_NAND_PLATFORM) || \ defined(CONFIG_MTD_NAND_PLATFORM_MODULE) ixdp425_flash_nand_resource.start = IXP4XX_EXP_BUS_BASE(3), ixdp425_flash_nand_resource.end = IXP4XX_EXP_BUS_BASE(3) + 0x10 - 1; gpio_line_config(IXDP425_NAND_NCE_PIN, IXP4XX_GPIO_OUT); /* Configure expansion bus for NAND Flash */ *IXP4XX_EXP_CS3 = IXP4XX_EXP_BUS_CS_EN | IXP4XX_EXP_BUS_STROBE_T(1) | /* extend by 1 clock */ IXP4XX_EXP_BUS_CYCLES(0) | /* Intel cycles */ IXP4XX_EXP_BUS_SIZE(0) | /* 512bytes addr space*/ IXP4XX_EXP_BUS_WR_EN | IXP4XX_EXP_BUS_BYTE_EN; /* 8 bit data bus */ #endif if (cpu_is_ixp43x()) { ixdp425_uart.num_resources = 1; ixdp425_uart_data[1].flags = 0; } platform_add_devices(ixdp425_devices, ARRAY_SIZE(ixdp425_devices)); }