Ok. Will do.

Murali Karicheri
Software Design Engineer
email: [email protected]
Phone: (301) 407 9583

>> -----Original Message-----
>> From: Nori, Sekhar
>> Sent: Monday, November 14, 2011 3:24 PM
>> To: Karicheri, Muralidharan; davinci-linux-open-
>> [email protected]; Hilman, Kevin
>> Cc: Chemparathy, Cyril
>> Subject: RE: [PATCH 1/2 - v3] ARM: davinci - fix incorrect offsets and
>> mask usage in psc code
>> 
>> Hi Murali,
>> 
>> I posted an updated version of this patch. In future, can you
>> please CC LAKML in for all kernel patches.
>> 
>> And, the subject like prefix we are using is:
>> 
>> "ARM: davinci: "
>> 
>> On Sat, Sep 24, 2011 at 02:56:12, Karicheri, Muralidharan wrote:
>> > From: Murali Karicheri <[email protected]>
>> >
>> > There are 5 LSB bits defined in PDSTAT and the code currently uses
>> > a mask of 1 bit to check the status. Also there is PDSTAT and PDCTL
>> > registers defined for domain0 and domain1 where as the code
>> > always read the domain0 PDSTAT register and domain1 PDCTL register.
>> > This patch fixes these issues.
>> 
>> These two issues are now dealt in separate patches.
>> 
>> >
>> > Reviewed-by: Sergei Shtylyov <[email protected]>
>> >
>> > Signed-off-by: Murali Karicheri <[email protected]>
>> > ---
>> > change from v2-v3
>> >  - description of patch changed as per review comment
>> >  - defined a constant for PDSTAT_STATE_MASK
>> > This patch applies to the davinci-next branch of linux-davinci tree
>> >
>> >  arch/arm/mach-davinci/include/mach/psc.h |    3 ++-
>> >  arch/arm/mach-davinci/psc.c              |   18 +++++++++---------
>> >  2 files changed, 11 insertions(+), 10 deletions(-)
>> >
>> > diff --git a/arch/arm/mach-davinci/include/mach/psc.h b/arch/arm/mach-
>> davinci/include/mach/psc.h
>> > index a47e6f2..1724d95 100644
>> > --- a/arch/arm/mach-davinci/include/mach/psc.h
>> > +++ b/arch/arm/mach-davinci/include/mach/psc.h
>> > @@ -233,7 +233,7 @@
>> >  #define PTCMD             0x120
>> >  #define PTSTAT            0x128
>> >  #define PDSTAT            0x200
>> > -#define PDCTL1            0x304
>> > +#define PDCTL             0x300
>> >  #define MDSTAT            0x800
>> >  #define MDCTL             0xA00
>> >
>> > @@ -244,6 +244,7 @@
>> >  #define PSC_STATE_ENABLE  3
>> >
>> >  #define MDSTAT_STATE_MASK 0x1f
>> > +#define PDSTAT_STATE_MASK 0x1f
>> >
>> >  #ifndef __ASSEMBLER__
>> >
>> > diff --git a/arch/arm/mach-davinci/psc.c b/arch/arm/mach-davinci/psc.c
>> > index a415804..5dbe974 100644
>> > --- a/arch/arm/mach-davinci/psc.c
>> > +++ b/arch/arm/mach-davinci/psc.c
>> > @@ -50,7 +50,7 @@ int __init davinci_psc_is_clk_active(unsigned int
>> ctlr, unsigned int id)
>> >  void davinci_psc_config(unsigned int domain, unsigned int ctlr,
>> >            unsigned int id, u32 next_state)
>> >  {
>> > -  u32 epcpr, ptcmd, ptstat, pdstat, pdctl1, mdstat, mdctl;
>> > +  u32 epcpr, ptcmd, ptstat, pdstat, pdctl, mdstat, mdctl;
>> >    void __iomem *psc_base;
>> >    struct davinci_soc_info *soc_info = &davinci_soc_info;
>> >
>> > @@ -67,11 +67,11 @@ void davinci_psc_config(unsigned int domain,
>> unsigned int ctlr,
>> >    mdctl |= next_state;
>> >    __raw_writel(mdctl, psc_base + MDCTL + 4 * id);
>> >
>> > -  pdstat = __raw_readl(psc_base + PDSTAT);
>> > -  if ((pdstat & 0x00000001) == 0) {
>> > -          pdctl1 = __raw_readl(psc_base + PDCTL1);
>> > -          pdctl1 |= 0x1;
>> > -          __raw_writel(pdctl1, psc_base + PDCTL1);
>> > +  pdstat = __raw_readl(psc_base + PDSTAT + 4 * domain);
>> > +  if ((pdstat & PDSTAT_STATE_MASK) == 0) {
>> > +          pdctl = __raw_readl(psc_base + PDCTL + 4 * domain);
>> > +          pdctl |= 0x1;
>> 
>> I have defined and used the macro PDCTL_NEXT here.
>> 
>> > +          __raw_writel(pdctl, psc_base + PDCTL + 4 * domain);
>> >
>> >            ptcmd = 1 << domain;
>> >            __raw_writel(ptcmd, psc_base + PTCMD);
>> > @@ -80,9 +80,9 @@ void davinci_psc_config(unsigned int domain, unsigned
>> int ctlr,
>> >                    epcpr = __raw_readl(psc_base + EPCPR);
>> >            } while ((((epcpr >> domain) & 1) == 0));
>> >
>> > -          pdctl1 = __raw_readl(psc_base + PDCTL1);
>> > -          pdctl1 |= 0x100;
>> > -          __raw_writel(pdctl1, psc_base + PDCTL1);
>> > +          pdctl = __raw_readl(psc_base + PDCTL + 4 * domain);
>> > +          pdctl |= 0x100;
>> 
>> And used PDCTL_EPCGOOD good here.
>> 
>> Thanks,
>> Sekhar

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to