Loading arch/arm/configs/orion5x_defconfig +10 −3 Original line number Diff line number Diff line Loading @@ -757,7 +757,14 @@ CONFIG_INPUT_EVDEV=y # # Input Device Drivers # # CONFIG_INPUT_KEYBOARD is not set CONFIG_INPUT_KEYBOARD=y # CONFIG_KEYBOARD_ATKBD is not set # CONFIG_KEYBOARD_SUNKBD is not set # CONFIG_KEYBOARD_LKKBD is not set # CONFIG_KEYBOARD_XTKBD is not set # CONFIG_KEYBOARD_NEWTON is not set # CONFIG_KEYBOARD_STOWAWAY is not set CONFIG_KEYBOARD_GPIO=y # CONFIG_INPUT_MOUSE is not set # CONFIG_INPUT_JOYSTICK is not set # CONFIG_INPUT_TABLET is not set Loading Loading @@ -1111,11 +1118,11 @@ CONFIG_RTC_DRV_DS1307=y CONFIG_RTC_DRV_RS5C372=y # CONFIG_RTC_DRV_ISL1208 is not set # CONFIG_RTC_DRV_X1205 is not set # CONFIG_RTC_DRV_PCF8563 is not set CONFIG_RTC_DRV_PCF8563=y # CONFIG_RTC_DRV_PCF8583 is not set CONFIG_RTC_DRV_M41T80=y # CONFIG_RTC_DRV_M41T80_WDT is not set # CONFIG_RTC_DRV_S35390A is not set CONFIG_RTC_DRV_S35390A=y # # SPI RTC drivers Loading arch/arm/include/asm/memory.h +8 −0 Original line number Diff line number Diff line Loading @@ -149,6 +149,14 @@ #define arch_adjust_zones(node,size,holes) do { } while (0) #endif /* * Amount of memory reserved for the vmalloc() area, and minimum * address for vmalloc mappings. */ extern unsigned long vmalloc_reserve; #define VMALLOC_MIN (void *)(VMALLOC_END - vmalloc_reserve) /* * PFNs are used to describe any physical page; this means * PFN 0 == physical address 0. Loading arch/arm/kernel/setup.c +13 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,8 @@ EXPORT_SYMBOL(system_serial_high); unsigned int elf_hwcap; EXPORT_SYMBOL(elf_hwcap); unsigned long __initdata vmalloc_reserve = 128 << 20; #ifdef MULTI_CPU struct processor processor; Loading Loading @@ -500,6 +502,17 @@ static void __init early_mem(char **p) } __early_param("mem=", early_mem); /* * vmalloc=size forces the vmalloc area to be exactly 'size' * bytes. This can be used to increase (or decrease) the vmalloc * area - the default is 128m. */ static void __init early_vmalloc(char **arg) { vmalloc_reserve = memparse(*arg, arg); } __early_param("vmalloc=", early_vmalloc); /* * Initial parsing of the command line. */ Loading arch/arm/mach-kirkwood/common.c +243 −4 Original line number Diff line number Diff line Loading @@ -15,15 +15,17 @@ #include <linux/mbus.h> #include <linux/mv643xx_eth.h> #include <linux/ata_platform.h> #include <linux/spi/orion_spi.h> #include <asm/page.h> #include <asm/timex.h> #include <asm/mach/map.h> #include <asm/mach/time.h> #include <mach/kirkwood.h> #include <asm/plat-orion/cache-feroceon-l2.h> #include <asm/plat-orion/ehci-orion.h> #include <asm/plat-orion/orion_nand.h> #include <asm/plat-orion/time.h> #include <plat/cache-feroceon-l2.h> #include <plat/ehci-orion.h> #include <plat/mv_xor.h> #include <plat/orion_nand.h> #include <plat/time.h> #include "common.h" /***************************************************************************** Loading Loading @@ -195,6 +197,37 @@ 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[] = { { .start = SPI_PHYS_BASE, .end = SPI_PHYS_BASE + SZ_512 - 1, .flags = IORESOURCE_MEM, }, }; static struct platform_device kirkwood_spi = { .name = "orion_spi", .id = 0, .resource = kirkwood_spi_resources, .dev = { .platform_data = &kirkwood_spi_plat_data, }, .num_resources = ARRAY_SIZE(kirkwood_spi_resources), }; void __init kirkwood_spi_init() { platform_device_register(&kirkwood_spi); } /***************************************************************************** * UART0 ****************************************************************************/ Loading Loading @@ -283,6 +316,212 @@ void __init kirkwood_uart1_init(void) } /***************************************************************************** * XOR ****************************************************************************/ static struct mv_xor_platform_shared_data kirkwood_xor_shared_data = { .dram = &kirkwood_mbus_dram_info, }; static u64 kirkwood_xor_dmamask = DMA_32BIT_MASK; /***************************************************************************** * XOR0 ****************************************************************************/ static struct resource kirkwood_xor0_shared_resources[] = { { .name = "xor 0 low", .start = XOR0_PHYS_BASE, .end = XOR0_PHYS_BASE + 0xff, .flags = IORESOURCE_MEM, }, { .name = "xor 0 high", .start = XOR0_HIGH_PHYS_BASE, .end = XOR0_HIGH_PHYS_BASE + 0xff, .flags = IORESOURCE_MEM, }, }; static struct platform_device kirkwood_xor0_shared = { .name = MV_XOR_SHARED_NAME, .id = 0, .dev = { .platform_data = &kirkwood_xor_shared_data, }, .num_resources = ARRAY_SIZE(kirkwood_xor0_shared_resources), .resource = kirkwood_xor0_shared_resources, }; static struct resource kirkwood_xor00_resources[] = { [0] = { .start = IRQ_KIRKWOOD_XOR_00, .end = IRQ_KIRKWOOD_XOR_00, .flags = IORESOURCE_IRQ, }, }; static struct mv_xor_platform_data kirkwood_xor00_data = { .shared = &kirkwood_xor0_shared, .hw_id = 0, .pool_size = PAGE_SIZE, }; static struct platform_device kirkwood_xor00_channel = { .name = MV_XOR_NAME, .id = 0, .num_resources = ARRAY_SIZE(kirkwood_xor00_resources), .resource = kirkwood_xor00_resources, .dev = { .dma_mask = &kirkwood_xor_dmamask, .coherent_dma_mask = DMA_64BIT_MASK, .platform_data = (void *)&kirkwood_xor00_data, }, }; static struct resource kirkwood_xor01_resources[] = { [0] = { .start = IRQ_KIRKWOOD_XOR_01, .end = IRQ_KIRKWOOD_XOR_01, .flags = IORESOURCE_IRQ, }, }; static struct mv_xor_platform_data kirkwood_xor01_data = { .shared = &kirkwood_xor0_shared, .hw_id = 1, .pool_size = PAGE_SIZE, }; static struct platform_device kirkwood_xor01_channel = { .name = MV_XOR_NAME, .id = 1, .num_resources = ARRAY_SIZE(kirkwood_xor01_resources), .resource = kirkwood_xor01_resources, .dev = { .dma_mask = &kirkwood_xor_dmamask, .coherent_dma_mask = DMA_64BIT_MASK, .platform_data = (void *)&kirkwood_xor01_data, }, }; void __init kirkwood_xor0_init(void) { platform_device_register(&kirkwood_xor0_shared); /* * two engines can't do memset simultaneously, this limitation * satisfied by removing memset support from one of the engines. */ dma_cap_set(DMA_MEMCPY, kirkwood_xor00_data.cap_mask); dma_cap_set(DMA_XOR, kirkwood_xor00_data.cap_mask); platform_device_register(&kirkwood_xor00_channel); dma_cap_set(DMA_MEMCPY, kirkwood_xor01_data.cap_mask); dma_cap_set(DMA_MEMSET, kirkwood_xor01_data.cap_mask); dma_cap_set(DMA_XOR, kirkwood_xor01_data.cap_mask); platform_device_register(&kirkwood_xor01_channel); } /***************************************************************************** * XOR1 ****************************************************************************/ static struct resource kirkwood_xor1_shared_resources[] = { { .name = "xor 1 low", .start = XOR1_PHYS_BASE, .end = XOR1_PHYS_BASE + 0xff, .flags = IORESOURCE_MEM, }, { .name = "xor 1 high", .start = XOR1_HIGH_PHYS_BASE, .end = XOR1_HIGH_PHYS_BASE + 0xff, .flags = IORESOURCE_MEM, }, }; static struct platform_device kirkwood_xor1_shared = { .name = MV_XOR_SHARED_NAME, .id = 1, .dev = { .platform_data = &kirkwood_xor_shared_data, }, .num_resources = ARRAY_SIZE(kirkwood_xor1_shared_resources), .resource = kirkwood_xor1_shared_resources, }; static struct resource kirkwood_xor10_resources[] = { [0] = { .start = IRQ_KIRKWOOD_XOR_10, .end = IRQ_KIRKWOOD_XOR_10, .flags = IORESOURCE_IRQ, }, }; static struct mv_xor_platform_data kirkwood_xor10_data = { .shared = &kirkwood_xor1_shared, .hw_id = 0, .pool_size = PAGE_SIZE, }; static struct platform_device kirkwood_xor10_channel = { .name = MV_XOR_NAME, .id = 2, .num_resources = ARRAY_SIZE(kirkwood_xor10_resources), .resource = kirkwood_xor10_resources, .dev = { .dma_mask = &kirkwood_xor_dmamask, .coherent_dma_mask = DMA_64BIT_MASK, .platform_data = (void *)&kirkwood_xor10_data, }, }; static struct resource kirkwood_xor11_resources[] = { [0] = { .start = IRQ_KIRKWOOD_XOR_11, .end = IRQ_KIRKWOOD_XOR_11, .flags = IORESOURCE_IRQ, }, }; static struct mv_xor_platform_data kirkwood_xor11_data = { .shared = &kirkwood_xor1_shared, .hw_id = 1, .pool_size = PAGE_SIZE, }; static struct platform_device kirkwood_xor11_channel = { .name = MV_XOR_NAME, .id = 3, .num_resources = ARRAY_SIZE(kirkwood_xor11_resources), .resource = kirkwood_xor11_resources, .dev = { .dma_mask = &kirkwood_xor_dmamask, .coherent_dma_mask = DMA_64BIT_MASK, .platform_data = (void *)&kirkwood_xor11_data, }, }; void __init kirkwood_xor1_init(void) { platform_device_register(&kirkwood_xor1_shared); /* * two engines can't do memset simultaneously, this limitation * satisfied by removing memset support from one of the engines. */ dma_cap_set(DMA_MEMCPY, kirkwood_xor10_data.cap_mask); dma_cap_set(DMA_XOR, kirkwood_xor10_data.cap_mask); platform_device_register(&kirkwood_xor10_channel); dma_cap_set(DMA_MEMCPY, kirkwood_xor11_data.cap_mask); dma_cap_set(DMA_MEMSET, kirkwood_xor11_data.cap_mask); dma_cap_set(DMA_XOR, kirkwood_xor11_data.cap_mask); platform_device_register(&kirkwood_xor11_channel); } /***************************************************************************** * Time handling ****************************************************************************/ Loading arch/arm/mach-kirkwood/common.h +3 −0 Original line number Diff line number Diff line Loading @@ -33,8 +33,11 @@ void kirkwood_ge00_init(struct mv643xx_eth_platform_data *eth_data); void kirkwood_pcie_init(void); void kirkwood_rtc_init(void); void kirkwood_sata_init(struct mv_sata_platform_data *sata_data); void kirkwood_spi_init(void); void kirkwood_uart0_init(void); void kirkwood_uart1_init(void); void kirkwood_xor0_init(void); void kirkwood_xor1_init(void); extern struct sys_timer kirkwood_timer; Loading Loading
arch/arm/configs/orion5x_defconfig +10 −3 Original line number Diff line number Diff line Loading @@ -757,7 +757,14 @@ CONFIG_INPUT_EVDEV=y # # Input Device Drivers # # CONFIG_INPUT_KEYBOARD is not set CONFIG_INPUT_KEYBOARD=y # CONFIG_KEYBOARD_ATKBD is not set # CONFIG_KEYBOARD_SUNKBD is not set # CONFIG_KEYBOARD_LKKBD is not set # CONFIG_KEYBOARD_XTKBD is not set # CONFIG_KEYBOARD_NEWTON is not set # CONFIG_KEYBOARD_STOWAWAY is not set CONFIG_KEYBOARD_GPIO=y # CONFIG_INPUT_MOUSE is not set # CONFIG_INPUT_JOYSTICK is not set # CONFIG_INPUT_TABLET is not set Loading Loading @@ -1111,11 +1118,11 @@ CONFIG_RTC_DRV_DS1307=y CONFIG_RTC_DRV_RS5C372=y # CONFIG_RTC_DRV_ISL1208 is not set # CONFIG_RTC_DRV_X1205 is not set # CONFIG_RTC_DRV_PCF8563 is not set CONFIG_RTC_DRV_PCF8563=y # CONFIG_RTC_DRV_PCF8583 is not set CONFIG_RTC_DRV_M41T80=y # CONFIG_RTC_DRV_M41T80_WDT is not set # CONFIG_RTC_DRV_S35390A is not set CONFIG_RTC_DRV_S35390A=y # # SPI RTC drivers Loading
arch/arm/include/asm/memory.h +8 −0 Original line number Diff line number Diff line Loading @@ -149,6 +149,14 @@ #define arch_adjust_zones(node,size,holes) do { } while (0) #endif /* * Amount of memory reserved for the vmalloc() area, and minimum * address for vmalloc mappings. */ extern unsigned long vmalloc_reserve; #define VMALLOC_MIN (void *)(VMALLOC_END - vmalloc_reserve) /* * PFNs are used to describe any physical page; this means * PFN 0 == physical address 0. Loading
arch/arm/kernel/setup.c +13 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,8 @@ EXPORT_SYMBOL(system_serial_high); unsigned int elf_hwcap; EXPORT_SYMBOL(elf_hwcap); unsigned long __initdata vmalloc_reserve = 128 << 20; #ifdef MULTI_CPU struct processor processor; Loading Loading @@ -500,6 +502,17 @@ static void __init early_mem(char **p) } __early_param("mem=", early_mem); /* * vmalloc=size forces the vmalloc area to be exactly 'size' * bytes. This can be used to increase (or decrease) the vmalloc * area - the default is 128m. */ static void __init early_vmalloc(char **arg) { vmalloc_reserve = memparse(*arg, arg); } __early_param("vmalloc=", early_vmalloc); /* * Initial parsing of the command line. */ Loading
arch/arm/mach-kirkwood/common.c +243 −4 Original line number Diff line number Diff line Loading @@ -15,15 +15,17 @@ #include <linux/mbus.h> #include <linux/mv643xx_eth.h> #include <linux/ata_platform.h> #include <linux/spi/orion_spi.h> #include <asm/page.h> #include <asm/timex.h> #include <asm/mach/map.h> #include <asm/mach/time.h> #include <mach/kirkwood.h> #include <asm/plat-orion/cache-feroceon-l2.h> #include <asm/plat-orion/ehci-orion.h> #include <asm/plat-orion/orion_nand.h> #include <asm/plat-orion/time.h> #include <plat/cache-feroceon-l2.h> #include <plat/ehci-orion.h> #include <plat/mv_xor.h> #include <plat/orion_nand.h> #include <plat/time.h> #include "common.h" /***************************************************************************** Loading Loading @@ -195,6 +197,37 @@ 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[] = { { .start = SPI_PHYS_BASE, .end = SPI_PHYS_BASE + SZ_512 - 1, .flags = IORESOURCE_MEM, }, }; static struct platform_device kirkwood_spi = { .name = "orion_spi", .id = 0, .resource = kirkwood_spi_resources, .dev = { .platform_data = &kirkwood_spi_plat_data, }, .num_resources = ARRAY_SIZE(kirkwood_spi_resources), }; void __init kirkwood_spi_init() { platform_device_register(&kirkwood_spi); } /***************************************************************************** * UART0 ****************************************************************************/ Loading Loading @@ -283,6 +316,212 @@ void __init kirkwood_uart1_init(void) } /***************************************************************************** * XOR ****************************************************************************/ static struct mv_xor_platform_shared_data kirkwood_xor_shared_data = { .dram = &kirkwood_mbus_dram_info, }; static u64 kirkwood_xor_dmamask = DMA_32BIT_MASK; /***************************************************************************** * XOR0 ****************************************************************************/ static struct resource kirkwood_xor0_shared_resources[] = { { .name = "xor 0 low", .start = XOR0_PHYS_BASE, .end = XOR0_PHYS_BASE + 0xff, .flags = IORESOURCE_MEM, }, { .name = "xor 0 high", .start = XOR0_HIGH_PHYS_BASE, .end = XOR0_HIGH_PHYS_BASE + 0xff, .flags = IORESOURCE_MEM, }, }; static struct platform_device kirkwood_xor0_shared = { .name = MV_XOR_SHARED_NAME, .id = 0, .dev = { .platform_data = &kirkwood_xor_shared_data, }, .num_resources = ARRAY_SIZE(kirkwood_xor0_shared_resources), .resource = kirkwood_xor0_shared_resources, }; static struct resource kirkwood_xor00_resources[] = { [0] = { .start = IRQ_KIRKWOOD_XOR_00, .end = IRQ_KIRKWOOD_XOR_00, .flags = IORESOURCE_IRQ, }, }; static struct mv_xor_platform_data kirkwood_xor00_data = { .shared = &kirkwood_xor0_shared, .hw_id = 0, .pool_size = PAGE_SIZE, }; static struct platform_device kirkwood_xor00_channel = { .name = MV_XOR_NAME, .id = 0, .num_resources = ARRAY_SIZE(kirkwood_xor00_resources), .resource = kirkwood_xor00_resources, .dev = { .dma_mask = &kirkwood_xor_dmamask, .coherent_dma_mask = DMA_64BIT_MASK, .platform_data = (void *)&kirkwood_xor00_data, }, }; static struct resource kirkwood_xor01_resources[] = { [0] = { .start = IRQ_KIRKWOOD_XOR_01, .end = IRQ_KIRKWOOD_XOR_01, .flags = IORESOURCE_IRQ, }, }; static struct mv_xor_platform_data kirkwood_xor01_data = { .shared = &kirkwood_xor0_shared, .hw_id = 1, .pool_size = PAGE_SIZE, }; static struct platform_device kirkwood_xor01_channel = { .name = MV_XOR_NAME, .id = 1, .num_resources = ARRAY_SIZE(kirkwood_xor01_resources), .resource = kirkwood_xor01_resources, .dev = { .dma_mask = &kirkwood_xor_dmamask, .coherent_dma_mask = DMA_64BIT_MASK, .platform_data = (void *)&kirkwood_xor01_data, }, }; void __init kirkwood_xor0_init(void) { platform_device_register(&kirkwood_xor0_shared); /* * two engines can't do memset simultaneously, this limitation * satisfied by removing memset support from one of the engines. */ dma_cap_set(DMA_MEMCPY, kirkwood_xor00_data.cap_mask); dma_cap_set(DMA_XOR, kirkwood_xor00_data.cap_mask); platform_device_register(&kirkwood_xor00_channel); dma_cap_set(DMA_MEMCPY, kirkwood_xor01_data.cap_mask); dma_cap_set(DMA_MEMSET, kirkwood_xor01_data.cap_mask); dma_cap_set(DMA_XOR, kirkwood_xor01_data.cap_mask); platform_device_register(&kirkwood_xor01_channel); } /***************************************************************************** * XOR1 ****************************************************************************/ static struct resource kirkwood_xor1_shared_resources[] = { { .name = "xor 1 low", .start = XOR1_PHYS_BASE, .end = XOR1_PHYS_BASE + 0xff, .flags = IORESOURCE_MEM, }, { .name = "xor 1 high", .start = XOR1_HIGH_PHYS_BASE, .end = XOR1_HIGH_PHYS_BASE + 0xff, .flags = IORESOURCE_MEM, }, }; static struct platform_device kirkwood_xor1_shared = { .name = MV_XOR_SHARED_NAME, .id = 1, .dev = { .platform_data = &kirkwood_xor_shared_data, }, .num_resources = ARRAY_SIZE(kirkwood_xor1_shared_resources), .resource = kirkwood_xor1_shared_resources, }; static struct resource kirkwood_xor10_resources[] = { [0] = { .start = IRQ_KIRKWOOD_XOR_10, .end = IRQ_KIRKWOOD_XOR_10, .flags = IORESOURCE_IRQ, }, }; static struct mv_xor_platform_data kirkwood_xor10_data = { .shared = &kirkwood_xor1_shared, .hw_id = 0, .pool_size = PAGE_SIZE, }; static struct platform_device kirkwood_xor10_channel = { .name = MV_XOR_NAME, .id = 2, .num_resources = ARRAY_SIZE(kirkwood_xor10_resources), .resource = kirkwood_xor10_resources, .dev = { .dma_mask = &kirkwood_xor_dmamask, .coherent_dma_mask = DMA_64BIT_MASK, .platform_data = (void *)&kirkwood_xor10_data, }, }; static struct resource kirkwood_xor11_resources[] = { [0] = { .start = IRQ_KIRKWOOD_XOR_11, .end = IRQ_KIRKWOOD_XOR_11, .flags = IORESOURCE_IRQ, }, }; static struct mv_xor_platform_data kirkwood_xor11_data = { .shared = &kirkwood_xor1_shared, .hw_id = 1, .pool_size = PAGE_SIZE, }; static struct platform_device kirkwood_xor11_channel = { .name = MV_XOR_NAME, .id = 3, .num_resources = ARRAY_SIZE(kirkwood_xor11_resources), .resource = kirkwood_xor11_resources, .dev = { .dma_mask = &kirkwood_xor_dmamask, .coherent_dma_mask = DMA_64BIT_MASK, .platform_data = (void *)&kirkwood_xor11_data, }, }; void __init kirkwood_xor1_init(void) { platform_device_register(&kirkwood_xor1_shared); /* * two engines can't do memset simultaneously, this limitation * satisfied by removing memset support from one of the engines. */ dma_cap_set(DMA_MEMCPY, kirkwood_xor10_data.cap_mask); dma_cap_set(DMA_XOR, kirkwood_xor10_data.cap_mask); platform_device_register(&kirkwood_xor10_channel); dma_cap_set(DMA_MEMCPY, kirkwood_xor11_data.cap_mask); dma_cap_set(DMA_MEMSET, kirkwood_xor11_data.cap_mask); dma_cap_set(DMA_XOR, kirkwood_xor11_data.cap_mask); platform_device_register(&kirkwood_xor11_channel); } /***************************************************************************** * Time handling ****************************************************************************/ Loading
arch/arm/mach-kirkwood/common.h +3 −0 Original line number Diff line number Diff line Loading @@ -33,8 +33,11 @@ void kirkwood_ge00_init(struct mv643xx_eth_platform_data *eth_data); void kirkwood_pcie_init(void); void kirkwood_rtc_init(void); void kirkwood_sata_init(struct mv_sata_platform_data *sata_data); void kirkwood_spi_init(void); void kirkwood_uart0_init(void); void kirkwood_uart1_init(void); void kirkwood_xor0_init(void); void kirkwood_xor1_init(void); extern struct sys_timer kirkwood_timer; Loading