From: Minkyu Kang <mk7.kang@samsung.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] omap3: mmc: mmc2 support
Date: Thu, 26 Mar 2009 19:47:25 +0900 [thread overview]
Message-ID: <49CB5D3D.1070506@samsung.com> (raw)
There are 3 MMC/SD/SDIO host controllers inside the device.
This patch will support mmc2 and mmc3.
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
---
drivers/mmc/omap3_mmc.c | 38 ++++++++++++++++++++++-------
include/asm-arm/arch-omap3/mmc_host_def.h | 18 ++++++++++++-
include/asm-arm/arch-omap3/omap3.h | 3 ++
include/configs/omap3_beagle.h | 1 +
include/configs/omap3_evm.h | 1 +
include/configs/omap3_overo.h | 1 +
include/configs/omap3_pandora.h | 1 +
include/configs/omap3_zoom1.h | 1 +
8 files changed, 53 insertions(+), 11 deletions(-)
diff --git a/drivers/mmc/omap3_mmc.c b/drivers/mmc/omap3_mmc.c
index e90db7e..edc56fa 100644
--- a/drivers/mmc/omap3_mmc.c
+++ b/drivers/mmc/omap3_mmc.c
@@ -62,10 +62,21 @@ void twl4030_mmc_config(void)
{
unsigned char data;
- data = DEV_GRP_P1;
- i2c_write(PWRMGT_ADDR_ID4, VMMC1_DEV_GRP, 1, &data, 1);
- data = VMMC1_VSEL_30;
- i2c_write(PWRMGT_ADDR_ID4, VMMC1_DEDICATED, 1, &data, 1);
+ switch (CONFIG_MMC_INDEX) {
+ case 1:
+ data = DEV_GRP_P1;
+ i2c_write(PWRMGT_ADDR_ID4, VMMC1_DEV_GRP, 1, &data, 1);
+ data = VMMC1_VSEL_30;
+ i2c_write(PWRMGT_ADDR_ID4, VMMC1_DEDICATED, 1, &data, 1);
+ break;
+ case 2:
+ case 3:
+ data = DEV_GRP_P1;
+ i2c_write(PWRMGT_ADDR_ID4, VMMC2_DEV_GRP, 1, &data, 1);
+ data = VMMC2_VSEL_185;
+ i2c_write(PWRMGT_ADDR_ID4, VMMC2_DEDICATED, 1, &data, 1);
+ break;
+ }
}
unsigned char mmc_board_init(void)
@@ -74,12 +85,21 @@ unsigned char mmc_board_init(void)
twl4030_mmc_config();
- writel(readl(&t2_base->pbias_lite) | PBIASLITEPWRDNZ1 |
- PBIASSPEEDCTRL0 | PBIASLITEPWRDNZ0,
- &t2_base->pbias_lite);
+ switch (CONFIG_MMC_INDEX) {
+ case 1:
+ writel(readl(&t2_base->pbias_lite) | PBIASLITEPWRDNZ1 |
+ PBIASSPEEDCTRL0 | PBIASLITEPWRDNZ0,
+ &t2_base->pbias_lite);
- writel(readl(&t2_base->devconf0) | MMCSDIO1ADPCLKISEL,
- &t2_base->devconf0);
+ writel(readl(&t2_base->devconf0) | MMCSDIO1ADPCLKISEL,
+ &t2_base->devconf0);
+ break;
+ case 2:
+ case 3:
+ writel(readl(&t2_base->devconf1) | MMCSDIO2ADPCLKISEL,
+ &t2_base->devconf1);
+ break;
+ }
return 1;
}
diff --git a/include/asm-arm/arch-omap3/mmc_host_def.h b/include/asm-arm/arch-omap3/mmc_host_def.h
index aa751c9..01884f9 100644
--- a/include/asm-arm/arch-omap3/mmc_host_def.h
+++ b/include/asm-arm/arch-omap3/mmc_host_def.h
@@ -31,7 +31,9 @@
typedef struct t2 {
unsigned char res1[0x274];
unsigned int devconf0; /* 0x274 */
- unsigned char res2[0x2A8];
+ unsigned char res2[0x60];
+ unsigned int devconf1; /* 0x2D8 */
+ unsigned char res3[0x244];
unsigned int pbias_lite; /* 0x520 */
} t2_t;
@@ -41,10 +43,22 @@ typedef struct t2 {
#define PBIASSPEEDCTRL0 (1 << 2)
#define PBIASLITEPWRDNZ1 (1 << 9)
+#define MMCSDIO2ADPCLKISEL (1 << 6)
+
/*
* OMAP HSMMC register definitions
*/
-#define OMAP_HSMMC_BASE 0x4809C000
+#define OMAP_HSMMC_BASE_MMC1 0x4809C000
+#define OMAP_HSMMC_BASE_MMC2 0x480B4000
+#define OMAP_HSMMC_BASE_MMC3 0x480AD000
+
+#if CONFIG_MMC_INDEX == 1
+#define OMAP_HSMMC_BASE OMAP_HSMMC_BASE_MMC1
+#elif CONFIG_MMC_INDEX == 2
+#define OMAP_HSMMC_BASE OMAP_HSMMC_BASE_MMC2
+#elif CONFIG_MMC_INDEX == 3
+#define OMAP_HSMMC_BASE OMAP_HSMMC_BASE_MMC3
+#endif
typedef struct hsmmc {
unsigned char res1[0x10];
diff --git a/include/asm-arm/arch-omap3/omap3.h b/include/asm-arm/arch-omap3/omap3.h
index 8c9656f..b5b5def 100644
--- a/include/asm-arm/arch-omap3/omap3.h
+++ b/include/asm-arm/arch-omap3/omap3.h
@@ -206,6 +206,8 @@ typedef struct gpio {
#define VAUX3_DEDICATED 0x7D
#define VMMC1_DEV_GRP 0x82
#define VMMC1_DEDICATED 0x85
+#define VMMC2_DEV_GRP 0x86
+#define VMMC2_DEDICATED 0x89
#define VPLL2_DEV_GRP 0x8E
#define VPLL2_DEDICATED 0x91
#define VDAC_DEV_GRP 0x96
@@ -219,5 +221,6 @@ typedef struct gpio {
#define VPLL2_VSEL_18 0x05
#define VDAC_VSEL_18 0x03
#define VMMC1_VSEL_30 0x02
+#define VMMC2_VSEL_185 0x06
#endif
diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h
index 0f9344b..3609a0d 100644
--- a/include/configs/omap3_beagle.h
+++ b/include/configs/omap3_beagle.h
@@ -90,6 +90,7 @@
115200}
#define CONFIG_MMC 1
#define CONFIG_OMAP3_MMC 1
+#define CONFIG_MMC_INDEX 1
#define CONFIG_DOS_PARTITION 1
/* commands to include */
diff --git a/include/configs/omap3_evm.h b/include/configs/omap3_evm.h
index f4498a9..6417eba 100644
--- a/include/configs/omap3_evm.h
+++ b/include/configs/omap3_evm.h
@@ -95,6 +95,7 @@
115200}
#define CONFIG_MMC 1
#define CONFIG_OMAP3_MMC 1
+#define CONFIG_MMC_INDEX 1
#define CONFIG_DOS_PARTITION 1
/* commands to include */
diff --git a/include/configs/omap3_overo.h b/include/configs/omap3_overo.h
index dee0417..af23abd 100644
--- a/include/configs/omap3_overo.h
+++ b/include/configs/omap3_overo.h
@@ -82,6 +82,7 @@
115200}
#define CONFIG_MMC 1
#define CONFIG_OMAP3_MMC 1
+#define CONFIG_MMC_INDEX 1
#define CONFIG_DOS_PARTITION 1
/* commands to include */
diff --git a/include/configs/omap3_pandora.h b/include/configs/omap3_pandora.h
index 00c0374..4e09a9a 100644
--- a/include/configs/omap3_pandora.h
+++ b/include/configs/omap3_pandora.h
@@ -85,6 +85,7 @@
115200}
#define CONFIG_MMC 1
#define CONFIG_OMAP3_MMC 1
+#define CONFIG_MMC_INDEX 1
#define CONFIG_DOS_PARTITION 1
/* commands to include */
diff --git a/include/configs/omap3_zoom1.h b/include/configs/omap3_zoom1.h
index f8ae163..2af5b07 100644
--- a/include/configs/omap3_zoom1.h
+++ b/include/configs/omap3_zoom1.h
@@ -91,6 +91,7 @@
115200}
#define CONFIG_MMC 1
#define CONFIG_OMAP3_MMC 1
+#define CONFIG_MMC_INDEX 1
#define CONFIG_DOS_PARTITION 1
/* commands to include */
next reply other threads:[~2009-03-26 10:47 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-26 10:47 Minkyu Kang [this message]
2009-03-26 23:16 ` [U-Boot] [PATCH] omap3: mmc: mmc2 support Dirk Behme
2009-03-27 19:01 ` Wolfgang Denk
-- strict thread matches above, loose matches on Subject: below --
2009-03-27 15:17 Minkyu Kang
2009-03-28 5:07 Minkyu Kang
2009-04-01 9:27 ` Jean-Christophe PLAGNIOL-VILLARD
2009-04-02 10:19 ` Minkyu Kang
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=49CB5D3D.1070506@samsung.com \
--to=mk7.kang@samsung.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox