Alsa-Devel Archive on lore.kernel.org
 help / color / Atom feed
From: Russell King <rmk+kernel@arm.linux.org.uk>
To: alsa-devel@alsa-project.org,
	linux-arm-kernel@lists.infradead.org,
	linux-media@vger.kernel.org, linux-omap@vger.kernel.org,
	linux-sh@vger.kernel.org
Subject: [PATCH 05/14] clkdev: use clk_hw internally
Date: Fri, 03 Apr 2015 18:12:48 +0100
Message-ID: <E1Ye59E-0001BB-7z@rmk-PC.arm.linux.org.uk> (raw)
In-Reply-To: <20150403171149.GC13898@n2100.arm.linux.org.uk>

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
 drivers/clk/clkdev.c   | 24 ++++++++++++++++--------
 include/linux/clkdev.h |  1 +
 2 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/drivers/clk/clkdev.c b/drivers/clk/clkdev.c
index 5d7746d19445..8e676eafc823 100644
--- a/drivers/clk/clkdev.c
+++ b/drivers/clk/clkdev.c
@@ -205,7 +205,7 @@ struct clk *clk_get_sys(const char *dev_id, const char *con_id)
 	if (!cl)
 		goto out;
 
-	clk = __clk_create_clk(__clk_get_hw(cl->clk), dev_id, con_id);
+	clk = __clk_create_clk(cl->clk_hw, dev_id, con_id);
 	if (IS_ERR(clk))
 		goto out;
 
@@ -243,18 +243,26 @@ void clk_put(struct clk *clk)
 }
 EXPORT_SYMBOL(clk_put);
 
-void clkdev_add(struct clk_lookup *cl)
+static void __clkdev_add(struct clk_lookup *cl)
 {
 	mutex_lock(&clocks_mutex);
 	list_add_tail(&cl->node, &clocks);
 	mutex_unlock(&clocks_mutex);
 }
