linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V3  0/5] W1: Support onewire master on i.MX53
@ 2013-01-29 15:46 Martin Fuzzey
  2013-01-29 15:46 ` [PATCH V3 1/5] W1: Add device tree support to MXC onewire master Martin Fuzzey
                   ` (5 more replies)
  0 siblings, 6 replies; 8+ messages in thread
From: Martin Fuzzey @ 2013-01-29 15:46 UTC (permalink / raw)
  To: linux-arm-kernel

W1: Support onewire master on i.MX53
	* Add device tree and pinctrl support to the MXC master driver
	* Convert to use devm_
	* Add i.MX53 clocks
	* Add i.MX53 device tree entries

Changes since V2
* Add documentation on device tree binding
* Add Acked-bys from Sascha and Evgeniy

Changes since V1
* Applied comments from Sascha Hauer:
	* Move patch converting driver to devm_ before the one adding devm_ based pinctrl
	* Fix existing unbalanced clk_prepare_enable/clk_disable_unprepare
	in probe error path

* Place DT patch last since it includes pinctrls for driver.

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

* [PATCH V3 1/5] W1: Add device tree support to MXC onewire master.
  2013-01-29 15:46 [PATCH V3 0/5] W1: Support onewire master on i.MX53 Martin Fuzzey
@ 2013-01-29 15:46 ` Martin Fuzzey
  2013-01-29 15:46 ` [PATCH V3 2/5] ARM: i.MX53: Add clocks for i.mx53 " Martin Fuzzey
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Martin Fuzzey @ 2013-01-29 15:46 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Martin Fuzzey <mfuzzey@parkeon.com>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Evgeniy Polyakov <zbr@ioremap.net>
---
 .../devicetree/bindings/w1/fsl-imx-owire.txt       |   20 ++++++++++++++++++++
 drivers/w1/masters/mxc_w1.c                        |    9 ++++++++-
 2 files changed, 28 insertions(+), 1 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/w1/fsl-imx-owire.txt

diff --git a/Documentation/devicetree/bindings/w1/fsl-imx-owire.txt b/Documentation/devicetree/bindings/w1/fsl-imx-owire.txt
new file mode 100644
index 0000000..b6d53b0
--- /dev/null
+++ b/Documentation/devicetree/bindings/w1/fsl-imx-owire.txt
@@ -0,0 +1,20 @@
+* Freescale i.MX One wire bus master controller
+
+Required properties:
+- compatible : should be "fsl,imx21-owire"
+- reg : Address and length of the register set for the device
+
+Optional properties:
+- clocks : phandle of clock that supplies the module (required if platform
+		clock bindings use device tree)
+
+Example:
+
+- From imx53.dtsi:
+owire: owire at 63fa4000 {
+	compatible = "fsl,imx53-owire", "fsl,imx21-owire";
+	reg = <0x63fa4000 0x4000>;
+	clocks = <&clks 159>;
+	status = "disabled";
+};
+
diff --git a/drivers/w1/masters/mxc_w1.c b/drivers/w1/masters/mxc_w1.c
index 708a25f..949e566 100644
--- a/drivers/w1/masters/mxc_w1.c
+++ b/drivers/w1/masters/mxc_w1.c
@@ -186,9 +186,16 @@ static int mxc_w1_remove(struct platform_device *pdev)
 	return 0;
 }
 
+static struct of_device_id mxc_w1_dt_ids[] = {
+	{ .compatible = "fsl,imx21-owire" },
+	{ /* sentinel */ }
+};
+MODULE_DEVICE_TABLE(of, mxc_w1_dt_ids);
+
 static struct platform_driver mxc_w1_driver = {
 	.driver = {
-		   .name = "mxc_w1",
+		.name = "mxc_w1",
+		.of_match_table = mxc_w1_dt_ids,
 	},
 	.probe = mxc_w1_probe,
 	.remove = mxc_w1_remove,

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

* [PATCH V3 2/5] ARM: i.MX53: Add clocks for i.mx53 onewire master.
  2013-01-29 15:46 [PATCH V3 0/5] W1: Support onewire master on i.MX53 Martin Fuzzey
  2013-01-29 15:46 ` [PATCH V3 1/5] W1: Add device tree support to MXC onewire master Martin Fuzzey
@ 2013-01-29 15:46 ` Martin Fuzzey
  2013-01-29 15:46 ` [PATCH V3 3/5] W1: Convert MXC onewire master to devm_ functions Martin Fuzzey
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Martin Fuzzey @ 2013-01-29 15:46 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Martin Fuzzey <mfuzzey@parkeon.com>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Evgeniy Polyakov <zbr@ioremap.net>
---
 .../devicetree/bindings/clock/imx5-clock.txt       |    1 +
 arch/arm/mach-imx/clk-imx51-imx53.c                |    4 +++-
 2 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/Documentation/devicetree/bindings/clock/imx5-clock.txt b/Documentation/devicetree/bindings/clock/imx5-clock.txt
index 04ad478..2a0c904 100644
--- a/Documentation/devicetree/bindings/clock/imx5-clock.txt
+++ b/Documentation/devicetree/bindings/clock/imx5-clock.txt
@@ -171,6 +171,7 @@ clocks and IDs.
 	can_sel			156
 	can1_serial_gate	157
 	can1_ipg_gate		158
+	owire_gate		159
 
 Examples (for mx53):
 
diff --git a/arch/arm/mach-imx/clk-imx51-imx53.c b/arch/arm/mach-imx/clk-imx51-imx53.c
index 579023f..7ff293b 100644
--- a/arch/arm/mach-imx/clk-imx51-imx53.c
+++ b/arch/arm/mach-imx/clk-imx51-imx53.c
@@ -83,6 +83,7 @@ enum imx5_clks {
 	ssi2_root_gate, ssi3_root_gate, ssi_ext1_gate, ssi_ext2_gate,
 	epit1_ipg_gate, epit1_hf_gate, epit2_ipg_gate, epit2_hf_gate,
 	can_sel, can1_serial_gate, can1_ipg_gate,
+	owire_gate,
 	clk_max
 };
 
@@ -233,12 +234,13 @@ static void __init mx5_clocks_common_init(unsigned long rate_ckil,
 	clk[epit1_hf_gate] = imx_clk_gate2("epit1_hf_gate", "per_root", MXC_CCM_CCGR2, 4);
 	clk[epit2_ipg_gate] = imx_clk_gate2("epit2_ipg_gate", "ipg", MXC_CCM_CCGR2, 6);
 	clk[epit2_hf_gate] = imx_clk_gate2("epit2_hf_gate", "per_root", MXC_CCM_CCGR2, 8);
+	clk[owire_gate] = imx_clk_gate2("owire_gate", "per_root", MXC_CCM_CCGR2, 22);
 
 	for (i = 0; i < ARRAY_SIZE(clk); i++)
 		if (IS_ERR(clk[i]))
 			pr_err("i.MX5 clk %d: register failed with %ld\n",
 				i, PTR_ERR(clk[i]));
-	
+
 	clk_register_clkdev(clk[gpt_hf_gate], "per", "imx-gpt.0");
 	clk_register_clkdev(clk[gpt_ipg_gate], "ipg", "imx-gpt.0");
 	clk_register_clkdev(clk[uart1_per_gate], "per", "imx21-uart.0");

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

* [PATCH V3 3/5] W1: Convert MXC onewire master to devm_ functions.
  2013-01-29 15:46 [PATCH V3 0/5] W1: Support onewire master on i.MX53 Martin Fuzzey
  2013-01-29 15:46 ` [PATCH V3 1/5] W1: Add device tree support to MXC onewire master Martin Fuzzey
  2013-01-29 15:46 ` [PATCH V3 2/5] ARM: i.MX53: Add clocks for i.mx53 " Martin Fuzzey
@ 2013-01-29 15:46 ` Martin Fuzzey
  2013-01-29 15:46 ` [PATCH V3 4/5] W1: Add pinctrl support to MXC onewire master Martin Fuzzey
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Martin Fuzzey @ 2013-01-29 15:46 UTC (permalink / raw)
  To: linux-arm-kernel

While doing this fix missing clk_disable_unprepare in error path.

Signed-off-by: Martin Fuzzey <mfuzzey@parkeon.com>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Evgeniy Polyakov <zbr@ioremap.net>
---
 drivers/w1/masters/mxc_w1.c |   26 ++++++--------------------
 1 files changed, 6 insertions(+), 20 deletions(-)

diff --git a/drivers/w1/masters/mxc_w1.c b/drivers/w1/masters/mxc_w1.c
index 949e566..317b2bc 100644
--- a/drivers/w1/masters/mxc_w1.c
+++ b/drivers/w1/masters/mxc_w1.c
@@ -117,7 +117,7 @@ static int mxc_w1_probe(struct platform_device *pdev)
 	if (!mdev)
 		return -ENOMEM;
 
-	mdev->clk = clk_get(&pdev->dev, NULL);
+	mdev->clk = devm_clk_get(&pdev->dev, NULL);
 	if (IS_ERR(mdev->clk)) {
 		err = PTR_ERR(mdev->clk);
 		goto failed_clk;
@@ -125,17 +125,11 @@ static int mxc_w1_probe(struct platform_device *pdev)
 
 	mdev->clkdiv = (clk_get_rate(mdev->clk) / 1000000) - 1;
 
-	res = request_mem_region(res->start, resource_size(res),
-				"mxc_w1");
-	if (!res) {
-		err = -EBUSY;
-		goto failed_req;
-	}
-
-	mdev->regs = ioremap(res->start, resource_size(res));
+	mdev->regs = devm_request_and_ioremap(&pdev->dev, res);
 	if (!mdev->regs) {
 		dev_err(&pdev->dev, "Cannot map mxc_w1 registers\n");
-		goto failed_ioremap;
+		err = -ENXIO;
+		goto failed_req;
 	}
 
 	clk_prepare_enable(mdev->clk);
@@ -154,11 +148,9 @@ static int mxc_w1_probe(struct platform_device *pdev)
 	return 0;
 
 failed_add:
-	iounmap(mdev->regs);
-failed_ioremap:
-	release_mem_region(res->start, resource_size(res));
+	clk_disable_unprepare(mdev->clk);
+
 failed_req:
-	clk_put(mdev->clk);
 failed_clk:
 	kfree(mdev);
 	return err;
@@ -170,16 +162,10 @@ failed_clk:
 static int mxc_w1_remove(struct platform_device *pdev)
 {
 	struct mxc_w1_device *mdev = platform_get_drvdata(pdev);
-	struct resource *res;
-
-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 
 	w1_remove_master_device(&mdev->bus_master);
 
-	iounmap(mdev->regs);
-	release_mem_region(res->start, resource_size(res));
 	clk_disable_unprepare(mdev->clk);
-	clk_put(mdev->clk);
 
 	platform_set_drvdata(pdev, NULL);
 

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

* [PATCH V3 4/5] W1: Add pinctrl support to MXC onewire master.
  2013-01-29 15:46 [PATCH V3 0/5] W1: Support onewire master on i.MX53 Martin Fuzzey
                   ` (2 preceding siblings ...)
  2013-01-29 15:46 ` [PATCH V3 3/5] W1: Convert MXC onewire master to devm_ functions Martin Fuzzey
@ 2013-01-29 15:46 ` Martin Fuzzey
  2013-01-29 15:46 ` [PATCH V3 5/5] DTS: Add device tree entry for onewire master on i.MX53 Martin Fuzzey
  2013-01-30 13:02 ` [PATCH V3 0/5] W1: Support " Shawn Guo
  5 siblings, 0 replies; 8+ messages in thread
From: Martin Fuzzey @ 2013-01-29 15:46 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Martin Fuzzey <mfuzzey@parkeon.com>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Evgeniy Polyakov <zbr@ioremap.net>
---
 drivers/w1/masters/mxc_w1.c |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/drivers/w1/masters/mxc_w1.c b/drivers/w1/masters/mxc_w1.c
index 317b2bc..48afc2c 100644
--- a/drivers/w1/masters/mxc_w1.c
+++ b/drivers/w1/masters/mxc_w1.c
@@ -24,6 +24,7 @@
 #include <linux/slab.h>
 #include <linux/delay.h>
 #include <linux/io.h>
+#include <linux/pinctrl/consumer.h>
 
 #include "../w1.h"
 #include "../w1_int.h"
@@ -107,6 +108,7 @@ static int mxc_w1_probe(struct platform_device *pdev)
 {
 	struct mxc_w1_device *mdev;
 	struct resource *res;
+	struct pinctrl *pinctrl;
 	int err = 0;
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -117,6 +119,13 @@ static int mxc_w1_probe(struct platform_device *pdev)
 	if (!mdev)
 		return -ENOMEM;
 
+	pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
+	if (IS_ERR(pinctrl)) {
+		err = PTR_ERR(pinctrl);
+		dev_err(&pdev->dev, "failed to get default pinctrl: %d\n", err);
+		goto failed_pin;
+	}
+
 	mdev->clk = devm_clk_get(&pdev->dev, NULL);
 	if (IS_ERR(mdev->clk)) {
 		err = PTR_ERR(mdev->clk);
@@ -152,6 +161,7 @@ failed_add:
 
 failed_req:
 failed_clk:
+failed_pin:
 	kfree(mdev);
 	return err;
 }

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

* [PATCH V3 5/5] DTS: Add device tree entry for onewire master on i.MX53
  2013-01-29 15:46 [PATCH V3 0/5] W1: Support onewire master on i.MX53 Martin Fuzzey
                   ` (3 preceding siblings ...)
  2013-01-29 15:46 ` [PATCH V3 4/5] W1: Add pinctrl support to MXC onewire master Martin Fuzzey
@ 2013-01-29 15:46 ` Martin Fuzzey
  2013-01-30 13:02 ` [PATCH V3 0/5] W1: Support " Shawn Guo
  5 siblings, 0 replies; 8+ messages in thread
From: Martin Fuzzey @ 2013-01-29 15:46 UTC (permalink / raw)
  To: linux-arm-kernel

Signed-off-by: Martin Fuzzey <mfuzzey@parkeon.com>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Evgeniy Polyakov <zbr@ioremap.net>
---
 arch/arm/boot/dts/imx53.dtsi |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/arch/arm/boot/dts/imx53.dtsi b/arch/arm/boot/dts/imx53.dtsi
index edc3f1e..00c957c 100644
--- a/arch/arm/boot/dts/imx53.dtsi
+++ b/arch/arm/boot/dts/imx53.dtsi
@@ -387,6 +387,14 @@
 					};
 				};
 
+				owire {
+					pinctrl_owire_1: owiregrp-1 {
+						fsl,pins = <
+								1166 0x80000000 /* MX53_PAD_GPIO_18__OWIRE_LINE */
+						>;
+					};
+				};
+
 				uart1 {
 					pinctrl_uart1_1: uart1grp-1 {
 						fsl,pins = <
@@ -570,6 +578,13 @@
 				status = "disabled";
 			};
 
+			owire: owire@63fa4000 {
+				compatible = "fsl,imx53-owire", "fsl,imx21-owire";
+				reg = <0x63fa4000 0x4000>;
+				clocks = <&clks 159>;
+				status = "disabled";
+			};
+
 			ecspi2: ecspi at 63fac000 {
 				#address-cells = <1>;
 				#size-cells = <0>;

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

* [PATCH V3  0/5] W1: Support onewire master on i.MX53
  2013-01-29 15:46 [PATCH V3 0/5] W1: Support onewire master on i.MX53 Martin Fuzzey
                   ` (4 preceding siblings ...)
  2013-01-29 15:46 ` [PATCH V3 5/5] DTS: Add device tree entry for onewire master on i.MX53 Martin Fuzzey
@ 2013-01-30 13:02 ` Shawn Guo
  2013-02-05  7:43   ` Shawn Guo
  5 siblings, 1 reply; 8+ messages in thread
From: Shawn Guo @ 2013-01-30 13:02 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Jan 29, 2013 at 04:46:08PM +0100, Martin Fuzzey wrote:
> W1: Support onewire master on i.MX53
> 	* Add device tree and pinctrl support to the MXC master driver
> 	* Convert to use devm_
> 	* Add i.MX53 clocks
> 	* Add i.MX53 device tree entries

Applied, thanks.

I changed the patch order a little bit, moving dts change to the last,
and also fix the patch subject prefix.

      W1: Add device tree support to MXC onewire master.
      W1: Convert MXC onewire master to devm_ functions.
      W1: Add pinctrl support to MXC onewire master.
      ARM: i.MX53: Add clocks for i.mx53 onewire master.
      ARM: dts: Add device tree entry for onewire master on i.MX53

One 'new blank line at EOF' warning on patch #1 gets fixed.

And please remember to add some commit log for patches you submit in
the future.  Empty commit log is not good.

Shawn

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

* [PATCH V3  0/5] W1: Support onewire master on i.MX53
  2013-01-30 13:02 ` [PATCH V3 0/5] W1: Support " Shawn Guo
@ 2013-02-05  7:43   ` Shawn Guo
  0 siblings, 0 replies; 8+ messages in thread
From: Shawn Guo @ 2013-02-05  7:43 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Jan 30, 2013 at 09:02:00PM +0800, Shawn Guo wrote:
> On Tue, Jan 29, 2013 at 04:46:08PM +0100, Martin Fuzzey wrote:
> > W1: Support onewire master on i.MX53
> > 	* Add device tree and pinctrl support to the MXC master driver
> > 	* Convert to use devm_
> > 	* Add i.MX53 clocks
> > 	* Add i.MX53 device tree entries
> 
> Applied, thanks.
> 
> I changed the patch order a little bit, moving dts change to the last,
> and also fix the patch subject prefix.
> 
>       W1: Add device tree support to MXC onewire master.
>       W1: Convert MXC onewire master to devm_ functions.

I have to drop this one, as I see patch e5279ff
(drivers/w1/masters/mxc_w1.c: use devm_ functions) on linux-next,
which does the same thing.

>       W1: Add pinctrl support to MXC onewire master.

And I would drop this one too, because patch ab78029 (drivers/pinctrl:
grab default handles from device core) will have it handled globally
at driver core level.

Shawn

>       ARM: i.MX53: Add clocks for i.mx53 onewire master.
>       ARM: dts: Add device tree entry for onewire master on i.MX53

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

end of thread, other threads:[~2013-02-05  7:43 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-29 15:46 [PATCH V3 0/5] W1: Support onewire master on i.MX53 Martin Fuzzey
2013-01-29 15:46 ` [PATCH V3 1/5] W1: Add device tree support to MXC onewire master Martin Fuzzey
2013-01-29 15:46 ` [PATCH V3 2/5] ARM: i.MX53: Add clocks for i.mx53 " Martin Fuzzey
2013-01-29 15:46 ` [PATCH V3 3/5] W1: Convert MXC onewire master to devm_ functions Martin Fuzzey
2013-01-29 15:46 ` [PATCH V3 4/5] W1: Add pinctrl support to MXC onewire master Martin Fuzzey
2013-01-29 15:46 ` [PATCH V3 5/5] DTS: Add device tree entry for onewire master on i.MX53 Martin Fuzzey
2013-01-30 13:02 ` [PATCH V3 0/5] W1: Support " Shawn Guo
2013-02-05  7:43   ` Shawn Guo

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).