public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] clk: s2mps11: Add support for S2MPS14 clocks
@ 2014-03-10 12:34 Krzysztof Kozlowski
  2014-03-10 12:34 ` [PATCH 1/3] " Krzysztof Kozlowski
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Krzysztof Kozlowski @ 2014-03-10 12:34 UTC (permalink / raw)
  To: Mike Turquette, linux-arm-kernel, Sangbeom Kim, Samuel Ortiz,
	Lee Jones, linux-kernel, linux-samsung-soc
  Cc: Tushar Behera, Yadwinder Singh Brar, Sachin Kamat, Kyungmin Park,
	Marek Szyprowski, Bartlomiej Zolnierkiewicz, Tomasz Figa,
	Krzysztof Kozlowski

Hi,

This patchset adds support for the S2MPS14 device to the s2mps11 clock
driver.

The patchset *depends on*:
1. Work done by Tushar Behera:
   [PATCH V2 0/2] Add support for clocks in S5M8767
   http://thread.gmane.org/gmane.linux.kernel.samsung-soc/27264
2. Support for S2MPS14 in main sec-core MFD driver (already in linux-next
   and Lee's tree).

Best regards,
Krzysztof


Krzysztof Kozlowski (3):
  clk: s2mps11: Add support for S2MPS14 clocks
  mfd: sec-core: Add of_compatible strings for MFD cells
  Documentation: mfd: s2mps11: Describe S5M8767 and S2MPS14 clocks

 Documentation/devicetree/bindings/mfd/s2mps11.txt |   24 +++++---
 drivers/clk/clk-s2mps11.c                         |   61 ++++++++++++++++-----
 drivers/mfd/sec-core.c                            |    3 +
 3 files changed, 64 insertions(+), 24 deletions(-)

-- 
1.7.9.5


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/3] clk: s2mps11: Add support for S2MPS14 clocks
  2014-03-10 12:34 [PATCH 0/3] clk: s2mps11: Add support for S2MPS14 clocks Krzysztof Kozlowski
@ 2014-03-10 12:34 ` Krzysztof Kozlowski
  2014-03-12 11:30   ` Yadwinder Singh Brar
  2014-03-10 12:34 ` [PATCH 2/3] mfd: sec-core: Add of_compatible strings for MFD cells Krzysztof Kozlowski
  2014-03-10 12:34 ` [PATCH 3/3] Documentation: mfd: s2mps11: Describe S5M8767 and S2MPS14 clocks Krzysztof Kozlowski
  2 siblings, 1 reply; 8+ messages in thread
From: Krzysztof Kozlowski @ 2014-03-10 12:34 UTC (permalink / raw)
  To: Mike Turquette, linux-arm-kernel, Sangbeom Kim, Samuel Ortiz,
	Lee Jones, linux-kernel, linux-samsung-soc
  Cc: Tushar Behera, Yadwinder Singh Brar, Sachin Kamat, Kyungmin Park,
	Marek Szyprowski, Bartlomiej Zolnierkiewicz, Tomasz Figa,
	Krzysztof Kozlowski

This patch adds support for S2MPS14 PMIC clocks (BT and AP) to the
s2mps11 clock driver.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
---
 drivers/clk/clk-s2mps11.c |   61 ++++++++++++++++++++++++++++++++++-----------
 1 file changed, 46 insertions(+), 15 deletions(-)

diff --git a/drivers/clk/clk-s2mps11.c b/drivers/clk/clk-s2mps11.c
index 508875535e1e..8dafb552274f 100644
--- a/drivers/clk/clk-s2mps11.c
+++ b/drivers/clk/clk-s2mps11.c
@@ -1,7 +1,7 @@
 /*
  * clk-s2mps11.c - Clock driver for S2MPS11.
  *
- * Copyright (C) 2013 Samsung Electornics
+ * Copyright (C) 2013,2014 Samsung Electornics
  *
  * This program is free software; you can redistribute  it and/or modify it
  * under  the terms of  the GNU General  Public License as published by the
@@ -13,10 +13,6 @@
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
  */
 
 #include <linux/module.h>
@@ -27,6 +23,7 @@
 #include <linux/clk-provider.h>
 #include <linux/platform_device.h>
 #include <linux/mfd/samsung/s2mps11.h>
+#include <linux/mfd/samsung/s2mps14.h>
 #include <linux/mfd/samsung/s5m8767.h>
 #include <linux/mfd/samsung/core.h>
 
@@ -125,7 +122,21 @@ static struct clk_init_data s2mps11_clks_init[S2MPS11_CLKS_NUM] = {
 	},
 };
 
-static struct device_node *s2mps11_clk_parse_dt(struct platform_device *pdev)
+static struct clk_init_data s2mps14_clks_init[S2MPS11_CLKS_NUM] = {
+	[S2MPS11_CLK_AP] = {
+		.name = "s2mps14_ap",
+		.ops = &s2mps11_clk_ops,
+		.flags = CLK_IS_ROOT,
+	},
+	[S2MPS11_CLK_BT] = {
+		.name = "s2mps14_bt",
+		.ops = &s2mps11_clk_ops,
+		.flags = CLK_IS_ROOT,
+	},
+};
+
+static struct device_node *s2mps11_clk_parse_dt(struct platform_device *pdev,
+		struct clk_init_data *clks_init)
 {
 	struct sec_pmic_dev *iodev = dev_get_drvdata(pdev->dev.parent);
 	struct device_node *clk_np;
@@ -145,9 +156,12 @@ static struct device_node *s2mps11_clk_parse_dt(struct platform_device *pdev)
 	if (!clk_table)
 		return ERR_PTR(-ENOMEM);
 
-	for (i = 0; i < S2MPS11_CLKS_NUM; i++)
+	for (i = 0; i < S2MPS11_CLKS_NUM; i++) {
+		if (!clks_init[i].name)
+			continue; /* Skip clocks not present in some devices */
 		of_property_read_string_index(clk_np, "clock-output-names", i,
-				&s2mps11_clks_init[i].name);
+				&clks_init[i].name);
+	}
 
 	return clk_np;
 }
@@ -158,6 +172,7 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
 	struct s2mps11_clk *s2mps11_clks, *s2mps11_clk;
 	struct device_node *clk_np = NULL;
 	unsigned int s2mps11_reg;
+	struct clk_init_data *clks_init;
 	int i, ret = 0;
 	u32 val;
 
@@ -168,25 +183,33 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
 
 	s2mps11_clk = s2mps11_clks;
 
-	clk_np = s2mps11_clk_parse_dt(pdev);
-	if (IS_ERR(clk_np))
-		return PTR_ERR(clk_np);
-
 	switch (platform_get_device_id(pdev)->driver_data) {
 	case S2MPS11X:
 		s2mps11_reg = S2MPS11_REG_RTC_CTRL;
+		clks_init = s2mps11_clks_init;
+		break;
+	case S2MPS14X:
+		s2mps11_reg = S2MPS14_REG_RTCCTRL;
+		clks_init = s2mps14_clks_init;
 		break;
 	case S5M8767X:
 		s2mps11_reg = S5M8767_REG_CTRL1;
+		clks_init = s2mps11_clks_init;
 		break;
 	default:
 		dev_err(&pdev->dev, "Invalid device type\n");
 		return -EINVAL;
 	};
 
+	clk_np = s2mps11_clk_parse_dt(pdev, clks_init);
+	if (IS_ERR(clk_np))
+		return PTR_ERR(clk_np);
+
 	for (i = 0; i < S2MPS11_CLKS_NUM; i++, s2mps11_clk++) {
+		if (!clks_init[i].name)
+			continue; /* Skip clocks not present in some devices */
 		s2mps11_clk->iodev = iodev;
-		s2mps11_clk->hw.init = &s2mps11_clks_init[i];
+		s2mps11_clk->hw.init = &clks_init[i];
 		s2mps11_clk->mask = 1 << i;
 		s2mps11_clk->reg = s2mps11_reg;
 
@@ -220,8 +243,12 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
 	}
 
 	if (clk_table) {
-		for (i = 0; i < S2MPS11_CLKS_NUM; i++)
+		for (i = 0; i < S2MPS11_CLKS_NUM; i++) {
+			/* Skip clocks not present on S2MPS14 */
+			if (!clks_init[i].name)
+				continue;
 			clk_table[i] = s2mps11_clks[i].clk;
+		}
 
 		clk_data.clks = clk_table;
 		clk_data.clk_num = S2MPS11_CLKS_NUM;
@@ -250,14 +277,18 @@ static int s2mps11_clk_remove(struct platform_device *pdev)
 	struct s2mps11_clk *s2mps11_clks = platform_get_drvdata(pdev);
 	int i;
 
-	for (i = 0; i < S2MPS11_CLKS_NUM; i++)
+	for (i = 0; i < S2MPS11_CLKS_NUM; i++) {
+		if (!s2mps11_clks[i].lookup)
+			continue; /* Skip clocks not present in some devices */
 		clkdev_drop(s2mps11_clks[i].lookup);
+	}
 
 	return 0;
 }
 
 static const struct platform_device_id s2mps11_clk_id[] = {
 	{ "s2mps11-clk", S2MPS11X},
+	{ "s2mps14-clk", S2MPS14X},
 	{ "s5m8767-clk", S5M8767X},
 	{ },
 };
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/3] mfd: sec-core: Add of_compatible strings for MFD cells
  2014-03-10 12:34 [PATCH 0/3] clk: s2mps11: Add support for S2MPS14 clocks Krzysztof Kozlowski
  2014-03-10 12:34 ` [PATCH 1/3] " Krzysztof Kozlowski
@ 2014-03-10 12:34 ` Krzysztof Kozlowski
  2014-03-10 12:46   ` Lee Jones
  2014-03-10 12:34 ` [PATCH 3/3] Documentation: mfd: s2mps11: Describe S5M8767 and S2MPS14 clocks Krzysztof Kozlowski
  2 siblings, 1 reply; 8+ messages in thread
From: Krzysztof Kozlowski @ 2014-03-10 12:34 UTC (permalink / raw)
  To: Mike Turquette, linux-arm-kernel, Sangbeom Kim, Samuel Ortiz,
	Lee Jones, linux-kernel, linux-samsung-soc
  Cc: Tushar Behera, Yadwinder Singh Brar, Sachin Kamat, Kyungmin Park,
	Marek Szyprowski, Bartlomiej Zolnierkiewicz, Tomasz Figa,
	Krzysztof Kozlowski

Add of_compatible strings for S5M8767 RTC, S5M8767 clock and S2MPS14
clock MFD cells.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
---
 drivers/mfd/sec-core.c |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c
index d163c66edebb..e8ac2e3c1f58 100644
--- a/drivers/mfd/sec-core.c
+++ b/drivers/mfd/sec-core.c
@@ -57,8 +57,10 @@ static const struct mfd_cell s5m8767_devs[] = {
 		.name = "s5m8767-pmic",
 	}, {
 		.name = "s5m-rtc",
+		.of_compatible = "samsung,s5m8767-rtc",
 	}, {
 		.name = "s5m8767-clk",
+		.of_compatible = "samsung,s5m8767-clk",
 	}
 };
 
@@ -77,6 +79,7 @@ static const struct mfd_cell s2mps14_devs[] = {
 		.name = "s2mps14-rtc",
 	}, {
 		.name = "s2mps14-clk",
+		.of_compatible = "samsung,s2mps14-clk",
 	}
 };
 
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/3] Documentation: mfd: s2mps11: Describe S5M8767 and S2MPS14 clocks
  2014-03-10 12:34 [PATCH 0/3] clk: s2mps11: Add support for S2MPS14 clocks Krzysztof Kozlowski
  2014-03-10 12:34 ` [PATCH 1/3] " Krzysztof Kozlowski
  2014-03-10 12:34 ` [PATCH 2/3] mfd: sec-core: Add of_compatible strings for MFD cells Krzysztof Kozlowski
@ 2014-03-10 12:34 ` Krzysztof Kozlowski
  2 siblings, 0 replies; 8+ messages in thread
From: Krzysztof Kozlowski @ 2014-03-10 12:34 UTC (permalink / raw)
  To: Mike Turquette, linux-arm-kernel, Sangbeom Kim, Samuel Ortiz,
	Lee Jones, linux-kernel, linux-samsung-soc
  Cc: Tushar Behera, Yadwinder Singh Brar, Sachin Kamat, Kyungmin Park,
	Marek Szyprowski, Bartlomiej Zolnierkiewicz, Tomasz Figa,
	Krzysztof Kozlowski, devicetree, Rob Herring, Pawel Moll,
	Mark Rutland, Ian Campbell, Kumar Gala

Add bindings documentation for clocks on S5M8767 and S2MPS14 devices.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Cc: Tomasz Figa <t.figa@samsung.com>
Cc: devicetree@vger.kernel.org
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Pawel Moll <pawel.moll@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Ian Campbell <ijc+devicetree@hellion.org.uk>
Cc: Kumar Gala <galak@codeaurora.org>
---
 Documentation/devicetree/bindings/mfd/s2mps11.txt |   24 +++++++++++++--------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/Documentation/devicetree/bindings/mfd/s2mps11.txt b/Documentation/devicetree/bindings/mfd/s2mps11.txt
index 15ee89c3cc7b..67ea05ca8050 100644
--- a/Documentation/devicetree/bindings/mfd/s2mps11.txt
+++ b/Documentation/devicetree/bindings/mfd/s2mps11.txt
@@ -16,20 +16,25 @@ Optional properties:
 - interrupts: Interrupt specifiers for interrupt sources.
 
 Optional nodes:
-- clocks: s2mps11 provides three(AP/CP/BT) buffered 32.768 KHz outputs, so to
-  register these as clocks with common clock framework instantiate a sub-node
-  named "clocks". It uses the common clock binding documented in :
+- clocks: s2mps11 and s5m8767 provide three(AP/CP/BT) buffered 32.768 KHz
+  outputs, so to register these as clocks with common clock framework
+  instantiate a sub-node named "clocks". It uses the common clock binding
+  documented in :
   [Documentation/devicetree/bindings/clock/clock-bindings.txt]
+  The s2mps14 provides two (AP/BT) buffered 32.768 KHz outputs.
   - #clock-cells: should be 1.
 
   - 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.
-    Clock               ID
-    ----------------------
-    32KhzAP		0
-    32KhzCP		1
-    32KhzBT		2
+    Clock               ID           Devices
+    ----------------------------------------------------------
+    32KhzAP		0            S2MPS11, S2MPS14, S5M8767
+    32KhzCP		1            S2MPS11, S5M8767
+    32KhzBT		2            S2MPS11, S2MPS14, S5M8767
+
+  - compatible: Should be one of: "samsung,s2mps11-clk", "samsung,s2mps14-clk",
+		"samsung,s5m8767-clk"
 
 - regulators: The regulators of s2mps11 that have to be instantiated should be
 included in a sub-node named 'regulators'. Regulator nodes included in this
@@ -71,7 +76,8 @@ Example:
 		compatible = "samsung,s2mps11-pmic";
 		reg = <0x66>;
 
-		s2m_osc: clocks{
+		s2m_osc: clocks {
+			compatible = "samsung,s2mps11-clk";
 			#clock-cells = 1;
 			clock-output-names = "xx", "yy", "zz";
 		};
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/3] mfd: sec-core: Add of_compatible strings for MFD cells
  2014-03-10 12:34 ` [PATCH 2/3] mfd: sec-core: Add of_compatible strings for MFD cells Krzysztof Kozlowski
@ 2014-03-10 12:46   ` Lee Jones
  2014-03-10 12:53     ` Krzysztof Kozlowski
  0 siblings, 1 reply; 8+ messages in thread
From: Lee Jones @ 2014-03-10 12:46 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Mike Turquette, linux-arm-kernel, Sangbeom Kim, Samuel Ortiz,
	linux-kernel, linux-samsung-soc, Tushar Behera,
	Yadwinder Singh Brar, Sachin Kamat, Kyungmin Park,
	Marek Szyprowski, Bartlomiej Zolnierkiewicz, Tomasz Figa

> Add of_compatible strings for S5M8767 RTC, S5M8767 clock and S2MPS14
> clock MFD cells.
> 
> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> ---
>  drivers/mfd/sec-core.c |    3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c
> index d163c66edebb..e8ac2e3c1f58 100644
> --- a/drivers/mfd/sec-core.c
> +++ b/drivers/mfd/sec-core.c
> @@ -57,8 +57,10 @@ static const struct mfd_cell s5m8767_devs[] = {
>  		.name = "s5m8767-pmic",
>  	}, {
>  		.name = "s5m-rtc",
> +		.of_compatible = "samsung,s5m8767-rtc",
>  	}, {
>  		.name = "s5m8767-clk",
> +		.of_compatible = "samsung,s5m8767-clk",
>  	}
>  };
>  
> @@ -77,6 +79,7 @@ static const struct mfd_cell s2mps14_devs[] = {
>  		.name = "s2mps14-rtc",
>  	}, {
>  		.name = "s2mps14-clk",
> +		.of_compatible = "samsung,s2mps14-clk",
>  	}
>  };

Any reason for not applying compatible strings for the other devices?

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/3] mfd: sec-core: Add of_compatible strings for MFD cells
  2014-03-10 12:46   ` Lee Jones
@ 2014-03-10 12:53     ` Krzysztof Kozlowski
  0 siblings, 0 replies; 8+ messages in thread
From: Krzysztof Kozlowski @ 2014-03-10 12:53 UTC (permalink / raw)
  To: Lee Jones
  Cc: Mike Turquette, linux-arm-kernel, Sangbeom Kim, Samuel Ortiz,
	linux-kernel, linux-samsung-soc, Tushar Behera,
	Yadwinder Singh Brar, Sachin Kamat, Kyungmin Park,
	Marek Szyprowski, Bartlomiej Zolnierkiewicz, Tomasz Figa

On Mon, 2014-03-10 at 12:46 +0000, Lee Jones wrote:
> > Add of_compatible strings for S5M8767 RTC, S5M8767 clock and S2MPS14
> > clock MFD cells.
> > 
> > Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> > ---
> >  drivers/mfd/sec-core.c |    3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c
> > index d163c66edebb..e8ac2e3c1f58 100644
> > --- a/drivers/mfd/sec-core.c
> > +++ b/drivers/mfd/sec-core.c
> > @@ -57,8 +57,10 @@ static const struct mfd_cell s5m8767_devs[] = {
> >  		.name = "s5m8767-pmic",
> >  	}, {
> >  		.name = "s5m-rtc",
> > +		.of_compatible = "samsung,s5m8767-rtc",
> >  	}, {
> >  		.name = "s5m8767-clk",
> > +		.of_compatible = "samsung,s5m8767-clk",
> >  	}
> >  };
> >  
> > @@ -77,6 +79,7 @@ static const struct mfd_cell s2mps14_devs[] = {
> >  		.name = "s2mps14-rtc",
> >  	}, {
> >  		.name = "s2mps14-clk",
> > +		.of_compatible = "samsung,s2mps14-clk",
> >  	}
> >  };
> 
> Any reason for not applying compatible strings for the other devices?

Partially yes because I do not want to add them for devices which I
cannot test (s5m8761, s5m8763) but you're right that there are no
obstacles for s2mps11, s5m8767 and s2mps14.

I'll fix this in next version.


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] clk: s2mps11: Add support for S2MPS14 clocks
  2014-03-10 12:34 ` [PATCH 1/3] " Krzysztof Kozlowski
@ 2014-03-12 11:30   ` Yadwinder Singh Brar
  2014-03-12 11:35     ` Krzysztof Kozlowski
  0 siblings, 1 reply; 8+ messages in thread
From: Yadwinder Singh Brar @ 2014-03-12 11:30 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Mike Turquette, linux-arm-kernel@lists.infradead.org,
	Sangbeom Kim, Samuel Ortiz, Lee Jones, linux-kernel,
	linux-samsung-soc, Tushar Behera, Yadwinder Singh Brar,
	Sachin Kamat, Kyungmin Park, Marek Szyprowski,
	Bartlomiej Zolnierkiewicz, Tomasz Figa

On Mon, Mar 10, 2014 at 6:04 PM, Krzysztof Kozlowski
<k.kozlowski@samsung.com> wrote:
> This patch adds support for S2MPS14 PMIC clocks (BT and AP) to the
> s2mps11 clock driver.
>
> Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> ---

Reviewed-by: Yadwinder Singh Brar <yadi.brar@samsung.com>

Just a trivial thing, Kconfig description can also be updated.

Regards,
Yadwinder

>  drivers/clk/clk-s2mps11.c |   61 ++++++++++++++++++++++++++++++++++-----------
>  1 file changed, 46 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/clk/clk-s2mps11.c b/drivers/clk/clk-s2mps11.c
> index 508875535e1e..8dafb552274f 100644
> --- a/drivers/clk/clk-s2mps11.c
> +++ b/drivers/clk/clk-s2mps11.c
> @@ -1,7 +1,7 @@
>  /*
>   * clk-s2mps11.c - Clock driver for S2MPS11.
>   *
> - * Copyright (C) 2013 Samsung Electornics
> + * Copyright (C) 2013,2014 Samsung Electornics
>   *
>   * This program is free software; you can redistribute  it and/or modify it
>   * under  the terms of  the GNU General  Public License as published by the
> @@ -13,10 +13,6 @@
>   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>   * GNU General Public License for more details.
>   *
> - * You should have received a copy of the GNU General Public License
> - * along with this program; if not, write to the Free Software
> - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
> - *
>   */
>
>  #include <linux/module.h>
> @@ -27,6 +23,7 @@
>  #include <linux/clk-provider.h>
>  #include <linux/platform_device.h>
>  #include <linux/mfd/samsung/s2mps11.h>
> +#include <linux/mfd/samsung/s2mps14.h>
>  #include <linux/mfd/samsung/s5m8767.h>
>  #include <linux/mfd/samsung/core.h>
>
> @@ -125,7 +122,21 @@ static struct clk_init_data s2mps11_clks_init[S2MPS11_CLKS_NUM] = {
>         },
>  };
>
> -static struct device_node *s2mps11_clk_parse_dt(struct platform_device *pdev)
> +static struct clk_init_data s2mps14_clks_init[S2MPS11_CLKS_NUM] = {
> +       [S2MPS11_CLK_AP] = {
> +               .name = "s2mps14_ap",
> +               .ops = &s2mps11_clk_ops,
> +               .flags = CLK_IS_ROOT,
> +       },
> +       [S2MPS11_CLK_BT] = {
> +               .name = "s2mps14_bt",
> +               .ops = &s2mps11_clk_ops,
> +               .flags = CLK_IS_ROOT,
> +       },
> +};
> +
> +static struct device_node *s2mps11_clk_parse_dt(struct platform_device *pdev,
> +               struct clk_init_data *clks_init)
>  {
>         struct sec_pmic_dev *iodev = dev_get_drvdata(pdev->dev.parent);
>         struct device_node *clk_np;
> @@ -145,9 +156,12 @@ static struct device_node *s2mps11_clk_parse_dt(struct platform_device *pdev)
>         if (!clk_table)
>                 return ERR_PTR(-ENOMEM);
>
> -       for (i = 0; i < S2MPS11_CLKS_NUM; i++)
> +       for (i = 0; i < S2MPS11_CLKS_NUM; i++) {
> +               if (!clks_init[i].name)
> +                       continue; /* Skip clocks not present in some devices */
>                 of_property_read_string_index(clk_np, "clock-output-names", i,
> -                               &s2mps11_clks_init[i].name);
> +                               &clks_init[i].name);
> +       }
>
>         return clk_np;
>  }
> @@ -158,6 +172,7 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
>         struct s2mps11_clk *s2mps11_clks, *s2mps11_clk;
>         struct device_node *clk_np = NULL;
>         unsigned int s2mps11_reg;
> +       struct clk_init_data *clks_init;
>         int i, ret = 0;
>         u32 val;
>
> @@ -168,25 +183,33 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
>
>         s2mps11_clk = s2mps11_clks;
>
> -       clk_np = s2mps11_clk_parse_dt(pdev);
> -       if (IS_ERR(clk_np))
> -               return PTR_ERR(clk_np);
> -
>         switch (platform_get_device_id(pdev)->driver_data) {
>         case S2MPS11X:
>                 s2mps11_reg = S2MPS11_REG_RTC_CTRL;
> +               clks_init = s2mps11_clks_init;
> +               break;
> +       case S2MPS14X:
> +               s2mps11_reg = S2MPS14_REG_RTCCTRL;
> +               clks_init = s2mps14_clks_init;
>                 break;
>         case S5M8767X:
>                 s2mps11_reg = S5M8767_REG_CTRL1;
> +               clks_init = s2mps11_clks_init;
>                 break;
>         default:
>                 dev_err(&pdev->dev, "Invalid device type\n");
>                 return -EINVAL;
>         };
>
> +       clk_np = s2mps11_clk_parse_dt(pdev, clks_init);
> +       if (IS_ERR(clk_np))
> +               return PTR_ERR(clk_np);
> +
>         for (i = 0; i < S2MPS11_CLKS_NUM; i++, s2mps11_clk++) {
> +               if (!clks_init[i].name)
> +                       continue; /* Skip clocks not present in some devices */
>                 s2mps11_clk->iodev = iodev;
> -               s2mps11_clk->hw.init = &s2mps11_clks_init[i];
> +               s2mps11_clk->hw.init = &clks_init[i];
>                 s2mps11_clk->mask = 1 << i;
>                 s2mps11_clk->reg = s2mps11_reg;
>
> @@ -220,8 +243,12 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
>         }
>
>         if (clk_table) {
> -               for (i = 0; i < S2MPS11_CLKS_NUM; i++)
> +               for (i = 0; i < S2MPS11_CLKS_NUM; i++) {
> +                       /* Skip clocks not present on S2MPS14 */
> +                       if (!clks_init[i].name)
> +                               continue;
>                         clk_table[i] = s2mps11_clks[i].clk;
> +               }
>
>                 clk_data.clks = clk_table;
>                 clk_data.clk_num = S2MPS11_CLKS_NUM;
> @@ -250,14 +277,18 @@ static int s2mps11_clk_remove(struct platform_device *pdev)
>         struct s2mps11_clk *s2mps11_clks = platform_get_drvdata(pdev);
>         int i;
>
> -       for (i = 0; i < S2MPS11_CLKS_NUM; i++)
> +       for (i = 0; i < S2MPS11_CLKS_NUM; i++) {
> +               if (!s2mps11_clks[i].lookup)
> +                       continue; /* Skip clocks not present in some devices */
>                 clkdev_drop(s2mps11_clks[i].lookup);
> +       }
>
>         return 0;
>  }
>
>  static const struct platform_device_id s2mps11_clk_id[] = {
>         { "s2mps11-clk", S2MPS11X},
> +       { "s2mps14-clk", S2MPS14X},
>         { "s5m8767-clk", S5M8767X},
>         { },
>  };
> --
> 1.7.9.5
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] clk: s2mps11: Add support for S2MPS14 clocks
  2014-03-12 11:30   ` Yadwinder Singh Brar
@ 2014-03-12 11:35     ` Krzysztof Kozlowski
  0 siblings, 0 replies; 8+ messages in thread
From: Krzysztof Kozlowski @ 2014-03-12 11:35 UTC (permalink / raw)
  To: Yadwinder Singh Brar
  Cc: Mike Turquette, linux-arm-kernel@lists.infradead.org,
	Sangbeom Kim, Samuel Ortiz, Lee Jones, linux-kernel,
	linux-samsung-soc, Tushar Behera, Yadwinder Singh Brar,
	Sachin Kamat, Kyungmin Park, Marek Szyprowski,
	Bartlomiej Zolnierkiewicz, Tomasz Figa

On Wed, 2014-03-12 at 17:00 +0530, Yadwinder Singh Brar wrote:
> On Mon, Mar 10, 2014 at 6:04 PM, Krzysztof Kozlowski
> <k.kozlowski@samsung.com> wrote:
> > This patch adds support for S2MPS14 PMIC clocks (BT and AP) to the
> > s2mps11 clock driver.
> >
> > Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
> > ---
> 
> Reviewed-by: Yadwinder Singh Brar <yadi.brar@samsung.com>
> 
> Just a trivial thing, Kconfig description can also be updated.

Thanks for review.

I'll update the Kconfig in next version as I want also to change
sec-core driver after Lee's comment.

Best regards,
Krzysztof

> 
> Regards,
> Yadwinder
> 
> >  drivers/clk/clk-s2mps11.c |   61 ++++++++++++++++++++++++++++++++++-----------
> >  1 file changed, 46 insertions(+), 15 deletions(-)
> >
> > diff --git a/drivers/clk/clk-s2mps11.c b/drivers/clk/clk-s2mps11.c
> > index 508875535e1e..8dafb552274f 100644
> > --- a/drivers/clk/clk-s2mps11.c
> > +++ b/drivers/clk/clk-s2mps11.c
> > @@ -1,7 +1,7 @@
> >  /*
> >   * clk-s2mps11.c - Clock driver for S2MPS11.
> >   *
> > - * Copyright (C) 2013 Samsung Electornics
> > + * Copyright (C) 2013,2014 Samsung Electornics
> >   *
> >   * This program is free software; you can redistribute  it and/or modify it
> >   * under  the terms of  the GNU General  Public License as published by the
> > @@ -13,10 +13,6 @@
> >   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> >   * GNU General Public License for more details.
> >   *
> > - * You should have received a copy of the GNU General Public License
> > - * along with this program; if not, write to the Free Software
> > - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
> > - *
> >   */
> >
> >  #include <linux/module.h>
> > @@ -27,6 +23,7 @@
> >  #include <linux/clk-provider.h>
> >  #include <linux/platform_device.h>
> >  #include <linux/mfd/samsung/s2mps11.h>
> > +#include <linux/mfd/samsung/s2mps14.h>
> >  #include <linux/mfd/samsung/s5m8767.h>
> >  #include <linux/mfd/samsung/core.h>
> >
> > @@ -125,7 +122,21 @@ static struct clk_init_data s2mps11_clks_init[S2MPS11_CLKS_NUM] = {
> >         },
> >  };
> >
> > -static struct device_node *s2mps11_clk_parse_dt(struct platform_device *pdev)
> > +static struct clk_init_data s2mps14_clks_init[S2MPS11_CLKS_NUM] = {
> > +       [S2MPS11_CLK_AP] = {
> > +               .name = "s2mps14_ap",
> > +               .ops = &s2mps11_clk_ops,
> > +               .flags = CLK_IS_ROOT,
> > +       },
> > +       [S2MPS11_CLK_BT] = {
> > +               .name = "s2mps14_bt",
> > +               .ops = &s2mps11_clk_ops,
> > +               .flags = CLK_IS_ROOT,
> > +       },
> > +};
> > +
> > +static struct device_node *s2mps11_clk_parse_dt(struct platform_device *pdev,
> > +               struct clk_init_data *clks_init)
> >  {
> >         struct sec_pmic_dev *iodev = dev_get_drvdata(pdev->dev.parent);
> >         struct device_node *clk_np;
> > @@ -145,9 +156,12 @@ static struct device_node *s2mps11_clk_parse_dt(struct platform_device *pdev)
> >         if (!clk_table)
> >                 return ERR_PTR(-ENOMEM);
> >
> > -       for (i = 0; i < S2MPS11_CLKS_NUM; i++)
> > +       for (i = 0; i < S2MPS11_CLKS_NUM; i++) {
> > +               if (!clks_init[i].name)
> > +                       continue; /* Skip clocks not present in some devices */
> >                 of_property_read_string_index(clk_np, "clock-output-names", i,
> > -                               &s2mps11_clks_init[i].name);
> > +                               &clks_init[i].name);
> > +       }
> >
> >         return clk_np;
> >  }
> > @@ -158,6 +172,7 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
> >         struct s2mps11_clk *s2mps11_clks, *s2mps11_clk;
> >         struct device_node *clk_np = NULL;
> >         unsigned int s2mps11_reg;
> > +       struct clk_init_data *clks_init;
> >         int i, ret = 0;
> >         u32 val;
> >
> > @@ -168,25 +183,33 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
> >
> >         s2mps11_clk = s2mps11_clks;
> >
> > -       clk_np = s2mps11_clk_parse_dt(pdev);
> > -       if (IS_ERR(clk_np))
> > -               return PTR_ERR(clk_np);
> > -
> >         switch (platform_get_device_id(pdev)->driver_data) {
> >         case S2MPS11X:
> >                 s2mps11_reg = S2MPS11_REG_RTC_CTRL;
> > +               clks_init = s2mps11_clks_init;
> > +               break;
> > +       case S2MPS14X:
> > +               s2mps11_reg = S2MPS14_REG_RTCCTRL;
> > +               clks_init = s2mps14_clks_init;
> >                 break;
> >         case S5M8767X:
> >                 s2mps11_reg = S5M8767_REG_CTRL1;
> > +               clks_init = s2mps11_clks_init;
> >                 break;
> >         default:
> >                 dev_err(&pdev->dev, "Invalid device type\n");
> >                 return -EINVAL;
> >         };
> >
> > +       clk_np = s2mps11_clk_parse_dt(pdev, clks_init);
> > +       if (IS_ERR(clk_np))
> > +               return PTR_ERR(clk_np);
> > +
> >         for (i = 0; i < S2MPS11_CLKS_NUM; i++, s2mps11_clk++) {
> > +               if (!clks_init[i].name)
> > +                       continue; /* Skip clocks not present in some devices */
> >                 s2mps11_clk->iodev = iodev;
> > -               s2mps11_clk->hw.init = &s2mps11_clks_init[i];
> > +               s2mps11_clk->hw.init = &clks_init[i];
> >                 s2mps11_clk->mask = 1 << i;
> >                 s2mps11_clk->reg = s2mps11_reg;
> >
> > @@ -220,8 +243,12 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
> >         }
> >
> >         if (clk_table) {
> > -               for (i = 0; i < S2MPS11_CLKS_NUM; i++)
> > +               for (i = 0; i < S2MPS11_CLKS_NUM; i++) {
> > +                       /* Skip clocks not present on S2MPS14 */
> > +                       if (!clks_init[i].name)
> > +                               continue;
> >                         clk_table[i] = s2mps11_clks[i].clk;
> > +               }
> >
> >                 clk_data.clks = clk_table;
> >                 clk_data.clk_num = S2MPS11_CLKS_NUM;
> > @@ -250,14 +277,18 @@ static int s2mps11_clk_remove(struct platform_device *pdev)
> >         struct s2mps11_clk *s2mps11_clks = platform_get_drvdata(pdev);
> >         int i;
> >
> > -       for (i = 0; i < S2MPS11_CLKS_NUM; i++)
> > +       for (i = 0; i < S2MPS11_CLKS_NUM; i++) {
> > +               if (!s2mps11_clks[i].lookup)
> > +                       continue; /* Skip clocks not present in some devices */
> >                 clkdev_drop(s2mps11_clks[i].lookup);
> > +       }
> >
> >         return 0;
> >  }
> >
> >  static const struct platform_device_id s2mps11_clk_id[] = {
> >         { "s2mps11-clk", S2MPS11X},
> > +       { "s2mps14-clk", S2MPS14X},
> >         { "s5m8767-clk", S5M8767X},
> >         { },
> >  };
> > --
> > 1.7.9.5
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2014-03-12 11:35 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-10 12:34 [PATCH 0/3] clk: s2mps11: Add support for S2MPS14 clocks Krzysztof Kozlowski
2014-03-10 12:34 ` [PATCH 1/3] " Krzysztof Kozlowski
2014-03-12 11:30   ` Yadwinder Singh Brar
2014-03-12 11:35     ` Krzysztof Kozlowski
2014-03-10 12:34 ` [PATCH 2/3] mfd: sec-core: Add of_compatible strings for MFD cells Krzysztof Kozlowski
2014-03-10 12:46   ` Lee Jones
2014-03-10 12:53     ` Krzysztof Kozlowski
2014-03-10 12:34 ` [PATCH 3/3] Documentation: mfd: s2mps11: Describe S5M8767 and S2MPS14 clocks Krzysztof Kozlowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox