source: trunk/target/linux/brcm63xx/patches-2.6.33/221-board-NB4.patch @ 21253

Last change on this file since 21253 was 21253, checked in by rhk, 6 years ago

[brcm63xx] fix gpio button key code, match button-hotplug code

File size: 9.0 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/nxp_74hc164.h> 
    2021#include <asm/addrspace.h> 
    2122#include <bcm63xx_board.h> 
    2223#include <bcm63xx_cpu.h> 
     
    3334 
    3435#define PFX     "board_bcm963xx: " 
    3536 
     37#define NEUFBOX4_PID_OFFSET             0xff80 
     38#define NEUFBOX4_EXP_GPIO_BASE          64 
     39#define NEUFBOX4_GPIO_74HC164_DATA      7 
     40#define NEUFBOX4_GPIO_74HC164_CLK       6 
     41#define NXP_74HC64_GPIO(X)              (NEUFBOX4_EXP_GPIO_BASE + (X)) 
     42 
    3643static struct bcm963xx_nvram nvram; 
    3744static unsigned int mac_addr_used; 
    3845static struct board_info board; 
    static struct board_info __initdata boar 
    713720 
    714721        .has_ohci0 = 1, 
    715722}; 
     723 
     724static struct nxp_74hc164_platform_data neufbox4_74hc164_data = { 
     725        .gpio_base      = NEUFBOX4_EXP_GPIO_BASE, 
     726        .gpio_pin_data  = NEUFBOX4_GPIO_74HC164_DATA, 
     727        .gpio_pin_clk   = NEUFBOX4_GPIO_74HC164_CLK, 
     728 
     729}; 
     730 
     731static struct platform_device neufbox4_74hc164 = { 
     732        .name           = NXP_74HC164_DRIVER_NAME, 
     733        .id             = -1, 
     734        .dev = { 
     735                .platform_data  = &neufbox4_74hc164_data, 
     736        } 
     737}; 
     738 
     739static struct platform_device * __initdata neufbox4_devices[] = { 
     740        &neufbox4_74hc164, 
     741}; 
     742 
     743static struct board_info __initdata board_nb4_ser_r0 = { 
     744        .name                           = "NB4-SER-r0", 
     745        .expected_cpu_id                = 0x6358, 
     746 
     747        .has_enet0                      = 1, 
     748        .has_enet1                      = 1, 
     749        .has_pci                        = 1, 
     750 
     751        .enet0 = { 
     752                .has_phy                = 1, 
     753                .use_internal_phy       = 1, 
     754        }, 
     755 
     756        .enet1 = { 
     757                .force_speed_100        = 1, 
     758                .force_duplex_full      = 1, 
     759        }, 
     760 
     761 
     762        .has_ohci0 = 1, 
     763        .has_pccard = 1, 
     764        .has_ehci0 = 1, 
     765 
     766        .has_udc0                       = 1, 
     767 
     768        .leds = { 
     769                { 
     770                        .name           = "adsl", 
     771                        .gpio           = NXP_74HC64_GPIO(4), 
     772                        .active_low     = 1, 
     773                }, 
     774                { 
     775                        .name           = "traffic", 
     776                        .gpio           = 2, 
     777                        .active_low     = 1, 
     778                }, 
     779                { 
     780                        .name           = "tel", 
     781                        .gpio           = NXP_74HC64_GPIO(3), 
     782                        .active_low     = 1, 
     783                }, 
     784                { 
     785                        .name           = "tv", 
     786                        .gpio           = NXP_74HC64_GPIO(2), 
     787                        .active_low     = 1, 
     788                }, 
     789                { 
     790                        .name           = "wifi", 
     791                        .gpio           = 15, 
     792                        .active_low     = 1, 
     793                }, 
     794                { 
     795                        .name           = "alarm", 
     796                        .gpio           = NXP_74HC64_GPIO(0), 
     797                        .active_low     = 1, 
     798                }, 
     799                { 
     800                        .name           = "service:red", 
     801                        .gpio           = 29, 
     802                        .active_low     = 1, 
     803                }, 
     804                { 
     805                        .name           = "service:green", 
     806                        .gpio           = 30, 
     807                        .active_low     = 1, 
     808                }, 
     809                { 
     810                        .name           = "service:blue", 
     811                        .gpio           = 4, 
     812                        .active_low     = 1, 
     813                }, 
     814        }, 
     815        .reset_buttons = { 
     816                { 
     817                        .desc           = "reset", 
     818                        .gpio           = 34, 
     819                        .active_low     = 1, 
     820                        .type           = EV_KEY, 
     821                        .code           = KEY_RESTART, 
     822                        .threshold      = 3, 
     823                }, 
     824        }, 
     825        .devs = neufbox4_devices, 
     826        .num_devs = ARRAY_SIZE(neufbox4_devices), 
     827}; 
     828 
     829static struct board_info __initdata board_nb4_ser_r1 = { 
     830        .name                           = "NB4-SER-r1", 
     831        .expected_cpu_id                = 0x6358, 
     832 
     833        .has_enet0                      = 1, 
     834        .has_enet1                      = 1, 
     835        .has_pci                        = 1, 
     836 
     837        .enet0 = { 
     838                .has_phy                = 1, 
     839                .use_internal_phy       = 1, 
     840        }, 
     841 
     842        .enet1 = { 
     843                .force_speed_100        = 1, 
     844                .force_duplex_full      = 1, 
     845        }, 
     846 
     847 
     848        .has_ohci0 = 1, 
     849        .has_pccard = 1, 
     850        .has_ehci0 = 1, 
     851 
     852        .has_udc0                       = 1, 
     853 
     854        .leds = { 
     855                { 
     856                        .name           = "adsl", 
     857                        .gpio           = NXP_74HC64_GPIO(4), 
     858                        .active_low     = 1, 
     859                }, 
     860                { 
     861                        .name           = "traffic", 
     862                        .gpio           = 2, 
     863                        .active_low     = 1, 
     864                }, 
     865                { 
     866                        .name           = "tel", 
     867                        .gpio           = NXP_74HC64_GPIO(3), 
     868                        .active_low     = 1, 
     869                }, 
     870                { 
     871                        .name           = "tv", 
     872                        .gpio           = NXP_74HC64_GPIO(2), 
     873                        .active_low     = 1, 
     874                }, 
     875                { 
     876                        .name           = "wifi", 
     877                        .gpio           = 15, 
     878                        .active_low     = 1, 
     879                }, 
     880                { 
     881                        .name           = "alarm", 
     882                        .gpio           = NXP_74HC64_GPIO(0), 
     883                        .active_low     = 1, 
     884                }, 
     885                { 
     886                        .name           = "service:red", 
     887                        .gpio           = 29, 
     888                        .active_low     = 1, 
     889                }, 
     890                { 
     891                        .name           = "service:green", 
     892                        .gpio           = 30, 
     893                        .active_low     = 1, 
     894                }, 
     895                { 
     896                        .name           = "service:blue", 
     897                        .gpio           = 4, 
     898                        .active_low     = 1, 
     899                }, 
     900        }, 
     901        .reset_buttons = { 
     902                { 
     903                        .desc           = "reset", 
     904                        .gpio           = 34, 
     905                        .active_low     = 1, 
     906                        .type           = EV_KEY, 
     907                        .code           = KEY_RESTART, 
     908                        .threshold      = 3, 
     909                }, 
     910        }, 
     911        .devs = neufbox4_devices, 
     912        .num_devs = ARRAY_SIZE(neufbox4_devices), 
     913}; 
     914 
     915static struct board_info __initdata board_nb4_ser_r2 = { 
     916        .name                           = "NB4-SER-r2", 
     917        .expected_cpu_id                = 0x6358, 
     918 
     919        .has_enet0                      = 1, 
     920        .has_enet1                      = 1, 
     921        .has_pci                        = 1, 
     922 
     923        .enet0 = { 
     924                .has_phy                = 1, 
     925                .use_internal_phy       = 1, 
     926        }, 
     927 
     928        .enet1 = { 
     929                .force_speed_100        = 1, 
     930                .force_duplex_full      = 1, 
     931        }, 
     932 
     933 
     934        .has_ohci0 = 1, 
     935        .has_pccard = 1, 
     936        .has_ehci0 = 1, 
     937 
     938        .leds = { 
     939                { 
     940                        .name           = "adsl", 
     941                        .gpio           = NXP_74HC64_GPIO(4), 
     942                        .active_low     = 1, 
     943                }, 
     944                { 
     945                        .name           = "traffic", 
     946                        .gpio           = 2, 
     947                        .active_low     = 1, 
     948                }, 
     949                { 
     950                        .name           = "tel", 
     951                        .gpio           = NXP_74HC64_GPIO(3), 
     952                        .active_low     = 1, 
     953                }, 
     954                { 
     955                        .name           = "tv", 
     956                        .gpio           = NXP_74HC64_GPIO(2), 
     957                        .active_low     = 1, 
     958                }, 
     959                { 
     960                        .name           = "wifi", 
     961                        .gpio           = 15, 
     962                        .active_low     = 1, 
     963                }, 
     964                { 
     965                        .name           = "alarm", 
     966                        .gpio           = NXP_74HC64_GPIO(0), 
     967                        .active_low     = 1, 
     968                }, 
     969                { 
     970                        .name           = "service:red", 
     971                        .gpio           = 29, 
     972                        .active_low     = 1, 
     973                }, 
     974                { 
     975                        .name           = "service:green", 
     976                        .gpio           = 30, 
     977                        .active_low     = 1, 
     978                }, 
     979                { 
     980                        .name           = "service:blue", 
     981                        .gpio           = 4, 
     982                        .active_low     = 1, 
     983                }, 
     984        }, 
     985        .reset_buttons = { 
     986                { 
     987                        .desc           = "reset", 
     988                        .gpio           = 34, 
     989                        .active_low     = 1, 
     990                        .type           = EV_KEY, 
     991                        .code           = KEY_RESTART, 
     992                        .threshold      = 3, 
     993                }, 
     994        }, 
     995        .devs = neufbox4_devices, 
     996        .num_devs = ARRAY_SIZE(neufbox4_devices), 
     997}; 
     998 
     999static struct board_info __initdata board_nb4_fxc_r1 = { 
     1000        .name                           = "NB4-FXC-r1", 
     1001        .expected_cpu_id                = 0x6358, 
     1002 
     1003        .has_enet0                      = 1, 
     1004        .has_enet1                      = 1, 
     1005        .has_pci                        = 1, 
     1006 
     1007        .enet0 = { 
     1008                .has_phy                = 1, 
     1009                .use_internal_phy       = 1, 
     1010        }, 
     1011 
     1012        .enet1 = { 
     1013                .force_speed_100        = 1, 
     1014                .force_duplex_full      = 1, 
     1015        }, 
     1016 
     1017 
     1018        .has_ohci0 = 1, 
     1019        .has_pccard = 1, 
     1020        .has_ehci0 = 1, 
     1021 
     1022        .has_udc0                       = 1, 
     1023 
     1024        .leds = { 
     1025                { 
     1026                        .name           = "adsl", 
     1027                        .gpio           = NXP_74HC64_GPIO(4), 
     1028                        .active_low     = 1, 
     1029                }, 
     1030                { 
     1031                        .name           = "traffic", 
     1032                        .gpio           = 2, 
     1033                }, 
     1034                { 
     1035                        .name           = "tel", 
     1036                        .gpio           = NXP_74HC64_GPIO(3), 
     1037                        .active_low     = 1, 
     1038                }, 
     1039                { 
     1040                        .name           = "tv", 
     1041                        .gpio           = NXP_74HC64_GPIO(2), 
     1042                        .active_low     = 1, 
     1043                }, 
     1044                { 
     1045                        .name           = "wifi", 
     1046                        .gpio           = 15, 
     1047                }, 
     1048                { 
     1049                        .name           = "alarm", 
     1050                        .gpio           = NXP_74HC64_GPIO(0), 
     1051                        .active_low     = 1, 
     1052                }, 
     1053                { 
     1054                        .name           = "service:red", 
     1055                        .gpio           = 29, 
     1056                }, 
     1057                { 
     1058                        .name           = "service:green", 
     1059                        .gpio           = 30, 
     1060                }, 
     1061                { 
     1062                        .name           = "service:blue", 
     1063                        .gpio           = 4, 
     1064                }, 
     1065        }, 
     1066        .reset_buttons = { 
     1067                { 
     1068                        .desc           = "reset", 
     1069                        .gpio           = 34, 
     1070                        .active_low     = 1, 
     1071                        .type           = EV_KEY, 
     1072                        .code           = KEY_RESTART, 
     1073                        .threshold      = 3, 
     1074                }, 
     1075        }, 
     1076        .devs = neufbox4_devices, 
     1077        .num_devs = ARRAY_SIZE(neufbox4_devices), 
     1078}; 
     1079 
     1080static struct board_info __initdata board_nb4_fxc_r2 = { 
     1081        .name                           = "NB4-FXC-r2", 
     1082        .expected_cpu_id                = 0x6358, 
     1083 
     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           = NXP_74HC64_GPIO(4), 
     1107                        .active_low     = 1, 
     1108                }, 
     1109                { 
     1110                        .name           = "traffic", 
     1111                        .gpio           = 2, 
     1112                }, 
     1113                { 
     1114                        .name           = "tel", 
     1115                        .gpio           = NXP_74HC64_GPIO(3), 
     1116                        .active_low     = 1, 
     1117                }, 
     1118                { 
     1119                        .name           = "tv", 
     1120                        .gpio           = NXP_74HC64_GPIO(2), 
     1121                        .active_low     = 1, 
     1122                }, 
     1123                { 
     1124                        .name           = "wifi", 
     1125                        .gpio           = 15, 
     1126                }, 
     1127                { 
     1128                        .name           = "alarm", 
     1129                        .gpio           = NXP_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        .reset_buttons = { 
     1146                { 
     1147                        .desc           = "reset", 
     1148                        .gpio           = 34, 
     1149                        .active_low     = 1, 
     1150                        .type           = EV_KEY, 
     1151                        .code           = KEY_RESTART, 
     1152                        .threshold      = 3, 
     1153                }, 
     1154        }, 
     1155        .devs = neufbox4_devices, 
     1156        .num_devs = ARRAY_SIZE(neufbox4_devices), 
     1157}; 
    7161158#endif 
    7171159 
    7181160/* 
    static const struct board_info __initdat 
    7431185        &board_96358vw2, 
    7441186        &board_AGPFS0, 
    7451187        &board_DWVS0, 
     1188        &board_nb4_ser_r0, 
     1189        &board_nb4_ser_r1, 
     1190        &board_nb4_ser_r2, 
     1191        &board_nb4_fxc_r1, 
     1192        &board_nb4_fxc_r2, 
    7461193#endif 
    7471194}; 
    7481195 
     1196static void __init neufbox4_nvram_fixup(void) 
     1197{ 
     1198        u8 *boot_addr, *p; 
     1199        u32 val; 
     1200 
     1201        if (BCMCPU_IS_6358() && (!strcmp(nvram.name, "96358VW"))) { 
     1202                val = bcm_mpi_readl(MPI_CSBASE_REG(0)); 
     1203                val &= MPI_CSBASE_BASE_MASK; 
     1204                boot_addr = (u8 *)KSEG1ADDR(val); 
     1205                /* Extract neufbox4 PID */ 
     1206                p = boot_addr + NEUFBOX4_PID_OFFSET; 
     1207                if (!memcmp(p, "NB4-", 4)) 
     1208                        memcpy(nvram.name, p, sizeof("NB4-XXX-rX")); 
     1209        } 
     1210} 
     1211 
    7491212/* 
    7501213 * early init callback, read nvram data from flash and checksum it 
    7511214 */ 
    void __init board_prom_init(void) 
    7931256                return; 
    7941257        } 
    7951258 
     1259        /* Fixup broken neufbox4 board name */ 
     1260        neufbox4_nvram_fixup(); 
     1261 
    7961262        /* find board by name */ 
    7971263        for (i = 0; i < ARRAY_SIZE(bcm963xx_boards); i++) { 
    7981264                if (strncmp(nvram.name, bcm963xx_boards[i]->name, 
  • arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h

    a b struct board_info { 
    5555        struct bcm63xx_dsp_platform_data dsp; 
    5656 
    5757        /* GPIO LEDs */ 
    58         struct gpio_led leds[8]; 
     58        struct gpio_led leds[9]; 
    5959 
    6060        /* Reset button */ 
    6161        struct gpio_button reset_buttons[1]; 
Note: See TracBrowser for help on using the repository browser.