#include <linux/gpio/consumer.h>
#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/platform_device.h>
#include <asm/mach-types.h>
static int mst_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
struct device *dev = skt->socket.dev.parent;
skt->stat[SOC_STAT_CD].name = skt->nr ? "bdetect" : "adetect";
skt->stat[SOC_STAT_BVD1].name = skt->nr ? "bbvd1" : "abvd1";
skt->stat[SOC_STAT_BVD2].name = skt->nr ? "bbvd2" : "abvd2";
skt->stat[SOC_STAT_RDY].name = skt->nr ? "bready" : "aready";
skt->stat[SOC_STAT_VS1].name = skt->nr ? "bvs1" : "avs1";
skt->stat[SOC_STAT_VS2].name = skt->nr ? "bvs2" : "avs2";
skt->gpio_reset = devm_gpiod_get(dev, skt->nr ? "breset" : "areset",
if (IS_ERR(skt->gpio_reset))
return PTR_ERR(skt->gpio_reset);
ret = max1600_init(dev, &m, skt->nr ? MAX1600_CHAN_B : MAX1600_CHAN_A,
return soc_pcmcia_request_gpiods(skt);
static unsigned int mst_pcmcia_bvd1_status[2];
static void mst_pcmcia_socket_state(struct soc_pcmcia_socket *skt,
struct pcmcia_state *state)
unsigned int flip = mst_pcmcia_bvd1_status[skt->nr] ^ state->bvd1;