• Jaehoon Chung's avatar
    mmc: core: add the capability for broken voltage · 6e8201f5
    Jaehoon Chung authored
    There is an understood mismatch between the voltage the host controller is
    set to and the voltage supplied to the card by a fixed voltage regulator.
    Teaching the driver to accept the mismatch is overly complicated.  Instead
    just accept the regulator's voltage.
    
    This patch adds MMC_CAP2_BROKEN_VOLTAGE.
    
    If the voltage didn't satisfy between min_uV and max_uV, try to change
    the voltage in core.c.  When changing the voltage, maybe use
    regulator_set_voltage().
    
    In regulator_set_voltage(), check the below condition.
    
    	/* sanity check */
    	if (!rdev->desc->ops->set_voltage &&
    	    !rdev->desc->ops->set_voltage_sel) {
    		ret = -EINVAL;
    		goto out;
    	}
    
    If some board should use the fixed-regulator, always return -EINVAL.
    Then, eMMC didn't initialize always.
    
    So if use a fixed-regulator, we need to add the MMC_CAP2_BROKEN_VOLTAGE.
    Signed-off-by: default avatarJaehoon Chung <jh80.chung@samsung.com>
    Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
    Acked-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: default avatarChris Ball <cjb@laptop.org>
    6e8201f5
core.c 60.8 KB