source: trunk/target/linux/brcm63xx/patches-3.3/501-board-NB4.patch @ 31127

Last change on this file since 31127 was 31127, checked in by jogo, 5 years ago

bcm63xx: reorder patches

Reorder patches for a clearer distinction between the purposes of
the different patches.

File size: 9.8 KB
  • arch/mips/bcm63xx/boards/board_bcm963xx.c

    a b  
    1717#include <linux/ssb/ssb.h> 
    1818#include <linux/gpio_buttons.h> 
    1919#include <linux/input.h> 
     20#include <linux/spi/spi.h> 
     21#include <linux/spi/spi_gpio.h> 
     22#include <linux/spi/74x164.h> 
    2023#include <asm/addrspace.h> 
    2124#include <bcm63xx_board.h> 
    2225#include <bcm63xx_cpu.h> 
     
    3841#define CFE_OFFSET_64K          0x10000 
    3942#define CFE_OFFSET_128K         0x20000 
    4043 
     44#define NB4_PID_OFFSET          0xff80 
     45#define NB4_74X164_GPIO_BASE    64 
     46#define NB4_SPI_GPIO_MOSI       7 
     47#define NB4_SPI_GPIO_CLK        6 
     48#define NB4_74HC64_GPIO(X)      (NB4_74X164_GPIO_BASE + (X)) 
     49 
    4150static struct bcm963xx_nvram nvram; 
    4251static unsigned int mac_addr_used; 
    4352static struct board_info board; 
    static struct board_info __initdata boar 
    664673 
    665674        .has_ohci0                      = 1, 
    666675}; 
     676 
     677struct spi_gpio_platform_data nb4_spi_gpio_data = { 
     678        .sck            = NB4_SPI_GPIO_CLK, 
     679        .mosi           = NB4_SPI_GPIO_MOSI, 
     680        .miso           = SPI_GPIO_NO_MISO, 
     681        .num_chipselect = 1, 
     682}; 
     683 
     684 
     685static struct platform_device nb4_spi_gpio = { 
     686        .name = "spi_gpio", 
     687        .id   = 1, 
     688        .dev = { 
     689                .platform_data = &nb4_spi_gpio_data, 
     690        }, 
     691}; 
     692 
     693static struct platform_device * __initdata nb4_devices[] = { 
     694        &nb4_spi_gpio, 
     695}; 
     696 
     697const struct gen_74x164_chip_platform_data nb4_74x164_platform_data = { 
     698        .base = NB4_74X164_GPIO_BASE 
     699}; 
     700 
     701static struct spi_board_info nb4_spi_devices[] = { 
     702        { 
     703                .modalias = "74x164", 
     704                .max_speed_hz = 781000, 
     705                .bus_num = 1, 
     706                .controller_data = (void *) SPI_GPIO_NO_CHIPSELECT, 
     707                .mode = SPI_MODE_0, 
     708                .platform_data = &nb4_74x164_platform_data 
     709        } 
     710}; 
     711 
     712static struct board_info __initdata board_nb4_ser_r0 = { 
     713        .name                           = "NB4-SER-r0", 
     714        .expected_cpu_id                = 0x6358, 
     715 
     716        .has_uart0                      = 1, 
     717        .has_enet0                      = 1, 
     718        .has_enet1                      = 1, 
     719        .has_pci                        = 1, 
     720 
     721        .enet0 = { 
     722                .has_phy                = 1, 
     723                .use_internal_phy       = 1, 
     724        }, 
     725 
     726        .enet1 = { 
     727                .force_speed_100        = 1, 
     728                .force_duplex_full      = 1, 
     729        }, 
     730 
     731 
     732        .has_ohci0 = 1, 
     733        .has_pccard = 1, 
     734        .has_ehci0 = 1, 
     735 
     736        .leds = { 
     737                { 
     738                        .name           = "adsl", 
     739                        .gpio           = NB4_74HC64_GPIO(4), 
     740                        .active_low     = 1, 
     741                }, 
     742                { 
     743                        .name           = "traffic", 
     744                        .gpio           = 2, 
     745                        .active_low     = 1, 
     746                }, 
     747                { 
     748                        .name           = "tel", 
     749                        .gpio           = NB4_74HC64_GPIO(3), 
     750                        .active_low     = 1, 
     751                }, 
     752                { 
     753                        .name           = "tv", 
     754                        .gpio           = NB4_74HC64_GPIO(2), 
     755                        .active_low     = 1, 
     756                }, 
     757                { 
     758                        .name           = "wifi", 
     759                        .gpio           = 15, 
     760                        .active_low     = 1, 
     761                }, 
     762                { 
     763                        .name           = "alarm", 
     764                        .gpio           = NB4_74HC64_GPIO(0), 
     765                        .active_low     = 1, 
     766                }, 
     767                { 
     768                        .name           = "service:red", 
     769                        .gpio           = 29, 
     770                        .active_low     = 1, 
     771                }, 
     772                { 
     773                        .name           = "service:green", 
     774                        .gpio           = 30, 
     775                        .active_low     = 1, 
     776                }, 
     777                { 
     778                        .name           = "service:blue", 
     779                        .gpio           = 4, 
     780                        .active_low     = 1, 
     781                }, 
     782        }, 
     783        .buttons = { 
     784                { 
     785                        .desc           = "reset", 
     786                        .gpio           = 34, 
     787                        .type           = EV_KEY, 
     788                        .code           = KEY_RESTART, 
     789                        .threshold      = 3, 
     790                }, 
     791                { 
     792                        .desc           = "wps", 
     793                        .gpio           = 37, 
     794                        .type           = EV_KEY, 
     795                        .code           = KEY_WPS_BUTTON, 
     796                        .threshold      = 3, 
     797                }, 
     798        }, 
     799        .devs = nb4_devices, 
     800        .num_devs = ARRAY_SIZE(nb4_devices), 
     801        .spis = nb4_spi_devices, 
     802        .num_spis = ARRAY_SIZE(nb4_spi_devices), 
     803}; 
     804 
     805static struct board_info __initdata board_nb4_ser_r1 = { 
     806        .name                           = "NB4-SER-r1", 
     807        .expected_cpu_id                = 0x6358, 
     808 
     809        .has_uart0                      = 1, 
     810        .has_enet0                      = 1, 
     811        .has_enet1                      = 1, 
     812        .has_pci                        = 1, 
     813 
     814        .enet0 = { 
     815                .has_phy                = 1, 
     816                .use_internal_phy       = 1, 
     817        }, 
     818 
     819        .enet1 = { 
     820                .force_speed_100        = 1, 
     821                .force_duplex_full      = 1, 
     822        }, 
     823 
     824 
     825        .has_ohci0 = 1, 
     826        .has_pccard = 1, 
     827        .has_ehci0 = 1, 
     828 
     829        .leds = { 
     830                { 
     831                        .name           = "adsl", 
     832                        .gpio           = NB4_74HC64_GPIO(4), 
     833                        .active_low     = 1, 
     834                }, 
     835                { 
     836                        .name           = "traffic", 
     837                        .gpio           = 2, 
     838                        .active_low     = 1, 
     839                }, 
     840                { 
     841                        .name           = "tel", 
     842                        .gpio           = NB4_74HC64_GPIO(3), 
     843                        .active_low     = 1, 
     844                }, 
     845                { 
     846                        .name           = "tv", 
     847                        .gpio           = NB4_74HC64_GPIO(2), 
     848                        .active_low     = 1, 
     849                }, 
     850                { 
     851                        .name           = "wifi", 
     852                        .gpio           = 15, 
     853                        .active_low     = 1, 
     854                }, 
     855                { 
     856                        .name           = "alarm", 
     857                        .gpio           = NB4_74HC64_GPIO(0), 
     858                        .active_low     = 1, 
     859                }, 
     860                { 
     861                        .name           = "service:red", 
     862                        .gpio           = 29, 
     863                        .active_low     = 1, 
     864                }, 
     865                { 
     866                        .name           = "service:green", 
     867                        .gpio           = 30, 
     868                        .active_low     = 1, 
     869                }, 
     870                { 
     871                        .name           = "service:blue", 
     872                        .gpio           = 4, 
     873                        .active_low     = 1, 
     874                }, 
     875        }, 
     876        .buttons = { 
     877                { 
     878                        .desc           = "reset", 
     879                        .gpio           = 34, 
     880                        .type           = EV_KEY, 
     881                        .code           = KEY_RESTART, 
     882                        .threshold      = 3, 
     883                }, 
     884                { 
     885                        .desc           = "wps", 
     886                        .gpio           = 37, 
     887                        .type           = EV_KEY, 
     888                        .code           = KEY_WPS_BUTTON, 
     889                        .threshold      = 3, 
     890                }, 
     891        }, 
     892        .devs = nb4_devices, 
     893        .num_devs = ARRAY_SIZE(nb4_devices), 
     894        .spis = nb4_spi_devices, 
     895        .num_spis = ARRAY_SIZE(nb4_spi_devices), 
     896}; 
     897 
     898static struct board_info __initdata board_nb4_ser_r2 = { 
     899        .name                           = "NB4-SER-r2", 
     900        .expected_cpu_id                = 0x6358, 
     901 
     902        .has_uart0                      = 1, 
     903        .has_enet0                      = 1, 
     904        .has_enet1                      = 1, 
     905        .has_pci                        = 1, 
     906 
     907        .enet0 = { 
     908                .has_phy                = 1, 
     909                .use_internal_phy       = 1, 
     910        }, 
     911 
     912        .enet1 = { 
     913                .force_speed_100        = 1, 
     914                .force_duplex_full      = 1, 
     915        }, 
     916 
     917 
     918        .has_ohci0 = 1, 
     919        .has_pccard = 1, 
     920        .has_ehci0 = 1, 
     921 
     922        .leds = { 
     923                { 
     924                        .name           = "adsl", 
     925                        .gpio           = NB4_74HC64_GPIO(4), 
     926                        .active_low     = 1, 
     927                }, 
     928                { 
     929                        .name           = "traffic", 
     930                        .gpio           = 2, 
     931                        .active_low     = 1, 
     932                }, 
     933                { 
     934                        .name           = "tel", 
     935                        .gpio           = NB4_74HC64_GPIO(3), 
     936                        .active_low     = 1, 
     937                }, 
     938                { 
     939                        .name           = "tv", 
     940                        .gpio           = NB4_74HC64_GPIO(2), 
     941                        .active_low     = 1, 
     942                }, 
     943                { 
     944                        .name           = "wifi", 
     945                        .gpio           = 15, 
     946                        .active_low     = 1, 
     947                }, 
     948                { 
     949                        .name           = "alarm", 
     950                        .gpio           = NB4_74HC64_GPIO(0), 
     951                        .active_low     = 1, 
     952                }, 
     953                { 
     954                        .name           = "service:red", 
     955                        .gpio           = 29, 
     956                        .active_low     = 1, 
     957                }, 
     958                { 
     959                        .name           = "service:green", 
     960                        .gpio           = 30, 
     961                        .active_low     = 1, 
     962                }, 
     963                { 
     964                        .name           = "service:blue", 
     965                        .gpio           = 4, 
     966                        .active_low     = 1, 
     967                }, 
     968        }, 
     969        .buttons = { 
     970                { 
     971                        .desc           = "reset", 
     972                        .gpio           = 34, 
     973                        .type           = EV_KEY, 
     974                        .code           = KEY_RESTART, 
     975                        .threshold      = 3, 
     976                }, 
     977                { 
     978                        .desc           = "wps", 
     979                        .gpio           = 37, 
     980                        .type           = EV_KEY, 
     981                        .code           = KEY_WPS_BUTTON, 
     982                        .threshold      = 3, 
     983                }, 
     984        }, 
     985        .devs = nb4_devices, 
     986        .num_devs = ARRAY_SIZE(nb4_devices), 
     987        .spis = nb4_spi_devices, 
     988        .num_spis = ARRAY_SIZE(nb4_spi_devices), 
     989}; 
     990 
     991static struct board_info __initdata board_nb4_fxc_r1 = { 
     992        .name                           = "NB4-FXC-r1", 
     993        .expected_cpu_id                = 0x6358, 
     994 
     995        .has_uart0                      = 1, 
     996        .has_enet0                      = 1, 
     997        .has_enet1                      = 1, 
     998        .has_pci                        = 1, 
     999 
     1000        .enet0 = { 
     1001                .has_phy                = 1, 
     1002                .use_internal_phy       = 1, 
     1003        }, 
     1004 
     1005        .enet1 = { 
     1006                .force_speed_100        = 1, 
     1007                .force_duplex_full      = 1, 
     1008        }, 
     1009 
     1010 
     1011        .has_ohci0 = 1, 
     1012        .has_pccard = 1, 
     1013        .has_ehci0 = 1, 
     1014 
     1015        .leds = { 
     1016                { 
     1017                        .name           = "adsl", 
     1018                        .gpio           = NB4_74HC64_GPIO(4), 
     1019                        .active_low     = 1, 
     1020                }, 
     1021                { 
     1022                        .name           = "traffic", 
     1023                        .gpio           = 2, 
     1024                }, 
     1025                { 
     1026                        .name           = "tel", 
     1027                        .gpio           = NB4_74HC64_GPIO(3), 
     1028                        .active_low     = 1, 
     1029                }, 
     1030                { 
     1031                        .name           = "tv", 
     1032                        .gpio           = NB4_74HC64_GPIO(2), 
     1033                        .active_low     = 1, 
     1034                }, 
     1035                { 
     1036                        .name           = "wifi", 
     1037                        .gpio           = 15, 
     1038                }, 
     1039                { 
     1040                        .name           = "alarm", 
     1041                        .gpio           = NB4_74HC64_GPIO(0), 
     1042                        .active_low     = 1, 
     1043                }, 
     1044                { 
     1045                        .name           = "service:red", 
     1046                        .gpio           = 29, 
     1047                }, 
     1048                { 
     1049                        .name           = "service:green", 
     1050                        .gpio           = 30, 
     1051                }, 
     1052                { 
     1053                        .name           = "service:blue", 
     1054                        .gpio           = 4, 
     1055                }, 
     1056        }, 
     1057        .buttons = { 
     1058                { 
     1059                        .desc           = "reset", 
     1060                        .gpio           = 34, 
     1061                        .type           = EV_KEY, 
     1062                        .code           = KEY_RESTART, 
     1063                        .threshold      = 3, 
     1064                }, 
     1065                { 
     1066                        .desc           = "wps", 
     1067                        .gpio           = 37, 
     1068                        .type           = EV_KEY, 
     1069                        .code           = KEY_WPS_BUTTON, 
     1070                        .threshold      = 3, 
     1071                }, 
     1072        }, 
     1073        .devs = nb4_devices, 
     1074        .num_devs = ARRAY_SIZE(nb4_devices), 
     1075        .spis = nb4_spi_devices, 
     1076        .num_spis = ARRAY_SIZE(nb4_spi_devices), 
     1077}; 
     1078 
     1079static struct board_info __initdata board_nb4_fxc_r2 = { 
     1080        .name                           = "NB4-FXC-r2", 
     1081        .expected_cpu_id                = 0x6358, 
     1082 
     1083        .has_uart0                      = 1, 
     1084        .has_enet0                      = 1, 
     1085        .has_enet1                      = 1, 
     1086        .has_pci                        = 1, 
     1087 
     1088        .enet0 = { 
     1089                .has_phy                = 1, 
     1090                .use_internal_phy       = 1, 
     1091        }, 
     1092 
     1093        .enet1 = { 
     1094                .force_speed_100        = 1, 
     1095                .force_duplex_full      = 1, 
     1096        }, 
     1097 
     1098 
     1099        .has_ohci0 = 1, 
     1100        .has_pccard = 1, 
     1101        .has_ehci0 = 1, 
     1102 
     1103        .leds = { 
     1104                { 
     1105                        .name           = "adsl", 
     1106                        .gpio           = NB4_74HC64_GPIO(4), 
     1107                        .active_low     = 1, 
     1108                }, 
     1109                { 
     1110                        .name           = "traffic", 
     1111                        .gpio           = 2, 
     1112                }, 
     1113                { 
     1114                        .name           = "tel", 
     1115                        .gpio           = NB4_74HC64_GPIO(3), 
     1116                        .active_low     = 1, 
     1117                }, 
     1118                { 
     1119                        .name           = "tv", 
     1120                        .gpio           = NB4_74HC64_GPIO(2), 
     1121                        .active_low     = 1, 
     1122                }, 
     1123                { 
     1124                        .name           = "wifi", 
     1125                        .gpio           = 15, 
     1126                }, 
     1127                { 
     1128                        .name           = "alarm", 
     1129                        .gpio           = NB4_74HC64_GPIO(0), 
     1130                        .active_low     = 1, 
     1131                }, 
     1132                { 
     1133                        .name           = "service:red", 
     1134                        .gpio           = 29, 
     1135                }, 
     1136                { 
     1137                        .name           = "service:green", 
     1138                        .gpio           = 30, 
     1139                }, 
     1140                { 
     1141                        .name           = "service:blue", 
     1142                        .gpio           = 4, 
     1143                }, 
     1144        }, 
     1145        .buttons = { 
     1146                { 
     1147                        .desc           = "reset", 
     1148                        .gpio           = 34, 
     1149                        .type           = EV_KEY, 
     1150                        .code           = KEY_RESTART, 
     1151                        .threshold      = 3, 
     1152                }, 
     1153                { 
     1154                        .desc           = "wps", 
     1155                        .gpio           = 37, 
     1156                        .type           = EV_KEY, 
     1157                        .code           = KEY_WPS_BUTTON, 
     1158                        .threshold      = 3, 
     1159                }, 
     1160        }, 
     1161        .devs = nb4_devices, 
     1162        .num_devs = ARRAY_SIZE(nb4_devices), 
     1163        .spis = nb4_spi_devices, 
     1164        .num_spis = ARRAY_SIZE(nb4_spi_devices), 
     1165}; 
    6671166#endif 
    6681167 
    6691168/* 
    static const struct board_info __initdat 
    6941193        &board_96358vw2, 
    6951194        &board_AGPFS0, 
    6961195        &board_DWVS0, 
     1196        &board_nb4_ser_r0, 
     1197        &board_nb4_ser_r1, 
     1198        &board_nb4_ser_r2, 
     1199        &board_nb4_fxc_r1, 
     1200        &board_nb4_fxc_r2, 
    6971201#endif 
    6981202}; 
    6991203 
     1204static void __init nb4_nvram_fixup(void) 
     1205{ 
     1206        u8 *boot_addr, *p; 
     1207        u32 val; 
     1208 
     1209        if (BCMCPU_IS_6358() && (!strcmp(nvram.name, "96358VW"))) { 
     1210                val = bcm_mpi_readl(MPI_CSBASE_REG(0)); 
     1211                val &= MPI_CSBASE_BASE_MASK; 
     1212                boot_addr = (u8 *)KSEG1ADDR(val); 
     1213                /* Extract nb4 PID */ 
     1214                p = boot_addr + NB4_PID_OFFSET; 
     1215                if (!memcmp(p, "NB4-", 4)) 
     1216                        memcpy(nvram.name, p, sizeof("NB4-XXX-rX")); 
     1217        } 
     1218} 
     1219 
    7001220/* 
    7011221 * Register a sane SPROMv2 to make the on-board 
    7021222 * bcm4318 WLAN work 
    void __init board_prom_init(void) 
    8471367                boardid_fixup(boot_addr); 
    8481368        } 
    8491369 
     1370        /* Fixup broken nb4 board name */ 
     1371        nb4_nvram_fixup(); 
     1372 
    8501373        /* find board by name */ 
    8511374        for (i = 0; i < ARRAY_SIZE(bcm963xx_boards); i++) { 
    8521375                if (strncmp(nvram.name, bcm963xx_boards[i]->name, 
Note: See TracBrowser for help on using the repository browser.