Re: [PATCH RESEND 1/4] clk: clk-s2mps11: Refactor for including support for other MFD clocks

2014-01-29 Thread Krzysztof Kozlowski
Hi,

> 
> Quoting Mark Brown (2013-12-31 08:09:16)
> > On Mon, Dec 30, 2013 at 09:33:50AM +0530, Tushar Behera wrote:
> > 
> > > Commit 1b1ccee1e821 "mfd: s2mps11: Fix build after regmap field rename
> > > in sec-core.c" is also touching this file, which is in Mark's tree
> > > right now. If I rebase
> > 
> > It's been in Linus' tree for a while now.
> 
> OK, so I merged the two patches into clk-next, then merged clk-next into
> next-20131224 and the merge is super trivial to resolve. So I propose
> that we just let it get resolved in linux-next the usual way.
> 
> Any objections? If not I'll take these two patches into clk-next.

Did you merged these patches into clk-next? Unfortunately I couldn't
find them (clk-next, next).

I am asking because I want to send patches with support for S2MPS14
clock (based on these patches).

Best regards,
Krzysztof


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH RESEND 1/4] clk: clk-s2mps11: Refactor for including support for other MFD clocks

2014-01-29 Thread Krzysztof Kozlowski
Hi,

 
 Quoting Mark Brown (2013-12-31 08:09:16)
  On Mon, Dec 30, 2013 at 09:33:50AM +0530, Tushar Behera wrote:
  
   Commit 1b1ccee1e821 mfd: s2mps11: Fix build after regmap field rename
   in sec-core.c is also touching this file, which is in Mark's tree
   right now. If I rebase
  
  It's been in Linus' tree for a while now.
 
 OK, so I merged the two patches into clk-next, then merged clk-next into
 next-20131224 and the merge is super trivial to resolve. So I propose
 that we just let it get resolved in linux-next the usual way.
 
 Any objections? If not I'll take these two patches into clk-next.

Did you merged these patches into clk-next? Unfortunately I couldn't
find them (clk-next, next).

I am asking because I want to send patches with support for S2MPS14
clock (based on these patches).

Best regards,
Krzysztof


--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH RESEND 1/4] clk: clk-s2mps11: Refactor for including support for other MFD clocks

2013-12-31 Thread Mike Turquette
Quoting Mark Brown (2013-12-31 08:09:16)
> On Mon, Dec 30, 2013 at 09:33:50AM +0530, Tushar Behera wrote:
> 
> > Commit 1b1ccee1e821 "mfd: s2mps11: Fix build after regmap field rename
> > in sec-core.c" is also touching this file, which is in Mark's tree
> > right now. If I rebase
> 
> It's been in Linus' tree for a while now.

OK, so I merged the two patches into clk-next, then merged clk-next into
next-20131224 and the merge is super trivial to resolve. So I propose
that we just let it get resolved in linux-next the usual way.

Any objections? If not I'll take these two patches into clk-next.

Regards,
Mike
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH RESEND 1/4] clk: clk-s2mps11: Refactor for including support for other MFD clocks

2013-12-31 Thread Mark Brown
On Mon, Dec 30, 2013 at 09:33:50AM +0530, Tushar Behera wrote:

> Commit 1b1ccee1e821 "mfd: s2mps11: Fix build after regmap field rename
> in sec-core.c" is also touching this file, which is in Mark's tree
> right now. If I rebase

It's been in Linus' tree for a while now.


signature.asc
Description: Digital signature


Re: [PATCH RESEND 1/4] clk: clk-s2mps11: Refactor for including support for other MFD clocks

2013-12-31 Thread Mark Brown
On Mon, Dec 30, 2013 at 09:33:50AM +0530, Tushar Behera wrote:

 Commit 1b1ccee1e821 mfd: s2mps11: Fix build after regmap field rename
 in sec-core.c is also touching this file, which is in Mark's tree
 right now. If I rebase

It's been in Linus' tree for a while now.


signature.asc
Description: Digital signature


Re: [PATCH RESEND 1/4] clk: clk-s2mps11: Refactor for including support for other MFD clocks

