From: Tero Kristo <t-kristo@ti.com>
To: linux-omap@vger.kernel.org, paul@pwsan.com, tony@atomide.com,
nm@ti.com, rnayak@ti.com, bcousson@baylibre.com,
mturquette@linaro.org
Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org
Subject: [PATCHv13 01/40] CLK: TI: add DT alias clock registration mechanism
Date: Thu, 9 Jan 2014 16:00:12 +0200 [thread overview]
Message-ID: <1389276051-1326-2-git-send-email-t-kristo@ti.com> (raw)
In-Reply-To: <1389276051-1326-1-git-send-email-t-kristo@ti.com>
Some devices require their clocks to be available with a specific
dev-id con-id mapping. With DT, the clocks can be found by default
only with their name, or alternatively through the device node of
the consumer. With drivers, that don't support DT fully yet, add
mechanism to register specific clock names.
Signed-off-by: Tero Kristo <t-kristo@ti.com>
---
drivers/clk/Makefile | 1 +
drivers/clk/ti/Makefile | 3 +++
drivers/clk/ti/clk.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++
include/linux/clk/ti.h | 42 ++++++++++++++++++++++++++++++++++++
4 files changed, 101 insertions(+)
create mode 100644 drivers/clk/ti/Makefile
create mode 100644 drivers/clk/ti/clk.c
create mode 100644 include/linux/clk/ti.h
diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
index 7a10bc9..c61f768 100644
--- a/drivers/clk/Makefile
+++ b/drivers/clk/Makefile
@@ -35,6 +35,7 @@ obj-$(CONFIG_ARCH_TEGRA) += tegra/
obj-$(CONFIG_PLAT_SAMSUNG) += samsung/
obj-$(CONFIG_COMMON_CLK_XGENE) += clk-xgene.o
obj-$(CONFIG_COMMON_CLK_KEYSTONE) += keystone/
+obj-$(CONFIG_ARCH_OMAP) += ti/
obj-$(CONFIG_X86) += x86/
diff --git a/drivers/clk/ti/Makefile b/drivers/clk/ti/Makefile
new file mode 100644
index 0000000..1825f7f
--- /dev/null
+++ b/drivers/clk/ti/Makefile
@@ -0,0 +1,3 @@
+ifneq ($(CONFIG_OF),)
+obj-y += clk.o
+endif
diff --git a/drivers/clk/ti/clk.c b/drivers/clk/ti/clk.c
new file mode 100644
index 0000000..ef1a7cd
--- /dev/null
+++ b/drivers/clk/ti/clk.c
@@ -0,0 +1,55 @@
+/*
+ * TI clock support
+ *
+ * Copyright (C) 2013 Texas Instruments, Inc.
+ *
+ * Tero Kristo <t-kristo@ti.com>
+ *
+ * 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.
+ *
+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
+ * kind, whether express or implied; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include <linux/clk-provider.h>
+#include <linux/clkdev.h>
+#include <linux/clk/ti.h>
+#include <linux/of.h>
+
+#undef pr_fmt
+#define pr_fmt(fmt) "%s: " fmt, __func__
+
+/**
+ * ti_dt_clocks_register - register DT alias clocks during boot
+ * @oclks: list of clocks to register
+ *
+ * Register alias or non-standard DT clock entries during boot. By
+ * default, DT clocks are found based on their node name. If any
+ * additional con-id / dev-id -> clock mapping is required, use this
+ * function to list these.
+ */
+void __init ti_dt_clocks_register(struct ti_dt_clk oclks[])
+{
+ struct ti_dt_clk *c;
+ struct device_node *node;
+ struct clk *clk;
+ struct of_phandle_args clkspec;
+
+ for (c = oclks; c->node_name != NULL; c++) {
+ node = of_find_node_by_name(NULL, c->node_name);
+ clkspec.np = node;
+ clk = of_clk_get_from_provider(&clkspec);
+
+ if (!IS_ERR(clk)) {
+ c->lk.clk = clk;
+ clkdev_add(&c->lk);
+ } else {
+ pr_warn("failed to lookup clock node %s\n",
+ c->node_name);
+ }
+ }
+}
diff --git a/include/linux/clk/ti.h b/include/linux/clk/ti.h
new file mode 100644
index 0000000..df94c24
--- /dev/null
+++ b/include/linux/clk/ti.h
@@ -0,0 +1,42 @@
+/*
+ * TI clock drivers support
+ *
+ * Copyright (C) 2013 Texas Instruments, Inc.
+ *
+ * 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.
+ *
+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
+ * kind, whether express or implied; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+#ifndef __LINUX_CLK_TI_H__
+#define __LINUX_CLK_TI_H__
+
+#include <linux/clkdev.h>
+
+/**
+ * struct ti_dt_clk - OMAP DT clock alias declarations
+ * @lk: clock lookup definition
+ * @node_name: clock DT node to map to
+ */
+struct ti_dt_clk {
+ struct clk_lookup lk;
+ char *node_name;
+};
+
+#define DT_CLK(dev, con, name) \
+ { \
+ .lk = { \
+ .dev_id = dev, \
+ .con_id = con, \
+ }, \
+ .node_name = name, \
+ }
+
+
+void ti_dt_clocks_register(struct ti_dt_clk *oclks);
+
+#endif
--
1.7.9.5
next prev parent reply other threads:[~2014-01-09 14:00 UTC|newest]
Thread overview: 88+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-09 14:00 [PATCHv13 00/40] ARM: TI SoC clock DT conversion Tero Kristo
2014-01-09 14:00 ` Tero Kristo [this message]
2014-01-09 14:00 ` [PATCHv13 02/40] CLK: ti: add init support for clock IP blocks Tero Kristo
2014-01-09 14:00 ` [PATCHv13 03/40] CLK: TI: Add DPLL clock support Tero Kristo
2014-01-09 14:00 ` [PATCHv13 04/40] CLK: TI: add autoidle support Tero Kristo
2014-01-09 14:00 ` [PATCHv13 05/40] clk: ti: add composite clock support Tero Kristo
2014-01-09 14:00 ` [PATCHv13 06/40] CLK: ti: add support for ti divider-clock Tero Kristo
2014-01-09 14:00 ` [PATCHv13 07/40] clk: ti: add support for TI fixed factor clock Tero Kristo
2014-01-09 14:00 ` [PATCHv13 09/40] CLK: TI: add support for clockdomain binding Tero Kristo
2014-01-09 14:00 ` [PATCHv13 10/40] clk: ti: add support for basic mux clock Tero Kristo
2014-01-09 14:00 ` [PATCHv13 11/40] CLK: TI: add omap4 clock init file Tero Kristo
2014-01-09 14:00 ` [PATCHv13 12/40] CLK: TI: add omap5 " Tero Kristo
2014-01-09 14:00 ` [PATCHv13 15/40] CLK: TI: add dra7 " Tero Kristo
2014-01-09 14:00 ` [PATCHv13 16/40] CLK: TI: add am33xx " Tero Kristo
2014-01-09 14:00 ` [PATCHv13 18/40] CLK: TI: add omap3 " Tero Kristo
2014-01-09 14:00 ` [PATCHv13 20/40] ARM: dts: omap4 clock data Tero Kristo
2014-01-09 14:00 ` [PATCHv13 22/40] ARM: dts: dra7 " Tero Kristo
2014-01-09 14:00 ` [PATCHv13 23/40] ARM: dts: clk: Add apll related clocks Tero Kristo
2014-01-09 14:00 ` [PATCHv13 24/40] ARM: dts: DRA7: Change apll_pcie_m2_ck to fixed factor clock Tero Kristo
2014-01-09 14:00 ` [PATCHv13 25/40] ARM: dts: DRA7: Add PCIe related clock nodes Tero Kristo
[not found] ` <1389276051-1326-1-git-send-email-t-kristo-l0cyMroinI0@public.gmane.org>
2014-01-09 14:00 ` [PATCHv13 08/40] CLK: TI: add support for gate clock Tero Kristo
2014-01-09 14:00 ` [PATCHv13 13/40] CLK: TI: omap5: Initialize USB_DPLL at boot Tero Kristo
2014-01-09 14:00 ` [PATCHv13 14/40] CLK: TI: DRA7: Add APLL support Tero Kristo
2014-01-09 14:00 ` [PATCHv13 17/40] CLK: TI: add interface clock support for OMAP3 Tero Kristo
2014-01-09 14:00 ` [PATCHv13 19/40] CLK: TI: add am43xx clock init file Tero Kristo
2014-01-09 14:00 ` [PATCHv13 21/40] ARM: dts: omap5 clock data Tero Kristo
2014-01-09 14:00 ` [PATCHv13 26/40] ARM: dts: am33xx " Tero Kristo
2014-01-09 14:00 ` [PATCHv13 27/40] ARM: dts: omap3 " Tero Kristo
2014-01-20 18:00 ` Sebastian Reichel
2014-01-21 7:42 ` Tero Kristo
2014-01-21 14:37 ` [PATCH] ARM: dts: omap3 clocks: simplify ssi aliases Sebastian Reichel
2014-02-13 22:49 ` Tony Lindgren
2014-02-14 1:25 ` Sebastian Reichel
2014-02-14 13:47 ` Tero Kristo
2014-02-28 22:03 ` Tony Lindgren
2014-01-09 14:00 ` [PATCHv13 28/40] ARM: dts: AM35xx: use DT clock data Tero Kristo
2014-01-09 14:00 ` [PATCHv13 29/40] ARM: dts: am43xx " Tero Kristo
2014-01-09 14:00 ` [PATCHv13 30/40] ARM: OMAP2+: clock: add support for indexed memmaps Tero Kristo
2014-01-09 14:00 ` [PATCHv13 33/40] ARM: OMAP3: hwmod: initialize clkdm from clkdm_name Tero Kristo
2014-01-09 14:00 ` [PATCHv13 35/40] ARM: OMAP2+: io: use new clock init API Tero Kristo
2014-01-09 14:00 ` [PATCHv13 36/40] ARM: OMAP4: remove old clock data and link in new clock init code Tero Kristo
2014-01-09 14:00 ` [PATCHv13 37/40] ARM: OMAP: DRA7: Enable clock init Tero Kristo
2014-01-09 14:00 ` [PATCHv13 38/40] ARM: AM43xx: " Tero Kristo
2014-01-09 14:00 ` [PATCHv13 39/40] ARM: AM33xx: remove old clock data and link in new clock init code Tero Kristo
2014-01-09 14:00 ` [PATCHv13 40/40] ARM: OMAP3: use DT clock init if DT data is available Tero Kristo
2014-01-09 22:23 ` [PATCHv13 00/40] ARM: TI SoC clock DT conversion Mike Turquette
2014-01-10 18:53 ` Tony Lindgren
2014-01-11 9:54 ` Tero Kristo
2014-01-12 0:36 ` Tony Lindgren
2014-01-09 14:00 ` [PATCHv13 31/40] ARM: OMAP2+: clock: use driver API instead of direct memory read/write Tero Kristo
2014-01-09 14:00 ` [PATCHv13 32/40] ARM: OMAP: hwmod: fix an incorrect clk type cast with _get_clkdm Tero Kristo
2014-01-09 14:00 ` [PATCHv13 34/40] ARM: OMAP2+: PRM: add support for initializing PRCM clock modules from DT Tero Kristo
2014-01-09 17:22 ` [PATCHv13 00/40] ARM: TI SoC clock DT conversion Felipe Balbi
2014-01-09 18:40 ` Felipe Balbi
2014-01-09 18:43 ` Felipe Balbi
2014-01-09 21:22 ` Nishanth Menon
2014-01-09 23:15 ` Felipe Balbi
2014-01-10 9:52 ` Tero Kristo
2014-01-10 16:13 ` Felipe Balbi
2014-01-10 16:30 ` Tero Kristo
2014-01-10 18:51 ` Tony Lindgren
2014-01-14 12:41 ` Tero Kristo
2014-01-14 20:36 ` Felipe Balbi
2014-01-15 2:04 ` Felipe Balbi
2014-01-15 3:16 ` Mike Turquette
2014-01-15 3:50 ` Mike Turquette
2014-01-15 13:41 ` Tero Kristo
2014-01-15 15:59 ` Nishanth Menon
2014-01-15 17:13 ` Tony Lindgren
2014-01-15 19:23 ` Mike Turquette
2014-01-15 19:35 ` Tony Lindgren
2014-01-16 21:39 ` Mike Turquette
2014-01-16 23:05 ` Nishanth Menon
2014-01-17 17:46 ` Kevin Hilman
2014-01-17 17:53 ` Tony Lindgren
2014-01-17 18:11 ` Tero Kristo
2014-01-17 20:58 ` Mike Turquette
2014-01-18 0:02 ` Nishanth Menon
2014-01-18 0:12 ` Olof Johansson
2014-01-18 0:19 ` Nishanth Menon
2014-01-18 0:23 ` Olof Johansson
2014-01-18 1:20 ` Nishanth Menon
2014-01-18 18:11 ` Sebastian Reichel
2014-01-20 17:36 ` Nishanth Menon
2014-01-18 18:07 ` Tony Lindgren
2014-01-17 20:02 ` Nishanth Menon
2014-01-11 16:35 ` Joachim Eastwood
2014-01-13 15:49 ` Tero Kristo
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=1389276051-1326-2-git-send-email-t-kristo@ti.com \
--to=t-kristo@ti.com \
--cc=bcousson@baylibre.com \
--cc=devicetree@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=mturquette@linaro.org \
--cc=nm@ti.com \
--cc=paul@pwsan.com \
--cc=rnayak@ti.com \
--cc=tony@atomide.com \
/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).