+
+void clkdev_add(struct clk_lookup *cl)
+{
+	if (!cl->clk_hw)
+		cl->clk_hw = __clk_get_hw(cl->clk);
+	__clkdev_add(cl);
+}
 EXPORT_SYMBOL(clkdev_add);
 
 void clkdev_add_table(struct clk_lookup *cl, size_t num)
 {
 	mutex_lock(&clocks_mutex);
 	while (num--) {
+		cl->clk_hw = __clk_get_hw(cl->clk);
 		list_add_tail(&cl->node, &clocks);
 		cl++;
 	}
@@ -271,7 +279,7 @@ struct clk_lookup_alloc {
 };
 
 static struct clk_lookup * __init_refok
-vclkdev_alloc(struct clk *clk, const char *con_id, const char *dev_fmt,
+vclkdev_alloc(struct clk_hw *hw, const char *con_id, const char *dev_fmt,
 	va_list ap)
 {
 	struct clk_lookup_alloc *cla;
@@ -280,7 +288,7 @@ vclkdev_alloc(struct clk *clk, const char *con_id, const char *dev_fmt,
 	if (!cla)
 		return NULL;
 
-	cla->cl.clk = clk;
+	cla->cl.clk_hw = hw;
 	if (con_id) {
 		strlcpy(cla->con_id, con_id, sizeof(cla->con_id));
 		cla->cl.con_id = cla->con_id;
@@ -301,7 +309,7 @@ clkdev_alloc(struct clk *clk, const char *con_id, const char *dev_fmt, ...)
 	va_list ap;
 
 	va_start(ap, dev_fmt);
-	cl = vclkdev_alloc(clk, con_id, dev_fmt, ap);
+	cl = vclkdev_alloc(__clk_get_hw(clk), con_id, dev_fmt, ap);
 	va_end(ap);
 
 	return cl;
@@ -362,7 +370,7 @@ int clk_register_clkdev(struct clk *clk, const char *con_id,
 		return PTR_ERR(clk);
 
 	va_start(ap, dev_fmt);
-	cl = vclkdev_alloc(clk, con_id, dev_fmt, ap);
+	cl = vclkdev_alloc(__clk_get_hw(clk), con_id, dev_fmt, ap);
 	va_end(ap);
 
 	if (!cl)
@@ -393,8 +401,8 @@ int clk_register_clkdevs(struct clk *clk, struct clk_lookup *cl, size_t num)
 		return PTR_ERR(clk);
 
 	for (i = 0; i < num; i++, cl++) {
-		cl->clk = clk;
-		clkdev_add(cl);
+		cl->clk_hw = __clk_get_hw(clk);
+		__clkdev_add(cl);
 	}
 
 	return 0;
diff --git a/include/linux/clkdev.h b/include/linux/clkdev.h
index eb9b38a79b43..cd93b215e3af 100644
--- a/include/linux/clkdev.h
+++ b/include/linux/clkdev.h
@@ -22,6 +22,7 @@ struct clk_lookup {
 	const char		*dev_id;
 	const char		*con_id;
 	struct clk		*clk;
+	struct clk_hw		*clk_hw;
 };
 
 #define CLKDEV_INIT(d, n, c)	\
-- 
1.8.3.1


  parent reply index

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-03 17:11 [PATCH 00/14] Fix fallout from per-user struct clk patches Russell King - ARM Linux
2015-04-03 17:12 ` [PATCH 01/14] clk: update clk API documentation to clarify clk_round_rate() Russell King
2015-04-03 17:12 ` [PATCH 02/14] clkdev: drop __init from clkdev_add_table() Russell King
2015-04-03 17:12 ` [PATCH 03/14] clkdev: get rid of redundant clk_add_alias() prototype in linux/clk.h Russell King
2015-04-03 23:49   ` Tony Lindgren
2015-04-04 12:43   ` Robert Jarzmik
2015-04-04 12:53     ` Russell King - ARM Linux
2015-04-06 19:04     ` Stephen Boyd
2015-04-07 10:05       ` Robert Jarzmik
2015-04-07 12:42       ` Russell King - ARM Linux
2015-04-06  5:50   ` Sekhar Nori
2015-04-03 17:12 ` [PATCH 04/14] clkdev: const-ify connection id to clk_add_alias() Russell King
2015-04-03 17:12 ` Russell King [this message]
2015-04-06 20:18   ` [PATCH 05/14] clkdev: use clk_hw internally Stephen Boyd
2015-04-03 17:12 ` [PATCH 06/14] clkdev: add clkdev_create() helper Russell King
2015-04-06 20:19   ` Stephen Boyd
2015-04-07 12:43     ` Russell King - ARM Linux
2015-04-07 23:09       ` Stephen Boyd
2015-04-03 17:12 ` [PATCH 07/14] media: omap3isp: remove unused clkdev Russell King
2015-04-03 21:44   ` Laurent Pinchart
2015-04-05 14:20     ` Russell King - ARM Linux
2015-04-07  9:42       ` Laurent Pinchart
2015-04-07 12:45         ` Russell King - ARM Linux
2015-04-07 14:38           ` Laurent Pinchart
2015-04-03 17:13 ` [PATCH 08/14] SH: use clkdev_add_table() Russell King
2015-04-03 17:13 ` [PATCH 09/14] ARM: lpc32xx: convert to " Russell King
2015-04-03 17:13 ` [PATCH 10/14] ARM: orion: use clkdev_create() Russell King
2015-04-04  0:17   ` Andrew Lunn
2015-04-07 13:20     ` Gregory CLEMENT
2015-04-07 14:01       ` Russell King - ARM Linux
2015-04-07 14:20         ` Gregory CLEMENT
2015-04-03 17:13 ` [PATCH 11/14] ARM: omap2: " Russell King
2015-04-03 23:49   ` Tony Lindgren
2015-04-03 17:13 ` [PATCH 12/14] ARM: omap2: use clkdev_add_alias() Russell King
2015-04-03 23:50   ` Tony Lindgren
2015-04-03 17:13 ` [PATCH 13/14] ASoC: migor: use clkdev_create() Russell King
2015-04-03 17:13 ` [PATCH 14/14] clk: s2mps11: " Russell King
2015-04-03 17:16 ` [PATCH 00/14] Fix fallout from per-user struct clk patches Russell King - ARM Linux
2015-04-05  9:04 ` Geert Uytterhoeven
2015-04-05 14:13   ` Russell King - ARM Linux

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=E1Ye59E-0001BB-7z@rmk-PC.arm.linux.org.uk \
    --to=rmk+kernel@arm.linux.org.uk \
    --cc=alsa-devel@alsa-project.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-sh@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

Alsa-Devel Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/alsa-devel/0 alsa-devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 alsa-devel alsa-devel/ https://lore.kernel.org/alsa-devel \
		alsa-devel@alsa-project.org
	public-inbox-index alsa-devel

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.alsa-project.alsa-devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git