diff options
| -rw-r--r-- | arch/arm/mach-omap2/hsmmc.c | 5 | ||||
| -rw-r--r-- | drivers/mmc/host/omap_hsmmc.c | 24 | 
2 files changed, 25 insertions, 4 deletions
diff --git a/arch/arm/mach-omap2/hsmmc.c b/arch/arm/mach-omap2/hsmmc.c index 34272e4863f..5496bc7d40a 100644 --- a/arch/arm/mach-omap2/hsmmc.c +++ b/arch/arm/mach-omap2/hsmmc.c @@ -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); diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c index 078fdf11af0..8c42573f42e 100644 --- a/drivers/mmc/host/omap_hsmmc.c +++ b/drivers/mmc/host/omap_hsmmc.c @@ -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;  |