source: trunk/target/linux/brcm63xx/patches-2.6.37/221-board-NB4.patch @ 25629

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

[brcm63xx] add support for 2.6.37, patches from KanjiMonster

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