From: Andrew Bresticker <abrestic@chromium.org>
To: linux-samsung-soc@vger.kernel.org
Cc: Rob Herring <rob.herring@calxeda.com>,
Pawel Moll <pawel.moll@arm.com>,
Mark Rutland <mark.rutland@arm.com>,
Stephen Warren <swarren@wwwdotorg.org>,
Ian Campbell <ijc+devicetree@hellion.org.uk>,
Rob Landley <rob@landley.net>, Kukjin Kim <kgene.kim@samsung.com>,
Russell King <linux@arm.linux.org.uk>,
Mike Turquette <mturquette@linaro.org>,
Grant Likely <grant.likely@linaro.org>,
Sachin Kamat <sachin.kamat@linaro.org>,
Jiri Kosina <jkosina@suse.cz>,
Rahul Sharma <rahul.sharma@samsung.com>,
Leela Krishna Amudala <l.krishna@samsung.com>,
Stephen Boyd <sboyd@codeaurora.org>,
Tomasz Figa <t.figa@samsung.com>,
Tushar Behera <tushar.behera@linaro.org>,
Yadwinder Singh Brar <yadi.brar@samsung.com>,
Doug Anderson <dianders@chromium.org>,
Padmavathi Venna <padma.v@samsung.com>,
devicetree@vger.kernel.org, linux-doc@vger.kernel.org,
linux-arm-kernel@lists.infradead.orglinu
Subject: [PATCH 2/6] clk: exynos-audss: allow input clocks to be specified in device tree
Date: Fri, 20 Sep 2013 14:13:53 -0700 [thread overview]
Message-ID: <1379711637-5226-2-git-send-email-abrestic@chromium.org> (raw)
In-Reply-To: <1379711637-5226-1-git-send-email-abrestic@chromium.org>
This allows the input clocks to the Exynos AudioSS block to be
specified via device-tree bindings. Default names will be used
when an input clock is not given.
Signed-off-by: Andrew Bresticker <abrestic@chromium.org>
---
.../devicetree/bindings/clock/clk-exynos-audss.txt | 33 ++++++++++++++++++++--
drivers/clk/samsung/clk-exynos-audss.c | 25 ++++++++++++----
2 files changed, 51 insertions(+), 7 deletions(-)
diff --git a/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt b/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt
index 75e2e19..d51a2f9 100644
--- a/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt
+++ b/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt
@@ -14,6 +14,23 @@ Required Properties:
- #clock-cells: should be 1.
+Optional Properties:
+
+- clocks:
+ - pll_ref: Fixed rate PLL reference clock, parent of mout_audss. "fin_pll"
+ is used if not specified.
+ - pll_in: Input PLL to the AudioSS block, parent of mout_audss. "fout_epll"
+ is used if not specified.
+ - cdclk: External i2s clock, parent of mout_i2s. "cdclk0" is used if not
+ specified.
+ - sclk_audio: Audio bus clock, parent of mout_i2s. "sclk_audio0" is used if
+ not specified.
+ - sclk_pcm_in: PCM clock, parent of sclk_pcm. "sclk_pcm0" is used if not
+ specified.
+
+- clock-names: Aliases for the above clocks. They should be "pll_ref",
+ "pll_in", "cdclk", "sclk_audio", and "sclk_pcm_in" respectively.
+
The following is the list of clocks generated by the controller. Each clock is
assigned an identifier and client nodes use this identifier to specify the
clock which they consume. Some of the clocks are available only on a particular
@@ -35,15 +52,27 @@ sclk_i2s 7
pcm_bus 8
sclk_pcm 9
-Example 1: An example of a clock controller node is listed below.
+Example 1: An example of a clock controller node using the default input
+ clock names is listed below.
+
+clock_audss: audss-clock-controller@3810000 {
+ compatible = "samsung,exynos5250-audss-clock";
+ reg = <0x03810000 0x0C>;
+ #clock-cells = <1>;
+};
+
+Example 2: An example of a clock controller node with audio bus input clock
+ specified is listed below.
clock_audss: audss-clock-controller@3810000 {
compatible = "samsung,exynos5250-audss-clock";
reg = <0x03810000 0x0C>;
#clock-cells = <1>;
+ clocks = <&clock 138>;
+ clock-names = "sclk_audio";
};
-Example 2: I2S controller node that consumes the clock generated by the clock
+Example 3: I2S controller node that consumes the clock generated by the clock
controller. Refer to the standard clock bindings for information
about 'clocks' and 'clock-names' property.
diff --git a/drivers/clk/samsung/clk-exynos-audss.c b/drivers/clk/samsung/clk-exynos-audss.c
index 7571e88..aac5342 100644
--- a/drivers/clk/samsung/clk-exynos-audss.c
+++ b/drivers/clk/samsung/clk-exynos-audss.c
@@ -34,10 +34,6 @@ static unsigned long reg_save[][2] = {
{ASS_CLK_GATE, 0},
};
-/* list of all parent clock list */
-static const char *mout_audss_p[] = { "fin_pll", "fout_epll" };
-static const char *mout_i2s_p[] = { "mout_audss", "cdclk0", "sclk_audio0" };
-
#ifdef CONFIG_PM_SLEEP
static int exynos_audss_clk_suspend(void)
{
@@ -66,6 +62,10 @@ static struct syscore_ops exynos_audss_clk_syscore_ops = {
/* register exynos_audss clocks */
static int exynos_audss_clk_probe(struct platform_device *pdev)
{
+ const char *mout_audss_p[] = {"fin_pll", "fout_epll"};
+ const char *mout_i2s_p[] = {"mout_audss", "cdclk0", "sclk_audio0"};
+ const char *sclk_pcm_p = "sclk_pcm0";
+ struct clk *pll_ref, *pll_in, *cdclk, *sclk_audio, *sclk_pcm_in;
struct resource *res;
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -88,11 +88,23 @@ static int exynos_audss_clk_probe(struct platform_device *pdev)
of_clk_add_provider(pdev->dev.of_node, of_clk_src_onecell_get,
&clk_data);
+ pll_ref = devm_clk_get(&pdev->dev, "pll_ref");
+ pll_in = devm_clk_get(&pdev->dev, "pll_in");
+ if (!IS_ERR(pll_ref))
+ mout_audss_p[0] = __clk_get_name(pll_ref);
+ if (!IS_ERR(pll_in))
+ mout_audss_p[1] = __clk_get_name(pll_in);
clk_table[EXYNOS_MOUT_AUDSS] = clk_register_mux(NULL, "mout_audss",
mout_audss_p, ARRAY_SIZE(mout_audss_p),
CLK_SET_RATE_NO_REPARENT,
reg_base + ASS_CLK_SRC, 0, 1, 0, &lock);
+ cdclk = devm_clk_get(&pdev->dev, "cdclk");
+ sclk_audio = devm_clk_get(&pdev->dev, "sclk_audio");
+ if (!IS_ERR(cdclk))
+ mout_i2s_p[1] = __clk_get_name(cdclk);
+ if (!IS_ERR(sclk_audio))
+ mout_i2s_p[2] = __clk_get_name(sclk_audio);
clk_table[EXYNOS_MOUT_I2S] = clk_register_mux(NULL, "mout_i2s",
mout_i2s_p, ARRAY_SIZE(mout_i2s_p),
CLK_SET_RATE_NO_REPARENT,
@@ -126,8 +138,11 @@ static int exynos_audss_clk_probe(struct platform_device *pdev)
"sclk_pcm", CLK_SET_RATE_PARENT,
reg_base + ASS_CLK_GATE, 4, 0, &lock);
+ sclk_pcm_in = devm_clk_get(&pdev->dev, "sclk_pcm_in");
+ if (!IS_ERR(sclk_pcm_in))
+ sclk_pcm_p = __clk_get_name(sclk_pcm_in);
clk_table[EXYNOS_SCLK_PCM] = clk_register_gate(NULL, "sclk_pcm",
- "div_pcm0", CLK_SET_RATE_PARENT,
+ sclk_pcm_p, CLK_SET_RATE_PARENT,
reg_base + ASS_CLK_GATE, 5, 0, &lock);
#ifdef CONFIG_PM_SLEEP
--
1.8.4
next prev parent reply other threads:[~2013-09-20 21:13 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-20 21:13 [PATCH 1/6] clk: exynos-audss: convert to platform device Andrew Bresticker
2013-09-20 21:13 ` Andrew Bresticker [this message]
[not found] ` <1379711637-5226-2-git-send-email-abrestic-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2013-09-21 15:12 ` [PATCH 2/6] clk: exynos-audss: allow input clocks to be specified in device tree Tomasz Figa
[not found] ` <1379711637-5226-1-git-send-email-abrestic-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2013-09-20 21:13 ` [PATCH 3/6] clk: exynos5250: add clock ID for div_pcm0 Andrew Bresticker
2013-09-21 15:19 ` Tomasz Figa
2013-09-21 12:50 ` [PATCH 1/6] clk: exynos-audss: convert to platform device Tomasz Figa
2013-09-23 21:25 ` Andrew Bresticker
2013-09-23 21:30 ` Tomasz Figa
2013-09-23 21:36 ` Andrew Bresticker
[not found] ` <CAL1qeaGjUTrfDaAr1rgsgDaZscjaV7tqi3Jd_-zo2sMtCCFSAQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-09-23 22:50 ` Sylwester Nawrocki
2013-09-20 21:13 ` [PATCH 4/6] ARM: dts: exynos5250: add sclk_pcm_in to audss clock controller Andrew Bresticker
2013-09-21 15:13 ` Tomasz Figa
2013-09-20 21:13 ` [PATCH 5/6] clk: exynos-audss: add support for Exynos 5420 Andrew Bresticker
2013-09-21 15:17 ` Tomasz Figa
2013-09-20 21:13 ` [PATCH 6/6] ARM: dts: exynos5420: add sclk_pcm_in to audss clock controller Andrew Bresticker
[not found] ` <1379711637-5226-6-git-send-email-abrestic-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2013-09-21 15:18 ` Tomasz Figa
2013-09-24 0:21 ` [PATCH V2 1/6] clk: exynos-audss: convert to platform device Andrew Bresticker
2013-09-24 0:21 ` [PATCH V2 2/6] clk: exynos-audss: allow input clocks to be specified in device tree Andrew Bresticker
2013-09-24 0:21 ` [PATCH V2 3/6] clk: exynos5250: add clock ID for div_pcm0 Andrew Bresticker
2013-09-24 0:21 ` [PATCH V2 4/6] ARM: dts: exynos5250: add input clocks to audss clock controller Andrew Bresticker
2013-09-24 0:21 ` [PATCH V2 6/6] ARM: dts: exynos5420: " Andrew Bresticker
2013-09-24 9:20 ` [PATCH V2 1/6] clk: exynos-audss: convert to platform device Tomasz Figa
2013-09-24 9:47 ` Sylwester Nawrocki
[not found] ` <1379982078-23381-1-git-send-email-abrestic-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2013-09-24 0:21 ` [PATCH V2 5/6] clk: exynos-audss: add support for Exynos 5420 Andrew Bresticker
2013-09-24 9:35 ` [PATCH V2 1/6] clk: exynos-audss: convert to platform device Sylwester Nawrocki
2013-09-24 18:06 ` [PATCH V3 " Andrew Bresticker
2013-09-24 18:06 ` [PATCH V3 2/6] clk: exynos-audss: allow input clocks to be specified in device tree Andrew Bresticker
2013-09-24 18:06 ` [PATCH V3 4/6] ARM: dts: exynos5250: add input clocks to audss clock controller Andrew Bresticker
2013-09-24 18:06 ` [PATCH V3 5/6] clk: exynos-audss: add support for Exynos 5420 Andrew Bresticker
[not found] ` <1380046016-5811-1-git-send-email-abrestic-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2013-09-24 18:06 ` [PATCH V3 3/6] clk: exynos5250: add clock ID for div_pcm0 Andrew Bresticker
2013-09-24 18:06 ` [PATCH V3 6/6] ARM: dts: exynos5420: add input clocks to audss clock controller Andrew Bresticker
2013-09-24 19:17 ` [PATCH V3 1/6] clk: exynos-audss: convert to platform device Tomasz Figa
2013-09-24 21:15 ` Sylwester Nawrocki
2013-09-24 22:12 ` Andrew Bresticker
[not found] ` <CAL1qeaEpu=YRasZpSvrCTNwC6OGWZgECjwDSFgkAN07eWObmrg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-09-24 22:31 ` Sylwester Nawrocki
2013-09-24 22:16 ` Stephen Boyd
2013-09-25 21:12 ` [PATCH V4 " Andrew Bresticker
2013-09-25 21:12 ` [PATCH V4 2/6] clk: exynos-audss: allow input clocks to be specified in device tree Andrew Bresticker
2013-09-25 21:12 ` [PATCH V4 3/6] clk: exynos5250: add clock ID for div_pcm0 Andrew Bresticker
2013-09-25 21:12 ` [PATCH V4 4/6] ARM: dts: exynos5250: add input clocks to audss clock controller Andrew Bresticker
2013-09-25 21:12 ` [PATCH V4 5/6] clk: exynos-audss: add support for Exynos 5420 Andrew Bresticker
2013-09-25 21:12 ` [PATCH V4 6/6] ARM: dts: exynos5420: add input clocks to audss clock controller Andrew Bresticker
2013-10-08 16:53 ` [PATCH V4 1/6] clk: exynos-audss: convert to platform device Andrew Bresticker
2013-11-26 6:29 ` Padma Venkat
2013-11-27 18:41 ` Mike Turquette
2013-12-01 22:43 ` Kukjin Kim
2014-01-02 15:20 ` Tomasz Figa
2014-01-04 2:47 ` kgene
2013-11-27 18:40 ` Mike Turquette
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=1379711637-5226-2-git-send-email-abrestic@chromium.org \
--to=abrestic@chromium.org \
--cc=devicetree@vger.kernel.org \
--cc=dianders@chromium.org \
--cc=grant.likely@linaro.org \
--cc=ijc+devicetree@hellion.org.uk \
--cc=jkosina@suse.cz \
--cc=kgene.kim@samsung.com \
--cc=l.krishna@samsung.com \
--cc=linux-arm-kernel@lists.infradead.orglinu \
--cc=linux-doc@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=mark.rutland@arm.com \
--cc=mturquette@linaro.org \
--cc=padma.v@samsung.com \
--cc=pawel.moll@arm.com \
--cc=rahul.sharma@samsung.com \
--cc=rob.herring@calxeda.com \
--cc=rob@landley.net \
--cc=sachin.kamat@linaro.org \
--cc=sboyd@codeaurora.org \
--cc=swarren@wwwdotorg.org \
--cc=t.figa@samsung.com \
--cc=tushar.behera@linaro.org \
--cc=yadi.brar@samsung.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).