RE: [PATCH 3/9 v3] omap: generic: introduce a single check_revision

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> -----Original Message-----
> From: Menon, Nishanth 
> Sent: Tuesday, July 13, 2010 9:08 PM
> To: Premi, Sanjeev
> Cc: Tony Lindgren; felipe.balbi@xxxxxxxxx; linux-omap; Angelo 
> Arrifano; Zebediah C. McClure; Alistair Buxton; Grazvydas 
> Ignotas; Paul Walmsley; Shilimkar, Santosh; Guruswamy, 
> Senthilvadivu; Kevin Hilman; DebBarma, Tarun Kanti; 
> ValkeinenTomi (Nokia-MS/Helsinki); Koskinen Aaro 
> (Nokia-MS/Helsinki); Pandita, Vikram; S, Vishwanath
> Subject: Re: [PATCH 3/9 v3] omap: generic: introduce a single 
> check_revision
> 
> Premi, Sanjeev had written, on 07/13/2010 10:06 AM, the following:
> >> -----Original Message-----
> >> From: Menon, Nishanth 
> >> Sent: Thursday, July 08, 2010 7:57 PM
> >> To: Tony Lindgren
> >> Cc: felipe.balbi@xxxxxxxxx; linux-omap; Angelo Arrifano; 
> >> Zebediah C. McClure; Alistair Buxton; Grazvydas Ignotas; Paul 
> >> Walmsley; Premi, Sanjeev; Shilimkar, Santosh; Guruswamy, 
> >> Senthilvadivu; Kevin Hilman; DebBarma, Tarun Kanti; 
> >> ValkeinenTomi (Nokia-MS/Helsinki); Koskinen Aaro 
> >> (Nokia-MS/Helsinki); Pandita, Vikram; S, Vishwanath
> >> Subject: Re: [PATCH 3/9 v3] omap: generic: introduce a single 
> >> check_revision
> >>
> >> Tony Lindgren had written, on 07/08/2010 07:21 AM, the following:
> >>> * Menon, Nishanth <nm@xxxxxx> [100708 14:49]:
> >>>> ----- Original message -----
> >>>>> Hi,
> >>>>>
> >>>>> On Wed, Jul 07, 2010 at 07:24:16PM +0200, ext Nishanth 
> >> Menon wrote:
> >>>>>> I am not sure.. if you would like drivers to be 
> >> modprobabe, there may
> >>>>> be
> >>>>>> quirks that you'd want to enable based on cpu_is_omapxxx 
> >> checks. so it
> >>>>>> probably does not make sense to __initdata the revision/feature
> >>>>> variables.
> >>>>>
> >>>>> can't you pass the quirks via pdata, then ?
> >>>> If pdata is passed based on board: Imagine 3630 and uart 
> >> quirk. Why share errata xyz over pdata for every board using 
> >> 3630? Quirks are cpu specific and not really domain of board..  
> >>> We should be able to handle the quirks by passing some
> >>> flag or function pointer from platform data.
> >>>
> >>> The drivers should be arch independent, using cpu_is_omapxxxx
> >>> tests anywhere under drivers/* is wrong and should be
> >>> fixed.
> >> there are two forms of quirks:
> >> a) quirks which can be detected based on IP rev
> >> b) quirks which are silicon integration related - only 
> >> cpu_is_xxxx can 
> >> be used to detect them.
> >> for a) - I disagree that pdata should be used (this was my 
> original 
> >> contention)
> >> for b) the question IMHO is: How is pdata provided to the 
> >> driver - that 
> >> is important. IMHO, pdata taken into drivers could have 
> >> quirks, but if 
> >> the quirk addition is done from board files, I disagree, then 
> >> should be 
> >> done in arch/arm/mach-omap[12]/somefile.c where somefile.c is 
> >> common for 
> >> all boards (e.g. device.c) and that allows the driver to be cpu 
> >> independent and allows board files not to have redundant 
> information.
> >>
> >> BUT, features *should* be kept distinct from quirks for 
> readability 
> >> purposes.
> > 
> > Nishanth,
> > 
> > Sorry missed most of discussion due to vacation. But just wanted to
> > know the benefit of check_version() without the processor context.
> 
> lets try not to confuse things here:
> a) feature - this debate is part of this thread

[sp] The OMAP_FEATURE appears in the patch below only because the corresponding
lines didn't change in the patch I created. Not because I wanted to get
another discussion on this subject.

Subject of this mail is "omap: generic: introduce a single check_revision"
and hence I responded to same.

> b) errata - done per driver

[sp] Didn't get the context here.

> c) cpu_is_xyz() - used for cpu type detection
> d) cpu_revision() - the patch that you post below - should be in a 
> seperate thread.
> 
> I am not averse to the new functions you are introducing and IMHO, I 
> agree that it will improve readability, can you rebase and 
> post seperately?

[sp] Will be doing it. The patch here was only for illustration.

> 
> > 
> > I had earlier submitted related patches; but 36x being considered
> > as 34x broke the logic. Before going on vacation I had created a
> > patch (against 2.6.32). Putting here for review (there are two
> > typos in this specific patch, pl ignore that):
> > 
> > Usage would be:
> > if (cpu_rev_eq(omap34xx, OMAP34XX_ES_1_0))
> maybe we could simplify this a bit(OMAP34XX prefix seems redundant):

Yes. I know, but then I am, not sure if the bit definitions will
remain same in future. An early version of this patch had no
OMAP34XX prefix.

> if (cpu_rev_eq(omap34xx, ES_1_0))?
> we should probably take the discussion seperately.
> 
> > 
> > 
> > commit 6e4a9439fbc67eb2a55f440923cfade74c4509d2
> > Author: Sanjeev Premi <premi@xxxxxx>
> > Date:   Thu Jun 3 21:28:39 2010 +0530
> > 
> >     omap: Add macros to evaluate cpu revision
> > 
> >     This patch adds macros to evaluate the cpu revision.
> >     These macros increase readability by reducing the
> >     repetitive code when multiple silicon revisions have
> >     to be tested.
> > 
> > diff --git a/arch/arm/plat-omap/include/plat/cpu.h 
> b/arch/arm/plat-omap/include/
> > index 7514174..7cc5611 100644
> > --- a/arch/arm/plat-omap/include/plat/cpu.h
> > +++ b/arch/arm/plat-omap/include/plat/cpu.h
> > @@ -70,6 +70,12 @@ unsigned int omap_rev(void);
> >  #define OMAP_REVBITS_20                0x20
> >  #define OMAP_REVBITS_30                0x30
> >  #define OMAP_REVBITS_40                0x40
> > +#define OMAP_REVBITS_50                0x50
> > +
> > +/*
> > + * Get the CPU Id for OMAP devices
> > + */
> > +#define GET_OMAP_ID()  ((omap_rev() >> 16) & 0xffff)
> > 
> >  /*
> >   * Get the CPU revision for OMAP devices
> > @@ -385,6 +391,12 @@ IS_OMAP_TYPE(3517, 0x3517)
> >  #define OMAP3505_REV(v)                (OMAP35XX_CLASS | 
> (0x3505 << 16) | (v <<
> >  #define OMAP3517_REV(v)                (OMAP35XX_CLASS | 
> (0x3517 << 16) | (v <<
> > 
> > +#define AM37XX_CLASS           0x37000034
> > +#define AM3703_REV(v)          (AM37XX_CLASS | (0x3503 << 
> 16) | (v << 8))
> > +#define AM3715_REV(v)          (AM37XX_CLASS | (0x3515 << 
> 16) | (v << 8))
> > +#define AM3725_REV(v)          (AM37XX_CLASS | (0x3525 << 
> 16) | (v << 8))
> > +#define AM3730_REV(v)          (AM37XX_CLASS | (0x3530 << 
> 16) | (v << 8))
> > +
> >  #define OMAP443X_CLASS         0x44300044
> >  #define OMAP4430_REV_ES1_0     0x44300044
> > 
> > @@ -458,4 +470,36 @@ OMAP3_HAS_FEATURE(neon, NEON)
> >  OMAP3_HAS_FEATURE(isp, ISP)
> >  OMAP3_HAS_FEATURE(192mhz_clk, 192MHZ_CLK)
> > 
> > +/*
> > + * Map revision bits to silicon specific revisions
> > + */
> > +#define OMAP34XX_ES_1_0                OMAP_REVBITS_00
> > +#define OMAP34XX_ES_2_0                OMAP_REVBITS_10
> > +#define OMAP34XX_ES_2_1                OMAP_REVBITS_20
> > +#define OMAP34XX_ES_3_0                OMAP_REVBITS_30
> > +#define OMAP34XX_ES_3_1                OMAP_REVBITS_40
> > +#define OMAP34XX_ES_3_1_2      OMAP_REVBITS_50
> > +
> > +#define AM3517_ES_1_0          OMAP_REVBITS_00
> > +
> > +#define OMAP36XX_ES_1_0                OMAP_REVBITS_00
> > +
> > +/*
> > + * Macros to evaluate CPU revision
> > + */
> > +#define cpu_rev_lt(cpu,rev)    \
> > +       ((cpu_is_omap ##cpu() && (GET_OMAP_REVISION() < 
> (rev))) ? 1 : 0)
> > +
> > +#define cpu_rev_le(cpu,rev)    \
> > +       ((cpu_is_omap ##cpu() && (GET_OMAP_REVISION() <= 
> (rev))) ? 1 : 0)
> > +
> > +#define cpu_rev_eq(cpu,rev)    \
> > +       ((cpu_is_omap ##cpu() && (GET_OMAP_REVISION() == 
> (rev))) ? 1 : 0)
> > +
> > +#define cpu_rev_ge(cpu,rev)    \
> > +       ((cpu_is_omap ##cpu() && (GET_OMAP_REVISION() >= 
> (rev))) ? 1 : 0)
> > +
> > +#define cpu_rev_gt(cpu,rev)    \
> > +       ((cpu_is_omap ##cpu() && (GET_OMAP_REVISION() > 
> (rev))) ? 1 : 0)
> > +
> >  #endif
> > 
> > ~sanjeev
> > 
> >> -- 
> >> Regards,
> >> Nishanth Menon
> >>
> 
> 
> -- 
> Regards,
> Nishanth Menon
> --
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux