diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2013-06-02 16:28:21 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2013-06-02 16:28:21 +0200 |
commit | 8f9044927dd3c0cf9abe6c1254d76886291becbb (patch) | |
tree | 03aa87cc32fc19f20157912aef3001bc94a7fd29 /arch/arm | |
parent | 89fd7e44dbe754366354cee37395f7fc11cce50e (diff) | |
parent | 9aad0fb2d616ee4fb5bd359d9053ffd47dbd399b (diff) | |
download | barebox-8f9044927dd3c0cf9abe6c1254d76886291becbb.tar.gz barebox-8f9044927dd3c0cf9abe6c1254d76886291becbb.tar.xz |
Merge branch 'for-next/mci'
Conflicts:
include/driver.h
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/mach-bcm2835/core.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-omap/omap4_twl6030_mmc.c | 19 |
2 files changed, 18 insertions, 2 deletions
diff --git a/arch/arm/mach-bcm2835/core.c b/arch/arm/mach-bcm2835/core.c index f44ecd5bf3..906e4344dd 100644 --- a/arch/arm/mach-bcm2835/core.c +++ b/arch/arm/mach-bcm2835/core.c @@ -70,6 +70,7 @@ static int bcm2835_dev_init(void) { add_generic_device("bcm2835-gpio", 0, NULL, BCM2835_GPIO_BASE, 0xB0, IORESOURCE_MEM, NULL); add_generic_device("bcm2835-cs", DEVICE_ID_SINGLE, NULL, BCM2835_ST_BASE, 0x1C, IORESOURCE_MEM, NULL); + add_generic_device("bcm2835_mci", 0, NULL, BCM2835_EMMC_BASE, 0xFC, IORESOURCE_MEM, NULL); return 0; } coredevice_initcall(bcm2835_dev_init); diff --git a/arch/arm/mach-omap/omap4_twl6030_mmc.c b/arch/arm/mach-omap/omap4_twl6030_mmc.c index 7d71eb868a..155add6ea1 100644 --- a/arch/arm/mach-omap/omap4_twl6030_mmc.c +++ b/arch/arm/mach-omap/omap4_twl6030_mmc.c @@ -16,7 +16,7 @@ #include <common.h> #include <io.h> -#include <mci/twl6030.h> +#include <mfd/twl6030.h> /* MMC voltage */ #define OMAP4_CONTROL_PBIASLITE 0x4A100600 @@ -24,6 +24,16 @@ #define OMAP4_MMC1_PBIASLITE_PWRDNZ (1<<22) #define OMAP4_MMC1_PWRDNZ (1<<26) +static void twl6030_mci_write(u8 address, u8 data) +{ + int ret; + struct twl6030 *twl6030 = twl6030_get(); + + ret = twl6030_reg_write(twl6030, address, data); + if (ret != 0) + printf("TWL6030 Write[0x%x] Error %d\n", address, ret); +} + void set_up_mmc_voltage_omap4(void) { u32 value; @@ -32,7 +42,12 @@ void set_up_mmc_voltage_omap4(void) value &= ~(OMAP4_MMC1_PBIASLITE_PWRDNZ | OMAP4_MMC1_PWRDNZ); writel(value, OMAP4_CONTROL_PBIASLITE); - twl6030_mci_power_init(); + twl6030_mci_write(TWL6030_PMCS_VMMC_CFG_VOLTAGE, + TWL6030_VMMC_WR_S | + TWL6030_VMMC_VSEL_0 | TWL6030_VMMC_VSEL_2 | + TWL6030_VMMC_VSEL_4); + twl6030_mci_write(TWL6030_PMCS_VMMC_CFG_STATE, + TWL6030_VMMC_STATE0 | TWL6030_VMMC_GRP_APP); value = readl(OMAP4_CONTROL_PBIASLITE); value |= (OMAP4_MMC1_PBIASLITE_VMODE | OMAP4_MMC1_PBIASLITE_PWRDNZ | |