All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tomasz Figa <tomasz.figa@gmail.com>
To: linux-samsung-soc@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
	"Kukjin Kim" <kgene.kim@samsung.com>,
	"Mark Brown" <broonie@kernel.org>,
	"Mike Turquette" <mturquette@linaro.org>,
	"Arnd Bergmann" <arnd@arndb.de>,
	"Olof Johansson" <olof@lixom.net>,
	stern@rowland.harvard.edu, gregkh@linuxfoundation.org,
	linux-usb@vger.kernel.org,
	"Sylwester Nawrocki" <sylvester.nawrocki@gmail.com>,
	"Heiko Stübner" <heiko@sntech.de>,
	"Thomas Abraham" <thomas.abraham@linaro.org>
Subject: [PATCH v3 2/8] clk: samsung: pll: Add support for PLL6552 and PLL6553
Date: Wed, 24 Jul 2013 01:52:19 +0200	[thread overview]
Message-ID: <11551938.yDBcNngaZN@flatron> (raw)
In-Reply-To: <1374536965-3545-3-git-send-email-tomasz.figa@gmail.com>

This patch adds support for PLL6552 and PLL6553 PLLs present on Samsung
S3C64xx SoCs.

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
Acked-by: Mike Turquette <mturquette@linaro.org>
---
 drivers/clk/samsung/clk-pll.c | 77 +++++++++++++++++++++++++++++++++++++++++++
 drivers/clk/samsung/clk-pll.h |  2 ++
 2 files changed, 79 insertions(+)

