public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Philip Balister <philip@balister.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH RFC v2] OMAP: mmc: add support for second and third mmc channels
Date: Tue, 11 May 2010 15:17:40 -0400	[thread overview]
Message-ID: <hscagk$d1d$1@dough.gmane.org> (raw)
In-Reply-To: <o2w5e088bd91004291326w63060a84vf12eccc873a5c449@mail.gmail.com>

On 04/29/2010 04:26 PM, Steve Sakoman wrote:
> This patch adds support for the second and third mmc channels on OMAP3
> processors
>
> Boards wishing to use this feature should define CONFIG_SYS_MMC_SET_DEV
>
> Tested on Overo
>
> Signed-off-by: Steve Sakoman<steve@sakoman.com>

Tested-by: Philip Balister <philip@opensdr.com>

Works with mmc3 connected to an over via the TXS0206 level shifter chip.

Philip

> ---
>
> diff --git a/arch/arm/include/asm/arch-omap3/mmc_host_def.h
> b/arch/arm/include/asm/arch-omap3/mmc_host_def.h
> index aa751c9..f081b43 100644
> --- a/arch/arm/include/asm/arch-omap3/mmc_host_def.h
> +++ b/arch/arm/include/asm/arch-omap3/mmc_host_def.h
> @@ -31,11 +31,18 @@
>   typedef struct t2 {
>   	unsigned char res1[0x274];
>   	unsigned int devconf0;		/* 0x274 */
> -	unsigned char res2[0x2A8];
> +	unsigned char res2[0x060];
> +	unsigned int devconf1;		/* 0x2D8 */
> +	unsigned char res3[0x244];
>   	unsigned int pbias_lite;	/* 0x520 */
>   } t2_t;
>
>   #define MMCSDIO1ADPCLKISEL		(1<<  24)
> +#define MMCSDIO2ADPCLKISEL		(1<<  6)
> +
> +#define EN_MMC1				(1<<  24)
> +#define EN_MMC2				(1<<  25)
> +#define EN_MMC3				(1<<  30)
>
>   #define PBIASLITEPWRDNZ0		(1<<  1)
>   #define PBIASSPEEDCTRL0			(1<<  2)
> @@ -44,7 +51,9 @@ typedef struct t2 {
>   /*
>    * OMAP HSMMC register definitions
>    */
> -#define OMAP_HSMMC_BASE		0x4809C000
> +#define OMAP_HSMMC1_BASE	0x4809C000
> +#define OMAP_HSMMC2_BASE	0x480B4000
> +#define OMAP_HSMMC3_BASE	0x480AD000
>
>   typedef struct hsmmc {
>   	unsigned char res1[0x10];
> diff --git a/drivers/mmc/omap3_mmc.c b/drivers/mmc/omap3_mmc.c
> index 96c0e65..bf650ba 100644
> --- a/drivers/mmc/omap3_mmc.c
> +++ b/drivers/mmc/omap3_mmc.c
> @@ -52,7 +52,27 @@ const unsigned short mmc_transspeed_val[15][4] = {
>
>   mmc_card_data cur_card_data;
>   static block_dev_desc_t mmc_blk_dev;
> -static hsmmc_t *mmc_base = (hsmmc_t *)OMAP_HSMMC_BASE;
> +static hsmmc_t *mmc_base = (hsmmc_t *)OMAP_HSMMC1_BASE;
> +
> +unsigned char mmc_set_dev(int dev)
> +{
> +	switch (dev) {
> +	case 1:
> +		mmc_base = (hsmmc_t *)OMAP_HSMMC1_BASE;
> +		break;
> +	case 2:
> +		mmc_base = (hsmmc_t *)OMAP_HSMMC2_BASE;
> +		break;
> +	case 3:
> +		mmc_base = (hsmmc_t *)OMAP_HSMMC3_BASE;
> +		break;
> +	default:
> +		mmc_base = (hsmmc_t *)OMAP_HSMMC1_BASE;
> +		return 1;
> +	}
> +
> +	return 0;
> +}
>
>   block_dev_desc_t *mmc_get_dev(int dev)
>   {
> @@ -62,6 +82,7 @@ block_dev_desc_t *mmc_get_dev(int dev)
>   unsigned char mmc_board_init(void)
>   {
>   	t2_t *t2_base = (t2_t *)T2_BASE;
> +	struct prcm *prcm_base = (struct prcm *)PRCM_BASE;
>
>   #if defined(CONFIG_TWL4030_POWER)
>   	twl4030_power_mmc_init();
> @@ -74,6 +95,17 @@ unsigned char mmc_board_init(void)
>   	writel(readl(&t2_base->devconf0) | MMCSDIO1ADPCLKISEL,
>   		&t2_base->devconf0);
>
> +	writel(readl(&t2_base->devconf1) | MMCSDIO2ADPCLKISEL,
> +		&t2_base->devconf1);
> +
> +	writel(readl(&prcm_base->fclken1_core) |
> +		EN_MMC1 | EN_MMC2 | EN_MMC3,
> +		&prcm_base->fclken1_core);
> +
> +	writel(readl(&prcm_base->iclken1_core) |
> +		EN_MMC1 | EN_MMC2 | EN_MMC3,
> +		&prcm_base->iclken1_core);
> +
>   	return 1;
>   }
>
> @@ -512,8 +544,11 @@ unsigned long mmc_bread(int dev_num, unsigned
> long blknr, lbaint_t blkcnt,
>   	return 1;
>   }
>
> -int mmc_legacy_init(int verbose)
> +int mmc_legacy_init(int dev)
>   {
> +	if (mmc_set_dev(dev) != 0)
> +		return 1;
> +
>   	if (configure_mmc(&cur_card_data) != 1)
>   		return 1;

  parent reply	other threads:[~2010-05-11 19:17 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-29 18:00 [U-Boot] [PATCH RFC] OMAP: mmc: add support for second and third mmc channels Steve Sakoman
2010-04-29 18:15 ` Scott Wood
2010-04-29 19:55   ` Steve Sakoman
2010-04-29 20:20     ` Steve Sakoman
2010-04-29 20:26       ` [U-Boot] [PATCH RFC v2] " Steve Sakoman
     [not found]         ` <p2q2acbd3e41004291338o8d7cb82dk42a9965b19d3da3f@mail.gmail.com>
2010-04-29 21:11           ` Steve Sakoman
2010-05-11 19:17         ` Philip Balister [this message]
2010-05-14 18:29         ` Andy Fleming
2010-06-18 22:43           ` Steve Sakoman

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='hscagk$d1d$1@dough.gmane.org' \
    --to=philip@balister.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox