Commit bdf0e836 authored by Axel Haslam's avatar Axel Haslam Committed by Sekhar Nori

ARM: davinci: da850-evm: use gpio descriptor for mmc pins

Currently the mmc driver is polling the gpio to know if the
card was removed.

By using a gpio descriptor instead of the platform callbacks,
the driver will be able to register the gpio using the mmc core
APIs designed for this purpose.

This has the advantage that an irq will be registered, and
polling is no longer needed. Also, a dependency on platform
callbacks is removed for this board.
Signed-off-by: default avatarAxel Haslam <ahaslam@baylibre.com>
[nsekhar@ti.com: minor commit message edit]
Signed-off-by: default avatarSekhar Nori <nsekhar@ti.com>
parent c69f43fb
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/gpio_keys.h> #include <linux/gpio_keys.h>
#include <linux/gpio/machine.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/i2c.h> #include <linux/i2c.h>
...@@ -56,9 +57,6 @@ ...@@ -56,9 +57,6 @@
#define DA850_LCD_PWR_PIN GPIO_TO_PIN(2, 8) #define DA850_LCD_PWR_PIN GPIO_TO_PIN(2, 8)
#define DA850_LCD_BL_PIN GPIO_TO_PIN(2, 15) #define DA850_LCD_BL_PIN GPIO_TO_PIN(2, 15)
#define DA850_MMCSD_CD_PIN GPIO_TO_PIN(4, 0)
#define DA850_MMCSD_WP_PIN GPIO_TO_PIN(4, 1)
#define DA850_MII_MDIO_CLKEN_PIN GPIO_TO_PIN(2, 6) #define DA850_MII_MDIO_CLKEN_PIN GPIO_TO_PIN(2, 6)
static struct mtd_partition da850evm_spiflash_part[] = { static struct mtd_partition da850evm_spiflash_part[] = {
...@@ -776,19 +774,16 @@ static const short da850_evm_mcasp_pins[] __initconst = { ...@@ -776,19 +774,16 @@ static const short da850_evm_mcasp_pins[] __initconst = {
-1 -1
}; };
static int da850_evm_mmc_get_ro(int index) static struct gpiod_lookup_table mmc_gpios_table = {
{ .dev_id = "da830-mmc.0",
return gpio_get_value(DA850_MMCSD_WP_PIN); .table = {
} /* gpio chip 2 contains gpio range 64-95 */
GPIO_LOOKUP("davinci_gpio.2", 0, "cd", GPIO_ACTIVE_LOW),
static int da850_evm_mmc_get_cd(int index) GPIO_LOOKUP("davinci_gpio.2", 1, "wp", GPIO_ACTIVE_LOW),
{ },
return !gpio_get_value(DA850_MMCSD_CD_PIN); };
}
static struct davinci_mmc_config da850_mmc_config = { static struct davinci_mmc_config da850_mmc_config = {
.get_ro = da850_evm_mmc_get_ro,
.get_cd = da850_evm_mmc_get_cd,
.wires = 4, .wires = 4,
.max_freq = 50000000, .max_freq = 50000000,
.caps = MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED, .caps = MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED,
...@@ -1383,17 +1378,7 @@ static __init void da850_evm_init(void) ...@@ -1383,17 +1378,7 @@ static __init void da850_evm_init(void)
pr_warn("%s: MMCSD0 mux setup failed: %d\n", pr_warn("%s: MMCSD0 mux setup failed: %d\n",
__func__, ret); __func__, ret);
ret = gpio_request(DA850_MMCSD_CD_PIN, "MMC CD\n"); gpiod_add_lookup_table(&mmc_gpios_table);
if (ret)
pr_warn("%s: can not open GPIO %d\n",
__func__, DA850_MMCSD_CD_PIN);
gpio_direction_input(DA850_MMCSD_CD_PIN);
ret = gpio_request(DA850_MMCSD_WP_PIN, "MMC WP\n");
if (ret)
pr_warn("%s: can not open GPIO %d\n",
__func__, DA850_MMCSD_WP_PIN);
gpio_direction_input(DA850_MMCSD_WP_PIN);
ret = da8xx_register_mmcsd0(&da850_mmc_config); ret = da8xx_register_mmcsd0(&da850_mmc_config);
if (ret) if (ret)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment