diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-07-30 14:45:52 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-07-30 14:45:52 -0400 |
commit | 287dc4b7642df15fa6b9f286c812e79138acd698 (patch) | |
tree | c3ebe1caea100ff2b8f414619ec0a9dcd8a14547 /arch/mips/bcm63xx/boards/board_bcm963xx.c | |
parent | 720d85075b7ed3617de8ca8d9097390e303e9f60 (diff) | |
parent | 68d8848567ef03eb2c2303173934428d0bf0a531 (diff) |
Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus
Pull MIPS updates from Ralf Baechle:
"More hardware support across the field including a bunch of device
drivers. The highlight however really are further steps towards
device tree.
This has been sitting in -next for ages. All MIPS _defconfigs have
been tested to boot or where I don't have hardware available, to at
least build fine."
* 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (77 commits)
MIPS: Loongson 1B: Add defconfig
MIPS: Loongson 1B: Add board support
MIPS: Netlogic: early console fix
MIPS: Netlogic: Fix indentation of smpboot.S
MIPS: Netlogic: remove cpu_has_dc_aliases define for XLP
MIPS: Netlogic: Remove unused pcibios_fixups
MIPS: Netlogic: Add XLP SoC devices in FDT
MIPS: Netlogic: Add IRQ mappings for more devices
MIPS: Netlogic: USB support for XLP
MIPS: Netlogic: XLP PCIe controller support.
MIPS: Netlogic: Platform changes for XLR/XLS I2C
MIPS: Netlogic: Platform NAND/NOR flash support
MIPS: Netlogic: Platform changes for XLS USB
MIPS: Netlogic: Remove NETLOGIC_ prefix
MIPS: Netlogic: SMP wakeup code update
MIPS: Netlogic: Update comments in smpboot.S
MIPS: BCM63XX: Add 96328avng reference board
MIPS: Expose PCIe drivers for MIPS
MIPS: BCM63XX: Add PCIe Support for BCM6328
MIPS: BCM63XX: Move the PCI initialization into its own function
...
Diffstat (limited to 'arch/mips/bcm63xx/boards/board_bcm963xx.c')
-rw-r--r-- | arch/mips/bcm63xx/boards/board_bcm963xx.c | 107 |
1 files changed, 58 insertions, 49 deletions
diff --git a/arch/mips/bcm63xx/boards/board_bcm963xx.c b/arch/mips/bcm63xx/boards/board_bcm963xx.c index 2f1773f3fb7a..feb05258a4d1 100644 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c | |||
@@ -11,9 +11,6 @@ | |||
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/string.h> | 12 | #include <linux/string.h> |
13 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
14 | #include <linux/mtd/mtd.h> | ||
15 | #include <linux/mtd/partitions.h> | ||
16 | #include <linux/mtd/physmap.h> | ||
17 | #include <linux/ssb/ssb.h> | 14 | #include <linux/ssb/ssb.h> |
18 | #include <asm/addrspace.h> | 15 | #include <asm/addrspace.h> |
19 | #include <bcm63xx_board.h> | 16 | #include <bcm63xx_board.h> |
@@ -24,7 +21,9 @@ | |||
24 | #include <bcm63xx_dev_pci.h> | 21 | #include <bcm63xx_dev_pci.h> |
25 | #include <bcm63xx_dev_enet.h> | 22 | #include <bcm63xx_dev_enet.h> |
26 | #include <bcm63xx_dev_dsp.h> | 23 | #include <bcm63xx_dev_dsp.h> |
24 | #include <bcm63xx_dev_flash.h> | ||
27 | #include <bcm63xx_dev_pcmcia.h> | 25 | #include <bcm63xx_dev_pcmcia.h> |
26 | #include <bcm63xx_dev_spi.h> | ||
28 | #include <board_bcm963xx.h> | 27 | #include <board_bcm963xx.h> |
29 | 28 | ||
30 | #define PFX "board_bcm963xx: " | 29 | #define PFX "board_bcm963xx: " |
@@ -34,6 +33,48 @@ static unsigned int mac_addr_used; | |||
34 | static struct board_info board; | 33 | static struct board_info board; |
35 | 34 | ||
36 | /* | 35 | /* |
36 | * known 6328 boards | ||
37 | */ | ||
38 | #ifdef CONFIG_BCM63XX_CPU_6328 | ||
39 | static struct board_info __initdata board_96328avng = { | ||
40 | .name = "96328avng", | ||
41 | .expected_cpu_id = 0x6328, | ||
42 | |||
43 | .has_uart0 = 1, | ||
44 | .has_pci = 1, | ||
45 | |||
46 | .leds = { | ||
47 | { | ||
48 | .name = "96328avng::ppp-fail", | ||
49 | .gpio = 2, | ||
50 | .active_low = 1, | ||
51 | }, | ||
52 | { | ||
53 | .name = "96328avng::power", | ||
54 | .gpio = 4, | ||
55 | .active_low = 1, | ||
56 | .default_trigger = "default-on", | ||
57 | }, | ||
58 | { | ||
59 | .name = "96328avng::power-fail", | ||
60 | .gpio = 8, | ||
61 | .active_low = 1, | ||
62 | }, | ||
63 | { | ||
64 | .name = "96328avng::wps", | ||
65 | .gpio = 9, | ||
66 | .active_low = 1, | ||
67 | }, | ||
68 | { | ||
69 | .name = "96328avng::ppp", | ||
70 | .gpio = 11, | ||
71 | .active_low = 1, | ||
72 | }, | ||
73 | }, | ||
74 | }; | ||
75 | #endif | ||
76 | |||
77 | /* | ||
37 | * known 6338 boards | 78 | * known 6338 boards |
38 | */ | 79 | */ |
39 | #ifdef CONFIG_BCM63XX_CPU_6338 | 80 | #ifdef CONFIG_BCM63XX_CPU_6338 |
@@ -592,6 +633,9 @@ static struct board_info __initdata board_DWVS0 = { | |||
592 | * all boards | 633 | * all boards |
593 | */ | 634 | */ |
594 | static const struct board_info __initdata *bcm963xx_boards[] = { | 635 | static const struct board_info __initdata *bcm963xx_boards[] = { |
636 | #ifdef CONFIG_BCM63XX_CPU_6328 | ||
637 | &board_96328avng, | ||
638 | #endif | ||
595 | #ifdef CONFIG_BCM63XX_CPU_6338 | 639 | #ifdef CONFIG_BCM63XX_CPU_6338 |
596 | &board_96338gw, | 640 | &board_96338gw, |
597 | &board_96338w, | 641 | &board_96338w, |
@@ -709,9 +753,15 @@ void __init board_prom_init(void) | |||
709 | char cfe_version[32]; | 753 | char cfe_version[32]; |
710 | u32 val; | 754 | u32 val; |
711 | 755 | ||
712 | /* read base address of boot chip select (0) */ | 756 | /* read base address of boot chip select (0) |
713 | val = bcm_mpi_readl(MPI_CSBASE_REG(0)); | 757 | * 6328 does not have MPI but boots from a fixed address |
714 | val &= MPI_CSBASE_BASE_MASK; | 758 | */ |
759 | if (BCMCPU_IS_6328()) | ||
760 | val = 0x18000000; | ||
761 | else { | ||
762 | val = bcm_mpi_readl(MPI_CSBASE_REG(0)); | ||
763 | val &= MPI_CSBASE_BASE_MASK; | ||
764 | } | ||
715 | boot_addr = (u8 *)KSEG1ADDR(val); | 765 | boot_addr = (u8 *)KSEG1ADDR(val); |
716 | 766 | ||
717 | /* dump cfe version */ | 767 | /* dump cfe version */ |
@@ -808,40 +858,6 @@ void __init board_setup(void) | |||
808 | panic("unexpected CPU for bcm963xx board"); | 858 | panic("unexpected CPU for bcm963xx board"); |
809 | } | 859 | } |
810 | 860 | ||
811 | static struct mtd_partition mtd_partitions[] = { | ||
812 | { | ||
813 | .name = "cfe", | ||
814 | .offset = 0x0, | ||
815 | .size = 0x40000, | ||
816 | } | ||
817 | }; | ||
818 | |||
819 | static const char *bcm63xx_part_types[] = { "bcm63xxpart", NULL }; | ||
820 | |||
821 | static struct physmap_flash_data flash_data = { | ||
822 | .width = 2, | ||
823 | .nr_parts = ARRAY_SIZE(mtd_partitions), | ||
824 | .parts = mtd_partitions, | ||
825 | .part_probe_types = bcm63xx_part_types, | ||
826 | }; | ||
827 | |||
828 | static struct resource mtd_resources[] = { | ||
829 | { | ||
830 | .start = 0, /* filled at runtime */ | ||
831 | .end = 0, /* filled at runtime */ | ||
832 | .flags = IORESOURCE_MEM, | ||
833 | } | ||
834 | }; | ||
835 | |||
836 | static struct platform_device mtd_dev = { | ||
837 | .name = "physmap-flash", | ||
838 | .resource = mtd_resources, | ||
839 | .num_resources = ARRAY_SIZE(mtd_resources), | ||
840 | .dev = { | ||
841 | .platform_data = &flash_data, | ||
842 | }, | ||
843 | }; | ||
844 | |||
845 | static struct gpio_led_platform_data bcm63xx_led_data; | 861 | static struct gpio_led_platform_data bcm63xx_led_data; |
846 | 862 | ||
847 | static struct platform_device bcm63xx_gpio_leds = { | 863 | static struct platform_device bcm63xx_gpio_leds = { |
@@ -855,8 +871,6 @@ static struct platform_device bcm63xx_gpio_leds = { | |||
855 | */ | 871 | */ |
856 | int __init board_register_devices(void) | 872 | int __init board_register_devices(void) |
857 | { | 873 | { |
858 | u32 val; | ||
859 | |||
860 | if (board.has_uart0) | 874 | if (board.has_uart0) |
861 | bcm63xx_uart_register(0); | 875 | bcm63xx_uart_register(0); |
862 | 876 | ||
@@ -890,14 +904,9 @@ int __init board_register_devices(void) | |||
890 | } | 904 | } |
891 | #endif | 905 | #endif |
892 | 906 | ||
893 | /* read base address of boot chip select (0) */ | 907 | bcm63xx_spi_register(); |
894 | val = bcm_mpi_readl(MPI_CSBASE_REG(0)); | ||
895 | val &= MPI_CSBASE_BASE_MASK; | ||
896 | |||
897 | mtd_resources[0].start = val; | ||
898 | mtd_resources[0].end = 0x1FFFFFFF; | ||
899 | 908 | ||
900 | platform_device_register(&mtd_dev); | 909 | bcm63xx_flash_register(); |
901 | 910 | ||
902 | bcm63xx_led_data.num_leds = ARRAY_SIZE(board.leds); | 911 | bcm63xx_led_data.num_leds = ARRAY_SIZE(board.leds); |
903 | bcm63xx_led_data.leds = board.leds; | 912 | bcm63xx_led_data.leds = board.leds; |