From patchwork Mon Jun 27 04:07:13 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Magnus Damm X-Patchwork-Id: 919842 Received: from smtp1.linux-foundation.org (smtp1.linux-foundation.org [140.211.169.13]) by demeter2.kernel.org (8.14.4/8.14.4) with ESMTP id p5R495Df007124 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL) for ; Mon, 27 Jun 2011 04:09:26 GMT Received: from daredevil.linux-foundation.org (localhost [127.0.0.1]) by smtp1.linux-foundation.org (8.14.2/8.13.5/Debian-3ubuntu1.1) with ESMTP id p5R47Jcn026569; Sun, 26 Jun 2011 21:07:21 -0700 Received: from mail-iw0-f175.google.com (mail-iw0-f175.google.com [209.85.214.175]) by smtp1.linux-foundation.org (8.14.2/8.13.5/Debian-3ubuntu1.1) with ESMTP id p5R47EBX026560 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=FAIL) for ; Sun, 26 Jun 2011 21:07:15 -0700 Received: by iwn4 with SMTP id 4so1418077iwn.6 for ; Sun, 26 Jun 2011 21:07:14 -0700 (PDT) MIME-Version: 1.0 Received: by 10.231.96.144 with SMTP id h16mr5738338ibn.182.1309147633193; Sun, 26 Jun 2011 21:07:13 -0700 (PDT) Received: by 10.231.34.70 with HTTP; Sun, 26 Jun 2011 21:07:13 -0700 (PDT) In-Reply-To: <201106252331.43354.rjw@sisk.pl> References: <201106112223.04972.rjw@sisk.pl> <201106252324.13454.rjw@sisk.pl> <201106252331.43354.rjw@sisk.pl> Date: Mon, 27 Jun 2011 13:07:13 +0900 Message-ID: From: Magnus Damm To: "Rafael J. Wysocki" Received-SPF: pass (localhost is always allowed.) X-Spam-Status: No, hits=-4.586 required=5 tests=AWL, BAYES_00, OSDL_HEADER_SPF_PASS, OSDL_HEADER_SUBJECT_BRACKETED X-Spam-Checker-Version: SpamAssassin 3.2.4-osdl_revision__1.47__ X-MIMEDefang-Filter: lf$Revision: 1.188 $ X-Scanned-By: MIMEDefang 2.63 on 140.211.169.21 Cc: linux-sh@vger.kernel.org, Greg Kroah-Hartman , LKML , Linux PM mailing list Subject: Re: [linux-pm] [PATCH 10/10 v6] ARM / shmobile: Support for I/O power domains for SH7372 (v8) X-BeenThere: linux-pm@lists.linux-foundation.org X-Mailman-Version: 2.1.9 Precedence: list List-Id: Linux power management List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-pm-bounces@lists.linux-foundation.org Errors-To: linux-pm-bounces@lists.linux-foundation.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter2.kernel.org [140.211.167.43]); Mon, 27 Jun 2011 04:09:26 +0000 (UTC) X-MIME-Autoconverted: from quoted-printable to 8bit by demeter2.kernel.org id p5R495Df007124 On Sun, Jun 26, 2011 at 6:31 AM, Rafael J. Wysocki wrote: > From: Rafael J. Wysocki > > Use the generic power domains support introduced by the previous > patch to implement support for power domains on SH7372. > > Signed-off-by: Rafael J. Wysocki > Acked-by: Paul Mundt > --- Hi Rafael, Thanks for your work on this. I've been working on up-porting my A3RV prototype, and I came across these minor details: > --- linux-2.6.orig/arch/arm/mach-shmobile/board-mackerel.c > +++ linux-2.6/arch/arm/mach-shmobile/board-mackerel.c > @@ -1582,6 +1582,10 @@ static void __init mackerel_init(void) > >        platform_add_devices(mackerel_devices, ARRAY_SIZE(mackerel_devices)); > > +       sh7372_init_pm_domain(SH7372_A4LC); > +       sh7372_add_device_to_domain(SH7372_A4LC, &lcdc_device); > +       sh7372_add_device_to_domain(SH7372_A4LC, &hdmi_lcdc_device); > + >        hdmi_init_pm_clock(); >        sh7372_pm_init(); >  } > Index: linux-2.6/arch/arm/mach-shmobile/include/mach/sh7372.h > =================================================================== > --- linux-2.6.orig/arch/arm/mach-shmobile/include/mach/sh7372.h > +++ linux-2.6/arch/arm/mach-shmobile/include/mach/sh7372.h > @@ -12,6 +12,7 @@ >  #define __ASM_SH7372_H__ > >  #include > +#include > >  /* >  * Pin Function Controller: > @@ -470,4 +471,31 @@ extern struct clk sh7372_fsibck_clk; >  extern struct clk sh7372_fsidiva_clk; >  extern struct clk sh7372_fsidivb_clk; > > +struct platform_device; > + > +struct sh7372_pm_domain { > +       struct generic_pm_domain genpd; > +       unsigned int bit_shift; > +}; > + > +static inline struct sh7372_pm_domain *to_sh7372_pd(struct generic_pm_domain *d) > +{ > +       return container_of(d, struct sh7372_pm_domain, genpd); > +} > + > +#ifdef CONFIG_PM > +extern struct sh7372_pm_domain sh7372_a4lc_domain; > +#define SH7372_A4LC    (&sh7372_a4lc_domain) > + > +extern void sh7372_init_pm_domain(struct sh7372_pm_domain *sh7372_pd); > +extern void sh7372_add_device_to_domain(struct sh7372_pm_domain *sh7372_pd, > +                                       struct platform_device *pdev); > +#else > +#define SH7372_A4LC    NULL > + > +static inline void sh7372_init_pm_domain(struct sh7372_pm_domain *sh7372_pd) {} > +static inline void sh7372_add_device_to_domain(struct sh7372_pm_domain *pd, > +                                              struct platform_device *pdev) {} > +#endif /* CONFIG_PM */ > + >  #endif /* __ASM_SH7372_H__ */ Wouldn't it be easier to simply get rid of SH7372_A4LC? Perhaps you have some special intention behind your #define, but for me the following change is working just fine: --- 0001/arch/arm/mach-shmobile/board-mackerel.c +++ work/arch/arm/mach-shmobile/board-mackerel.c 2011-06-27 13:04:22.000000000 +0900 @@ -1582,9 +1582,9 @@ static void __init mackerel_init(void) platform_add_devices(mackerel_devices, ARRAY_SIZE(mackerel_devices)); - sh7372_init_pm_domain(SH7372_A4LC); - sh7372_add_device_to_domain(SH7372_A4LC, &lcdc_device); - sh7372_add_device_to_domain(SH7372_A4LC, &hdmi_lcdc_device); + sh7372_init_pm_domain(&sh7372_a4lc); + sh7372_add_device_to_domain(&sh7372_a4lc, &lcdc_device); + sh7372_add_device_to_domain(&sh7372_a4lc, &hdmi_lcdc_device); hdmi_init_pm_clock(); sh7372_pm_init(); --- 0001/arch/arm/mach-shmobile/include/mach/sh7372.h +++ work/arch/arm/mach-shmobile/include/mach/sh7372.h 2011-06-27 13:03:46.000000000 +0900 @@ -484,15 +484,12 @@ static inline struct sh7372_pm_domain *t } #ifdef CONFIG_PM -extern struct sh7372_pm_domain sh7372_a4lc_domain; -#define SH7372_A4LC (&sh7372_a4lc_domain) +extern struct sh7372_pm_domain sh7372_a4lc; extern void sh7372_init_pm_domain(struct sh7372_pm_domain *sh7372_pd); extern void sh7372_add_device_to_domain(struct sh7372_pm_domain *sh7372_pd, struct platform_device *pdev); #else -#define SH7372_A4LC NULL - static inline void sh7372_init_pm_domain(struct sh7372_pm_domain *sh7372_pd) {} static inline void sh7372_add_device_to_domain(struct sh7372_pm_domain *pd, struct platform_device *pdev) {} Also, one more thing: > --- linux-2.6.orig/arch/arm/mach-shmobile/Makefile > +++ linux-2.6/arch/arm/mach-shmobile/Makefile > @@ -42,6 +42,10 @@ obj-$(CONFIG_MACH_AP4EVB)    += board-ap4ev >  obj-$(CONFIG_MACH_AG5EVM)      += board-ag5evm.o >  obj-$(CONFIG_MACH_MACKEREL)    += board-mackerel.o > > +# PM objects > +pm-$(CONFIG_ARCH_SH7372)       += pm-sh7372.o > + >  # Framework support >  obj-$(CONFIG_SMP)              += $(smp-y) >  obj-$(CONFIG_GENERIC_GPIO)     += $(pfc-y) > +obj-$(CONFIG_PM)               += $(pm-y) I don't think this hunk is needed. It must be a left over from some older version of the patch when pm-sh7372.c didn't exist. Would you like me to submit incremental patches, or do you prefer to fix up your current patch? Thanks! / magnus --- 0001/arch/arm/mach-shmobile/pm-sh7372.c +++ work/arch/arm/mach-shmobile/pm-sh7372.c 2011-06-27 13:04:02.000000000 +0900 @@ -115,7 +115,7 @@ void sh7372_add_device_to_domain(struct pm_genpd_add_device(&sh7372_pd->genpd, dev); } -struct sh7372_pm_domain sh7372_a4lc_domain = { +struct sh7372_pm_domain sh7372_a4lc = { .bit_shift = 1, };