Signed-off-by: Hans de Goede <hdego...@redhat.com> --- board/sunxi/Kconfig | 27 +++++++++++++++++++++++++++ drivers/mmc/sunxi_mmc.c | 20 ++++++++++++++++++++ 2 files changed, 47 insertions(+)
diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig index 622f7b4..72d6dfa 100644 --- a/board/sunxi/Kconfig +++ b/board/sunxi/Kconfig @@ -32,4 +32,31 @@ config USB_KEYBOARD Say Y here to add support for using a USB keyboard (typically used in combination with a graphical console on HDMI). +config MMC0_CD_PIN + int "Card detect pin for mmc0" + default -1 + ---help--- + Set the card detect pin for mmc0, set to -1 to not use cd. The pins + are numbered as follows PA0 - PA17 are pin number 0 - 17, PB0 - PB23 + are 32 - 55, PC0 - PC24 are 64 - 88, etc. Most boards use PH1 for + mmc0 cd, which is pin nr 225. + +config MMC1_CD_PIN + int "Card detect pin for mmc1" + default -1 + ---help--- + See MMC0_CD_PIN help text. + +config MMC2_CD_PIN + int "Card detect pin for mmc2" + default -1 + ---help--- + See MMC0_CD_PIN help text. + +config MMC3_CD_PIN + int "Card detect pin for mmc3" + default -1 + ---help--- + See MMC0_CD_PIN help text. + endif diff --git a/drivers/mmc/sunxi_mmc.c b/drivers/mmc/sunxi_mmc.c index bc2c4b3..a397b86 100644 --- a/drivers/mmc/sunxi_mmc.c +++ b/drivers/mmc/sunxi_mmc.c @@ -14,6 +14,7 @@ #include <asm/io.h> #include <asm/arch/clock.h> #include <asm/arch/cpu.h> +#include <asm/arch/gpio.h> #include <asm/arch/mmc.h> struct sunxi_mmc_host { @@ -343,10 +344,29 @@ out: return error; } +static int sunxi_mmc_getcd(struct mmc *mmc) +{ + struct sunxi_mmc_host *mmchost = mmc->priv; + int cd_pin = -1; + + switch (mmchost->mmc_no) { + case 0: cd_pin = CONFIG_MMC0_CD_PIN; break; + case 1: cd_pin = CONFIG_MMC1_CD_PIN; break; + case 2: cd_pin = CONFIG_MMC2_CD_PIN; break; + case 3: cd_pin = CONFIG_MMC3_CD_PIN; break; + } + + if (cd_pin == -1) + return 1; + + return !sunxi_gpio_get_val(cd_pin); +} + static const struct mmc_ops sunxi_mmc_ops = { .send_cmd = mmc_send_cmd, .set_ios = mmc_set_ios, .init = mmc_core_init, + .getcd = sunxi_mmc_getcd, }; int sunxi_mmc_init(int sdc_no) -- 2.1.0 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot