devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Linus Walleij
	<linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Maxime Ripard
	<maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
	Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Samuel Ortiz <sameo-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
Cc: Mike Turquette
	<mturquette-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Linux Media Mailing List
	<linux-media-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	devicetree <devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org,
	Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Subject: [PATCH v2 04/13] rc: sunxi-cir: Add support for an optional reset controller
Date: Wed, 17 Dec 2014 18:18:15 +0100	[thread overview]
Message-ID: <1418836704-15689-5-git-send-email-hdegoede@redhat.com> (raw)
In-Reply-To: <1418836704-15689-1-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>

On sun6i the cir block is attached to the reset controller, add support
for de-asserting the reset if a reset controller is specified in dt.

Signed-off-by: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Acked-by: Mauro Carvalho Chehab <mchehab-JPH+aEBZ4P+UEJcrhfAQsw@public.gmane.org>
Acked-by: Maxime Ripard <maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
---
 .../devicetree/bindings/media/sunxi-ir.txt         |  2 ++
 drivers/media/rc/sunxi-cir.c                       | 25 ++++++++++++++++++++--
 2 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/media/sunxi-ir.txt b/Documentation/devicetree/bindings/media/sunxi-ir.txt
index 23dd5ad..6b70b9b 100644
--- a/Documentation/devicetree/bindings/media/sunxi-ir.txt
+++ b/Documentation/devicetree/bindings/media/sunxi-ir.txt
@@ -10,6 +10,7 @@ Required properties:
 
 Optional properties:
 - linux,rc-map-name : Remote control map name.
+- resets : phandle + reset specifier pair
 
 Example:
 
@@ -17,6 +18,7 @@ ir0: ir@01c21800 {
 	compatible = "allwinner,sun4i-a10-ir";
 	clocks = <&apb0_gates 6>, <&ir0_clk>;
 	clock-names = "apb", "ir";
+	resets = <&apb0_rst 1>;
 	interrupts = <0 5 1>;
 	reg = <0x01C21800 0x40>;
 	linux,rc-map-name = "rc-rc6-mce";
diff --git a/drivers/media/rc/sunxi-cir.c b/drivers/media/rc/sunxi-cir.c
index 340f7f5..06170e0 100644
--- a/drivers/media/rc/sunxi-cir.c
+++ b/drivers/media/rc/sunxi-cir.c
@@ -23,6 +23,7 @@
 #include <linux/interrupt.h>
 #include <linux/module.h>
 #include <linux/of_platform.h>
+#include <linux/reset.h>
 #include <media/rc-core.h>
 
 #define SUNXI_IR_DEV "sunxi-ir"
@@ -95,6 +96,7 @@ struct sunxi_ir {
 	int             irq;
 	struct clk      *clk;
 	struct clk      *apb_clk;
+	struct reset_control *rst;
 	const char      *map_name;
 };
 
@@ -166,15 +168,29 @@ static int sunxi_ir_probe(struct platform_device *pdev)
 		return PTR_ERR(ir->clk);
 	}
 
+	/* Reset (optional) */
+	ir->rst = devm_reset_control_get_optional(dev, NULL);
+	if (IS_ERR(ir->rst)) {
+		ret = PTR_ERR(ir->rst);
+		if (ret == -EPROBE_DEFER)
+			return ret;
+		ir->rst = NULL;
+	} else {
+		ret = reset_control_deassert(ir->rst);
+		if (ret)
+			return ret;
+	}
+
 	ret = clk_set_rate(ir->clk, SUNXI_IR_BASE_CLK);
 	if (ret) {
 		dev_err(dev, "set ir base clock failed!\n");
-		return ret;
+		goto exit_reset_assert;
 	}
 
 	if (clk_prepare_enable(ir->apb_clk)) {
 		dev_err(dev, "try to enable apb_ir_clk failed\n");
-		return -EINVAL;
+		ret = -EINVAL;
+		goto exit_reset_assert;
 	}
 
 	if (clk_prepare_enable(ir->clk)) {
@@ -271,6 +287,9 @@ exit_clkdisable_clk:
 	clk_disable_unprepare(ir->clk);
 exit_clkdisable_apb_clk:
 	clk_disable_unprepare(ir->apb_clk);
+exit_reset_assert:
+	if (ir->rst)
+		reset_control_assert(ir->rst);
 
 	return ret;
 }
@@ -282,6 +301,8 @@ static int sunxi_ir_remove(struct platform_device *pdev)
 
 	clk_disable_unprepare(ir->clk);
 	clk_disable_unprepare(ir->apb_clk);
+	if (ir->rst)
+		reset_control_assert(ir->rst);
 
 	spin_lock_irqsave(&ir->ir_lock, flags);
 	/* disable IR IRQ */
-- 
2.1.0

  parent reply	other threads:[~2014-12-17 17:18 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-17 17:18 [PATCH v2 00/13] sun6i: Add A31s and ir support Hans de Goede
     [not found] ` <1418836704-15689-1-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-17 17:18   ` [PATCH v2 01/13] pinctrl: sun6i: Add some missing functions Hans de Goede
     [not found]     ` <1418836704-15689-2-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-19 18:17       ` Maxime Ripard
2015-01-13 14:29       ` Linus Walleij
2014-12-17 17:18   ` [PATCH v2 02/13] pinctrl: sun6i: Add A31s pinctrl support Hans de Goede
     [not found]     ` <1418836704-15689-3-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-19 18:20       ` Maxime Ripard
2015-01-13 14:31       ` Linus Walleij
2014-12-17 17:18   ` [PATCH v2 03/13] ARM: sunxi: Add "allwinner,sun6i-a31s" to mach-sunxi Hans de Goede
     [not found]     ` <1418836704-15689-4-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-19 18:22       ` Maxime Ripard
2014-12-17 17:18   ` Hans de Goede [this message]
     [not found]     ` <1418836704-15689-5-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-18  2:48       ` [PATCH v2 04/13] rc: sunxi-cir: Add support for an optional reset controller Chen-Yu Tsai
     [not found]         ` <CAGb2v65BW7NABQXK877DkMNqDdBeuZ55wQHFkTexbWACFC4zFA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-12-18  8:50           ` Hans de Goede
     [not found]             ` <54929552.8090707-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-19 18:17               ` Maxime Ripard
2014-12-20 10:20                 ` Hans de Goede
     [not found]                   ` <54954D5B.2020904-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-01-19 14:10                     ` Chen-Yu Tsai
     [not found]                       ` <CAGb2v676uRnKRNbBLPvcW4oTVzjWnNbVUTtw=DLoDyr2vn3Dgw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-01-19 14:17                         ` Hans de Goede
     [not found]                           ` <54BD11DF.1020907-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-01-19 14:24                             ` Chen-Yu Tsai
2014-12-17 17:18   ` [PATCH v2 05/13] rc: sunxi-cir: Add support for the larger fifo found on sun5i and sun6i Hans de Goede
2014-12-17 17:18   ` [PATCH v2 06/13] clk: sunxi: Make the mod0 clk driver also a platform driver Hans de Goede
     [not found]     ` <1418836704-15689-7-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-19 18:24       ` Maxime Ripard
2014-12-20 10:25         ` Hans de Goede
2014-12-17 17:18   ` [PATCH v2 07/13] mfd: sun6i-prcm: Add support for the ir-clk Hans de Goede
     [not found]     ` <1418836704-15689-8-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-18  8:41       ` Lee Jones
2014-12-18  8:53         ` Hans de Goede
     [not found]           ` <54929602.8020002-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-18  9:19             ` Lee Jones
2014-12-17 17:18   ` [PATCH v2 08/13] ARM: dts: sun6i: Add ir_clk node Hans de Goede
     [not found]     ` <1418836704-15689-9-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-19 18:25       ` Maxime Ripard
2014-12-17 17:18   ` [PATCH v2 09/13] ARM: dts: sun6i: Add ir node Hans de Goede
     [not found]     ` <1418836704-15689-10-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-19 18:25       ` Maxime Ripard
2014-12-17 17:18   ` [PATCH v2 10/13] ARM: dts: sun6i: Add pinmux settings for the ir pins Hans de Goede
2014-12-17 17:18   ` [PATCH v2 11/13] ARM: dts: sun6i: Enable ir receiver on the Mele M9 Hans de Goede
     [not found]     ` <1418836704-15689-12-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-19 18:27       ` Maxime Ripard
2014-12-17 17:18   ` [PATCH v2 12/13] ARM: dts: sun6i: Add sun6i-a31s.dtsi Hans de Goede
     [not found]     ` <1418836704-15689-13-git-send-email-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-19 18:34       ` Maxime Ripard
2014-12-20 10:24         ` Hans de Goede
     [not found]           ` <54954E77.4070302-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2014-12-21 22:39             ` Maxime Ripard
2014-12-22 13:46               ` Hans de Goede
     [not found]                 ` <549820A4.9090900-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-01-05  9:08                   ` Maxime Ripard
2015-01-05  9:31                     ` Hans de Goede
     [not found]                       ` <54AA59D9.7030909-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-01-06 10:03                         ` Maxime Ripard
2014-12-17 17:18   ` [PATCH v2 13/13] ARM: dts: sun6i: Add dts file for CSQ CS908 board Hans de Goede

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=1418836704-15689-5-git-send-email-hdegoede@redhat.com \
    --to=hdegoede-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-media-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
    --cc=maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org \
    --cc=mturquette-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=sameo-VuQAYsv1563Yd54FQh9/CA@public.gmane.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 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).