[PATCH 5/8] bcm63xx: request gpio before using it in bcm63xx_pcmcia.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Make sure the gpio is requested and its direction set to input before
using it.

Signed-off-by: Maxime Bizon <mbizon@xxxxxxxxxx>
---
 drivers/pcmcia/bcm63xx_pcmcia.c |   15 ++++++++++++++-
 1 files changed, 14 insertions(+), 1 deletions(-)

diff --git a/drivers/pcmcia/bcm63xx_pcmcia.c b/drivers/pcmcia/bcm63xx_pcmcia.c
index 3a0b7fc..6c7f20c 100644
--- a/drivers/pcmcia/bcm63xx_pcmcia.c
+++ b/drivers/pcmcia/bcm63xx_pcmcia.c
@@ -409,9 +409,18 @@ static int bcm63xx_drv_pcmcia_probe(struct platform_device *pdev)
 	val |= 3 << PCMCIA_C2_HOLD_SHIFT;
 	pcmcia_writel(skt, val, PCMCIA_C2_REG);
 
+	/* request and setup ready gpio */
+	ret = gpio_request(skt->pd->ready_gpio, "bcm63xx_pcmcia");
+	if (ret < 0)
+		goto err;
+
+	ret = gpio_direction_input(skt->pd->ready_gpio);
+	if (ret < 0)
+		goto err_gpio;
+
 	ret = pcmcia_register_socket(sock);
 	if (ret)
-		goto err;
+		goto err_gpio;
 
 	/* start polling socket */
 	mod_timer(&skt->timer,
@@ -420,6 +429,9 @@ static int bcm63xx_drv_pcmcia_probe(struct platform_device *pdev)
 	platform_set_drvdata(pdev, skt);
 	return 0;
 
+err_gpio:
+	gpio_free(skt->pd->ready_gpio);
+
 err:
 	if (skt->io_base)
 		iounmap(skt->io_base);
@@ -442,6 +454,7 @@ static int bcm63xx_drv_pcmcia_remove(struct platform_device *pdev)
 	iounmap(skt->io_base);
 	res = skt->reg_res;
 	release_mem_region(res->start, res->end - res->start + 1);
+	gpio_free(skt->pd->ready_gpio);
 	kfree(skt);
 	return 0;
 }
-- 
1.6.0.4



[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux