[PATCH 1/1] beagle: add missing mmc twl and control init
Alexander Aring
alex.aring at gmail.com
Wed Mar 6 21:06:50 EST 2013
Hi,
On Thu, Mar 07, 2013 at 12:45:18AM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote:
> take from xloader
>
> with this the mmc work even when booting from nand
>
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
> ---
> 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();
>
I had a similar problem with twl6030 and pcm049 some time ago...
See commit:
659f150e90d8bfcf8aa4c51bd3ab552f42e288f0
Please make sure this will work when you insert a mmc card after
beagle_mem_init call.
In my case, I need to add the VMMC setup at probing time in omap_hsmmc.
The reason is that twl6030 doesn't setup VMMC if a mmc card is not insert.
Maybe twl4030 do the same.
Alex
More information about the barebox
mailing list