All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marek Vasut <marek.vasut@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 1/1] mmc: omap: config VMMC, MMC1_PBIAS
Date: Thu, 25 Aug 2011 16:55:47 +0200	[thread overview]
Message-ID: <201108251655.48056.marek.vasut@gmail.com> (raw)
In-Reply-To: <1314283705-22366-1-git-send-email-balajitk@ti.com>

On Thursday, August 25, 2011 04:48:25 PM Balaji T K wrote:
> Config VMMC voltage to 3V for MMC/SD card slot
> and PBIAS settings needed for OMAP4
> Fixes MMC/SD detection on boot from eMMC.
> 
> Signed-off-by: Balaji T K <balajitk@ti.com>
> Signed-off-by: Aneesh V <aneesh@ti.com>
> ---
>  arch/arm/include/asm/arch-omap4/omap4.h |    1 +
>  drivers/mmc/omap_hsmmc.c                |   28
> +++++++++++++++++++++++++--- drivers/power/twl6030.c                 |   
> 7 +++++++
>  include/configs/omap4_sdp4430.h         |    2 ++
>  include/twl6030.h                       |    3 +++
>  5 files changed, 38 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/arm/include/asm/arch-omap4/omap4.h
> b/arch/arm/include/asm/arch-omap4/omap4.h index 9aad0e6..13fc8c9 100644
> --- a/arch/arm/include/asm/arch-omap4/omap4.h
> +++ b/arch/arm/include/asm/arch-omap4/omap4.h
> @@ -55,6 +55,7 @@
>  #define LPDDR2_IO_REGS_BASE	0x4A100638
> 
>  #define CONTROL_EFUSE_2		0x4A100704
> +#define CONTROL_PBIASLITE	0x4A100600

Can't you use struct omap_something_regs { ... } like most of U-Boot code ?

> 
>  /* CONTROL_ID_CODE */
>  #define CONTROL_ID_CODE		0x4A002204
> diff --git a/drivers/mmc/omap_hsmmc.c b/drivers/mmc/omap_hsmmc.c
> index 6627905..95bb661 100644
> --- a/drivers/mmc/omap_hsmmc.c
> +++ b/drivers/mmc/omap_hsmmc.c
> @@ -28,6 +28,7 @@
>  #include <part.h>
>  #include <i2c.h>
>  #include <twl4030.h>
> +#include <twl6030.h>
>  #include <asm/io.h>
>  #include <asm/arch/mmc_host_def.h>
>  #include <asm/arch/sys_proto.h>
> @@ -38,7 +39,24 @@
>  static int mmc_read_data(hsmmc_t *mmc_base, char *buf, unsigned int size);
>  static int mmc_write_data(hsmmc_t *mmc_base, const char *buf, unsigned int
> siz); static struct mmc hsmmc_dev[2];
> -unsigned char mmc_board_init(hsmmc_t *mmc_base)
> +
> +#if defined(CONFIG_OMAP44XX) && defined(CONFIG_TWL6030_POWER)
> +static void omap4_vmmc_pbias_config(struct mmc *mmc)
> +{
> +	u32 value = 0;
> +
> +	value = readl(CONTROL_PBIASLITE);
> +	value &= ~((1 << 22) | (1 << 26));

What's this magic ?

> +	writel(value, CONTROL_PBIASLITE);
> +	/* set VMMC to 3V */
> +	twl6030_power_mmc_init();
> +	value = readl(CONTROL_PBIASLITE);
> +	value |= (1 << 21) | (1 << 22) | (1 << 26);

And this magic ?

> +	writel(value, CONTROL_PBIASLITE);
> +}
> +#endif
> +
> +unsigned char mmc_board_init(struct mmc *mmc)
>  {
>  #if defined(CONFIG_TWL4030_POWER)
>  	twl4030_power_mmc_init();
> @@ -67,7 +85,11 @@ unsigned char mmc_board_init(hsmmc_t *mmc_base)
>  		&prcm_base->iclken1_core);
>  #endif
> 
> -/* TODO add appropriate OMAP4 init - none currently necessary */
> +#if defined(CONFIG_OMAP44XX) && defined(CONFIG_TWL6030_POWER)
> +	/* PBIAS config needed for MMC1 only */

You have == 0 below ... so you're numbering from 1 here ? It's a bit confusing.

> +	if (mmc->block_dev.dev == 0)
> +		omap4_vmmc_pbias_config(mmc);
> +#endif
> 
>  	return 0;
>  }
> @@ -108,7 +130,7 @@ static int mmc_init_setup(struct mmc *mmc)
>  	unsigned int dsor;
>  	ulong start;
> 
> -	mmc_board_init(mmc_base);
> +	mmc_board_init(mmc);

Is this a bugfix ?

> 
>  	writel(readl(&mmc_base->sysconfig) | MMC_SOFTRESET,
>  		&mmc_base->sysconfig);
> diff --git a/drivers/power/twl6030.c b/drivers/power/twl6030.c
> index fef57b4..c5a0038 100644
> --- a/drivers/power/twl6030.c
> +++ b/drivers/power/twl6030.c
> @@ -182,6 +182,13 @@ void twl6030_init_battery_charging(void)
>  	return;
>  }
> 
> +void twl6030_power_mmc_init()
> +{
> +	/* set voltage to 3.0 and turnon for APP */
> +	twl6030_i2c_write_u8(TWL6030_CHIP_PM, 0x15, VMMC_CFG_VOLTATE);
> +	twl6030_i2c_write_u8(TWL6030_CHIP_PM, 0x21, VMMC_CFG_STATE);
> +}
> +
>  void twl6030_usb_device_settings()
>  {
>  	u8 data = 0;
> diff --git a/include/configs/omap4_sdp4430.h
> b/include/configs/omap4_sdp4430.h index 5b3110c..50797ab 100644
> --- a/include/configs/omap4_sdp4430.h
> +++ b/include/configs/omap4_sdp4430.h
> @@ -98,8 +98,10 @@
>  #define CONFIG_I2C_MULTI_BUS		1
> 
>  /* TWL6030 */
> +#ifndef CONFIG_SPL_BUILD
>  #define CONFIG_TWL6030_POWER		1
>  #define CONFIG_CMD_BAT			1
> +#endif
> 
>  /* MMC */
>  #define CONFIG_GENERIC_MMC		1
> diff --git a/include/twl6030.h b/include/twl6030.h
> index 6ed68a0..a9fcadb 100644
> --- a/include/twl6030.h
> +++ b/include/twl6030.h
> @@ -33,6 +33,8 @@
>  #define TWL6030_CHIP_PWM	0x49
> 
>  /* Slave Address 0x48 */
> +#define VMMC_CFG_STATE		0x9A
> +#define VMMC_CFG_VOLTATE	0x9B
>  #define VUSB_CFG_STATE		0xA2
> 
>  #define MISC1			0xE4
> @@ -130,3 +132,4 @@ void twl6030_start_usb_charging(void);
>  void twl6030_stop_usb_charging(void);
>  int twl6030_get_battery_voltage(void);
>  int twl6030_get_battery_current(void);
> +void twl6030_power_mmc_init(void);

Thanks! Cheers!

  reply	other threads:[~2011-08-25 14:55 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-25 14:48 [U-Boot] [PATCH 1/1] mmc: omap: config VMMC, MMC1_PBIAS Balaji T K
2011-08-25 14:55 ` Marek Vasut [this message]
2011-08-25 15:43   ` T

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201108251655.48056.marek.vasut@gmail.com \
    --to=marek.vasut@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.