Home | History | Annotate | Line # | Download | only in ralink
      1 /*	$NetBSD: ralink_gpio.h,v 1.3 2016/10/05 15:54:58 ryo Exp $	*/
      2 /*-
      3  * Copyright (c) 2011 CradlePoint Technology, Inc.
      4  * All rights reserved.
      5  *
      6  *
      7  * Redistribution and use in source and binary forms, with or without
      8  * modification, are permitted provided that the following conditions
      9  * are met:
     10  * 1. Redistributions of source code must retain the above copyright
     11  *    notice, this list of conditions and the following disclaimer.
     12  * 2. Redistributions in binary form must reproduce the above copyright
     13  *    notice, this list of conditions and the following disclaimer in the
     14  *    documentation and/or other materials provided with the distribution.
     15  *
     16  * THIS SOFTWARE IS PROVIDED BY CRADLEPOINT TECHNOLOGY, INC. AND CONTRIBUTORS
     17  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     18  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     19  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
     20  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     21  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     22  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     23  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     24  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     25  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     26  * POSSIBILITY OF SUCH DAMAGE.
     27  */
     28 
     29 #ifndef _RALINK_GPIO_H_
     30 #define _RALINK_GPIO_H_
     31 
     32 /* ra_gpio.h -- Ralink 3052 gpio driver public defines */
     33 
     34 /* Board-specific details */
     35 
     36 #if defined(TABLEROCK) || defined(SPOT2) || defined(PUCK) || defined(MOAB)
     37 
     38 /*
     39  * Enable pins:		UART Full, and GPIO0 pins 0-23
     40  * Rising edge:		three buttons & dock sense
     41  * Falling edge:	three buttons & dock sense
     42  */
     43 #define GPIO_TR_PIN_MASK            0x017f81
     44 #define GPIO_TR_OUTPUT_PIN_MASK     0x003b80
     45 #define GPIO_TR_INT_PIN_MASK        0x014401
     46 #define GPIO_TR_INT_FEDGE_PIN_MASK  0x014401
     47 #define GPIO_TR_POL_MASK            0x000000
     48 
     49 /*
     50  * Enable pins:		RGMII, and SDRAM GPIO pins 24-51
     51  * Rising edge:		IN_5V, DOCK_SENSE and LAN_WAN_SWITCH
     52  * Falling edge:	IN_5V, DOCK_SENSE and LAN_WAN_SWITCH
     53  */
     54 #define GPIO_TR_PIN_MASK_24_51            0x0affff3f
     55 #define GPIO_TR_OUTPUT_PIN_MASK_24_51     0x00ffff07
     56 #define GPIO_TR_INT_PIN_MASK_24_51        0x02000010
     57 #define GPIO_TR_INT_FEDGE_PIN_MASK_24_51  0x02000010
     58 #define GPIO_TR_POL_MASK_24_51            0x00000000
     59 
     60 #define WPS_BUTTON          0		/* input, interrupt */
     61 
     62 /* UARTF Block */
     63 #define POWER_EN_3G         7
     64 #define POWER_EN_WIMAX      8
     65 #define POWER_ON            9
     66 #define SOFT_RST_IN_BUTTON 10		/* input, interrupt */
     67 #define NC_4               11
     68 #define USB_SW1            12
     69 #define USB_SW2            13
     70 #define POWER_OFF_BUTTON   14		/* input, interrupt */
     71 
     72 /* UARTL Block */
     73 #define NC_6               15
     74 #define DOCK_SENSE         16		/* input, interrupt */
     75 
     76 /* SDRAM block */
     77 #define DOCK_5V_ENA        24
     78 #define USB5V_EN           25
     79 #define CHARGER_OFF        26		/* 1 : charger on, 0 : charger off */
     80 #define PA_OR_PC_IN        27		/* input */
     81 #define IN_5V              28		/* input, interrupt */
     82 #define CHRGB              29		/* input, NI for P1 board */
     83 #define NC_1               30
     84 #define NC_2               31
     85 #define LED_BATT_7         32
     86 #define LED_BATT_8         33
     87 #define LED_BATT_9         34
     88 #define LED_BATT_10        35
     89 #define LED_SS_11          36
     90 #define LED_SS_12          37
     91 #define LED_SS_13          38
     92 #define LED_SS_14          39
     93 
     94 /* RGMII block */
     95 #define LED_WPS            40
     96 #define LED_WIFI           41
     97 #define LED_CHARGE         42
     98 #define LED_POWER          43
     99 #define LED_WIMAX          44
    100 #define LED_3G             45
    101 #define POWER_ON_LATCH     46
    102 #define HUB_RST            47
    103 #define NC_3               48
    104 #define LAN_WAN_SW         49		/* input, interrupt */
    105 #define NC_5               50
    106 #define PUCK_BATTERY_LOW   51
    107 
    108 /*
    109  * Debounced pins:
    110  *	WPS_BUTTON, POWER_OFF_BUTTON, DOCK_SENSE, IN_5V, LAN_WAN_SW
    111  */
    112 #define DEBOUNCED_PINS 5
    113 
    114 #define GPIO_PIN_MASK GPIO_TR_PIN_MASK
    115 #define GPIO_OUTPUT_PIN_MASK GPIO_TR_OUTPUT_PIN_MASK
    116 #define GPIO_INT_PIN_MASK GPIO_TR_INT_PIN_MASK
    117 #define GPIO_INT_FEDGE_PIN_MASK GPIO_TR_INT_FEDGE_PIN_MASK
    118 #define GPIO_POL_MASK GPIO_TR_POL_MASK
    119 
    120 #define GPIO_PIN_MASK_24_51 GPIO_TR_PIN_MASK_24_51
    121 #define GPIO_OUTPUT_PIN_MASK_24_51 GPIO_TR_OUTPUT_PIN_MASK_24_51
    122 #define GPIO_INT_PIN_MASK_24_51 GPIO_TR_INT_PIN_MASK_24_51
    123 #define GPIO_INT_FEDGE_PIN_MASK_24_51 GPIO_TR_INT_FEDGE_PIN_MASK_24_51
    124 #define GPIO_POL_MASK_24_51 GPIO_TR_POL_MASK_24_51
    125 
    126 #define GPIO_PIN_MASK_72_95           0
    127 #define GPIO_OUTPUT_PIN_MASK_72_95    0
    128 #define GPIO_INT_PIN_MASK_72_95       0
    129 #define GPIO_INT_FEDGE_PIN_MASK_72_95 0
    130 #define GPIO_POL_MASK_72_95           0
    131 
    132 #endif	/* !TABLEROCK */
    133 
    134 #if defined(PEBBLES500) || defined(PEBBLES35)
    135 
    136 /*
    137  * Enable pins:		I2C, UART Full, and GPIO0 pins 0-23
    138  * Rising edge:		?
    139  * Falling edge:	buttons
    140  */
    141 #define GPIO_PB500_PIN_MASK            0x005d83
    142 #define GPIO_PB500_OUTPUT_PIN_MASK     0x000083
    143 #define GPIO_PB500_INT_PIN_MASK        0x005c00
    144 #define GPIO_PB500_INT_FEDGE_PIN_MASK  0x000500
    145 #define GPIO_PB500_POL_MASK            0x000000
    146 
    147 /* Enable RGMII */
    148 #define P3_HARDWARE
    149 #if defined(P3_HARDWARE)
    150 #define GPIO_PB500_PIN_MASK_24_51            0x03cafe00
    151 #define GPIO_PB500_OUTPUT_PIN_MASK_24_51     0x03c8fe00
    152 #else
    153 #define GPIO_PB500_PIN_MASK_24_51            0x0fff0000
    154 #define GPIO_PB500_OUTPUT_PIN_MASK_24_51     0x0ffd0000
    155 #endif
    156 #define GPIO_PB500_INT_PIN_MASK_24_51        0x00020000   /* rising edge ints */
    157 #define GPIO_PB500_INT_FEDGE_PIN_MASK_24_51  0x00020000
    158 #define GPIO_PB500_POL_MASK_24_51            0x00000000
    159 
    160 /* I2C block */
    161 #define POWER_EN_EXCARD1_3_3v  1
    162 #define POWER_EN_EXCARD1_1_5v  2
    163 
    164 /* UARTF Block */
    165 #define VBUS_EN                    7
    166 #define WPS_BUTTON                 8         /* input, interrupt */
    167 #define SOFT_RST_IN_BUTTON        10         /* input, interrupt */
    168 #define CURRENT_LIMIT_FLAG1_3_3v  11         /* input, interrupt */
    169 #define CURRENT_LIMIT_FLAG_USB1   12         /* input, interrupt */
    170 #define CURRENT_LIMIT_FLAG1_1_5v  14         /* input, interrupt */
    171 
    172 /* SDRAM block */
    173 #if defined(P3_HARDWARE)
    174 #define LAN_WAN            33
    175 #define LED_WIFI           34
    176 #define LED_WPS            35
    177 #define LED_USB            36
    178 #define LED_USB_RED        37
    179 #if defined(PEBBLES500)
    180 #define LED_EXP            38
    181 #define LED_EXP_RED        39
    182 #endif
    183 #else	/* P3_HARDWARE */
    184 #define LED_WPS            45
    185 #define LED_WIFI           42
    186 #define LED_USB            40
    187 #define LED_USB_RED        44
    188 #if defined(PEBBLES500)
    189 #define LED_EXP            50
    190 #define LED_EXP_RED        51
    191 #endif
    192 #endif	/* P3_HARDWARE */
    193 
    194 /* RGMII block */
    195 #define EXCARD_ATTACH      41         /* input, interrupt */
    196 #define POWER_EN_USB       43
    197 #if defined(PEBBLES500)
    198 #define LED_SS_13          46
    199 #define LED_SS_12          47
    200 #define LED_SS_11          48
    201 #define LED_SS_10          49
    202 #endif
    203 
    204 /*
    205  * Debounced Pins:
    206  *	WPS_BUTTON, SOFT_RST_IN_BUTTON, CURRENT_LIMIT_FLAG_USB,
    207  *	CURRENT_LIMIT_FLAG3_3, CURRENT_LIMIT_FLAG1_5, EXCARD_ATTACH
    208  */
    209 #define DEBOUNCED_PINS 6
    210 
    211 #define GPIO_PIN_MASK GPIO_PB500_PIN_MASK
    212 #define GPIO_OUTPUT_PIN_MASK GPIO_PB500_OUTPUT_PIN_MASK
    213 #define GPIO_INT_PIN_MASK GPIO_PB500_INT_PIN_MASK
    214 #define GPIO_INT_FEDGE_PIN_MASK GPIO_PB500_INT_FEDGE_PIN_MASK
    215 #define GPIO_POL_MASK GPIO_PB500_POL_MASK
    216 
    217 #define GPIO_PIN_MASK_24_51 GPIO_PB500_PIN_MASK_24_51
    218 #define GPIO_OUTPUT_PIN_MASK_24_51 GPIO_PB500_OUTPUT_PIN_MASK_24_51
    219 #define GPIO_INT_PIN_MASK_24_51 GPIO_PB500_INT_PIN_MASK_24_51
    220 #define GPIO_INT_FEDGE_PIN_MASK_24_51 GPIO_PB500_INT_FEDGE_PIN_MASK_24_51
    221 #define GPIO_POL_MASK_24_51 GPIO_PB500_POL_MASK_24_51
    222 
    223 #define GPIO_PIN_MASK_72_95           0
    224 #define GPIO_OUTPUT_PIN_MASK_72_95    0
    225 #define GPIO_INT_PIN_MASK_72_95       0
    226 #define GPIO_INT_FEDGE_PIN_MASK_72_95 0
    227 #define GPIO_POL_MASK_72_95           0
    228 
    229 #endif	/*  TABLEROCK || SPOT2 || PUCK || MOAB */
    230 
    231 #if defined(SLICKROCK)
    232 
    233 /*
    234  * Enable:	I2C, UART Full, and GPIO0 pins 0-23
    235  * Rising edge:		buttons, overcurrent, switch
    236  * Falling edge:	buttons, overcurrent, switch
    237  */
    238 #define GPIO_SR_PIN_MASK            0x007fcf
    239 #define GPIO_SR_OUTPUT_PIN_MASK     0x00128d
    240 #define GPIO_SR_INT_PIN_MASK        0x006d42
    241 #define GPIO_SR_INT_FEDGE_PIN_MASK  0x006c42
    242 #define GPIO_SR_POL_MASK            0x000002
    243 
    244 /* Enable RGMII */
    245 #define GPIO_SR_PIN_MASK_24_51        0x0000387f
    246 #define GPIO_SR_OUTPUT_PIN_MASK_24_51 0x0000387b
    247 #define GPIO_SR_INT_PIN_MASK_24_51        0x0004
    248 #define GPIO_SR_INT_FEDGE_PIN_MASK_24_51  0x0004
    249 #define GPIO_SR_POL_MASK_24_51            0x00000000
    250 
    251 #define GPIO_SR_PIN_MASK_72_95        0x00000fff
    252 #define GPIO_SR_OUTPUT_PIN_MASK_72_95 0x00000ff7
    253 #define GPIO_SR_INT_PIN_MASK_72_95        0x0008
    254 #define GPIO_SR_INT_FEDGE_PIN_MASK_72_95  0x0008
    255 #define GPIO_SR_POL_MASK_72_95            0x00000000
    256 
    257 #define LED_USB2_G          0
    258 
    259 /* I2C block */
    260 #define WIFI_ENABLE                1
    261 #define EX2_CPUSB_RST              2
    262 
    263 /* SPI block */
    264 #define POWER_EN_USB3              3
    265 #define CURRENT_LIMIT_FLAG_USB3    6         /* input, interrupt */
    266 
    267 /* UARTF Block */
    268 #define EX1_CPUSB_RST              7
    269 #define SS_BUTTON                  8         /* input, interrupt */
    270 #define POWER_EN_USB1              9
    271 #define SOFT_RST_IN_BUTTON        10         /* input, interrupt */
    272 #define CURRENT_LIMIT_FLAG_USB2   11         /* input, interrupt */
    273 #define POWER_EN_USB2             12
    274 #define CURRENT_LIMIT_FLAG_EX2    13         /* input, interrupt */
    275 					     /*  (pin 76 on P1 boards) */
    276 #define CURRENT_LIMIT_FLAG_USB1   14         /* input, interrupt */
    277 
    278 /* GPIO */
    279 #define LED_USB1_G         24
    280 #define LED_USB1_R         25
    281 #define WPS_BUTTON         26
    282 #define LED_EX1_R          27
    283 #define LED_EX2_G          28
    284 #define LED_EX2_R          29
    285 #define LED_WIFI_RED       30
    286 
    287 /* LNA_PE_Gx */
    288 #define LED_USB3_G         35
    289 #define LED_USB3_R         36
    290 #define LED_EX1_G          37
    291 
    292 /* RGMII2 */
    293 #define POWER_EN_EX1       74
    294 #define CURRENT_LIMIT_FLAG_EX1 75  /* input, interrupt */
    295 #define LED_USB2_R         76
    296 #define POWER_EN_EX2       77
    297 #define LED_POWER          78
    298 #define LED_WPS            79
    299 #define LED_WIFI_BLUE      82
    300 #define LED_WIFI           83
    301 
    302 #define LED_SS_10          73
    303 #define LED_SS_11          80
    304 #define LED_SS_12          81
    305 #define LED_SS_13          72
    306 
    307 /* Debounced Pins:
    308  *	WPS_BUTTON, SOFT_RST_IN_BUTTON, SS_BUTTON
    309  *	CURRENT_LIMIT_FLAG USB * 3 + EXP * 2
    310  */
    311 #define DEBOUNCED_PINS 9
    312 
    313 #define GPIO_PIN_MASK GPIO_SR_PIN_MASK
    314 #define GPIO_OUTPUT_PIN_MASK GPIO_SR_OUTPUT_PIN_MASK
    315 #define GPIO_INT_PIN_MASK GPIO_SR_INT_PIN_MASK
    316 #define GPIO_INT_FEDGE_PIN_MASK GPIO_SR_INT_FEDGE_PIN_MASK
    317 #define GPIO_POL_MASK GPIO_SR_POL_MASK
    318 
    319 #define GPIO_PIN_MASK_24_51 GPIO_SR_PIN_MASK_24_51
    320 #define GPIO_OUTPUT_PIN_MASK_24_51 GPIO_SR_OUTPUT_PIN_MASK_24_51
    321 #define GPIO_INT_PIN_MASK_24_51 GPIO_SR_INT_PIN_MASK_24_51
    322 #define GPIO_INT_FEDGE_PIN_MASK_24_51 GPIO_SR_INT_FEDGE_PIN_MASK_24_51
    323 #define GPIO_POL_MASK_24_51 GPIO_SR_POL_MASK_24_51
    324 
    325 #define GPIO_PIN_MASK_72_95 GPIO_SR_PIN_MASK_72_95
    326 #define GPIO_OUTPUT_PIN_MASK_72_95 GPIO_SR_OUTPUT_PIN_MASK_72_95
    327 #define GPIO_INT_PIN_MASK_72_95 GPIO_SR_INT_PIN_MASK_72_95
    328 #define GPIO_INT_FEDGE_PIN_MASK_72_95 GPIO_SR_INT_FEDGE_PIN_MASK_72_95
    329 #define GPIO_POL_MASK_72_95 GPIO_SR_POL_MASK_72_95
    330 
    331 #endif	/* SLICKROCK */
    332 
    333 
    334 /* Exported functions */
    335 extern int ra_gpio_pin_read(void *arg, int pin);
    336 extern void ra_gpio_pin_write(void *arg, int pin, int value);
    337 
    338 /* Kernel Events (platform-neutral) */
    339 #define WPS_BUTTON_EVT 1
    340 #define RESET_BUTTON_EVT 2
    341 #define POWER_BUTTON_EVT 3
    342 #define IN_5V_EVT 4
    343 #if 0
    344 #define PWR_FLAG_3G_EVT 5
    345 #endif
    346 #define DOCK_SENSE_EVT 6
    347 #define LAN_WAN_SW_EVT 7
    348 #define WIFI_ENABLE_EVT 8
    349 #define SS_BUTTON_EVT 9
    350 #define CURRENT_LIMIT_EVT 10
    351 #define EXCARD_ATTACH_EVT 11
    352 
    353 #endif	/* _RALINK_GPIO_H_ */
    354