2013-12-31 Thread Mike Turquette
Quoting Mark Brown (2013-12-31 08:09:16)
 On Mon, Dec 30, 2013 at 09:33:50AM +0530, Tushar Behera wrote:
 
  Commit 1b1ccee1e821 mfd: s2mps11: Fix build after regmap field rename
  in sec-core.c is also touching this file, which is in Mark's tree
  right now. If I rebase
 
 It's been in Linus' tree for a while now.

OK, so I merged the two patches into clk-next, then merged clk-next into
next-20131224 and the merge is super trivial to resolve. So I propose
that we just let it get resolved in linux-next the usual way.

Any objections? If not I'll take these two patches into clk-next.

Regards,
Mike
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH RESEND 1/4] clk: clk-s2mps11: Refactor for including support for other MFD clocks

2013-12-29 Thread Tushar Behera
On 30 December 2013 03:47, Mike Turquette  wrote:
> Quoting Tushar Behera (2013-12-26 02:18:58)
>> The clocks in S2MPS11 and S5M8767 are managed in the same way, baring
>> a difference in the register offset. It would be better to update
>> existing S2MPS11 driver to support the clocks in S5M8767, rather than
>> creating an almost duplicate driver altogether.
>
> Can you rebase patches #1 & #2 onto clk-next? They do not apply cleanly
> as-is.
>
> Regards,
> Mike
>

Commit 1b1ccee1e821 "mfd: s2mps11: Fix build after regmap field rename
in sec-core.c" is also touching this file, which is in Mark's tree
right now. If I rebase
this patch on top clk-next, I am getting conflicts when I merge that
with linux-next.
Let me know how you want to handle this.

I am attaching the rebased patches for your reference.
If you want, I will send them again through git-send-email.

-- 
Tushar Behera
From f4f730d4bea3848d21e487aa08ff019c588e6ecd Mon Sep 17 00:00:00 2001
From: Tushar Behera 
Date: Wed, 30 Oct 2013 15:55:44 +0530
Subject: [PATCH 1/4] clk: clk-s2mps11: Refactor for including support for
 other MFD clocks

The clocks in S2MPS11 and S5M8767 are managed in the same way, baring
a difference in the register offset. It would be better to update
existing S2MPS11 driver to support the clocks in S5M8767, rather than
to create an almost duplicate driver altogether.

Signed-off-by: Tushar Behera 
Reviewed-by: Tomasz Figa 
---
 drivers/clk/clk-s2mps11.c |   20 
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/drivers/clk/clk-s2mps11.c b/drivers/clk/clk-s2mps11.c
index 7be41e6..494d1df 100644
--- a/drivers/clk/clk-s2mps11.c
+++ b/drivers/clk/clk-s2mps11.c
@@ -48,6 +48,7 @@ struct s2mps11_clk {
 	struct clk_lookup *lookup;
 	u32 mask;
 	bool enabled;
+	unsigned int reg;
 };
 
 static struct s2mps11_clk *to_s2mps11_clk(struct clk_hw *hw)
@@ -61,7 +62,7 @@ static int s2mps11_clk_prepare(struct clk_hw *hw)
 	int ret;
 
 	ret = regmap_update_bits(s2mps11->iodev->regmap,
-S2MPS11_REG_RTC_CTRL,
+ s2mps11->reg,
  s2mps11->mask, s2mps11->mask);
 	if (!ret)
 		s2mps11->enabled = true;
@@ -74,7 +75,7 @@ static void s2mps11_clk_unprepare(struct clk_hw *hw)
 	struct s2mps11_clk *s2mps11 = to_s2mps11_clk(hw);
 	int ret;
 
