take from xloader with this the mmc work even when booting from nand Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@xxxxxxxxxxxx> --- arch/arm/boards/beagle/board.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/arch/arm/boards/beagle/board.c b/arch/arm/boards/beagle/board.c index bed4651..6e69e87 100644 --- a/arch/arm/boards/beagle/board.c +++ b/arch/arm/boards/beagle/board.c @@ -63,6 +63,7 @@ #include <linux/err.h> #include <usb/ehci.h> #include <mach/xload.h> +#include <mfd/twl4030.h> #ifdef CONFIG_DRIVER_SERIAL_NS16550 @@ -109,6 +110,32 @@ static struct gpmc_nand_platform_data nand_plat = { .nand_cfg = &omap3_nand_cfg, }; +/* T2 Register definitions */ +#define CONTROL_DEV_CONF0 0x48002274 +#define CONTROL_PBIAS_LITE 0x48002520 + +static void beagle_add_mmc(void) +{ + unsigned int value = 0; + struct twl4030 *t = twl4030_get(); + + if (!t) { + pr_warn("twl4030 not ready to setup mmc\n"); + } else { + twl4030_reg_write(t, TWL4030_USB_OTHER_FUNC_CTRL_CLR, 0x20); + twl4030_reg_write(t, TWL4030_USB_OTHER_IFC_CTRL_CLR, 0x2); + } + + value = readl(CONTROL_PBIAS_LITE); + value |= (1 << 2) | (1 << 1) | (1 << 9); + writel(value, CONTROL_PBIAS_LITE); + + value = readl(CONTROL_DEV_CONF0); + writel(value | (1 << 24), CONTROL_PBIAS_LITE); + + omap3_add_mmc1(NULL); +} + static int beagle_mem_init(void) { omap_add_ram0(SZ_128M); @@ -132,7 +159,7 @@ static int beagle_devices_init(void) #endif omap_add_gpmc_nand_device(&nand_plat); - omap3_add_mmc1(NULL); + beagle_add_mmc(); armlinux_set_bootparams((void *)0x80000100); armlinux_set_architecture(MACH_TYPE_OMAP3_BEAGLE); -- 1.7.10.4 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox