[PATCH v1 1/3]ARM: mmp: add pxa910 mmc resource

Eric Miao eric.y.miao at gmail.com
Wed Apr 20 06:39:38 EDT 2011


And CC'ed linux-arm-kernel ML.

On Wed, Apr 20, 2011 at 6:39 PM, Eric Miao <eric.y.miao at gmail.com> wrote:
> On Wed, Apr 20, 2011 at 6:34 PM, Jun Nie <niej0001 at gmail.com> wrote:
>> ARM: mmp: add pxa910 mmc resource
>>
>> Add resource, devices, etc
>>
>> Signed-off-by: Jun Nie <njun at marvell.com>
>> ---
>>  arch/arm/mach-mmp/include/mach/pxa910.h |   19 +++++++++++++++++++
>>  arch/arm/mach-mmp/pxa910.c              |   13 +++++++++++++
>>  2 files changed, 32 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/arm/mach-mmp/include/mach/pxa910.h
>> b/arch/arm/mach-mmp/include/mach/pxa910.h
>> index 91be755..ac0aaa3 100644
>> --- a/arch/arm/mach-mmp/include/mach/pxa910.h
>> +++ b/arch/arm/mach-mmp/include/mach/pxa910.h
>> @@ -10,6 +10,7 @@ extern void __init pxa910_init_irq(void);
>>  #include <linux/i2c/pxa-i2c.h>
>>  #include <mach/devices.h>
>>  #include <plat/pxa3xx_nand.h>
>> +#include <plat/sdhci.h>
>>
>>  extern struct pxa_device_desc pxa910_device_uart1;
>>  extern struct pxa_device_desc pxa910_device_uart2;
>> @@ -20,6 +21,9 @@ extern struct pxa_device_desc pxa910_device_pwm2;
>>  extern struct pxa_device_desc pxa910_device_pwm3;
>>  extern struct pxa_device_desc pxa910_device_pwm4;
>>  extern struct pxa_device_desc pxa910_device_nand;
>> +extern struct pxa_device_desc pxa910_device_sdh0;
>> +extern struct pxa_device_desc pxa910_device_sdh1;
>> +extern struct pxa_device_desc pxa910_device_sdh2;
>>
>>  static inline int pxa910_add_uart(int id)
>>  {
>> @@ -76,4 +80,19 @@ static inline int pxa910_add_nand(struct
>> pxa3xx_nand_platform_data *info)
>>  {
>>        return pxa_register_device(&pxa910_device_nand, info, sizeof(*info));
>>  }
>> +
>> +static inline int pxa910_add_sdhost(int id, struct sdhci_pxa_platdata *data)
>> +{
>> +       struct pxa_device_desc *d = NULL;
>> +
>> +       switch (id) {
>> +       case 0: d = &pxa910_device_sdh0; break;
>> +       case 1: d = &pxa910_device_sdh1; break;
>> +       case 2: d = &pxa910_device_sdh2; break;
>> +       default:
>> +               return -EINVAL;
>> +       }
>> +
>> +       return pxa_register_device(d, data, sizeof(*data));
>> +}
>>  #endif /* __ASM_MACH_PXA910_H */
>> diff --git a/arch/arm/mach-mmp/pxa910.c b/arch/arm/mach-mmp/pxa910.c
>> index 8f92ccd..b257c3b 100644
>> --- a/arch/arm/mach-mmp/pxa910.c
>> +++ b/arch/arm/mach-mmp/pxa910.c
>> @@ -29,6 +29,10 @@
>>  #include "clock.h"
>>
>>  #define MFPR_VIRT_BASE (APB_VIRT_BASE + 0x1e000)
>> +#ifdef APMU_SDH2
>> +#undef APMU_SDH2
>> +#endif
>> +#define APMU_SDH2       APMU_REG(0x0e0)
>
> This is a bit weird. Does PXA910 define the SDH2 registers elsewhere, if
> so, maybe we can define a new APMU_SDH2_PXA910 for this. Otherwise
> looks very good.
>
>>
>>  static struct mfp_addr_map pxa910_mfp_addr_map[] __initdata =
>>  {
>> @@ -112,6 +116,9 @@ static APBC_CLK(pwm4, PXA910_PWM4, 1, 13000000);
>>
>>  static APMU_CLK(nand, NAND, 0x01db, 208000000);
>>  static APMU_CLK(u2o, USB, 0x1b, 480000000);
>> +static APMU_CLK(sdh0, SDH0, 0x001b, 48000000);
>> +static APMU_CLK(sdh1, SDH1, 0x001b, 48000000);
>> +static APMU_CLK(sdh2, SDH2, 0x001b, 48000000);
>>
>>  /* device and clock bindings */
>>  static struct clk_lookup pxa910_clkregs[] = {
>> @@ -125,6 +132,9 @@ static struct clk_lookup pxa910_clkregs[] = {
>>        INIT_CLKREG(&clk_pwm4, "pxa910-pwm.3", NULL),
>>        INIT_CLKREG(&clk_nand, "pxa3xx-nand", NULL),
>>        INIT_CLKREG(&clk_u2o, "pxa-u2o", "U2OCLK"),
>> +       INIT_CLKREG(&clk_sdh0, "sdhci-pxa.0", "PXA-SDHCLK"),
>> +       INIT_CLKREG(&clk_sdh1, "sdhci-pxa.1", "PXA-SDHCLK"),
>> +       INIT_CLKREG(&clk_sdh2, "sdhci-pxa.2", "PXA-SDHCLK"),
>>  };
>>
>>  static int __init pxa910_init(void)
>> @@ -180,3 +190,6 @@ PXA910_DEVICE(pwm2, "pxa910-pwm", 1, NONE,
>> 0xd401a400, 0x10);
>>  PXA910_DEVICE(pwm3, "pxa910-pwm", 2, NONE, 0xd401a800, 0x10);
>>  PXA910_DEVICE(pwm4, "pxa910-pwm", 3, NONE, 0xd401ac00, 0x10);
>>  PXA910_DEVICE(nand, "pxa3xx-nand", -1, NAND, 0xd4283000, 0x80, 97, 99);
>> +PXA910_DEVICE(sdh0, "sdhci-pxa", 0, MMC, 0xd4280000, 0x120);
>> +PXA910_DEVICE(sdh1, "sdhci-pxa", 1, MMC, 0xd4280800, 0x120);
>> +PXA910_DEVICE(sdh2, "sdhci-pxa", 2, MMC, 0xd4281000, 0x120);
>> --
>> 1.7.0.4
>>
>



More information about the linux-arm-kernel mailing list