-	ret = regmap_update_bits(s2mps11->iodev->regmap, S2MPS11_REG_RTC_CTRL,
+	ret = regmap_update_bits(s2mps11->iodev->regmap, s2mps11->reg,
 			   s2mps11->mask, ~s2mps11->mask);
 
 	if (!ret)
@@ -155,6 +156,7 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
 	struct sec_pmic_dev *iodev = dev_get_drvdata(pdev->dev.parent);
 	struct s2mps11_clk *s2mps11_clks, *s2mps11_clk;
 	struct device_node *clk_np = NULL;
+	unsigned int s2mps11_reg;
 	int i, ret = 0;
 	u32 val;
 
@@ -169,13 +171,23 @@ static int s2mps11_clk_probe(struct platform_device *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;
+		break;
+	default:
+		dev_err(>dev, "Invalid device type\n");
+		return -EINVAL;
+	};
+
 	for (i = 0; i < S2MPS11_CLKS_NUM; i++, s2mps11_clk++) {
 		s2mps11_clk->iodev = iodev;
 		s2mps11_clk->hw.init = _clks_init[i];
 		s2mps11_clk->mask = 1 << i;
+		s2mps11_clk->reg = s2mps11_reg;
 
 		ret = regmap_read(s2mps11_clk->iodev->regmap,
-  S2MPS11_REG_RTC_CTRL, );
+  s2mps11_clk->reg, );
 		if (ret < 0)
 			goto err_reg;
 
@@ -241,7 +253,7 @@ static int s2mps11_clk_remove(struct platform_device *pdev)
 }
 
 static const struct platform_device_id s2mps11_clk_id[] = {
-	{ "s2mps11-clk", 0},
+	{ "s2mps11-clk", S2MPS11X},
 	{ },
 };
 MODULE_DEVICE_TABLE(platform, s2mps11_clk_id);
-- 
1.7.9.5

From 5f3843da7bc71d126c0cce7a8e88aab1850c4b9c Mon Sep 17 00:00:00 2001
From: Tushar Behera 
Date: Wed, 30 Oct 2013 15:56:27 +0530
Subject: [PATCH 2/4] clk: clk-s2mps11: Add support for clocks in S5M8767 MFD

Since clock operation within S2MPS11 and S5M8767 are similar, we can
support both the devices within a single driver.

Signed-off-by: Tushar Behera 
Reviewed-by: Tomasz Figa 
---
 drivers/clk/Kconfig   |6 --
 drivers/clk/clk-s2mps11.c |5 +
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
index 407cffb..99332da 100644
--- a/drivers/clk/Kconfig
+++ b/drivers/clk/Kconfig
@@ -65,10 +65,12 @@ config COMMON_CLK_SI570
 	  clock generators.
 
 config COMMON_CLK_S2MPS11
-	tristate "Clock driver for S2MPS11 MFD"
+	tristate "Clock driver for S2MPS11/S5M8767 MFD"
 	depends on MFD_SEC_CORE
 	---help---
-	  This driver supports S2MPS11 crystal oscillator clock.
+	  This driver supports S2MPS11/S5M8767 crystal oscillator clock. These
+	  multi-function devices have 3 fixed-rate oscillators, clocked at
+	  32KHz each.
 
 config CLK_TWL6040
 	tristate "External McPDM functional clock from twl6040"
diff --git a/drivers/clk/clk-s2mps11.c b/drivers/clk/clk-s2mps11.c
index 494d1df..37e7285 100644
--- 

Re: [PATCH RESEND 1/4] clk: clk-s2mps11: Refactor for including support for other MFD clocks

2013-12-29 Thread Mike Turquette
Quoting Tushar Behera (2013-12-26 02:18:58)
> The clocks in S2MPS11 and S5M8767 are managed in the same way, baring
> a difference in the register offset. It would be better to update
> existing S2MPS11 driver to support the clocks in S5M8767, rather than
> creating an almost duplicate driver altogether.

Can you rebase patches #1 & #2 onto clk-next? They do not apply cleanly
as-is.

Regards,
Mike

> 
> Signed-off-by: Tushar Behera 
> Reviewed-by: Tomasz Figa 
> Reviewed-by: Yadwinder Singh Brar 
> CC: Mike Turquette 
> ---
>  drivers/clk/clk-s2mps11.c |   20 
>  1 file changed, 16 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/clk/clk-s2mps11.c b/drivers/clk/clk-s2mps11.c
> index 00a3abe..43e25bb 100644
> --- a/drivers/clk/clk-s2mps11.c
> +++ b/drivers/clk/clk-s2mps11.c
> @@ -48,6 +48,7 @@ struct s2mps11_clk {
> struct clk_lookup *lookup;
> u32 mask;
> bool enabled;
> +   unsigned int reg;
>  };
>  
>  static struct s2mps11_clk *to_s2mps11_clk(struct clk_hw *hw)
> @@ -61,7 +62,7 @@ static int s2mps11_clk_prepare(struct clk_hw *hw)
> int ret;
>  
> ret = regmap_update_bits(s2mps11->iodev->regmap_pmic,
> -   S2MPS11_REG_RTC_CTRL,
> +s2mps11->reg,
>  s2mps11->mask, s2mps11->mask);
> if (!ret)
> s2mps11->enabled = true;
> @@ -74,7 +75,7 @@ static void s2mps11_clk_unprepare(struct clk_hw *hw)
> struct s2mps11_clk *s2mps11 = to_s2mps11_clk(hw);
> int ret;
>  
> -   ret = regmap_update_bits(s2mps11->iodev->regmap_pmic, 
> S2MPS11_REG_RTC_CTRL,
> +   ret = regmap_update_bits(s2mps11->iodev->regmap_pmic, s2mps11->reg,
>s2mps11->mask, ~s2mps11->mask);
>  
> if (!ret)
> @@ -155,6 +156,7 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
> struct sec_pmic_dev *iodev = dev_get_drvdata(pdev->dev.parent);
> struct s2mps11_clk *s2mps11_clks, *s2mps11_clk;
> struct device_node *clk_np = NULL;
> +   unsigned int s2mps11_reg;
> int i, ret = 0;
> u32 val;
>  
> @@ -169,13 +171,23 @@ static int s2mps11_clk_probe(struct platform_device 
> *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;
> +   break;
> +   default:
> +   dev_err(>dev, "Invalid device type\n");
> +   return -EINVAL;
> +   };
> +
> for (i = 0; i < S2MPS11_CLKS_NUM; i++, s2mps11_clk++) {
> s2mps11_clk->iodev = iodev;
> s2mps11_clk->hw.init = _clks_init[i];
> s2mps11_clk->mask = 1 << i;
> +   s2mps11_clk->reg = s2mps11_reg;
>  
> ret = regmap_read(s2mps11_clk->iodev->regmap_pmic,
> - S2MPS11_REG_RTC_CTRL, );
> + s2mps11_clk->reg, );
> if (ret < 0)
> goto err_reg;
>  
> @@ -241,7 +253,7 @@ static int s2mps11_clk_remove(struct platform_device 
> *pdev)
>  }
>  
>  static const struct platform_device_id s2mps11_clk_id[] = {
> -   { "s2mps11-clk", 0},
> +   { "s2mps11-clk", S2MPS11X},
> { },
>  };
>  MODULE_DEVICE_TABLE(platform, s2mps11_clk_id);
> -- 
> 1.7.9.5
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH RESEND 1/4] clk: clk-s2mps11: Refactor for including support for other MFD clocks

2013-12-29 Thread Mike Turquette
Quoting Tushar Behera (2013-12-26 02:18:58)
 The clocks in S2MPS11 and S5M8767 are managed in the same way, baring
 a difference in the register offset. It would be better to update
 existing S2MPS11 driver to support the clocks in S5M8767, rather than
 creating an almost duplicate driver altogether.

Can you rebase patches #1  #2 onto clk-next? They do not apply cleanly
as-is.

Regards,
Mike

 
 Signed-off-by: Tushar Behera tushar.beh...@linaro.org
 Reviewed-by: Tomasz Figa t.f...@samsung.com
 Reviewed-by: Yadwinder Singh Brar yadi.b...@samsung.com
 CC: Mike Turquette mturque...@linaro.org
 ---
  drivers/clk/clk-s2mps11.c |   20 
  1 file changed, 16 insertions(+), 4 deletions(-)
 
 diff --git a/drivers/clk/clk-s2mps11.c b/drivers/clk/clk-s2mps11.c
 index 00a3abe..43e25bb 100644
 --- a/drivers/clk/clk-s2mps11.c
 +++ b/drivers/clk/clk-s2mps11.c
 @@ -48,6 +48,7 @@ struct s2mps11_clk {
 struct clk_lookup *lookup;
 u32 mask;
 bool enabled;
 +   unsigned int reg;
  };
  
  static struct s2mps11_clk *to_s2mps11_clk(struct clk_hw *hw)
 @@ -61,7 +62,7 @@ static int s2mps11_clk_prepare(struct clk_hw *hw)
 int ret;
  
 ret = regmap_update_bits(s2mps11-iodev-regmap_pmic,
 -   S2MPS11_REG_RTC_CTRL,
 +s2mps11-reg,
  s2mps11-mask, s2mps11-mask);
 if (!ret)
 s2mps11-enabled = true;
 @@ -74,7 +75,7 @@ static void s2mps11_clk_unprepare(struct clk_hw *hw)
 struct s2mps11_clk *s2mps11 = to_s2mps11_clk(hw);
 int ret;
  
 -   ret = regmap_update_bits(s2mps11-iodev-regmap_pmic, 
 S2MPS11_REG_RTC_CTRL,
 +   ret = regmap_update_bits(s2mps11-iodev-regmap_pmic, s2mps11-reg,
s2mps11-mask, ~s2mps11-mask);
  
 if (!ret)
 @@ -155,6 +156,7 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
 struct sec_pmic_dev *iodev = dev_get_drvdata(pdev-dev.parent);
 struct s2mps11_clk *s2mps11_clks, *s2mps11_clk;
 struct device_node *clk_np = NULL;
 +   unsigned int s2mps11_reg;
 int i, ret = 0;
 u32 val;
  
 @@ -169,13 +171,23 @@ static int s2mps11_clk_probe(struct platform_device 
 *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;
 +   break;
 +   default:
 +   dev_err(pdev-dev, Invalid device type\n);
 +   return -EINVAL;
 +   };
 +
 for (i = 0; i  S2MPS11_CLKS_NUM; i++, s2mps11_clk++) {
 s2mps11_clk-iodev = iodev;
 s2mps11_clk-hw.init = s2mps11_clks_init[i];
 s2mps11_clk-mask = 1  i;
 +   s2mps11_clk-reg = s2mps11_reg;
  
 ret = regmap_read(s2mps11_clk-iodev-regmap_pmic,
 - S2MPS11_REG_RTC_CTRL, val);
 + s2mps11_clk-reg, val);
 if (ret  0)
 goto err_reg;
  
 @@ -241,7 +253,7 @@ static int s2mps11_clk_remove(struct platform_device 
 *pdev)
  }
  
  static const struct platform_device_id s2mps11_clk_id[] = {
 -   { s2mps11-clk, 0},
 +   { s2mps11-clk, S2MPS11X},
 { },
  };
  MODULE_DEVICE_TABLE(platform, s2mps11_clk_id);
 -- 
 1.7.9.5
 
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH RESEND 1/4] clk: clk-s2mps11: Refactor for including support for other MFD clocks

2013-12-29 Thread Tushar Behera
On 30 December 2013 03:47, Mike Turquette mturque...@linaro.org wrote:
 Quoting Tushar Behera (2013-12-26 02:18:58)
 The clocks in S2MPS11 and S5M8767 are managed in the same way, baring
 a difference in the register offset. It would be better to update
 existing S2MPS11 driver to support the clocks in S5M8767, rather than
 creating an almost duplicate driver altogether.

 Can you rebase patches #1  #2 onto clk-next? They do not apply cleanly
 as-is.

 Regards,
 Mike


Commit 1b1ccee1e821 mfd: s2mps11: Fix build after regmap field rename
in sec-core.c is also touching this file, which is in Mark's tree
right now. If I rebase
this patch on top clk-next, I am getting conflicts when I merge that
with linux-next.
Let me know how you want to handle this.

I am attaching the rebased patches for your reference.
If you want, I will send them again through git-send-email.

-- 
Tushar Behera
From f4f730d4bea3848d21e487aa08ff019c588e6ecd Mon Sep 17 00:00:00 2001
From: Tushar Behera tushar.beh...@linaro.org
Date: Wed, 30 Oct 2013 15:55:44 +0530
Subject: [PATCH 1/4] clk: clk-s2mps11: Refactor for including support for
 other MFD clocks

