On Thursday, July 25, 2013 4:27 PM, Laurent Pinchart wrote:
>
> Pass the CD and RO GPIO numbers to the MMC SPI driver and remove the
> custom .get_cd() and .get_ro() callback functions.
>
> Signed-off-by: Laurent Pinchart <[email protected]>
> ---
> arch/arm/mach-ep93xx/vision_ep9307.c | 56
> +++---------------------------------
> 1 file changed, 4 insertions(+), 52 deletions(-)
>
> diff --git a/arch/arm/mach-ep93xx/vision_ep9307.c
> b/arch/arm/mach-ep93xx/vision_ep9307.c
> index 605956f..ab94dc5 100644
> --- a/arch/arm/mach-ep93xx/vision_ep9307.c
> +++ b/arch/arm/mach-ep93xx/vision_ep9307.c
> @@ -224,62 +224,14 @@ static struct ep93xx_spi_chip_ops vision_spi_flash_hw =
> {
> #define VISION_SPI_MMC_WP EP93XX_GPIO_LINE_F(0)
> #define VISION_SPI_MMC_CD EP93XX_GPIO_LINE_EGPIO15
>
> -static struct gpio vision_spi_mmc_gpios[] = {
> - { VISION_SPI_MMC_WP, GPIOF_DIR_IN, "mmc_spi:wp" },
> - { VISION_SPI_MMC_CD, GPIOF_DIR_IN, "mmc_spi:cd" },
> -};
> -
> -static int vision_spi_mmc_init(struct device *pdev,
> - irqreturn_t (*func)(int, void *), void *pdata)
> -{
> - int err;
> -
> - err = gpio_request_array(vision_spi_mmc_gpios,
> - ARRAY_SIZE(vision_spi_mmc_gpios));
> - if (err)
> - return err;
> -
> - err = gpio_set_debounce(VISION_SPI_MMC_CD, 1);
> - if (err)
> - goto exit_err;
I tested this and it _kind_ of works.
The card detect is a bit flaky due to the gpio interrupt debounce not being
enabled.
The only way I can see to fix this is add the following to this patch:
@@ -233,8 +233,31 @@ static struct mmc_spi_platform_data vision_spi_mmc_data = {
.caps2 = MMC_CAP2_RO_ACTIVE_HIGH,
};
+static int vision_spi_mmc_enable_cd_debounce(struct spi_device *spi)
+{
+ int ret;
+
+ ret = gpio_request_one(VISION_SPI_MMC_CD, GPIOF_DIR_IN, spi->modalias);
+ if (ret)
+ return ret;
+
+ ret = gpio_set_debounce(VISION_SPI_MMC_CD, 1);
+ if (ret)
+ return ret;
+
+ gpio_free(VISION_SPI_MMC_CD);
+
+ return 0;
+}
+
static int vision_spi_mmc_hw_setup(struct spi_device *spi)
{
+ int ret;
+
+ ret = vision_spi_mmc_enable_cd_debounce(spi);
+ if (ret)
+ return ret;
+
return gpio_request_one(VISION_SPI_MMC_CS, GPIOF_INIT_HIGH,
spi->modalias);
}
Regards,
Hartley
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html