Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7715db5a authored by Kishore Kadiyala's avatar Kishore Kadiyala Committed by Tony Lindgren
Browse files

OMAP: hsmmc: Enable MMC4 and MMC5 on OMAP4 platforms



OMAP4 supports up to 5 MMC controllers, but only 3 of these were
initialized. MMC5 is used by wl12xx chip. So initialize MMC4 and MMC5.

Signed-off-by: default avatarKishore Kadiyala <kishore.kadiyala@ti.com>
Signed-off-by: default avatarPanduranga Mallireddy <panduranga_mallireddy@ti.com>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent b17e0979
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -350,6 +350,11 @@ void __init omap2_hsmmc_init(struct omap2_hsmmc_info *controllers)
				mmc->slots[0].after_set_reg = NULL;
			}
			break;
		case 4:
		case 5:
			mmc->slots[0].before_set_reg = NULL;
			mmc->slots[0].after_set_reg = NULL;
			break;
		default:
			pr_err("MMC%d configuration not supported!\n", c->mmc);
			kfree(mmc);
+20 −4
Original line number Diff line number Diff line
@@ -260,7 +260,7 @@ static int omap_hsmmc_1_set_power(struct device *dev, int slot, int power_on,
	return ret;
}

static int omap_hsmmc_23_set_power(struct device *dev, int slot, int power_on,
static int omap_hsmmc_235_set_power(struct device *dev, int slot, int power_on,
				   int vdd)
{
	struct omap_hsmmc_host *host =
@@ -316,6 +316,12 @@ static int omap_hsmmc_23_set_power(struct device *dev, int slot, int power_on,
	return ret;
}

static int omap_hsmmc_4_set_power(struct device *dev, int slot, int power_on,
					int vdd)
{
	return 0;
}

static int omap_hsmmc_1_set_sleep(struct device *dev, int slot, int sleep,
				  int vdd, int cardsleep)
{
@@ -326,7 +332,7 @@ static int omap_hsmmc_1_set_sleep(struct device *dev, int slot, int sleep,
	return regulator_set_mode(host->vcc, mode);
}

static int omap_hsmmc_23_set_sleep(struct device *dev, int slot, int sleep,
static int omap_hsmmc_235_set_sleep(struct device *dev, int slot, int sleep,
				   int vdd, int cardsleep)
{
	struct omap_hsmmc_host *host =
@@ -365,6 +371,12 @@ static int omap_hsmmc_23_set_sleep(struct device *dev, int slot, int sleep,
		return regulator_enable(host->vcc_aux);
}

static int omap_hsmmc_4_set_sleep(struct device *dev, int slot, int sleep,
					int vdd, int cardsleep)
{
	return 0;
}

static int omap_hsmmc_reg_get(struct omap_hsmmc_host *host)
{
	struct regulator *reg;
@@ -379,10 +391,14 @@ static int omap_hsmmc_reg_get(struct omap_hsmmc_host *host)
		break;
	case OMAP_MMC2_DEVID:
	case OMAP_MMC3_DEVID:
	case OMAP_MMC5_DEVID:
		/* Off-chip level shifting, or none */
		mmc_slot(host).set_power = omap_hsmmc_23_set_power;
		mmc_slot(host).set_sleep = omap_hsmmc_23_set_sleep;
		mmc_slot(host).set_power = omap_hsmmc_235_set_power;
		mmc_slot(host).set_sleep = omap_hsmmc_235_set_sleep;
		break;
	case OMAP_MMC4_DEVID:
		mmc_slot(host).set_power = omap_hsmmc_4_set_power;
		mmc_slot(host).set_sleep = omap_hsmmc_4_set_sleep;
	default:
		pr_err("MMC%d configuration not supported!\n", host->id);
		return -EINVAL;