The clocks in S2MPS11 and S5M8767 are managed in the same way, baring
a difference in the register offset. It would be better to update
existing S2MPS11 driver to support the clocks in S5M8767, rather than
to create an almost duplicate driver altogether.

Signed-off-by: Tushar Behera tushar.beh...@linaro.org
Reviewed-by: Tomasz Figa t.f...@samsung.com
---
 drivers/clk/clk-s2mps11.c |   20 
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/drivers/clk/clk-s2mps11.c b/drivers/clk/clk-s2mps11.c
index 7be41e6..494d1df 100644
--- a/drivers/clk/clk-s2mps11.c
+++ b/drivers/clk/clk-s2mps11.c
@@ -48,6 +48,7 @@ struct s2mps11_clk {
 	struct clk_lookup *lookup;
 	u32 mask;
 	bool enabled;
+	unsigned int reg;
 };
 
 static struct s2mps11_clk *to_s2mps11_clk(struct clk_hw *hw)
@@ -61,7 +62,7 @@ static int s2mps11_clk_prepare(struct clk_hw *hw)
 	int ret;
 
 	ret = regmap_update_bits(s2mps11-iodev-regmap,
-S2MPS11_REG_RTC_CTRL,
+ s2mps11-reg,
  s2mps11-mask, s2mps11-mask);
 	if (!ret)
 		s2mps11-enabled = true;
@@ -74,7 +75,7 @@ static void s2mps11_clk_unprepare(struct clk_hw *hw)
 	struct s2mps11_clk *s2mps11 = to_s2mps11_clk(hw);
 	int ret;
 
-	ret = regmap_update_bits(s2mps11-iodev-regmap, S2MPS11_REG_RTC_CTRL,
+	ret = regmap_update_bits(s2mps11-iodev-regmap, s2mps11-reg,
 			   s2mps11-mask, ~s2mps11-mask);
 
 	if (!ret)
@@ -155,6 +156,7 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
 	struct sec_pmic_dev *iodev = dev_get_drvdata(pdev-dev.parent);
 	struct s2mps11_clk *s2mps11_clks, *s2mps11_clk;
 	struct device_node *clk_np = NULL;
+	unsigned int s2mps11_reg;
 	int i, ret = 0;
 	u32 val;
 
@@ -169,13 +171,23 @@ static int s2mps11_clk_probe(struct platform_device *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;
+		break;
+	default:
+		dev_err(pdev-dev, Invalid device type\n);
+		return -EINVAL;
+	};
+
 	for (i = 0; i  S2MPS11_CLKS_NUM; i++, s2mps11_clk++) {
 		s2mps11_clk-iodev = iodev;
 		s2mps11_clk-hw.init = s2mps11_clks_init[i];
 		s2mps11_clk-mask = 1  i;
+		s2mps11_clk-reg = s2mps11_reg;
 
 		ret = regmap_read(s2mps11_clk-iodev-regmap,
-  S2MPS11_REG_RTC_CTRL, val);
+  s2mps11_clk-reg, val);
 		if (ret  0)
 			goto err_reg;
 
@@ -241,7 +253,7 @@ static int s2mps11_clk_remove(struct platform_device *pdev)
 }
 
 static const struct platform_device_id s2mps11_clk_id[] = {
-	{ s2mps11-clk, 0},
+	{ s2mps11-clk, S2MPS11X},
 	{ },
 };
 MODULE_DEVICE_TABLE(platform, s2mps11_clk_id);
-- 
1.7.9.5

From 5f3843da7bc71d126c0cce7a8e88aab1850c4b9c Mon Sep 17 00:00:00 2001
From: Tushar Behera tushar.beh...@linaro.org
Date: Wed, 30 Oct 2013 15:56:27 +0530
Subject: [PATCH 2/4] clk: clk-s2mps11: Add support for clocks in S5M8767 MFD

Since clock operation within S2MPS11 and S5M8767 are similar, we can
support both the devices within a single driver.

Signed-off-by: Tushar Behera tushar.beh...@linaro.org
Reviewed-by: Tomasz Figa t.f...@samsung.com
---
 drivers/clk/Kconfig   |6 --
 drivers/clk/clk-s2mps11.c |5 +
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
index 407cffb..99332da 100644
--- a/drivers/clk/Kconfig
+++ b/drivers/clk/Kconfig
@@ -65,10 +65,12 @@ config COMMON_CLK_SI570
 	  clock generators.
 
 config COMMON_CLK_S2MPS11
-	tristate Clock driver for S2MPS11 MFD
+	tristate Clock driver for S2MPS11/S5M8767 MFD
 	depends on MFD_SEC_CORE
 	---help---
-	  This driver supports S2MPS11 crystal oscillator clock.
+	  This driver supports S2MPS11/S5M8767 crystal oscillator clock. These
+	  multi-function devices have 3 fixed-rate oscillators, clocked at
+	  32KHz each.
 
 config CLK_TWL6040
 	tristate External McPDM functional clock from twl6040

[PATCH RESEND 1/4] clk: clk-s2mps11: Refactor for including support for other MFD clocks

2013-12-26 Thread Tushar Behera
The clocks in S2MPS11 and S5M8767 are managed in the same way, baring
a difference in the register offset. It would be better to update
existing S2MPS11 driver to support the clocks in S5M8767, rather than
creating an almost duplicate driver altogether.

Signed-off-by: Tushar Behera 
Reviewed-by: Tomasz Figa 
Reviewed-by: Yadwinder Singh Brar 
CC: Mike Turquette 
---
 drivers/clk/clk-s2mps11.c |   20 
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/drivers/clk/clk-s2mps11.c b/drivers/clk/clk-s2mps11.c
index 00a3abe..43e25bb 100644
--- a/drivers/clk/clk-s2mps11.c
+++ b/drivers/clk/clk-s2mps11.c
@@ -48,6 +48,7 @@ struct s2mps11_clk {
struct clk_lookup *lookup;
u32 mask;
bool enabled;
+   unsigned int reg;
 };
 
 static struct s2mps11_clk *to_s2mps11_clk(struct clk_hw *hw)
@@ -61,7 +62,7 @@ static int s2mps11_clk_prepare(struct clk_hw *hw)
int ret;
 
ret = regmap_update_bits(s2mps11->iodev->regmap_pmic,
-   S2MPS11_REG_RTC_CTRL,
+s2mps11->reg,
 s2mps11->mask, s2mps11->mask);
if (!ret)
s2mps11->enabled = true;
@@ -74,7 +75,7 @@ static void s2mps11_clk_unprepare(struct clk_hw *hw)
struct s2mps11_clk *s2mps11 = to_s2mps11_clk(hw);
int ret;
 
-   ret = regmap_update_bits(s2mps11->iodev->regmap_pmic, 
S2MPS11_REG_RTC_CTRL,
+   ret = regmap_update_bits(s2mps11->iodev->regmap_pmic, s2mps11->reg,
   s2mps11->mask, ~s2mps11->mask);
 
if (!ret)
@@ -155,6 +156,7 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
struct sec_pmic_dev *iodev = dev_get_drvdata(pdev->dev.parent);
struct s2mps11_clk *s2mps11_clks, *s2mps11_clk;
struct device_node *clk_np = NULL;
+   unsigned int s2mps11_reg;
int i, ret = 0;
u32 val;
 
@@ -169,13 +171,23 @@ static int s2mps11_clk_probe(struct platform_device *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;
+   break;
+   default:
+   dev_err(>dev, "Invalid device type\n");
+   return -EINVAL;
+   };
+
for (i = 0; i < S2MPS11_CLKS_NUM; i++, s2mps11_clk++) {
s2mps11_clk->iodev = iodev;
s2mps11_clk->hw.init = _clks_init[i];
s2mps11_clk->mask = 1 << i;
+   s2mps11_clk->reg = s2mps11_reg;
 
ret = regmap_read(s2mps11_clk->iodev->regmap_pmic,
- S2MPS11_REG_RTC_CTRL, );
+ s2mps11_clk->reg, );
if (ret < 0)
goto err_reg;
 
@@ -241,7 +253,7 @@ static int s2mps11_clk_remove(struct platform_device *pdev)
 }
 
 static const struct platform_device_id s2mps11_clk_id[] = {
-   { "s2mps11-clk", 0},
+   { "s2mps11-clk", S2MPS11X},
{ },
 };
 MODULE_DEVICE_TABLE(platform, s2mps11_clk_id);
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH RESEND 1/4] clk: clk-s2mps11: Refactor for including support for other MFD clocks

