From: Yoshinori Sato <ysato@users.sourceforge.jp>
To: Arnd Bergmann <arnd@arndb.de>
Cc: linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org
Subject: Re: [PATCH v9 11/17] h8300: clock driver
Date: Tue, 28 Apr 2015 18:43:21 +0900 [thread overview]
Message-ID: <87bni8vb9i.wl-ysato@users.sourceforge.jp> (raw)
In-Reply-To: <2321574.fdIMjhZdv2@wuerfel>
At Mon, 27 Apr 2015 11:04:19 +0200,
Arnd Bergmann wrote:
>
> On Monday 27 April 2015 14:35:18 Yoshinori Sato wrote:
> > +static struct platform_driver cpg_driver = {
> > + .driver = {
> > + .name = DEVNAME,
> > + },
> > + .probe = clk_probe,
> > +};
> > +
> > +early_platform_init(DEVNAME, &cpg_driver);
> > +
> > +static struct platform_device clk_device = {
> > + .name = DEVNAME,
> > + .id = 0,
> > +};
> > +
> > +static struct platform_device *devices[] __initdata = {
> > + &clk_device,
> > +};
> > +
> > +int __init h8300_clk_init(int hz)
> > +{
> > + static int master_hz;
> > +
> > + master_hz = hz;
> > + clk_device.dev.platform_data = &master_hz;
> > + early_platform_add_devices(devices,
> > + ARRAY_SIZE(devices));
> > + early_platform_driver_register_all(DEVNAME);
> > + early_platform_driver_probe(DEVNAME, 1, 0);
> > + return 0;
> > +}
>
> Clock drivers are generally not 'platform_drivers'. Please do one of two
> things:
>
> a) use CLK_OF_DECLARE() to register a probe function, and use a device
> tree for describing your hardware
>
> b) rename clk_probe() to h8300_clk_init() and just call that function
> from the architecture code.
>
OK.
I'll think of "a".
>
> > +int __init h8300_clk_init(int hz)
> > +{
> > + static int master_hz;
> > +
> > + master_hz = hz;
> > + clk_device.dev.platform_data = &master_hz;
> > + early_platform_add_devices(devices,
> > + ARRAY_SIZE(devices));
> > + early_platform_driver_register_all(DEVNAME);
> > + early_platform_driver_probe(DEVNAME, 1, 0);
> > + return 0;
> > +}
>
> Here you have the same code again, which means the two files are mutually
> exclusive. This is generally not a good idea. Instead, it's better to
> make it possible to build a kernel that supports all the hardware, even
> if in practice you would not want to run that kernel.
>
> If you use CLK_OF_DECLARE(), it becomes trivial to make the two files
> coexist, otherwise use two different function names here and make the
> architecture code decide which one to call.
OK.
> > diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
> > index df69531..931860b 100644
> > --- a/include/linux/clk-provider.h
> > +++ b/include/linux/clk-provider.h
> > @@ -675,6 +675,18 @@ static inline void clk_writel(u32 val, u32 __iomem *reg)
> > iowrite32be(val, reg);
> > }
> >
> > +#elif IS_ENABLED(CONFIG_H8300)
> > +
> > +static inline u32 clk_readl(u32 __iomem *reg)
> > +{
> > + return __raw_readb(reg);
> > +}
> > +
> > +static inline void clk_writel(u32 val, u32 __iomem *reg)
> > +{
> > + __raw_writeb(val, reg);
> > +}
> > +
> > #else /* platform dependent I/O accessors */
>
> Why not use the same code as powerpc here? Drivers should normally
> not use __raw_* accessors, and the ioread32be on powerpc should work here
> as well.
>
> Arnd
Clock control regiser is 8bit.
So need byte access.
--
Yoshinori Sato
<ysato@users.sourceforge.jp>
next prev parent reply other threads:[~2015-04-28 9:43 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-27 5:35 [PATCH v9 00/17] Re-introduce h8300 architecture Yoshinori Sato
2015-04-27 5:35 ` [PATCH v9 01/17] h8300: Assembly headers Yoshinori Sato
2015-04-27 7:42 ` Tobias Klauser
2015-04-27 7:48 ` Arnd Bergmann
2015-04-27 9:26 ` Tobias Klauser
2015-04-27 9:33 ` Arnd Bergmann
2015-04-28 11:19 ` Yoshinori Sato
2015-04-27 8:40 ` Arnd Bergmann
2015-04-28 11:31 ` Yoshinori Sato
2015-04-27 5:35 ` [PATCH v9 02/17] h8300: UAPI headers Yoshinori Sato
2015-04-27 8:43 ` Arnd Bergmann
2015-04-28 9:25 ` Yoshinori Sato
2015-04-27 5:35 ` [PATCH v9 03/17] h8300: Exception and Interrupt handling Yoshinori Sato
2015-04-27 5:35 ` [PATCH v9 04/17] h8300: kernel booting Yoshinori Sato
2015-04-27 5:35 ` [PATCH v9 05/17] h8300: process and signals Yoshinori Sato
2015-04-27 5:35 ` [PATCH v9 06/17] h8300: CPU depend helpers Yoshinori Sato
2015-04-27 8:54 ` Arnd Bergmann
2015-04-28 9:22 ` Yoshinori Sato
2015-04-27 5:35 ` [PATCH v9 07/17] h8300: miscellaneous functions Yoshinori Sato
2015-04-27 8:57 ` Arnd Bergmann
2015-04-28 8:54 ` Yoshinori Sato
2015-04-27 5:35 ` [PATCH v9 08/17] h8300: Memory management Yoshinori Sato
2015-04-27 5:35 ` [PATCH v9 09/17] h8300: library functions Yoshinori Sato
2015-04-27 5:35 ` [PATCH v9 10/17] h8300: Build scripts Yoshinori Sato
2015-04-27 5:35 ` [PATCH v9 11/17] h8300: clock driver Yoshinori Sato
2015-04-27 9:04 ` Arnd Bergmann
2015-04-28 9:43 ` Yoshinori Sato [this message]
2015-04-28 10:03 ` Geert Uytterhoeven
2015-04-28 17:40 ` Yoshinori Sato
2015-04-27 5:35 ` [PATCH v9 12/17] h8300: clocksource Yoshinori Sato
2015-04-27 5:35 ` [PATCH v9 13/17] h8300: configs Yoshinori Sato
2015-04-28 3:27 ` Guenter Roeck
2015-04-28 8:05 ` Yoshinori Sato
2015-04-27 5:35 ` [PATCH v9 14/17] serial: Add H8300 Yoshinori Sato
2015-04-29 16:47 ` [v9,14/17] " Guenter Roeck
2015-04-27 5:35 ` [PATCH v9 15/17] Add ELF machine Yoshinori Sato
2015-04-27 5:35 ` [PATCH v9 16/17] mksysmap: Add h8300 local symbol pattern Yoshinori Sato
2015-04-27 5:35 ` [PATCH v9 17/17] Add H8/300 entry Yoshinori Sato
2015-04-27 9:11 ` [PATCH v9 00/17] Re-introduce h8300 architecture Arnd Bergmann
2015-04-28 9:09 ` Yoshinori Sato
2015-04-28 13:22 ` Guenter Roeck
2015-04-28 17:25 ` Yoshinori Sato
2015-04-29 4:33 ` Guenter Roeck
2015-04-29 4:44 ` Guenter Roeck
2015-04-29 6:22 ` Yoshinori Sato
2015-04-29 13:24 ` Guenter Roeck
2015-04-29 17:07 ` Guenter Roeck
2015-04-30 3:50 ` Yoshinori Sato
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87bni8vb9i.wl-ysato@users.sourceforge.jp \
--to=ysato@users.sourceforge.jp \
--cc=arnd@arndb.de \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.