[PATCH 2/2] [ARM] Dove: add support for multi-purpose pins configuration

Saeed Bishara saeed at marvell.com
Thu Oct 28 03:57:06 EDT 2010


 

>-----Original Message-----
>From: Eric Miao [mailto:eric.y.miao at gmail.com] 
>Sent: Wednesday, October 27, 2010 5:38 PM
>To: saeed bishara
>Cc: Mike Rapoport; Saeed Bishara; linux-arm-kernel at lists.infradead.org
>Subject: Re: [PATCH 2/2] [ARM] Dove: add support for 
>multi-purpose pins configuration
>
>On Wed, Oct 27, 2010 at 11:16 AM, saeed bishara 
><saeed.bishara at gmail.com> wrote:
>> On Wed, Oct 27, 2010 at 4:30 PM, Mike Rapoport 
><mike at compulab.co.il> wrote:
>>> On 10/27/10 14:46, saeed bishara wrote:
>>>>> +
>>>>> +               shift = (num & 7) << 2;
>>>>> +               if (*mpp_list & MPP_PMU_MASK) {
>>>>> +                       pmu_mpp_ctrl |= (0x1 << num);
>>>>> +                       pmu_sig_ctrl[num / 8] &= ~(0xf << shift);
>>>>> +                       pmu_sig_ctrl[num / 8] |= ~(0xf << shift);
>>>> the  ~ in line hints something wrong
>>>
>>> indeed :)
>>>
>>>>> diff --git a/arch/arm/mach-dove/mpp.h b/arch/arm/mach-dove/mpp.h
>>>>> new file mode 100644
>>>>> index 0000000..c7b8acf
>>>>> --- /dev/null
>>>>> +++ b/arch/arm/mach-dove/mpp.h
>>>>> @@ -0,0 +1,214 @@
>>>>> +#ifndef __ARCH_DOVE_MPP_CODED_H
>>>>> +#define __ARCH_DOVE_MPP_CODED_H
>>>>> +
>>>>> +#define MPP(_num, _mode, _pmu, _grp, _au1, _nfc) (     \
>>>>> +/* MPP/group number */         ((_num) & 0xff) |               \
>>>>> +/* MPP select value */         (((_mode) & 0xf) << 8) |        \
>>>>> +/* MPP PMU */                  ((!!(_pmu)) << 12) |            \
>>>>> +/* group flag */               ((!!(_grp)) << 13) |            \
>>>>> +/* AU1 flag */                 ((!!(_au1)) << 14) |            \
>>>>> +/* NFCE flag */                        ((!!(_nfc)) << 15))
>>>> in order to make these defines readable, I suggest to add 
>defines for
>>>> the flags, for example:
>>>> #define GROUP   (1 << 13)
>>>> then MPP defines look like:
>>>>
>>>> #define MPPX_GPIO          MPP(MPP_X, 0x1, GROUP|AU1)
>>>
>>> I think we can make it even more readable with
>>>
>>> #define MPP_PIN(_num, _sel)     MPP(_num, _sel, 0, 0, 0, 0)
>>> #define MPP_GRP(_grp, _sel)     MPP(_grp, _sel, 0, 1, 0, 0)
>>> #define MPP_GRP_AU1(_sel)       MPP(0, _sel, 0, 0, 1, 0)
>>> #define MPP_GRP_NFC(_sel)       MPP(0, _sel, 0, 0, 0, 1)
>>>
>>> What do you think?
>> when you have multiple flags in the MPP macro, people would 
>think that
>> those flags are not exlusive, in other words, mpp can have multiple
>> flags. so I suggest you to use a type (gpr, au1, nfc or pmu).
>>
>
>Hi Saeed,
>
>I think it's a good idea to simplify the macros as Mike 
>suggested, we are doing
>the same thing for PXA. There is actually another benefit of 
>defining like that
>in addition to the readability, - it's less error-prone.
>
>In practice, there is always a fixed combination of flags for a macro
>like MPPx_GPIO,
>even if the flags are combinational.
>
>I'm not that enthusiastic but it's something to think about.
Ok, Mike, go ahead with your latest suggestion.
>


More information about the linux-arm-kernel mailing list