2013-12-26 Thread Tushar Behera
The clocks in S2MPS11 and S5M8767 are managed in the same way, baring
a difference in the register offset. It would be better to update
existing S2MPS11 driver to support the clocks in S5M8767, rather than
creating an almost duplicate driver altogether.

Signed-off-by: Tushar Behera tushar.beh...@linaro.org
Reviewed-by: Tomasz Figa t.f...@samsung.com
Reviewed-by: Yadwinder Singh Brar yadi.b...@samsung.com
CC: Mike Turquette mturque...@linaro.org
---
 drivers/clk/clk-s2mps11.c |   20 
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/drivers/clk/clk-s2mps11.c b/drivers/clk/clk-s2mps11.c
index 00a3abe..43e25bb 100644
--- a/drivers/clk/clk-s2mps11.c
+++ b/drivers/clk/clk-s2mps11.c
@@ -48,6 +48,7 @@ struct s2mps11_clk {
struct clk_lookup *lookup;
u32 mask;
bool enabled;
+   unsigned int reg;
 };
 
 static struct s2mps11_clk *to_s2mps11_clk(struct clk_hw *hw)
@@ -61,7 +62,7 @@ static int s2mps11_clk_prepare(struct clk_hw *hw)
int ret;
 
ret = regmap_update_bits(s2mps11-iodev-regmap_pmic,
-   S2MPS11_REG_RTC_CTRL,
+s2mps11-reg,
 s2mps11-mask, s2mps11-mask);
if (!ret)
s2mps11-enabled = true;
@@ -74,7 +75,7 @@ static void s2mps11_clk_unprepare(struct clk_hw *hw)
struct s2mps11_clk *s2mps11 = to_s2mps11_clk(hw);
int ret;
 
-   ret = regmap_update_bits(s2mps11-iodev-regmap_pmic, 
S2MPS11_REG_RTC_CTRL,
+   ret = regmap_update_bits(s2mps11-iodev-regmap_pmic, s2mps11-reg,
   s2mps11-mask, ~s2mps11-mask);
 
if (!ret)
@@ -155,6 +156,7 @@ static int s2mps11_clk_probe(struct platform_device *pdev)
struct sec_pmic_dev *iodev = dev_get_drvdata(pdev-dev.parent);
struct s2mps11_clk *s2mps11_clks, *s2mps11_clk;
struct device_node *clk_np = NULL;
+   unsigned int s2mps11_reg;
int i, ret = 0;
u32 val;
 
@@ -169,13 +171,23 @@ static int s2mps11_clk_probe(struct platform_device *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;
+   break;
+   default:
+   dev_err(pdev-dev, Invalid device type\n);
+   return -EINVAL;
+   };
+
for (i = 0; i  S2MPS11_CLKS_NUM; i++, s2mps11_clk++) {
s2mps11_clk-iodev = iodev;
s2mps11_clk-hw.init = s2mps11_clks_init[i];
s2mps11_clk-mask = 1  i;
+   s2mps11_clk-reg = s2mps11_reg;
 
ret = regmap_read(s2mps11_clk-iodev-regmap_pmic,
- S2MPS11_REG_RTC_CTRL, val);
+ s2mps11_clk-reg, val);
if (ret  0)
goto err_reg;
 
@@ -241,7 +253,7 @@ static int s2mps11_clk_remove(struct platform_device *pdev)
 }
 
 static const struct platform_device_id s2mps11_clk_id[] = {
-   { s2mps11-clk, 0},
+   { s2mps11-clk, S2MPS11X},
{ },
 };
 MODULE_DEVICE_TABLE(platform, s2mps11_clk_id);
-- 
1.7.9.5

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/