mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
Merge branch 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6
* 'omap-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6: (258 commits) omap: zoom: host should not pull up wl1271's irq line arm: plat-omap: iommu: fix request_mem_region() error path OMAP2+: Common CPU DIE ID reading code reads wrong registers for OMAP4430 omap4: mux: Remove duplicate mux modes omap: iovmm: don't check 'da' to set IOVMF_DA_FIXED flag omap: iovmm: disallow mapping NULL address when IOVMF_DA_ANON is set omap2+: mux: Fix compile when CONFIG_OMAP_MUX is not selected omap4: board-omap4panda: Initialise the serial pads omap3: board-3430sdp: Initialise the serial pads omap4: board-4430sdp: Initialise the serial pads omap2+: mux: Add macro for configuring static with omap_hwmod_mux_init omap2+: mux: Remove the use of IDLE flag omap2+: Add separate list for dynamic pads to mux perf: add OMAP support for the new power events OMAP4: Add IVA OPP enteries. OMAP4: Update Voltage Rail Values for MPU, IVA and CORE OMAP4: Enable 800 MHz and 1 GHz MPU-OPP OMAP3+: OPP: Replace voltage values with Macros OMAP3: wdtimer: Fix CORE idle transition Watchdog: omap_wdt: add fine grain runtime-pm ... Fix up various conflicts in - arch/arm/mach-omap2/board-omap3evm.c - arch/arm/mach-omap2/clock3xxx_data.c - arch/arm/mach-omap2/usb-musb.c - arch/arm/plat-omap/include/plat/usb.h - drivers/usb/musb/musb_core.h
This commit is contained in:
commit
0df0914d41
225 changed files with 20476 additions and 6696 deletions
|
|
@ -225,7 +225,7 @@ config MMC_OMAP
|
|||
|
||||
config MMC_OMAP_HS
|
||||
tristate "TI OMAP High Speed Multimedia Card Interface support"
|
||||
depends on ARCH_OMAP2430 || ARCH_OMAP3 || ARCH_OMAP4
|
||||
depends on SOC_OMAP2430 || ARCH_OMAP3 || ARCH_OMAP4
|
||||
help
|
||||
This selects the TI OMAP High Speed Multimedia card Interface.
|
||||
If you have an OMAP2430 or OMAP3 board or OMAP4 board with a
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@
|
|||
|
||||
#define MMC_TIMEOUT_MS 20
|
||||
#define OMAP_MMC_MASTER_CLOCK 96000000
|
||||
#define DRIVER_NAME "mmci-omap-hs"
|
||||
#define DRIVER_NAME "omap_hsmmc"
|
||||
|
||||
/* Timeouts for entering power saving states on inactivity, msec */
|
||||
#define OMAP_MMC_DISABLED_TIMEOUT 100
|
||||
|
|
@ -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;
|
||||
|
|
@ -1555,7 +1571,7 @@ static void omap_hsmmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
|
|||
break;
|
||||
}
|
||||
|
||||
if (host->id == OMAP_MMC1_DEVID) {
|
||||
if (host->pdata->controller_flags & OMAP_HSMMC_SUPPORTS_DUAL_VOLT) {
|
||||
/* Only MMC1 can interface at 3V without some flavor
|
||||
* of external transceiver; but they all handle 1.8V.
|
||||
*/
|
||||
|
|
@ -1647,7 +1663,7 @@ static void omap_hsmmc_conf_bus_power(struct omap_hsmmc_host *host)
|
|||
u32 hctl, capa, value;
|
||||
|
||||
/* Only MMC1 supports 3.0V */
|
||||
if (host->id == OMAP_MMC1_DEVID) {
|
||||
if (host->pdata->controller_flags & OMAP_HSMMC_SUPPORTS_DUAL_VOLT) {
|
||||
hctl = SDVS30;
|
||||
capa = VS30 | VS18;
|
||||
} else {
|
||||
|
|
@ -2101,14 +2117,14 @@ static int __init omap_hsmmc_probe(struct platform_device *pdev)
|
|||
/* we start off in DISABLED state */
|
||||
host->dpm_state = DISABLED;
|
||||
|
||||
if (mmc_host_enable(host->mmc) != 0) {
|
||||
if (clk_enable(host->iclk) != 0) {
|
||||
clk_put(host->iclk);
|
||||
clk_put(host->fclk);
|
||||
goto err1;
|
||||
}
|
||||
|
||||
if (clk_enable(host->iclk) != 0) {
|
||||
mmc_host_disable(host->mmc);
|
||||
if (mmc_host_enable(host->mmc) != 0) {
|
||||
clk_disable(host->iclk);
|
||||
clk_put(host->iclk);
|
||||
clk_put(host->fclk);
|
||||
goto err1;
|
||||
|
|
|
|||
Loading…
Reference in a new issue