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

Jun Nie niej0001 at gmail.com
Thu Apr 28 22:13:00 EDT 2011


2011/4/28 Eric Miao <eric.y.miao at gmail.com>:
> On Thu, Apr 28, 2011 at 5:11 PM, Russell King - ARM Linux
> <linux at arm.linux.org.uk> wrote:
>> On Thu, Apr 21, 2011 at 09:56:53AM +0800, Jun Nie wrote:
>>> +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));
>>> +}
>>
>> How about:
>>
>> static inline int pxa910_add_sdhost(struct pxa_device_desc *dev,
>>        struct sdhci_pxa_platdata *data)
>> {
>>        return pxa_register_device(dev, data, sizeof(*data));
>> }
>>
>> #define pxa910_add_sdhost0(data) pxa910_add_sdhost(&pxa910_device_sdh0, data)
>> #define pxa910_add_sdhost1(data) pxa910_add_sdhost(&pxa910_device_sdh1, data)
>> #define pxa910_add_sdhost2(data) pxa910_add_sdhost(&pxa910_device_sdh2, data)
>>
>> instead - which seems more sane if you're going to call the function with
>> constant ID values.
>>
>
> Indeed. Better to revise the original code as well.
>

I am thinking to move QUIRKs into this function for it is SOC
specific, not board specific. Another item I want to move is bus
timing adjustment register setting API, which is for clock fine tune
and have different address/detail definition for different PXAs.
Zhangfei is preparing driver code for timing register setting.
How do you think about below change?

@@ -110,6 +110,8 @@ static inline int pxa910_add_sdh(int id, struct
sdhci_pxa_platdata *data)
                case 2: d = &pxa910_device_sdh2; break;
                default:
                           return -EINVAL;
        }

+       data->quirks    = SDHCI_QUIRK_BROKEN_ADMA,
+       data->soc_set_timing            = pxa910_sdh_specific_ctrl,
        return pxa_register_device(d, data, sizeof(*data));
 }

diff --git a/arch/arm/mach-mmp/ttc_dkb.c b/arch/arm/mach-mmp/ttc_dkb.c
index d616d09..fdd3457 100644
--- a/arch/arm/mach-mmp/ttc_dkb.c
+++ b/arch/arm/mach-mmp/ttc_dkb.c
@@ -1534,13 +1534,11 @@ static void mmc2_set_ops(struct sdhci_pxa *pxa)

 /* MMC0 controller for SD-MMC */
 static struct sdhci_pxa_platdata pxa910_sdh_platdata_mmc0 = {
-       .quirks                 = SDHCI_QUIRK_BROKEN_ADMA,
        .max_speed              = 48000000,
-       .soc_set_timing         = pxa910_sdh_specific_ctrl,
 };



More information about the linux-arm-kernel mailing list