diff options
Diffstat (limited to 'drivers/mci/mci_spi.c')
-rw-r--r-- | drivers/mci/mci_spi.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/drivers/mci/mci_spi.c b/drivers/mci/mci_spi.c index 6ae2824edd..ad743d19d9 100644 --- a/drivers/mci/mci_spi.c +++ b/drivers/mci/mci_spi.c @@ -19,7 +19,7 @@ #include <crc.h> #include <crc7.h> #include <of.h> -#include <gpiod.h> +#include <linux/gpio/consumer.h> #define to_spi_host(mci) container_of(mci, struct mmc_spi_host, mci) #define spi_setup(spi) spi->master->setup(spi) @@ -48,8 +48,8 @@ struct mmc_spi_host { struct mci_host mci; struct spi_device *spi; - struct device_d *dev; - int detect_pin; + struct device *dev; + struct gpio_desc *detect_pin; /* for bulk data transfers */ struct spi_transfer t_tx; @@ -314,7 +314,7 @@ static void mmc_spi_set_ios(struct mci_host *mci, struct mci_ios *ios) } } -static int mmc_spi_init(struct mci_host *mci, struct device_d *mci_dev) +static int mmc_spi_init(struct mci_host *mci, struct device *mci_dev) { struct mmc_spi_host *host = to_spi_host(mci); mmc_spi_readbytes(host, 10, NULL); @@ -360,15 +360,15 @@ static int spi_mci_card_present(struct mci_host *mci) int ret; /* No gpio, assume card is present */ - if (!gpio_is_valid(host->detect_pin)) + if (IS_ERR_OR_NULL(host->detect_pin)) return 1; - ret = gpio_get_value(host->detect_pin); + ret = gpiod_get_value(host->detect_pin); return ret == 0 ? 1 : 0; } -static int spi_mci_probe(struct device_d *dev) +static int spi_mci_probe(struct device *dev) { struct device_node *np = dev_of_node(dev); struct spi_device *spi = (struct spi_device *)dev->type_data; @@ -434,11 +434,12 @@ static int spi_mci_probe(struct device_d *dev) host->mci.voltages = MMC_VDD_32_33 | MMC_VDD_33_34; host->mci.host_caps = MMC_CAP_SPI; - host->detect_pin = -EINVAL; if (np) { host->mci.devname = xstrdup(of_alias_get(np)); - host->detect_pin = gpiod_get(dev, NULL, GPIOD_IN); + host->detect_pin = gpiod_get_optional(dev, NULL, GPIOD_IN); + if (IS_ERR(host->detect_pin)) + dev_warn(dev, "Failed to get 'reset' GPIO (ignored)\n"); } mci_register(&host->mci); @@ -450,8 +451,9 @@ static __maybe_unused struct of_device_id spi_mci_compatible[] = { { .compatible = "mmc-spi-slot" }, { /* sentinel */ } }; +MODULE_DEVICE_TABLE(of, spi_mci_compatible); -static struct driver_d spi_mci_driver = { +static struct driver spi_mci_driver = { .name = "spi_mci", .probe = spi_mci_probe, .of_compatible = DRV_OF_COMPAT(spi_mci_compatible), |