mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-16 09:54:35 +00:00
mmc: consider cd-gpios in Synopsys DesignWare driver
The JH7110 SoC uses a GPIO for card detect. * In the of_to_plat function check if a cd-gpios definition exists and request the GPIO. * In the getcd function return the GPIO value in this case. Reported-by: Conor Dooley <conor.dooley@microchip.com> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
This commit is contained in:
parent
e24c8cc658
commit
cbaf53fdf1
1 changed files with 9 additions and 0 deletions
|
@ -12,6 +12,7 @@
|
|||
#include <dwmmc.h>
|
||||
#include <errno.h>
|
||||
#include <fdtdec.h>
|
||||
#include <asm/gpio.h>
|
||||
#include <dm/device_compat.h>
|
||||
#include <linux/libfdt.h>
|
||||
#include <linux/err.h>
|
||||
|
@ -29,6 +30,7 @@ struct snps_dwmci_plat {
|
|||
struct snps_dwmci_priv_data {
|
||||
struct dwmci_host host;
|
||||
u32 f_max;
|
||||
struct gpio_desc cd_gpio;
|
||||
};
|
||||
|
||||
static int snps_dwmmc_clk_setup(struct udevice *dev)
|
||||
|
@ -104,6 +106,10 @@ static int snps_dwmmc_of_to_plat(struct udevice *dev)
|
|||
if (!ret && priv->f_max < CLOCK_MIN)
|
||||
return -EINVAL;
|
||||
|
||||
if (CONFIG_IS_ENABLED(DM_GPIO))
|
||||
gpio_request_by_name(dev, "cd-gpios", 0, &priv->cd_gpio,
|
||||
GPIOD_IS_IN);
|
||||
|
||||
host->fifo_mode = dev_read_bool(dev, "fifo-mode");
|
||||
host->name = dev->name;
|
||||
host->dev_index = 0;
|
||||
|
@ -117,6 +123,9 @@ int snps_dwmmc_getcd(struct udevice *dev)
|
|||
struct snps_dwmci_priv_data *priv = dev_get_priv(dev);
|
||||
struct dwmci_host *host = &priv->host;
|
||||
|
||||
if (CONFIG_IS_ENABLED(DM_GPIO) && dm_gpio_is_valid(&priv->cd_gpio))
|
||||
return dm_gpio_get_value(&priv->cd_gpio);
|
||||
|
||||
return !(dwmci_readl(host, DWMCI_CDETECT) & 1);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue