Hello.

On 09/01/2011 09:48 PM, Murali Karicheri wrote:

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 ARM domain and DSP domain where as the code
always read the ARM PDSTAT register and DSP PDCTL register. This patch
fixes these issues.

Reviewed-by: Sergei Shtylyov<[email protected]>

   I haven't reviewed this patch yet. Maybe you mean "Suggested-by:"?
        
Signed-off-by: Murali Karicheri<[email protected]>
---
comments against previous version of the patch addressed:-

   Hm, I seem to have missed the previous version then...

  - Moved the bug fix to a separate patch

  arch/arm/mach-davinci/include/mach/psc.h |    2 +-
  arch/arm/mach-davinci/psc.c              |   19 ++++++++++---------
  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 47fd0bc..63c4366 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

diff --git a/arch/arm/mach-davinci/psc.c b/arch/arm/mach-davinci/psc.c
index 1fb6bdf..f157d9c 100644
--- a/arch/arm/mach-davinci/psc.c
+++ b/arch/arm/mach-davinci/psc.c
@@ -52,7 +52,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, bool enable, u32 flags)
  {
-       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;
        u32 next_state = PSC_STATE_ENABLE;
@@ -79,11 +79,11 @@ void davinci_psc_config(unsigned int domain, unsigned int 
ctlr,
                mdctl |= MDCTL_FORCE;
        __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&  0x1F) == 0) {

I suggest to make this mask a #define in <mach/psc.h>, like we have MDSTAT_STATE_MASK there.

+               pdctl = __raw_readl(psc_base + PDCTL + 4 * domain);
+               pdctl |= 0x1;
+               __raw_writel(pdctl, psc_base + PDCTL + 4 * domain);

                ptcmd = 1<<  domain;
                __raw_writel(ptcmd, psc_base + PTCMD);
@@ -92,9 +92,10 @@ void davinci_psc_config(unsigned int domain, unsigned int 
ctlr,
                        epcpr = __raw_readl(psc_base + EPCPR);
                } while ((((epcpr>>  domain)&  1) == 0));

Does this work for ARM domain, i.e. does it require an external power supply too?

-               pdctl1 = __raw_readl(psc_base + PDCTL1);
-               pdctl1 |= 0x100;
-               __raw_writel(pdctl1, psc_base + PDCTL1);
+               pdctl = __raw_readl(psc_base + PDCTL + 4 * domain);
+               pdctl |= 0x100;
+               __raw_writel(pdctl, psc_base + PDCTL + 4 * domain);
+
        } else {
                ptcmd = 1<<  domain;
                __raw_writel(ptcmd, psc_base + PTCMD);

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

Reply via email to