source: trunk/target/linux/brcm63xx/patches-2.6.37/441-board-NB4.patch @ 27013

Last change on this file since 27013 was 27013, checked in by florian, 6 years ago

[brcm63xx] renumber patches accordingly

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> 
     
    3942#define CFE_OFFSET_64K          0x10000 
    4043#define CFE_OFFSET_128K         0x20000 
    4144 
     45#define NB4_PID_OFFSET          0xff80 
     46#define NB4_74X164_GPIO_BASE    64 
     47#define NB4_SPI_GPIO_MOSI       7 
     48#define NB4_SPI_GPIO_CLK        6 
     49#define NB4_74HC64_GPIO(X)      (NB4_74X164_GPIO_BASE + (X)) 
     50 
    4251static struct bcm963xx_nvram nvram; 
    4352static unsigned int mac_addr_used; 
    4453static struct board_info board; 
    static struct board_info __initdata boar 
    774783 
    775784        .has_ohci0                      = 1, 
    776785}; 
     786 
     787struct spi_gpio_platform_data nb4_spi_gpio_data = { 
     788        .sck            = NB4_SPI_GPIO_CLK, 
     789        .mosi           = NB4_SPI_GPIO_MOSI, 
     790        .miso           = SPI_GPIO_NO_MISO, 
     791        .num_chipselect = 1, 
     792}; 
     793 
     794 
     795static struct platform_device nb4_spi_gpio = { 
     796        .name = "spi_gpio", 
     797        .id   = 1, 
     798        .dev = { 
     799                .platform_data = &nb4_spi_gpio_data, 
     800        }, 
     801}; 
     802 
     803static struct platform_device * __initdata nb4_devices[] = { 
     804        &nb4_spi_gpio, 
     805}; 
     806 
     807const struct gen_74x164_chip_platform_data nb4_74x164_platform_data = { 
     808        .base = NB4_74X164_GPIO_BASE 
     809}; 
     810 
     811static struct spi_board_info nb4_spi_devices[] = { 
     812        { 
     813                .modalias = "74x164", 
     814                .max_speed_hz = 781000, 
     815                .bus_num = 1, 
     816                .controller_data = (void *) SPI_GPIO_NO_CHIPSELECT, 
     817                .mode = SPI_MODE_0, 
     818                .platform_data = &nb4_74x164_platform_data 
     819        } 
     820}; 
     821 
     822static struct board_info __initdata board_nb4_ser_r0 = { 
     823        .name                           = "NB4-SER-r0", 
     824        .expected_cpu_id                = 0x6358, 
     825 
     826        .has_uart0                      = 1, 
     827        .has_enet0                      = 1, 
     828        .has_enet1                      = 1, 
     829        .has_pci                        = 1, 
     830 
     831        .enet0 = { 
     832                .has_phy                = 1, 
     833                .use_internal_phy       = 1, 
     834        }, 
     835 
     836        .enet1 = { 
     837                .force_speed_100        = 1, 
     838                .force_duplex_full      = 1, 
     839        }, 
     840 
     841 
     842        .has_ohci0 = 1, 
     843        .has_pccard = 1, 
     844        .has_ehci0 = 1, 
     845 
     846        .has_udc0                       = 1, 
     847 
     848        .leds = { 
     849                { 
     850                        .name           = "adsl", 
     851                        .gpio           = NB4_74HC64_GPIO(4), 
     852                        .active_low     = 1, 
     853                }, 
     854                { 
     855                        .name           = "traffic", 
     856                        .gpio           = 2, 
     857                        .active_low     = 1, 
     858                }, 
     859                { 
     860                        .name           = "tel", 
     861                        .gpio           = NB4_74HC64_GPIO(3), 
     862                        .active_low     = 1, 
     863                }, 
     864                { 
     865                        .name           = "tv", 
     866                        .gpio           = NB4_74HC64_GPIO(2), 
     867                        .active_low     = 1, 
     868                }, 
     869                { 
     870                        .name           = "wifi", 
     871                        .gpio           = 15, 
     872                        .active_low     = 1, 
     873                }, 
     874                { 
     875                        .name           = "alarm", 
     876                        .gpio           = NB4_74HC64_GPIO(0), 
     877                        .active_low     = 1, 
     878                }, 
     879                { 
     880                        .name           = "service:red", 
     881                        .gpio           = 29, 
     882                        .active_low     = 1, 
     883                }, 
     884                { 
     885                        .name           = "service:green", 
     886                        .gpio           = 30, 
     887                        .active_low     = 1, 
     888                }, 
     889                { 
     890                        .name           = "service:blue", 
     891                        .gpio           = 4, 
     892                        .active_low     = 1, 
     893                }, 
     894        }, 
     895        .buttons = { 
     896                { 
     897                        .desc           = "reset", 
     898                        .gpio           = 34, 
     899                        .type           = EV_KEY, 
     900                        .code           = KEY_RESTART, 
     901                        .threshold      = 3, 
     902                }, 
     903                { 
     904                        .desc           = "wps", 
     905                        .gpio           = 37, 
     906                        .type           = EV_KEY, 
     907                        .code           = KEY_WPS_BUTTON, 
     908                        .threshold      = 3, 
     909                }, 
     910        }, 
     911        .devs = nb4_devices, 
     912        .num_devs = ARRAY_SIZE(nb4_devices), 
     913        .spis = nb4_spi_devices, 
     914        .num_spis = ARRAY_SIZE(nb4_spi_devices), 
     915}; 
     916 
     917static struct board_info __initdata board_nb4_ser_r1 = { 
     918        .name                           = "NB4-SER-r1", 
     919        .expected_cpu_id                = 0x6358, 
     920 
     921        .has_uart0                      = 1, 
     922        .has_enet0                      = 1, 
     923        .has_enet1                      = 1, 
     924        .has_pci                        = 1, 
     925 
     926        .enet0 = { 
     927                .has_phy                = 1, 
     928                .use_internal_phy       = 1, 
     929        }, 
     930 
     931        .enet1 = { 
     932                .force_speed_100        = 1, 
     933                .force_duplex_full      = 1, 
     934        }, 
     935 
     936 
     937        .has_ohci0 = 1, 
     938        .has_pccard = 1, 
     939        .has_ehci0 = 1, 
     940 
     941        .has_udc0                       = 1, 
     942 
     943        .leds = { 
     944                { 
     945                        .name           = "adsl", 
     946                        .gpio           = NB4_74HC64_GPIO(4), 
     947                        .active_low     = 1, 
     948                }, 
     949                { 
     950                        .name           = "traffic", 
     951                        .gpio           = 2, 
     952                        .active_low     = 1, 
     953                }, 
     954                { 
     955                        .name           = "tel", 
     956                        .gpio           = NB4_74HC64_GPIO(3), 
     957                        .active_low     = 1, 
     958                }, 
     959                { 
     960                        .name           = "tv", 
     961                        .gpio           = NB4_74HC64_GPIO(2), 
     962                        .active_low     = 1, 
     963                }, 
     964                { 
     965                        .name           = "wifi", 
     966                        .gpio           = 15, 
     967                        .active_low     = 1, 
     968                }, 
     969                { 
     970                        .name           = "alarm", 
     971                        .gpio           = NB4_74HC64_GPIO(0), 
     972                        .active_low     = 1, 
     973                }, 
     974                { 
     975                        .name           = "service:red", 
     976                        .gpio           = 29, 
     977                        .active_low     = 1, 
     978                }, 
     979                { 
     980                        .name           = "service:green", 
     981                        .gpio           = 30, 
     982                        .active_low     = 1, 
     983                }, 
     984                { 
     985                        .name           = "service:blue", 
     986                        .gpio           = 4, 
     987                        .active_low     = 1, 
     988                }, 
     989        }, 
     990        .buttons = { 
     991                { 
     992                        .desc           = "reset", 
     993                        .gpio           = 34, 
     994                        .type           = EV_KEY, 
     995                        .code           = KEY_RESTART, 
     996                        .threshold      = 3, 
     997                }, 
     998                { 
     999                        .desc           = "wps", 
     1000                        .gpio           = 37, 
     1001                        .type           = EV_KEY, 
     1002                        .code           = KEY_WPS_BUTTON, 
     1003                        .threshold      = 3, 
     1004                }, 
     1005        }, 
     1006        .devs = nb4_devices, 
     1007        .num_devs = ARRAY_SIZE(nb4_devices), 
     1008        .spis = nb4_spi_devices, 
     1009        .num_spis = ARRAY_SIZE(nb4_spi_devices), 
     1010}; 
     1011 
     1012static struct board_info __initdata board_nb4_ser_r2 = { 
     1013        .name                           = "NB4-SER-r2", 
     1014        .expected_cpu_id                = 0x6358, 
     1015 
     1016        .has_uart0                      = 1, 
     1017        .has_enet0                      = 1, 
     1018        .has_enet1                      = 1, 
     1019        .has_pci                        = 1, 
     1020 
     1021        .enet0 = { 
     1022                .has_phy                = 1, 
     1023                .use_internal_phy       = 1, 
     1024        }, 
     1025 
     1026        .enet1 = { 
     1027                .force_speed_100        = 1, 
     1028                .force_duplex_full      = 1, 
     1029        }, 
     1030 
     1031 
     1032        .has_ohci0 = 1, 
     1033        .has_pccard = 1, 
     1034        .has_ehci0 = 1, 
     1035 
     1036        .leds = { 
     1037                { 
     1038                        .name           = "adsl", 
     1039                        .gpio           = NB4_74HC64_GPIO(4), 
     1040                        .active_low     = 1, 
     1041                }, 
     1042                { 
     1043                        .name           = "traffic", 
     1044                        .gpio           = 2, 
     1045                        .active_low     = 1, 
     1046                }, 
     1047                { 
     1048                        .name           = "tel", 
     1049                        .gpio           = NB4_74HC64_GPIO(3), 
     1050                        .active_low     = 1, 
     1051                }, 
     1052                { 
     1053                        .name           = "tv", 
     1054                        .gpio           = NB4_74HC64_GPIO(2), 
     1055                        .active_low     = 1, 
     1056                }, 
     1057                { 
     1058                        .name           = "wifi", 
     1059                        .gpio           = 15, 
     1060                        .active_low     = 1, 
     1061                }, 
     1062                { 
     1063                        .name           = "alarm", 
     1064                        .gpio           = NB4_74HC64_GPIO(0), 
     1065                        .active_low     = 1, 
     1066                }, 
     1067                { 
     1068                        .name           = "service:red", 
     1069                        .gpio           = 29, 
     1070                        .active_low     = 1, 
     1071                }, 
     1072                { 
     1073                        .name           = "service:green", 
     1074                        .gpio           = 30, 
     1075                        .active_low     = 1, 
     1076                }, 
     1077                { 
     1078                        .name           = "service:blue", 
     1079                        .gpio           = 4, 
     1080                        .active_low     = 1, 
     1081                }, 
     1082        }, 
     1083        .buttons = { 
     1084                { 
     1085                        .desc           = "reset", 
     1086                        .gpio           = 34, 
     1087                        .type           = EV_KEY, 
     1088                        .code           = KEY_RESTART, 
     1089                        .threshold      = 3, 
     1090                }, 
     1091                { 
     1092                        .desc           = "wps", 
     1093                        .gpio           = 37, 
     1094                        .type           = EV_KEY, 
     1095                        .code           = KEY_WPS_BUTTON, 
     1096                        .threshold      = 3, 
     1097                }, 
     1098        }, 
     1099        .devs = nb4_devices, 
     1100        .num_devs = ARRAY_SIZE(nb4_devices), 
     1101        .spis = nb4_spi_devices, 
     1102        .num_spis = ARRAY_SIZE(nb4_spi_devices), 
     1103}; 
     1104 
     1105static struct board_info __initdata board_nb4_fxc_r1 = { 
     1106        .name                           = "NB4-FXC-r1", 
     1107        .expected_cpu_id                = 0x6358, 
     1108 
     1109        .has_uart0                      = 1, 
     1110        .has_enet0                      = 1, 
     1111        .has_enet1                      = 1, 
     1112        .has_pci                        = 1, 
     1113 
     1114        .enet0 = { 
     1115                .has_phy                = 1, 
     1116                .use_internal_phy       = 1, 
     1117        }, 
     1118 
     1119        .enet1 = { 
     1120                .force_speed_100        = 1, 
     1121                .force_duplex_full      = 1, 
     1122        }, 
     1123 
     1124 
     1125        .has_ohci0 = 1, 
     1126        .has_pccard = 1, 
     1127        .has_ehci0 = 1, 
     1128 
     1129        .has_udc0                       = 1, 
     1130 
     1131        .leds = { 
     1132                { 
     1133                        .name           = "adsl", 
     1134                        .gpio           = NB4_74HC64_GPIO(4), 
     1135                        .active_low     = 1, 
     1136                }, 
     1137                { 
     1138                        .name           = "traffic", 
     1139                        .gpio           = 2, 
     1140                }, 
     1141                { 
     1142                        .name           = "tel", 
     1143                        .gpio           = NB4_74HC64_GPIO(3), 
     1144                        .active_low     = 1, 
     1145                }, 
     1146                { 
     1147                        .name           = "tv", 
     1148                        .gpio           = NB4_74HC64_GPIO(2), 
     1149                        .active_low     = 1, 
     1150                }, 
     1151                { 
     1152                        .name           = "wifi", 
     1153                        .gpio           = 15, 
     1154                }, 
     1155                { 
     1156                        .name           = "alarm", 
     1157                        .gpio           = NB4_74HC64_GPIO(0), 
     1158                        .active_low     = 1, 
     1159                }, 
     1160                { 
     1161                        .name           = "service:red", 
     1162                        .gpio           = 29, 
     1163                }, 
     1164                { 
     1165                        .name           = "service:green", 
     1166                        .gpio           = 30, 
     1167                }, 
     1168                { 
     1169                        .name           = "service:blue", 
     1170                        .gpio           = 4, 
     1171                }, 
     1172        }, 
     1173        .buttons = { 
     1174                { 
     1175                        .desc           = "reset", 
     1176                        .gpio           = 34, 
     1177                        .type           = EV_KEY, 
     1178                        .code           = KEY_RESTART, 
     1179                        .threshold      = 3, 
     1180                }, 
     1181                { 
     1182                        .desc           = "wps", 
     1183                        .gpio           = 37, 
     1184                        .type           = EV_KEY, 
     1185                        .code           = KEY_WPS_BUTTON, 
     1186                        .threshold      = 3, 
     1187                }, 
     1188        }, 
     1189        .devs = nb4_devices, 
     1190        .num_devs = ARRAY_SIZE(nb4_devices), 
     1191        .spis = nb4_spi_devices, 
     1192        .num_spis = ARRAY_SIZE(nb4_spi_devices), 
     1193}; 
     1194 
     1195static struct board_info __initdata board_nb4_fxc_r2 = { 
     1196        .name                           = "NB4-FXC-r2", 
     1197        .expected_cpu_id                = 0x6358, 
     1198 
     1199        .has_uart0                      = 1, 
     1200        .has_enet0                      = 1, 
     1201        .has_enet1                      = 1, 
     1202        .has_pci                        = 1, 
     1203 
     1204        .enet0 = { 
     1205                .has_phy                = 1, 
     1206                .use_internal_phy       = 1, 
     1207        }, 
     1208 
     1209        .enet1 = { 
     1210                .force_speed_100        = 1, 
     1211                .force_duplex_full      = 1, 
     1212        }, 
     1213 
     1214 
     1215        .has_ohci0 = 1, 
     1216        .has_pccard = 1, 
     1217        .has_ehci0 = 1, 
     1218 
     1219        .leds = { 
     1220                { 
     1221                        .name           = "adsl", 
     1222                        .gpio           = NB4_74HC64_GPIO(4), 
     1223                        .active_low     = 1, 
     1224                }, 
     1225                { 
     1226                        .name           = "traffic", 
     1227                        .gpio           = 2, 
     1228                }, 
     1229                { 
     1230                        .name           = "tel", 
     1231                        .gpio           = NB4_74HC64_GPIO(3), 
     1232                        .active_low     = 1, 
     1233                }, 
     1234                { 
     1235                        .name           = "tv", 
     1236                        .gpio           = NB4_74HC64_GPIO(2), 
     1237                        .active_low     = 1, 
     1238                }, 
     1239                { 
     1240                        .name           = "wifi", 
     1241                        .gpio           = 15, 
     1242                }, 
     1243                { 
     1244                        .name           = "alarm", 
     1245                        .gpio           = NB4_74HC64_GPIO(0), 
     1246                        .active_low     = 1, 
     1247                }, 
     1248                { 
     1249                        .name           = "service:red", 
     1250                        .gpio           = 29, 
     1251                }, 
     1252                { 
     1253                        .name           = "service:green", 
     1254                        .gpio           = 30, 
     1255                }, 
     1256                { 
     1257                        .name           = "service:blue", 
     1258                        .gpio           = 4, 
     1259                }, 
     1260        }, 
     1261        .buttons = { 
     1262                { 
     1263                        .desc           = "reset", 
     1264                        .gpio           = 34, 
     1265                        .type           = EV_KEY, 
     1266                        .code           = KEY_RESTART, 
     1267                        .threshold      = 3, 
     1268                }, 
     1269                { 
     1270                        .desc           = "wps", 
     1271                        .gpio           = 37, 
     1272                        .type           = EV_KEY, 
     1273                        .code           = KEY_WPS_BUTTON, 
     1274                        .threshold      = 3, 
     1275                }, 
     1276        }, 
     1277        .devs = nb4_devices, 
     1278        .num_devs = ARRAY_SIZE(nb4_devices), 
     1279        .spis = nb4_spi_devices, 
     1280        .num_spis = ARRAY_SIZE(nb4_spi_devices), 
     1281}; 
    7771282#endif 
    7781283 
    7791284/* 
    static const struct board_info __initdat 
    8041309        &board_96358vw2, 
    8051310        &board_AGPFS0, 
    8061311        &board_DWVS0, 
     1312        &board_nb4_ser_r0, 
     1313        &board_nb4_ser_r1, 
     1314        &board_nb4_ser_r2, 
     1315        &board_nb4_fxc_r1, 
     1316        &board_nb4_fxc_r2, 
    8071317#endif 
    8081318}; 
    8091319 
     1320static void __init nb4_nvram_fixup(void) 
     1321{ 
     1322        u8 *boot_addr, *p; 
     1323        u32 val; 
     1324 
     1325        if (BCMCPU_IS_6358() && (!strcmp(nvram.name, "96358VW"))) { 
     1326                val = bcm_mpi_readl(MPI_CSBASE_REG(0)); 
     1327                val &= MPI_CSBASE_BASE_MASK; 
     1328                boot_addr = (u8 *)KSEG1ADDR(val); 
     1329                /* Extract nb4 PID */ 
     1330                p = boot_addr + NB4_PID_OFFSET; 
     1331                if (!memcmp(p, "NB4-", 4)) 
     1332                        memcpy(nvram.name, p, sizeof("NB4-XXX-rX")); 
     1333        } 
     1334} 
     1335 
    8101336/* 
    8111337 * Register a sane SPROMv2 to make the on-board 
    8121338 * bcm4318 WLAN work 
    void __init board_prom_init(void) 
    9531479                boardid_fixup(boot_addr); 
    9541480        } 
    9551481 
     1482        /* Fixup broken nb4 board name */ 
     1483        nb4_nvram_fixup(); 
     1484 
    9561485        /* find board by name */ 
    9571486        for (i = 0; i < ARRAY_SIZE(bcm963xx_boards); i++) { 
    9581487                if (strncmp(nvram.name, bcm963xx_boards[i]->name, 
Note: See TracBrowser for help on using the repository browser.