From: Yoshinori Sato <ysato@users.sourceforge.jp>
To: Arnd Bergmann <arnd@arndb.de>
Cc: linux-arch@vger.kernel.org
Subject: Re: [PATCH 16/16] h8300: misc functions
Date: Thu, 22 Jan 2015 02:19:42 +0900 [thread overview]
Message-ID: <87sif4kq4x.wl-ysato@users.sourceforge.jp> (raw)
In-Reply-To: <3896076.DdWKauEBRg@wuerfel>
At Wed, 21 Jan 2015 10:01:59 +0100,
Arnd Bergmann wrote:
>
> On Wednesday 21 January 2015 13:32:48 Yoshinori Sato wrote:
>
> > +unsigned long clk_get_rate(struct clk *clk)
> > +{
> > + return clk->parent->rate;
> > +}
> > +EXPORT_SYMBOL(clk_get_rate)
> > +
> > +int clk_enable(struct clk *clk)
> > +{
> > + return 0;
> > +}
> > +EXPORT_SYMBOL(clk_enable)
> > +
> > +void clk_disable(struct clk *clk)
> > +{
> > +}
> > +EXPORT_SYMBOL(clk_disable)
>
> If you are not too size constrained, you could consider using
> the common clk implementation from drivers/clk/.
>
> > +static struct clk master_clk;
> > +
> > +static struct clk peripheral_clk = {
> > + .parent = &master_clk,
> > +};
> > +
> > +static struct clk_lookup lookups[] = {
> > + {
> > + .con_id = "master_clk",
> > + .clk = &master_clk,
> > + },
> > + {
> > + .con_id = "peripheral_clk",
> > + .clk = &peripheral_clk,
> > + },
> > +};
> > +
> > +int __init h8300_clk_init(unsigned long hz)
> > +{
> > + master_clk.rate = hz;
> > + clkdev_add_table(lookups, ARRAY_SIZE(lookups));
> > + return 0;
> > +}
>
> Usually, we try to avoid global clock signal names to be requested by
> drivers. Instead you should list the clock input name for each device
> along with the device name, to allow drivers to be use the same string
> for the clock signal independent of how a device is wired.
OK.
> This would automatically work with dt.
>
> > +EXPORT_SYMBOL(__gcc_bcmp);
> > +EXPORT_SYMBOL(__ashldi3);
> > +EXPORT_SYMBOL(__ashrdi3);
> > +EXPORT_SYMBOL(__cmpdi2);
> > +EXPORT_SYMBOL(__divdi3);
> > +EXPORT_SYMBOL(__divsi3);
> > +EXPORT_SYMBOL(__lshrdi3);
> > +EXPORT_SYMBOL(__moddi3);
> > +EXPORT_SYMBOL(__modsi3);
> > +EXPORT_SYMBOL(__muldi3);
> > +EXPORT_SYMBOL(__mulsi3);
> > +EXPORT_SYMBOL(__negdi2);
> > +EXPORT_SYMBOL(__ucmpdi2);
> > +EXPORT_SYMBOL(__udivdi3);
> > +EXPORT_SYMBOL(__udivmoddi4);
>
> We don't normally use the __udivdi3/__udivmoddi4 functions from libgcc,
> instead Linux drivers are required to use the do_div() or div64()
> interfaces to do an expensive 64-bit division, to avoid accidentally
> doing an expensive computation that can be reduced to a cheaper 32-bit
> division. You can probably just drop these two symbols and still
> use libgcc, though that would not catch the built-in (non-loadable module)
> users.
>
> An alternative would be to copy the implementation of the other functions
> from libgcc source into the kernel and just export the symbols you actually
> need. This also gives you better control over which implementation is
> used, to avoid a toolchain dependency in the kernel. Most architectures
> take this approach.
OK.
I will fix V2 patch.
> > diff --git a/arch/h8300/kernel/module.c b/arch/h8300/kernel/module.c
> > new file mode 100644
> > index 0000000..352aede
> > --- /dev/null
> > +++ b/arch/h8300/kernel/module.c
> > @@ -0,0 +1,75 @@
> > +#include <linux/moduleloader.h>
> > +#include <linux/elf.h>
> > +#include <linux/vmalloc.h>
> > +#include <linux/fs.h>
> > +#include <linux/string.h>
> > +#include <linux/kernel.h>
> > +
> > +#if 0
> > +#define DEBUGP printk
> > +#else
> > +#define DEBUGP(fmt...)
> > +#endif
>
> You can use the existing pr_debug() to the same effect.
>
> > diff --git a/arch/h8300/kernel/sys_h8300.c b/arch/h8300/kernel/sys_h8300.c
> > new file mode 100644
> > index 0000000..aa2302c
> > --- /dev/null
> > +++ b/arch/h8300/kernel/sys_h8300.c
> > @@ -0,0 +1,22 @@
> > +/*
> > + * linux/arch/h8300/kernel/sys_h8300.c
> > + *
> > + * This file contains various random system calls that
> > + * have a non-standard calling sequence on the H8/300
> > + * platform.
> > + */
> > +
> > +#include <asm/setup.h>
> > +#include <asm/uaccess.h>
> > +
> > +/* sys_cacheflush -- no support. */
> > +asmlinkage int
> > +sys_cacheflush(unsigned long addr, int scope, int cache, unsigned long len)
> > +{
> > + return -EINVAL;
> > +}
> > +
> > +asmlinkage int sys_getpagesize(void)
> > +{
> > + return PAGE_SIZE;
> > +}
>
> I think you can just drop these.
>
> Arnd
OK
I will fix V2 patch.
--
Yoshinori Sato
<ysato@users.sourceforge.jp>
prev parent reply other threads:[~2015-01-21 17:19 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <cover.1421813622.git.ysato@users.sourceforge.jp>
2015-01-21 4:23 ` [PATCH 01/16] h8300: Assembly headers Yoshinori Sato
2015-01-21 11:02 ` Geert Uytterhoeven
2015-01-21 17:22 ` Yoshinori Sato
2015-01-21 4:23 ` [PATCH 02/16] h8300: UAPI headers Yoshinori Sato
2015-01-21 8:46 ` Arnd Bergmann
2015-01-21 17:16 ` Yoshinori Sato
2015-01-21 4:24 ` [PATCH 03/16] h8300: defconfigs Yoshinori Sato
2015-01-21 8:47 ` Arnd Bergmann
2015-01-21 4:24 ` [PATCH 04/16] h8300: Memory management Yoshinori Sato
2015-01-21 10:57 ` Geert Uytterhoeven
2015-01-21 17:20 ` Yoshinori Sato
2015-01-21 4:25 ` [PATCH 05/16] h8300: Target depend (hw define) part Yoshinori Sato
2015-01-21 4:27 ` [PATCH 06/16] drivers: Add h8300 Yoshinori Sato
2015-01-21 11:03 ` Geert Uytterhoeven
2015-01-21 17:23 ` Yoshinori Sato
2015-01-21 4:29 ` [PATCH 07/16] Add ELF machine Yoshinori Sato
2015-01-21 4:29 ` [PATCH 08/16] h8300: Build scripts Yoshinori Sato
2015-01-21 4:30 ` [PATCH 09/16] h8300: kernel startup Yoshinori Sato
2015-01-21 4:30 ` [PATCH 10/16] h8300: Exception and Interrupt handler Yoshinori Sato
2015-01-21 4:31 ` [PATCH 11/16] h8300: Libraries Yoshinori Sato
2015-01-21 4:31 ` [PATCH 12/16] h8300: clocksource Yoshinori Sato
2015-01-21 8:49 ` Arnd Bergmann
2015-01-21 17:06 ` Yoshinori Sato
2015-01-21 4:31 ` [PATCH 13/16] h8300: ptrace helper Yoshinori Sato
2015-01-21 8:51 ` Arnd Bergmann
2015-01-21 17:08 ` Yoshinori Sato
2015-01-21 4:32 ` [PATCH 14/16] h8300: signal handler Yoshinori Sato
2015-01-21 4:32 ` [PATCH 15/16] h8300: system call entry table Yoshinori Sato
2015-01-21 4:32 ` [PATCH 16/16] h8300: misc functions Yoshinori Sato
2015-01-21 9:01 ` Arnd Bergmann
2015-01-21 17:19 ` Yoshinori Sato [this message]
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=87sif4kq4x.wl-ysato@users.sourceforge.jp \
--to=ysato@users.sourceforge.jp \
--cc=arnd@arndb.de \
--cc=linux-arch@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).