aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@armlinux.org.uk>2016-08-31 06:28:19 -0400
committerRussell King <rmk+kernel@armlinux.org.uk>2016-09-22 04:39:04 -0400
commit5805271d908aa34912265dba41bcb902588e0ff7 (patch)
treecced6f63d6a0230178ab8d9a849c32c3205f8aac
parentc8f9ce556ba2fca6b9abdfac508afb9905aac6b8 (diff)
pcmcia: soc_common: add support for voltage sense GPIOs
Add support for the voltage sense GPIOs which are wired up on some platforms. Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
-rw-r--r--drivers/pcmcia/soc_common.c6
-rw-r--r--drivers/pcmcia/soc_common.h4
2 files changed, 8 insertions, 2 deletions
diff --git a/drivers/pcmcia/soc_common.c b/drivers/pcmcia/soc_common.c
index 3eb30916be26..153f3122283d 100644
--- a/drivers/pcmcia/soc_common.c
+++ b/drivers/pcmcia/soc_common.c
@@ -218,7 +218,7 @@ static int soc_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
218 skt->stat[i].desc = gpio_to_desc(skt->stat[i].gpio); 218 skt->stat[i].desc = gpio_to_desc(skt->stat[i].gpio);
219 } 219 }
220 220
221 if (skt->stat[i].desc) { 221 if (i < SOC_STAT_VS1 && skt->stat[i].desc) {
222 int irq = gpiod_to_irq(skt->stat[i].desc); 222 int irq = gpiod_to_irq(skt->stat[i].desc);
223 223
224 if (irq > 0) { 224 if (irq > 0) {
@@ -295,6 +295,10 @@ static unsigned int soc_common_pcmcia_skt_state(struct soc_pcmcia_socket *skt)
295 state.bvd1 = !!gpiod_get_value(skt->stat[SOC_STAT_BVD1].desc); 295 state.bvd1 = !!gpiod_get_value(skt->stat[SOC_STAT_BVD1].desc);
296 if (skt->stat[SOC_STAT_BVD2].desc) 296 if (skt->stat[SOC_STAT_BVD2].desc)
297 state.bvd2 = !!gpiod_get_value(skt->stat[SOC_STAT_BVD2].desc); 297 state.bvd2 = !!gpiod_get_value(skt->stat[SOC_STAT_BVD2].desc);
298 if (skt->stat[SOC_STAT_VS1].desc)
299 state.vs_3v = !!gpiod_get_value(skt->stat[SOC_STAT_VS1].desc);
300 if (skt->stat[SOC_STAT_VS2].desc)
301 state.vs_Xv = !!gpiod_get_value(skt->stat[SOC_STAT_VS2].desc);
298 302
299 skt->ops->socket_state(skt, &state); 303 skt->ops->socket_state(skt, &state);
300 304
diff --git a/drivers/pcmcia/soc_common.h b/drivers/pcmcia/soc_common.h
index 7833eae86960..f2078aecb914 100644
--- a/drivers/pcmcia/soc_common.h
+++ b/drivers/pcmcia/soc_common.h
@@ -62,11 +62,13 @@ struct soc_pcmcia_socket {
62 struct gpio_desc *desc; 62 struct gpio_desc *desc;
63 unsigned int irq; 63 unsigned int irq;
64 const char *name; 64 const char *name;
65 } stat[4]; 65 } stat[6];
66#define SOC_STAT_CD 0 /* Card detect */ 66#define SOC_STAT_CD 0 /* Card detect */
67#define SOC_STAT_BVD1 1 /* BATDEAD / IOSTSCHG */ 67#define SOC_STAT_BVD1 1 /* BATDEAD / IOSTSCHG */
68#define SOC_STAT_BVD2 2 /* BATWARN / IOSPKR */ 68#define SOC_STAT_BVD2 2 /* BATWARN / IOSPKR */
69#define SOC_STAT_RDY 3 /* Ready / Interrupt */ 69#define SOC_STAT_RDY 3 /* Ready / Interrupt */
70#define SOC_STAT_VS1 4 /* Voltage sense 1 */
71#define SOC_STAT_VS2 5 /* Voltage sense 2 */
70 72
71 struct gpio_desc *gpio_reset; 73 struct gpio_desc *gpio_reset;
72 struct gpio_desc *gpio_bus_enable; 74 struct gpio_desc *gpio_bus_enable;