Changes since v2:
 - Reworked to use new PLL registration method introduced by Yadwinder
   Singh Brar's patch series:
   ( http://thread.gmane.org/gmane.linux.kernel.samsung-soc/20041 )

diff --git a/drivers/clk/samsung/clk-pll.c b/drivers/clk/samsung/clk-pll.c
index f80efb6..7572d1d 100644
--- a/drivers/clk/samsung/clk-pll.c
+++ b/drivers/clk/samsung/clk-pll.c
@@ -438,6 +438,77 @@ struct clk * __init samsung_clk_register_pll46xx(const char *name,
 }
 
 /*
+ * PLL6552 Clock Type
+ */
+
+#define PLL6552_MDIV_MASK	0x3ff
+#define PLL6552_PDIV_MASK	0x3f
+#define PLL6552_SDIV_MASK	0x7
+#define PLL6552_MDIV_SHIFT	16
+#define PLL6552_PDIV_SHIFT	8
+#define PLL6552_SDIV_SHIFT	0
+
+static unsigned long samsung_pll6552_recalc_rate(struct clk_hw *hw,
+						unsigned long parent_rate)
+{
+	struct samsung_clk_pll *pll = to_clk_pll(hw);
+	u32 mdiv, pdiv, sdiv, pll_con;
+	u64 fvco = parent_rate;
+
+	pll_con = __raw_readl(pll->con_reg);
+	mdiv = (pll_con >> PLL6552_MDIV_SHIFT) & PLL6552_MDIV_MASK;
+	pdiv = (pll_con >> PLL6552_PDIV_SHIFT) & PLL6552_PDIV_MASK;
+	sdiv = (pll_con >> PLL6552_SDIV_SHIFT) & PLL6552_SDIV_MASK;
+
+	fvco *= mdiv;
+	do_div(fvco, (pdiv << sdiv));
+
+	return (unsigned long)fvco;
+}
+
+static const struct clk_ops samsung_pll6552_clk_ops = {
+	.recalc_rate = samsung_pll6552_recalc_rate,
+};
+
+/*
+ * PLL6553 Clock Type
+ */
+
+#define PLL6553_MDIV_MASK	0xff
+#define PLL6553_PDIV_MASK	0x3f
+#define PLL6553_SDIV_MASK	0x7
+#define PLL6553_KDIV_MASK	0xffff
+#define PLL6553_MDIV_SHIFT	16
+#define PLL6553_PDIV_SHIFT	8
+#define PLL6553_SDIV_SHIFT	0
+#define PLL6553_KDIV_SHIFT	0
+
+static unsigned long samsung_pll6553_recalc_rate(struct clk_hw *hw,
+						unsigned long parent_rate)
+{
+	struct samsung_clk_pll *pll = to_clk_pll(hw);
+	u32 mdiv, pdiv, sdiv, kdiv, pll_con0, pll_con1;
+	u64 fvco = parent_rate;
+
+	pll_con0 = __raw_readl(pll->con_reg);
+	pll_con1 = __raw_readl(pll->con_reg + 0x4);
+	mdiv = (pll_con0 >> PLL6553_MDIV_SHIFT) & PLL6553_MDIV_MASK;
+	pdiv = (pll_con0 >> PLL6553_PDIV_SHIFT) & PLL6553_PDIV_MASK;
+	sdiv = (pll_con0 >> PLL6553_SDIV_SHIFT) & PLL6553_SDIV_MASK;
+	kdiv = (pll_con1 >> PLL6553_KDIV_SHIFT) & PLL6553_KDIV_MASK;
+
+	fvco *= (mdiv << 16) + kdiv;
+	do_div(fvco, (pdiv << sdiv));
+	fvco >>= 16;
+
+	return (unsigned long)fvco;
+}
+
+static const struct clk_ops samsung_pll6553_clk_ops = {
+	.recalc_rate = samsung_pll6553_recalc_rate,
+};
+
+/*
  * PLL2550x Clock Type
  */
 
@@ -572,6 +643,12 @@ static void __init _samsung_clk_register_pll(struct samsung_pll_clock *pll_clk,
 		else
 			init.ops = &samsung_pll36xx_clk_ops;
 		break;
+	case pll_6552:
+		init.ops = &samsung_pll6552_clk_ops;
+		break;
+	case pll_6553:
+		init.ops = &samsung_pll6553_clk_ops;
+		break;
 	default:
 		pr_warn("%s: Unknown pll type for pll clk %s\n",
 			__func__, pll_clk->name);
diff --git a/drivers/clk/samsung/clk-pll.h b/drivers/clk/samsung/clk-pll.h
index 95ae23d..cd11037 100644
--- a/drivers/clk/samsung/clk-pll.h
+++ b/drivers/clk/samsung/clk-pll.h
@@ -17,6 +17,8 @@ enum samsung_pll_type {
 	pll_36xx,
 	pll_2550,
 	pll_2650,
+	pll_6552,
+	pll_6553,
 };
 
 #define PLL_35XX_RATE(_rate, _m, _p, _s)			\
-- 
1.8.3.2

WARNING: multiple messages have this Message-ID (diff)
From: tomasz.figa@gmail.com (Tomasz Figa)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 2/8] clk: samsung: pll: Add support for PLL6552 and PLL6553
Date: Wed, 24 Jul 2013 01:52:19 +0200	[thread overview]
Message-ID: <11551938.yDBcNngaZN@flatron> (raw)
In-Reply-To: <1374536965-3545-3-git-send-email-tomasz.figa@gmail.com>

This patch adds support for PLL6552 and PLL6553 PLLs present on Samsung
S3C64xx SoCs.

Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
Acked-by: Mike Turquette <mturquette@linaro.org>
---
 drivers/clk/samsung/clk-pll.c | 77 +++++++++++++++++++++++++++++++++++++++++++
 drivers/clk/samsung/clk-pll.h |  2 ++
 2 files changed, 79 insertions(+)

Changes since v2:
 - Reworked to use new PLL registration method introduced by Yadwinder
   Singh Brar's patch series:
   ( http://thread.gmane.org/gmane.linux.kernel.samsung-soc/20041 )

diff --git a/drivers/clk/samsung/clk-pll.c b/drivers/clk/samsung/clk-pll.c
index f80efb6..7572d1d 100644
--- a/drivers/clk/samsung/clk-pll.c
+++ b/drivers/clk/samsung/clk-pll.c
@@ -438,6 +438,77 @@ struct clk * __init samsung_clk_register_pll46xx(const char *name,
 }
 
 /*
+ * PLL6552 Clock Type
+ */
+
+#define PLL6552_MDIV_MASK	0x3ff
+#define PLL6552_PDIV_MASK	0x3f
+#define PLL6552_SDIV_MASK	0x7
+#define PLL6552_MDIV_SHIFT	16
+#define PLL6552_PDIV_SHIFT	8
+#define PLL6552_SDIV_SHIFT	0
+
+static unsigned long samsung_pll6552_recalc_rate(struct clk_hw *hw,
+						unsigned long parent_rate)
+{
+	struct samsung_clk_pll *pll = to_clk_pll(hw);
+	u32 mdiv, pdiv, sdiv, pll_con;
+	u64 fvco = parent_rate;
+
+	pll_con = __raw_readl(pll->con_reg);
+	mdiv = (pll_con >> PLL6552_MDIV_SHIFT) & PLL6552_MDIV_MASK;
+	pdiv = (pll_con >> PLL6552_PDIV_SHIFT) & PLL6552_PDIV_MASK;
+	sdiv = (pll_con >> PLL6552_SDIV_SHIFT) & PLL6552_SDIV_MASK;
+
+	fvco *= mdiv;
+	do_div(fvco, (pdiv << sdiv));
+
+	return (unsigned long)fvco;
+}
+
+static const struct clk_ops samsung_pll6552_clk_ops = {
+	.recalc_rate = samsung_pll6552_recalc_rate,
+};
+
+/*
+ * PLL6553 Clock Type
+ */
+
+#define PLL6553_MDIV_MASK	0xff
+#define PLL6553_PDIV_MASK	0x3f
+#define PLL6553_SDIV_MASK	0x7
+#define PLL6553_KDIV_MASK	0xffff
+#define PLL6553_MDIV_SHIFT	16
+#define PLL6553_PDIV_SHIFT	8
+#define PLL6553_SDIV_SHIFT	0
+#define PLL6553_KDIV_SHIFT	0
+
+static unsigned long samsung_pll6553_recalc_rate(struct clk_hw *hw,
+						unsigned long parent_rate)
+{
+	struct samsung_clk_pll *pll = to_clk_pll(hw);
+	u32 mdiv, pdiv, sdiv, kdiv, pll_con0, pll_con1;
+	u64 fvco = parent_rate;
+
+	pll_con0 = __raw_readl(pll->con_reg);
+	pll_con1 = __raw_readl(pll->con_reg + 0x4);
+	mdiv = (pll_con0 >> PLL6553_MDIV_SHIFT) & PLL6553_MDIV_MASK;
+	pdiv = (pll_con0 >> PLL6553_PDIV_SHIFT) & PLL6553_PDIV_MASK;
+	sdiv = (pll_con0 >> PLL6553_SDIV_SHIFT) & PLL6553_SDIV_MASK;
+	kdiv = (pll_con1 >> PLL6553_KDIV_SHIFT) & PLL6553_KDIV_MASK;
+
+	fvco *= (mdiv << 16) + kdiv;
+	do_div(fvco, (pdiv << sdiv));
+	fvco >>= 16;
+
+	return (unsigned long)fvco;
+}
+
+static const struct clk_ops samsung_pll6553_clk_ops = {
+	.recalc_rate = samsung_pll6553_recalc_rate,
+};
+
+/*
  * PLL2550x Clock Type
  */
 
@@ -572,6 +643,12 @@ static void __init _samsung_clk_register_pll(struct samsung_pll_clock *pll_clk,
 		else
 			init.ops = &samsung_pll36xx_clk_ops;
 		break;
+	case pll_6552:
+		init.ops = &samsung_pll6552_clk_ops;
+		break;
+	case pll_6553:
+		init.ops = &samsung_pll6553_clk_ops;
+		break;
 	default:
 		pr_warn("%s: Unknown pll type for pll clk %s\n",
 			__func__, pll_clk->name);
diff --git a/drivers/clk/samsung/clk-pll.h b/drivers/clk/samsung/clk-pll.h
index 95ae23d..cd11037 100644
--- a/drivers/clk/samsung/clk-pll.h
+++ b/drivers/clk/samsung/clk-pll.h
@@ -17,6 +17,8 @@ enum samsung_pll_type {
 	pll_36xx,
 	pll_2550,
 	pll_2650,
+	pll_6552,
+	pll_6553,
 };
 
 #define PLL_35XX_RATE(_rate, _m, _p, _s)			\
-- 
1.8.3.2

  reply	other threads:[~2013-07-23 23:52 UTC|newest]

Thread overview: 90+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-22 23:49 [PATCH v2 0/8] Common Clock Framework support for Samsung S3C64xx Tomasz Figa
2013-07-22 23:49 ` Tomasz Figa
2013-07-22 23:49 ` [PATCH v2 1/8] clk: mux: Add support for read-only muxes Tomasz Figa
2013-07-22 23:49   ` Tomasz Figa
     [not found]   ` <1374536965-3545-2-git-send-email-tomasz.figa-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-07-23 11:22     ` Sergei Shtylyov
2013-07-23 11:22       ` Sergei Shtylyov
2013-07-23 11:25       ` Tomasz Figa
2013-07-23 11:25         ` Tomasz Figa
2013-07-27 12:41   ` Tomasz Figa
2013-07-27 12:41     ` Tomasz Figa
2013-08-02 21:46     ` Mike Turquette
2013-08-02 21:46       ` Mike Turquette
2013-07-22 23:49 ` [PATCH v2 4/8] ARM: SAMSUNG: Add soc_is_s3c6400/s3c6410 macros Tomasz Figa
2013-07-22 23:49   ` Tomasz Figa
2013-07-22 23:49 ` [PATCH v2 5/8] ARM: s3c64xx: dma: Use clk_prepare_enable/clk_disable_unprepare Tomasz Figa
2013-07-22 23:49   ` Tomasz Figa
2013-07-28 12:32   ` Mark Brown
2013-07-28 12:32     ` Mark Brown
     [not found] ` <1374536965-3545-1-git-send-email-tomasz.figa-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-07-22 23:49   ` [PATCH v2 2/8] clk: samsung: pll: Add support for PLL6552 and PLL6553 Tomasz Figa
2013-07-22 23:49     ` Tomasz Figa
2013-07-23 23:52     ` Tomasz Figa [this message]
2013-07-23 23:52       ` [PATCH v3 " Tomasz Figa
2013-07-28 12:30       ` Mark Brown
2013-07-28 12:30         ` Mark Brown
2013-07-28 12:38         ` Tomasz Figa
2013-07-28 12:38           ` Tomasz Figa
2013-08-02 22:53           ` Mike Turquette
2013-08-02 22:53             ` Mike Turquette
2013-07-22 23:49   ` [PATCH v2 3/8] clk: samsung: Add clock driver for S3C64xx SoCs Tomasz Figa
2013-07-22 23:49     ` Tomasz Figa
2013-07-23 23:55     ` [PATCH v3 " Tomasz Figa
2013-07-23 23:55       ` Tomasz Figa
2013-07-22 23:49   ` [PATCH v2 6/8] usb: host: ohci-s3c2410 Use clk_prepare_enable/clk_disable_unprepare Tomasz Figa
2013-07-22 23:49     ` Tomasz Figa
2013-07-23  0:15     ` Fabio Estevam
2013-07-23  0:15       ` Fabio Estevam
     [not found]       ` <CAOMZO5D4X+GT+LdUOjorJ8xgBCwv9iAP4W-RzKrbnE-93kxmUg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-07-23  0:44         ` Tomasz Figa
2013-07-23  0:44           ` Tomasz Figa
     [not found]     ` <1374536965-3545-7-git-send-email-tomasz.figa-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-07-31 18:58       ` Tomasz Figa
2013-07-31 18:58         ` Tomasz Figa
2013-07-31 20:44         ` Alan Stern
2013-07-31 20:44           ` Alan Stern
     [not found]           ` <Pine.LNX.4.44L0.1307311643110.1546-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
2013-08-01  7:45             ` Greg KH
2013-08-01  7:45               ` Greg KH
2013-07-22 23:49   ` [PATCH v2 7/8] ARM: s3c64xx: Migrate clock handling to Common Clock Framework Tomasz Figa
2013-07-22 23:49     ` Tomasz Figa
2013-08-05 17:01   ` [PATCH v2 0/8] Common Clock Framework support for Samsung S3C64xx Kukjin Kim
2013-08-05 17:01     ` Kukjin Kim
     [not found]     ` <51FFDA70.7080900-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2013-08-05 18:06       ` Mike Turquette
2013-08-05 18:06         ` Mike Turquette
2013-08-05 18:13         ` Kukjin Kim
2013-08-05 18:13           ` Kukjin Kim
2013-08-05 19:02           ` Mike Turquette
2013-08-05 19:02             ` Mike Turquette
2013-08-05 23:42             ` Tomasz Figa
2013-08-05 23:42               ` Tomasz Figa
2013-08-06 19:47               ` Mike Turquette
2013-08-06 19:47                 ` Mike Turquette
2013-08-06 22:06                 ` Tomasz Figa
2013-08-06 22:06                   ` Tomasz Figa
2013-08-06 22:11                   ` Kukjin Kim
2013-08-06 22:11                     ` Kukjin Kim
2013-08-06 22:13                     ` Tomasz Figa
2013-08-06 22:13                       ` Tomasz Figa
2013-08-16 10:44         ` Tomasz Figa
2013-08-16 10:44           ` Tomasz Figa
2013-08-16 21:02           ` Mike Turquette
2013-08-16 21:02             ` Mike Turquette
2013-08-16 21:15             ` Tomasz Figa
2013-08-16 21:15               ` Tomasz Figa
2013-08-17 10:30               ` Kukjin Kim
2013-08-17 10:30                 ` Kukjin Kim
2013-08-20  0:22                 ` Mike Turquette
2013-08-20  0:22                   ` Mike Turquette
2013-08-20  7:09                   ` Kukjin Kim
2013-08-20  7:09                     ` Kukjin Kim
2013-08-25 17:19                     ` Kukjin Kim
2013-08-25 17:19                       ` Kukjin Kim
2013-08-21  0:33                   ` [PATCH] clk: samsung: pll: Use new registration method for PLL6552 and PLL6553 Tomasz Figa
2013-08-21  0:33                     ` Tomasz Figa
2013-08-27  1:14                     ` Mike Turquette
2013-08-27  1:14                       ` Mike Turquette
2013-08-27 17:16                       ` Kukjin Kim
2013-08-27 17:16                         ` Kukjin Kim
2013-08-27 23:45                         ` Mike Turquette
2013-08-27 23:45                           ` Mike Turquette
2013-07-22 23:49 ` [PATCH v2 8/8] ARM: s3c64xx: Remove old clock management code Tomasz Figa
2013-07-22 23:49   ` Tomasz Figa
2013-07-24 12:20 ` [PATCH v2 0/8] Common Clock Framework support for Samsung S3C64xx Kukjin Kim
2013-07-24 12:20   ` Kukjin Kim

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=11551938.yDBcNngaZN@flatron \
    --to=tomasz.figa@gmail.com \
    --cc=arnd@arndb.de \
    --cc=broonie@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=heiko@sntech.de \
    --cc=kgene.kim@samsung.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mturquette@linaro.org \
    --cc=olof@lixom.net \
    --cc=stern@rowland.harvard.edu \
    --cc=sylvester.nawrocki@gmail.com \
    --cc=thomas.abraham@linaro.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.