From: "Uwe Kleine-König" <Uwe.Kleine-Koenig@digi.com>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>,
"Hans J. Koch" <hjk@linutronix.de>
Cc: Greg Kroah-Hartman <gregkh@suse.de>, linux-kernel@vger.kernel.org
Subject: [PATCH] Re: [PATCH 4/4 v2] [RFC] UIO: generic platform driver
Date: Mon, 14 Apr 2008 09:48:58 +0200 [thread overview]
Message-ID: <20080414074858.GA22694@digi.com> (raw)
In-Reply-To: <20080412131646.GF9669@flint.arm.linux.org.uk>
Hello,
> > > > > But what about this:
> > > > >
> > > > > ERROR: "clk_get" [drivers/uio/uio_pdrv.ko] undefined!
> > > > > ERROR: "clk_enable" [drivers/uio/uio_pdrv.ko] undefined!
> > > > > ERROR: "clk_disable" [drivers/uio/uio_pdrv.ko] undefined!
> > > > > ERROR: "clk_put" [drivers/uio/uio_pdrv.ko] undefined!
> > > > >
> > > > > Do you have any extra patches applied?
> > > > Yes I have, but nothing special. This is part of a generic API defined
> > > > in include/linux/clk.h. One of it's use it to abstract away some
> > > > platform dependencies. There are several architectures that define
> > > > it[1].
> > >
> > > I know. Unfortunately, I tested on x86_64, and it doesn't compile.
> > > If it's depending on something, then this dependency should be added in
> > > Kconfig. If it can be selected in the configuration, I expect it to
> > > compile (and work).
> > Maybe adding a dummy implementation that is compiled for machines that
> > don't provide a native one. Currently there is no cpp symbol that tells
> > if an machine supports the API.
> >
> > @Russell: Do you have an opinion regarding this!?
>
> Only that the kernels Kconfig is turning into a real complicated mess
> of dependencies IMHO.
>
> We could add a HAVE_CLK and add that to the dependency of all the drivers
> which use linux/clk.h. The problem will be finding all those drivers and
> their corresponding Kconfig entries.
>
> My feeling is that we're just going to end up creating another Kconfig
> symbol which folk half-heartedly use.
I don't like that either. What do you think about the patch below?
It doesn't introduce a new symbol that needs much care and attention.
This way the clk API is available on all configurations provided that
CONFIG_DUMMY_CLK is set correctly. If CONFIG_DUMMY_CLK is set wrong it
should result in a compile error. Either because there are two
implementations of clk_get or none.
The condition on when to define DUMMY_CLK isn't yet perfect, but not
defining it for a platform isn't a regression as there was no
implementation before this patch either.
This could supersede the implementation in
drivers/usb/gadget/pxa2xx_udc.c for IXP. (That driver obviously doesn't
check if clk_enable() succeeded, because it's defined as:
#define clk_enable(clk) do { } while (0)
.)
Maybe it would be fine to make these functions inline and define them
directly in linux/clk.h?
Best regards
Uwe
---->8----
From: Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com>
Date: Mon, 14 Apr 2008 09:02:30 +0200
Subject: [PATCH] provide a dummy implementation of the clk API
With this implementation clk_get and clk_enable always succeed. The
counterparts clk_put and clk_disable only do some minor error checking.
Signed-off-by: Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com>
---
lib/Kconfig | 6 ++++++
lib/Makefile | 2 ++
lib/dummyclk.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 62 insertions(+), 0 deletions(-)
create mode 100644 lib/dummyclk.c
diff --git a/lib/Kconfig b/lib/Kconfig
index ba3d104..53fee1c 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -141,4 +141,10 @@ config HAS_DMA
config CHECK_SIGNATURE
bool
+config DUMMY_CLK
+ def_bool y if X86
+ help
+ This provides a dummy implementation for the API defined in
+ linux/clk.h for platforms that don't implement it theirselves.
+
endmenu
diff --git a/lib/Makefile b/lib/Makefile
index 23de261..2ca3e82 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -70,6 +70,8 @@ obj-$(CONFIG_FAULT_INJECTION) += fault-inject.o
lib-$(CONFIG_GENERIC_BUG) += bug.o
+obj-$(CONFIG_DUMMY_CLK) += dummyclk.o
+
hostprogs-y := gen_crc32table
clean-files := crc32table.h
diff --git a/lib/dummyclk.c b/lib/dummyclk.c
new file mode 100644
index 0000000..bf364df
--- /dev/null
+++ b/lib/dummyclk.c
@@ -0,0 +1,54 @@
+/*
+ * lib/dummyclk.c
+ *
+ * Copyright (C) 2008 by Digi International Inc.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published by
+ * the Free Software Foundation.
+ */
+#include <linux/device.h>
+#include <linux/err.h>
+
+struct clk {
+ unsigned int enablecnt;
+};
+
+struct clk *clk_get(struct device *dev, const char *id)
+{
+ struct clk *ret = kzalloc(sizeof(*ret), GFP_KERNEL);
+
+ if (ret)
+ return ret;
+ else
+ return ERR_PTR(-ENOMEM);
+}
+EXPORT_SYMBOL(clk_get);
+
+void clk_put(struct clk *clk)
+{
+ WARN_ON(clk->enablecnt);
+}
+EXPORT_SYMBOL(clk_put);
+
+int clk_enable(struct clk *clk)
+{
+ ++clk->enablecnt;
+ return 0;
+}
+EXPORT_SYMBOL(clk_enable);
+
+void clk_disable(struct clk *clk)
+{
+ BUG_ON(!clk->enablecnt);
+ --clk->enablecnt;
+}
+EXPORT_SYMBOL(clk_disable);
+
+unsigned long clk_get_rate(struct clk *clk)
+{
+ BUG_ON(!clk->enablecnt);
+ return 0;
+}
+EXPORT_SYMBOL(clk_get_rate);
--
1.5.4.5
--
Uwe Kleine-König, Software Engineer
Digi International GmbH Branch Breisach, Küferstrasse 8, 79206 Breisach, Germany
Tax: 315/5781/0242 / VAT: DE153662976 / Reg. Amtsgericht Dortmund HRB 13962
next prev parent reply other threads:[~2008-04-14 7:49 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-10 12:36 [PATCH 0/4] UIO: fixes, cleanups and a new driver Uwe Kleine-König
2008-04-10 12:37 ` [PATCH 1/4] UIO: hold a reference to the device's owner while the device is open Uwe Kleine-König
2008-04-10 12:37 ` [PATCH 2/4] UIO: use menuconfig Uwe Kleine-König
2008-04-10 12:37 ` [PATCH 3/4] UIO: wrap all uio drivers in "if UIO" and "endif" Uwe Kleine-König
2008-04-10 12:37 ` [PATCH 4/4] [RFC] UIO: generic platform driver Uwe Kleine-König
2008-04-10 19:54 ` Hans J. Koch
2008-04-10 20:08 ` Uwe Kleine-König
2008-04-10 21:17 ` Hans J. Koch
2008-04-11 1:34 ` Ben Nizette
2008-04-10 22:48 ` Hans J. Koch
2008-04-11 6:21 ` Uwe Kleine-König
2008-04-11 9:21 ` [PATCH 4/4 v2] " Uwe Kleine-König
2008-04-11 10:33 ` Hans J. Koch
2008-04-11 11:03 ` Uwe Kleine-König
2008-04-11 11:17 ` Hans J. Koch
2008-04-11 11:25 ` Uwe Kleine-König
2008-04-12 13:16 ` Russell King - ARM Linux
2008-04-14 7:48 ` Uwe Kleine-König [this message]
2008-04-14 9:37 ` [PATCH] " Russell King - ARM Linux
2008-04-14 9:54 ` Uwe Kleine-König
2008-04-14 10:00 ` Uwe Kleine-König
2008-04-14 10:17 ` Russell King - ARM Linux
2008-04-14 11:20 ` Uwe Kleine-König
2008-04-14 11:37 ` Russell King - ARM Linux
2008-04-14 11:52 ` Hans J. Koch
2008-04-11 10:48 ` Uwe Kleine-König
2008-04-11 21:41 ` Greg KH
2008-04-11 22:54 ` Hans J. Koch
2008-04-11 23:06 ` Greg KH
2008-04-11 9:24 ` [PATCH 4/4] " Hans J. Koch
2008-04-11 10:41 ` Uwe Kleine-König
2008-04-11 19:59 ` Hans J. Koch
2008-04-10 19:45 ` [PATCH 3/4] UIO: wrap all uio drivers in "if UIO" and "endif" Hans J. Koch
2008-04-11 21:36 ` Greg KH
2008-04-10 19:39 ` [PATCH 2/4] UIO: use menuconfig Hans J. Koch
2008-04-11 21:36 ` Greg KH
2008-04-11 22:58 ` Hans J. Koch
2008-04-10 20:11 ` [PATCH 1/4] UIO: hold a reference to the device's owner while the device is open Uwe Kleine-König
2008-04-10 21:02 ` Hans J. Koch
2008-04-10 21:12 ` Greg KH
2008-04-10 21:23 ` Hans J. Koch
2008-04-11 6:50 ` Uwe Kleine-König
2008-04-11 8:44 ` Hans J. Koch
2008-04-11 9:07 ` [PATCH 1/4 v2] " Uwe Kleine-König
2008-04-11 11:39 ` Hans J. Koch
2008-04-22 9:47 ` [PATCH 0/3] UIO: cleanup and platform driver Uwe Kleine-König
2008-04-22 9:52 ` [PATCH 1/3] UIO: don't let UIO_CIF and UIO_SMX depend twice on UIO Uwe Kleine-König
2008-04-22 9:52 ` [PATCH 2/3] provide a dummy implementation of the clk API Uwe Kleine-König
2008-04-22 9:52 ` [PATCH 3/3] UIO: generic platform driver Uwe Kleine-König
2008-04-22 10:26 ` Ben Nizette
2008-04-22 13:35 ` Hans J. Koch
2008-04-23 8:56 ` Uwe Kleine-König
2008-04-27 17:12 ` Hans J. Koch
2008-05-20 9:23 ` Uwe Kleine-König
2008-05-20 9:24 ` [PATCH] UIO: don't let UIO_CIF and UIO_SMX depend twice on UIO Uwe Kleine-König
2008-05-20 9:24 ` [PATCH] UIO: generic platform driver Uwe Kleine-König
2008-05-20 21:08 ` Hans J. Koch
2008-05-26 5:58 ` Uwe Kleine-König
2008-05-26 6:02 ` Greg KH
2008-05-30 9:16 ` Uwe Kleine-König
2008-05-30 16:35 ` Greg KH
2008-06-03 7:21 ` Uwe Kleine-König
2008-06-03 9:24 ` Hans J. Koch
2008-05-20 21:12 ` [PATCH] UIO: don't let UIO_CIF and UIO_SMX depend twice on UIO Hans J. Koch
2008-04-22 13:39 ` [PATCH 0/3] UIO: cleanup and platform driver Hans J. Koch
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=20080414074858.GA22694@digi.com \
--to=uwe.kleine-koenig@digi.com \
--cc=gregkh@suse.de \
--cc=hjk@linutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
/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