Loading arch/arm/Kconfig +1 −1 Original line number Diff line number Diff line Loading @@ -441,7 +441,7 @@ config ARCH_ORION5X help Support for the following Marvell Orion 5x series SoCs: Orion-1 (5181), Orion-VoIP (5181L), Orion-NAS (5182), Orion-2 (5281). Orion-2 (5281), Orion-1-90 (6183). config ARCH_PNX4008 bool "Philips Nexperia PNX4008 Mobile" Loading arch/arm/configs/orion5x_defconfig +3 −0 Original line number Diff line number Diff line Loading @@ -176,14 +176,17 @@ CONFIG_MACH_KUROBOX_PRO=y CONFIG_MACH_DNS323=y CONFIG_MACH_TS209=y CONFIG_MACH_LINKSTATION_PRO=y CONFIG_MACH_LINKSTATION_MINI=y CONFIG_MACH_TS409=y CONFIG_MACH_WRT350N_V2=y CONFIG_MACH_TS78XX=y CONFIG_MACH_MV2120=y CONFIG_MACH_EDMINI_V2=y CONFIG_MACH_MSS2=y CONFIG_MACH_WNR854T=y CONFIG_MACH_RD88F5181L_GE=y CONFIG_MACH_RD88F5181L_FXO=y CONFIG_MACH_RD88F6183AP_GE=y # # Boot options Loading arch/arm/mach-kirkwood/addr-map.c +8 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ struct mbus_dram_target_info kirkwood_mbus_dram_info; static int __initdata win_alloc_count; static int __init cpu_win_can_remap(int win) { Loading Loading @@ -111,6 +112,8 @@ void __init kirkwood_setup_cpu_mbus(void) setup_cpu_win(2, KIRKWOOD_NAND_MEM_PHYS_BASE, KIRKWOOD_NAND_MEM_SIZE, TARGET_DEV_BUS, ATTR_DEV_NAND, -1); win_alloc_count = 3; /* * Setup MBUS dram target info. */ Loading @@ -137,3 +140,8 @@ void __init kirkwood_setup_cpu_mbus(void) } kirkwood_mbus_dram_info.num_cs = cs; } void __init kirkwood_setup_sram_win(u32 base, u32 size) { setup_cpu_win(win_alloc_count++, base, size, 0x03, 0x00, -1); } arch/arm/mach-kirkwood/common.c +65 −19 Original line number Diff line number Diff line Loading @@ -98,7 +98,6 @@ void __init kirkwood_ehci_init(void) * GE00 ****************************************************************************/ struct mv643xx_eth_shared_platform_data kirkwood_ge00_shared_data = { .t_clk = KIRKWOOD_TCLK, .dram = &kirkwood_mbus_dram_info, }; Loading @@ -108,6 +107,11 @@ static struct resource kirkwood_ge00_shared_resources[] = { .start = GE00_PHYS_BASE + 0x2000, .end = GE00_PHYS_BASE + 0x3fff, .flags = IORESOURCE_MEM, }, { .name = "ge00 err irq", .start = IRQ_KIRKWOOD_GE00_ERR, .end = IRQ_KIRKWOOD_GE00_ERR, .flags = IORESOURCE_IRQ, }, }; Loading @@ -117,7 +121,7 @@ static struct platform_device kirkwood_ge00_shared = { .dev = { .platform_data = &kirkwood_ge00_shared_data, }, .num_resources = 1, .num_resources = ARRAY_SIZE(kirkwood_ge00_shared_resources), .resource = kirkwood_ge00_shared_resources, }; Loading Loading @@ -201,7 +205,6 @@ void __init kirkwood_sata_init(struct mv_sata_platform_data *sata_data) * SPI ****************************************************************************/ static struct orion_spi_info kirkwood_spi_plat_data = { .tclk = KIRKWOOD_TCLK, }; static struct resource kirkwood_spi_resources[] = { Loading Loading @@ -239,7 +242,7 @@ static struct plat_serial8250_port kirkwood_uart0_data[] = { .flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF, .iotype = UPIO_MEM, .regshift = 2, .uartclk = KIRKWOOD_TCLK, .uartclk = 0, }, { }, }; Loading Loading @@ -283,7 +286,7 @@ static struct plat_serial8250_port kirkwood_uart1_data[] = { .flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF, .iotype = UPIO_MEM, .regshift = 2, .uartclk = KIRKWOOD_TCLK, .uartclk = 0, }, { }, }; Loading Loading @@ -525,9 +528,23 @@ void __init kirkwood_xor1_init(void) /***************************************************************************** * Time handling ****************************************************************************/ int kirkwood_tclk; int __init kirkwood_find_tclk(void) { u32 dev, rev; kirkwood_pcie_id(&dev, &rev); if (dev == MV88F6281_DEV_ID && rev == MV88F6281_REV_A0) return 200000000; return 166666667; } static void kirkwood_timer_init(void) { orion_time_init(IRQ_KIRKWOOD_BRIDGE, KIRKWOOD_TCLK); kirkwood_tclk = kirkwood_find_tclk(); orion_time_init(IRQ_KIRKWOOD_BRIDGE, kirkwood_tclk); } struct sys_timer kirkwood_timer = { Loading @@ -538,33 +555,62 @@ struct sys_timer kirkwood_timer = { /***************************************************************************** * General ****************************************************************************/ /* * Identify device ID and revision. */ static char * __init kirkwood_id(void) { switch (readl(DEVICE_ID) & 0x3) { case 0: return "88F6180"; case 1: return "88F6192"; case 2: return "88F6281"; u32 dev, rev; kirkwood_pcie_id(&dev, &rev); if (dev == MV88F6281_DEV_ID) { if (rev == MV88F6281_REV_Z0) return "MV88F6281-Z0"; else if (rev == MV88F6281_REV_A0) return "MV88F6281-A0"; else return "MV88F6281-Rev-Unsupported"; } else if (dev == MV88F6192_DEV_ID) { if (rev == MV88F6192_REV_Z0) return "MV88F6192-Z0"; else if (rev == MV88F6192_REV_A0) return "MV88F6192-A0"; else return "MV88F6192-Rev-Unsupported"; } else if (dev == MV88F6180_DEV_ID) { if (rev == MV88F6180_REV_A0) return "MV88F6180-Rev-A0"; else return "MV88F6180-Rev-Unsupported"; } else { return "Device-Unknown"; } return "unknown 88F6000 variant"; } static int __init is_l2_writethrough(void) static void __init kirkwood_l2_init(void) { return !!(readl(L2_CONFIG_REG) & L2_WRITETHROUGH); #ifdef CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH writel(readl(L2_CONFIG_REG) | L2_WRITETHROUGH, L2_CONFIG_REG); feroceon_l2_init(1); #else writel(readl(L2_CONFIG_REG) & ~L2_WRITETHROUGH, L2_CONFIG_REG); feroceon_l2_init(0); #endif } void __init kirkwood_init(void) { printk(KERN_INFO "Kirkwood: %s, TCLK=%d.\n", kirkwood_id(), KIRKWOOD_TCLK); kirkwood_id(), kirkwood_tclk); kirkwood_ge00_shared_data.t_clk = kirkwood_tclk; kirkwood_spi_plat_data.tclk = kirkwood_tclk; kirkwood_uart0_data[0].uartclk = kirkwood_tclk; kirkwood_uart1_data[0].uartclk = kirkwood_tclk; kirkwood_setup_cpu_mbus(); #ifdef CONFIG_CACHE_FEROCEON_L2 feroceon_l2_init(is_l2_writethrough()); kirkwood_l2_init(); #endif } arch/arm/mach-kirkwood/common.h +3 −4 Original line number Diff line number Diff line Loading @@ -23,10 +23,9 @@ void kirkwood_init_irq(void); extern struct mbus_dram_target_info kirkwood_mbus_dram_info; void kirkwood_setup_cpu_mbus(void); void kirkwood_setup_pcie_io_win(int window, u32 base, u32 size, int maj, int min); void kirkwood_setup_pcie_mem_win(int window, u32 base, u32 size, int maj, int min); void kirkwood_setup_sram_win(u32 base, u32 size); void kirkwood_pcie_id(u32 *dev, u32 *rev); void kirkwood_ehci_init(void); void kirkwood_ge00_init(struct mv643xx_eth_platform_data *eth_data); Loading Loading
arch/arm/Kconfig +1 −1 Original line number Diff line number Diff line Loading @@ -441,7 +441,7 @@ config ARCH_ORION5X help Support for the following Marvell Orion 5x series SoCs: Orion-1 (5181), Orion-VoIP (5181L), Orion-NAS (5182), Orion-2 (5281). Orion-2 (5281), Orion-1-90 (6183). config ARCH_PNX4008 bool "Philips Nexperia PNX4008 Mobile" Loading
arch/arm/configs/orion5x_defconfig +3 −0 Original line number Diff line number Diff line Loading @@ -176,14 +176,17 @@ CONFIG_MACH_KUROBOX_PRO=y CONFIG_MACH_DNS323=y CONFIG_MACH_TS209=y CONFIG_MACH_LINKSTATION_PRO=y CONFIG_MACH_LINKSTATION_MINI=y CONFIG_MACH_TS409=y CONFIG_MACH_WRT350N_V2=y CONFIG_MACH_TS78XX=y CONFIG_MACH_MV2120=y CONFIG_MACH_EDMINI_V2=y CONFIG_MACH_MSS2=y CONFIG_MACH_WNR854T=y CONFIG_MACH_RD88F5181L_GE=y CONFIG_MACH_RD88F5181L_FXO=y CONFIG_MACH_RD88F6183AP_GE=y # # Boot options Loading
arch/arm/mach-kirkwood/addr-map.c +8 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ struct mbus_dram_target_info kirkwood_mbus_dram_info; static int __initdata win_alloc_count; static int __init cpu_win_can_remap(int win) { Loading Loading @@ -111,6 +112,8 @@ void __init kirkwood_setup_cpu_mbus(void) setup_cpu_win(2, KIRKWOOD_NAND_MEM_PHYS_BASE, KIRKWOOD_NAND_MEM_SIZE, TARGET_DEV_BUS, ATTR_DEV_NAND, -1); win_alloc_count = 3; /* * Setup MBUS dram target info. */ Loading @@ -137,3 +140,8 @@ void __init kirkwood_setup_cpu_mbus(void) } kirkwood_mbus_dram_info.num_cs = cs; } void __init kirkwood_setup_sram_win(u32 base, u32 size) { setup_cpu_win(win_alloc_count++, base, size, 0x03, 0x00, -1); }
arch/arm/mach-kirkwood/common.c +65 −19 Original line number Diff line number Diff line Loading @@ -98,7 +98,6 @@ void __init kirkwood_ehci_init(void) * GE00 ****************************************************************************/ struct mv643xx_eth_shared_platform_data kirkwood_ge00_shared_data = { .t_clk = KIRKWOOD_TCLK, .dram = &kirkwood_mbus_dram_info, }; Loading @@ -108,6 +107,11 @@ static struct resource kirkwood_ge00_shared_resources[] = { .start = GE00_PHYS_BASE + 0x2000, .end = GE00_PHYS_BASE + 0x3fff, .flags = IORESOURCE_MEM, }, { .name = "ge00 err irq", .start = IRQ_KIRKWOOD_GE00_ERR, .end = IRQ_KIRKWOOD_GE00_ERR, .flags = IORESOURCE_IRQ, }, }; Loading @@ -117,7 +121,7 @@ static struct platform_device kirkwood_ge00_shared = { .dev = { .platform_data = &kirkwood_ge00_shared_data, }, .num_resources = 1, .num_resources = ARRAY_SIZE(kirkwood_ge00_shared_resources), .resource = kirkwood_ge00_shared_resources, }; Loading Loading @@ -201,7 +205,6 @@ void __init kirkwood_sata_init(struct mv_sata_platform_data *sata_data) * SPI ****************************************************************************/ static struct orion_spi_info kirkwood_spi_plat_data = { .tclk = KIRKWOOD_TCLK, }; static struct resource kirkwood_spi_resources[] = { Loading Loading @@ -239,7 +242,7 @@ static struct plat_serial8250_port kirkwood_uart0_data[] = { .flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF, .iotype = UPIO_MEM, .regshift = 2, .uartclk = KIRKWOOD_TCLK, .uartclk = 0, }, { }, }; Loading Loading @@ -283,7 +286,7 @@ static struct plat_serial8250_port kirkwood_uart1_data[] = { .flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF, .iotype = UPIO_MEM, .regshift = 2, .uartclk = KIRKWOOD_TCLK, .uartclk = 0, }, { }, }; Loading Loading @@ -525,9 +528,23 @@ void __init kirkwood_xor1_init(void) /***************************************************************************** * Time handling ****************************************************************************/ int kirkwood_tclk; int __init kirkwood_find_tclk(void) { u32 dev, rev; kirkwood_pcie_id(&dev, &rev); if (dev == MV88F6281_DEV_ID && rev == MV88F6281_REV_A0) return 200000000; return 166666667; } static void kirkwood_timer_init(void) { orion_time_init(IRQ_KIRKWOOD_BRIDGE, KIRKWOOD_TCLK); kirkwood_tclk = kirkwood_find_tclk(); orion_time_init(IRQ_KIRKWOOD_BRIDGE, kirkwood_tclk); } struct sys_timer kirkwood_timer = { Loading @@ -538,33 +555,62 @@ struct sys_timer kirkwood_timer = { /***************************************************************************** * General ****************************************************************************/ /* * Identify device ID and revision. */ static char * __init kirkwood_id(void) { switch (readl(DEVICE_ID) & 0x3) { case 0: return "88F6180"; case 1: return "88F6192"; case 2: return "88F6281"; u32 dev, rev; kirkwood_pcie_id(&dev, &rev); if (dev == MV88F6281_DEV_ID) { if (rev == MV88F6281_REV_Z0) return "MV88F6281-Z0"; else if (rev == MV88F6281_REV_A0) return "MV88F6281-A0"; else return "MV88F6281-Rev-Unsupported"; } else if (dev == MV88F6192_DEV_ID) { if (rev == MV88F6192_REV_Z0) return "MV88F6192-Z0"; else if (rev == MV88F6192_REV_A0) return "MV88F6192-A0"; else return "MV88F6192-Rev-Unsupported"; } else if (dev == MV88F6180_DEV_ID) { if (rev == MV88F6180_REV_A0) return "MV88F6180-Rev-A0"; else return "MV88F6180-Rev-Unsupported"; } else { return "Device-Unknown"; } return "unknown 88F6000 variant"; } static int __init is_l2_writethrough(void) static void __init kirkwood_l2_init(void) { return !!(readl(L2_CONFIG_REG) & L2_WRITETHROUGH); #ifdef CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH writel(readl(L2_CONFIG_REG) | L2_WRITETHROUGH, L2_CONFIG_REG); feroceon_l2_init(1); #else writel(readl(L2_CONFIG_REG) & ~L2_WRITETHROUGH, L2_CONFIG_REG); feroceon_l2_init(0); #endif } void __init kirkwood_init(void) { printk(KERN_INFO "Kirkwood: %s, TCLK=%d.\n", kirkwood_id(), KIRKWOOD_TCLK); kirkwood_id(), kirkwood_tclk); kirkwood_ge00_shared_data.t_clk = kirkwood_tclk; kirkwood_spi_plat_data.tclk = kirkwood_tclk; kirkwood_uart0_data[0].uartclk = kirkwood_tclk; kirkwood_uart1_data[0].uartclk = kirkwood_tclk; kirkwood_setup_cpu_mbus(); #ifdef CONFIG_CACHE_FEROCEON_L2 feroceon_l2_init(is_l2_writethrough()); kirkwood_l2_init(); #endif }
arch/arm/mach-kirkwood/common.h +3 −4 Original line number Diff line number Diff line Loading @@ -23,10 +23,9 @@ void kirkwood_init_irq(void); extern struct mbus_dram_target_info kirkwood_mbus_dram_info; void kirkwood_setup_cpu_mbus(void); void kirkwood_setup_pcie_io_win(int window, u32 base, u32 size, int maj, int min); void kirkwood_setup_pcie_mem_win(int window, u32 base, u32 size, int maj, int min); void kirkwood_setup_sram_win(u32 base, u32 size); void kirkwood_pcie_id(u32 *dev, u32 *rev); void kirkwood_ehci_init(void); void kirkwood_ge00_init(struct mv643xx_eth_platform_data *eth_data); Loading