Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8d33b05581d1bc66e2356957bb2739e177a9cc36
Commit:     8d33b05581d1bc66e2356957bb2739e177a9cc36
Parent:     fafc9d3fa35530c1a14e6743c477d7398b431e74
Author:     Bridge Wu <[EMAIL PROTECTED]>
AuthorDate: Fri Dec 21 19:15:36 2007 +0800
Committer:  Russell King <[EMAIL PROTECTED]>
CommitDate: Sat Jan 26 15:07:53 2008 +0000

    [ARM] pxa: mmc: add 2nd host controller support for pxa3xx
    
    This patch is to add the second mmc controller support for pxa3xx.
    It's valid for pxa3[0|1|2]0.
    
    On zylonite, the second controller has no slot.
    
    Signed-off-by: Bridge Wu <[EMAIL PROTECTED]>
    Signed-off-by: Russell King <[EMAIL PROTECTED]>
---
 arch/arm/mach-pxa/devices.c         |   40 +++++++++++++++++++++++++++++++++++
 arch/arm/mach-pxa/devices.h         |    1 +
 arch/arm/mach-pxa/pxa3xx.c          |    1 +
 arch/arm/mach-pxa/zylonite.c        |    6 +++++
 arch/arm/mach-pxa/zylonite_pxa300.c |    8 +++++++
 arch/arm/mach-pxa/zylonite_pxa320.c |    8 +++++++
 include/asm-arm/arch-pxa/mmc.h      |    1 +
 7 files changed, 65 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-pxa/devices.c b/arch/arm/mach-pxa/devices.c
index 202d048..bc04e87 100644
--- a/arch/arm/mach-pxa/devices.c
+++ b/arch/arm/mach-pxa/devices.c
@@ -549,4 +549,44 @@ struct platform_device pxa3xx_device_ssp4 = {
        .resource       = pxa3xx_resource_ssp4,
        .num_resources  = ARRAY_SIZE(pxa3xx_resource_ssp4),
 };
+
+static struct resource pxa3xx_resources_mci2[] = {
+       [0] = {
+               .start  = 0x42000000,
+               .end    = 0x42000fff,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = IRQ_MMC2,
+               .end    = IRQ_MMC2,
+               .flags  = IORESOURCE_IRQ,
+       },
+       [2] = {
+               .start  = 93,
+               .end    = 93,
+               .flags  = IORESOURCE_DMA,
+       },
+       [3] = {
+               .start  = 94,
+               .end    = 94,
+               .flags  = IORESOURCE_DMA,
+       },
+};
+
+struct platform_device pxa3xx_device_mci2 = {
+       .name           = "pxa2xx-mci",
+       .id             = 1,
+       .dev            = {
+               .dma_mask = &pxamci_dmamask,
+               .coherent_dma_mask =    0xffffffff,
+       },
+       .num_resources  = ARRAY_SIZE(pxa3xx_resources_mci2),
+       .resource       = pxa3xx_resources_mci2,
+};
+
+void __init pxa3xx_set_mci2_info(struct pxamci_platform_data *info)
+{
+       pxa_register_device(&pxa3xx_device_mci2, info);
+}
+
 #endif /* CONFIG_PXA3xx */
diff --git a/arch/arm/mach-pxa/devices.h b/arch/arm/mach-pxa/devices.h
index e78b48f..d78068c 100644
--- a/arch/arm/mach-pxa/devices.h
+++ b/arch/arm/mach-pxa/devices.h
@@ -1,4 +1,5 @@
 extern struct platform_device pxa_device_mci;
+extern struct platform_device pxa3xx_device_mci2;
 extern struct platform_device pxa_device_udc;
 extern struct platform_device pxa_device_fb;
 extern struct platform_device pxa_device_ffuart;
diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c
index 6271af3..124ad5e 100644
--- a/arch/arm/mach-pxa/pxa3xx.c
+++ b/arch/arm/mach-pxa/pxa3xx.c
@@ -196,6 +196,7 @@ static struct clk pxa3xx_clks[] = {
        PXA3xx_CKEN("SSPCLK", SSP4, 13000000, 0, &pxa3xx_device_ssp4.dev),
 
        PXA3xx_CKEN("MMCCLK", MMC1, 19500000, 0, &pxa_device_mci.dev),
+       PXA3xx_CKEN("MMCCLK", MMC2, 19500000, 0, &pxa3xx_device_mci2.dev),
 };
 
 void __init pxa3xx_init_irq(void)
diff --git a/arch/arm/mach-pxa/zylonite.c b/arch/arm/mach-pxa/zylonite.c
index f72f37f..3398603 100644
--- a/arch/arm/mach-pxa/zylonite.c
+++ b/arch/arm/mach-pxa/zylonite.c
@@ -233,9 +233,15 @@ static struct pxamci_platform_data 
zylonite_mci_platform_data = {
        .get_ro         = zylonite_mci_ro,
 };
 
+static struct pxamci_platform_data zylonite_mci2_platform_data = {
+       .detect_delay   = 20,
+       .ocr_mask       = MMC_VDD_32_33|MMC_VDD_33_34,
+};
+
 static void __init zylonite_init_mmc(void)
 {
        pxa_set_mci_info(&zylonite_mci_platform_data);
+       pxa3xx_set_mci2_info(&zylonite_mci2_platform_data);
 }
 #else
 static inline void zylonite_init_mmc(void) {}
diff --git a/arch/arm/mach-pxa/zylonite_pxa300.c 
b/arch/arm/mach-pxa/zylonite_pxa300.c
index cad92d4..38c1ddc 100644
--- a/arch/arm/mach-pxa/zylonite_pxa300.c
+++ b/arch/arm/mach-pxa/zylonite_pxa300.c
@@ -97,6 +97,14 @@ static mfp_cfg_t common_mfp_cfg[] __initdata = {
        GPIO7_MMC1_CLK,
        GPIO8_MMC1_CMD, /* CMD0 for slot 0 */
        GPIO15_GPIO,    /* CMD1 default as GPIO for slot 0 */
+
+       /* MMC2 */
+       GPIO9_MMC2_DAT0,
+       GPIO10_MMC2_DAT1,
+       GPIO11_MMC2_DAT2,
+       GPIO12_MMC2_DAT3,
+       GPIO13_MMC2_CLK,
+       GPIO14_MMC2_CMD,
 };
 
 static mfp_cfg_t pxa300_mfp_cfg[] __initdata = {
diff --git a/arch/arm/mach-pxa/zylonite_pxa320.c 
b/arch/arm/mach-pxa/zylonite_pxa320.c
index 593f7bf..1036da3 100644
--- a/arch/arm/mach-pxa/zylonite_pxa320.c
+++ b/arch/arm/mach-pxa/zylonite_pxa320.c
@@ -104,6 +104,14 @@ static mfp_cfg_t mfp_cfg[] __initdata = {
        GPIO22_MMC1_CLK,
        GPIO23_MMC1_CMD,/* CMD0 for slot 0 */
        GPIO31_GPIO,    /* CMD1 default as GPIO for slot 0 */
+
+       /* MMC2 */
+       GPIO24_MMC2_DAT0,
+       GPIO25_MMC2_DAT1,
+       GPIO26_MMC2_DAT2,
+       GPIO27_MMC2_DAT3,
+       GPIO28_MMC2_CLK,
+       GPIO29_MMC2_CMD,
 };
 
 #define NUM_LCD_DETECT_PINS    7
diff --git a/include/asm-arm/arch-pxa/mmc.h b/include/asm-arm/arch-pxa/mmc.h
index ef4f570..dd30299 100644
--- a/include/asm-arm/arch-pxa/mmc.h
+++ b/include/asm-arm/arch-pxa/mmc.h
@@ -17,5 +17,6 @@ struct pxamci_platform_data {
 };
 
 extern void pxa_set_mci_info(struct pxamci_platform_data *info);
+extern void pxa3xx_set_mci2_info(struct pxamci_platform_data *info);
 
 #endif
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to