linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/8] ARM: davinci: complete the conversion to using the reset framework
@ 2018-03-23 11:47 Bartosz Golaszewski
  2018-03-23 11:47 ` [PATCH v3 1/8] reset: modify the way reset lookup works for board files Bartosz Golaszewski
                   ` (7 more replies)
  0 siblings, 8 replies; 15+ messages in thread
From: Bartosz Golaszewski @ 2018-03-23 11:47 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Rob Herring, Mark Rutland,
	Russell King, David Lechner, Michael Turquette, Stephen Boyd,
	Ohad Ben-Cohen, Bjorn Andersson, Philipp Zabel
  Cc: linux-arm-kernel, devicetree, linux-kernel, linux-clk,
	linux-remoteproc, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

This series converts the only user of the handcoded, mach-specific reset
routines in the davinci platform to using the reset framework.

Patch 1 modifies the way lookup entries are registered with the reset
framework.

Patches 2-4 add necessary lookups/DT-properties.

Patches 5-7 convert the davinci-rproc driver to the reset framework.

Patch 8 removes now dead code.

Philipp: it turned out that it's indeed better to use the reset
controller's device name for the entry lookup.

Tested both in DT and legacy modes by booting the examples from
ti-ipc-rtos recipe in meta-ti.

This series applies on top of David Lechner's common-clk-v9 branch[1]
with Philipp Zabel's reset/next branch[2] pulled in.

It can be found in my github tree as well[3].

[1] git://github.com/dlech/ev3dev-kernel.git common-clk-v9
[2] git://git.pengutronix.de/git/pza/linux reset/next
[3] git@github.com:brgl/linux.git topic/davinci-reset

v1 -> v2:
- fixed the device tree patches the descriptions of which were mixed up
- return -EPROBE_DEFER from davinci-rproc's probe() if we can't get the
  reset provider, since it's possible that the lookup table was not yet
  registered
- made the local variable naming consistent in the davinci-rproc driver
- fixed a typo in PATCH 5/8

v2 -> v3:
- modify PATCH 1/8: drop the provider argument from the function adding
  lookup entries and instead pass the provider name to the RESET_LOOKUP
  macro, return -EPROBE_DEFER if we locate a correct lookup entry but
  cannot get the corresponding reset controller
- modify the reset lookup entry in psc-da850
- don't manually return -EPROBE_DEFER from davinci-rproc, instead don't
  emit an error message if devm_reset_control_get_exclusive() returns
  this error code

Bartosz Golaszewski (8):
  reset: modify the way reset lookup works for board files
  ARM: davinci: dts: make psc0 a reset provider
  ARM: davinci: dts: add a reset control to the dsp node
  clk: davinci: add a reset lookup table for psc0
  remoteproc: da8xx: add the missing retval check for clk_enable()
  remoteproc: da8xx: prepare and unprepare the clock where needed
  remoteproc: da8xx: use the reset framework
  clk: davinci: kill davinci_clk_reset_assert/deassert()

 arch/arm/boot/dts/da850.dtsi               |  2 ++
 arch/arm/mach-davinci/include/mach/clock.h | 21 ---------------
 drivers/clk/davinci/psc-da850.c            |  7 +++++
 drivers/clk/davinci/psc.c                  | 19 +-------------
 drivers/remoteproc/da8xx_remoteproc.c      | 42 +++++++++++++++++++++++++-----
 drivers/reset/core.c                       | 38 ++++++++++++++++++++++-----
 include/linux/reset-controller.h           | 12 +++++----
 7 files changed, 83 insertions(+), 58 deletions(-)
 delete mode 100644 arch/arm/mach-davinci/include/mach/clock.h

-- 
2.16.1

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

* [PATCH v3 1/8] reset: modify the way reset lookup works for board files
  2018-03-23 11:47 [PATCH v3 0/8] ARM: davinci: complete the conversion to using the reset framework Bartosz Golaszewski
@ 2018-03-23 11:47 ` Bartosz Golaszewski
  2018-03-23 12:04   ` Philipp Zabel
  2018-03-23 11:47 ` [PATCH v3 2/8] ARM: davinci: dts: make psc0 a reset provider Bartosz Golaszewski
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 15+ messages in thread
From: Bartosz Golaszewski @ 2018-03-23 11:47 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Rob Herring, Mark Rutland,
	Russell King, David Lechner, Michael Turquette, Stephen Boyd,
	Ohad Ben-Cohen, Bjorn Andersson, Philipp Zabel
  Cc: linux-arm-kernel, devicetree, linux-kernel, linux-clk,
	linux-remoteproc, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

Commit 7af1bb19f1d7 ("reset: add support for non-DT systems")
introduced reset control lookup mechanism for boards that still use
board files.

The routine used to register lookup entries takes the corresponding
reset_controlled_dev structure as argument.

It's been determined however that for the first user of this new
interface - davinci psc driver - it will be easier to register the
lookup entries using the reset controller device name.

This patch changes the way lookup entries are added.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
---
 drivers/reset/core.c             | 38 +++++++++++++++++++++++++++++++-------
 include/linux/reset-controller.h | 12 +++++++-----
 2 files changed, 38 insertions(+), 12 deletions(-)

diff --git a/drivers/reset/core.c b/drivers/reset/core.c
index 06fa4907afc4..f4a29c046995 100644
--- a/drivers/reset/core.c
+++ b/drivers/reset/core.c
@@ -153,12 +153,10 @@ EXPORT_SYMBOL_GPL(devm_reset_controller_register);
 
 /**
  * reset_controller_add_lookup - register a set of lookup entries
- * @rcdev: initialized reset controller device owning the reset line
  * @lookup: array of reset lookup entries
  * @num_entries: number of entries in the lookup array
  */
-void reset_controller_add_lookup(struct reset_controller_dev *rcdev,
-				 struct reset_control_lookup *lookup,
+void reset_controller_add_lookup(struct reset_control_lookup *lookup,
 				 unsigned int num_entries)
 {
 	struct reset_control_lookup *entry;
@@ -168,13 +166,12 @@ void reset_controller_add_lookup(struct reset_controller_dev *rcdev,
 	for (i = 0; i < num_entries; i++) {
 		entry = &lookup[i];
 
-		if (!entry->dev_id) {
-			pr_warn("%s(): reset lookup entry has no dev_id, skipping\n",
+		if (!entry->dev_id || !entry->provider) {
+			pr_warn("%s(): reset lookup entry badly specified, skipping\n",
 				__func__);
 			continue;
 		}
 
-		entry->rcdev = rcdev;
 		list_add_tail(&entry->list, &reset_lookup_list);
 	}
 	mutex_unlock(&reset_lookup_mutex);
@@ -526,11 +523,30 @@ struct reset_control *__of_reset_control_get(struct device_node *node,
 }
 EXPORT_SYMBOL_GPL(__of_reset_control_get);
 
+static struct reset_controller_dev *
+__reset_controller_by_name(const char *name)
+{
+	struct reset_controller_dev *rcdev;
+
+	lockdep_assert_held(&reset_list_mutex);
+
+	list_for_each_entry(rcdev, &reset_controller_list, list) {
+		if (!rcdev->dev)
+			continue;
+
+		if (!strcmp(name, dev_name(rcdev->dev)))
+			return rcdev;
+	}
+
+	return NULL;
+}
+
 static struct reset_control *
 __reset_control_get_from_lookup(struct device *dev, const char *con_id,
 				bool shared, bool optional)
 {
 	const struct reset_control_lookup *lookup;
+	struct reset_controller_dev *rcdev;
 	const char *dev_id = dev_name(dev);
 	struct reset_control *rstc = NULL;
 
@@ -547,7 +563,15 @@ __reset_control_get_from_lookup(struct device *dev, const char *con_id,
 		    ((con_id && lookup->con_id) &&
 		     !strcmp(con_id, lookup->con_id))) {
 			mutex_lock(&reset_list_mutex);
-			rstc = __reset_control_get_internal(lookup->rcdev,
+			rcdev = __reset_controller_by_name(lookup->provider);
+			if (!rcdev) {
+				mutex_unlock(&reset_list_mutex);
+				mutex_unlock(&reset_lookup_mutex);
+				/* Reset provider may not be ready yet. */
+				return -EPROBE_DEFER;
+			}
+
+			rstc = __reset_control_get_internal(rcdev,
 							    lookup->index,
 							    shared);
 			mutex_unlock(&reset_list_mutex);
diff --git a/include/linux/reset-controller.h b/include/linux/reset-controller.h
index 25698f6c1fae..c870acaa2e07 100644
--- a/include/linux/reset-controller.h
+++ b/include/linux/reset-controller.h
@@ -30,21 +30,22 @@ struct of_phandle_args;
  * struct reset_control_lookup - represents a single lookup entry
  *
  * @list: internal list of all reset lookup entries
- * @rcdev: reset controller device controlling this reset line
+ * @provider: name of the reset controller device controlling this reset line
  * @index: ID of the reset controller in the reset controller device
  * @dev_id: name of the device associated with this reset line
  * @con_id name of the reset line (can be NULL)
  */
 struct reset_control_lookup {
 	struct list_head list;
-	struct reset_controller_dev *rcdev;
+	const char *provider;
 	unsigned int index;
 	const char *dev_id;
 	const char *con_id;
 };
 
-#define RESET_LOOKUP(_dev_id, _con_id, _index)				\
+#define RESET_LOOKUP(_provider, _dev_id, _con_id, _index)		\
 	{								\
+		.provider = _provider,					\
 		.dev_id = _dev_id,					\
 		.con_id = _con_id,					\
 		.index = _index,					\
@@ -57,6 +58,7 @@ struct reset_control_lookup {
  * @owner: kernel module of the reset controller driver
  * @list: internal list of reset controller devices
  * @reset_control_head: head of internal list of requested reset controls
+ * @dev: corresponding driver model device struct
  * @of_node: corresponding device tree node as phandle target
  * @of_reset_n_cells: number of cells in reset line specifiers
  * @of_xlate: translation function to translate from specifier as found in the
@@ -68,6 +70,7 @@ struct reset_controller_dev {
 	struct module *owner;
 	struct list_head list;
 	struct list_head reset_control_head;
+	struct device *dev;
 	struct device_node *of_node;
 	int of_reset_n_cells;
 	int (*of_xlate)(struct reset_controller_dev *rcdev,
@@ -82,8 +85,7 @@ struct device;
 int devm_reset_controller_register(struct device *dev,
 				   struct reset_controller_dev *rcdev);
 
-void reset_controller_add_lookup(struct reset_controller_dev *rcdev,
-				 struct reset_control_lookup *lookup,
+void reset_controller_add_lookup(struct reset_control_lookup *lookup,
 				 unsigned int num_entries);
 
 #endif
-- 
2.16.1

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

* [PATCH v3 2/8] ARM: davinci: dts: make psc0 a reset provider
  2018-03-23 11:47 [PATCH v3 0/8] ARM: davinci: complete the conversion to using the reset framework Bartosz Golaszewski
  2018-03-23 11:47 ` [PATCH v3 1/8] reset: modify the way reset lookup works for board files Bartosz Golaszewski
@ 2018-03-23 11:47 ` Bartosz Golaszewski
  2018-03-23 11:47 ` [PATCH v3 3/8] ARM: davinci: dts: add a reset control to the dsp node Bartosz Golaszewski
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 15+ messages in thread
From: Bartosz Golaszewski @ 2018-03-23 11:47 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Rob Herring, Mark Rutland,
	Russell King, David Lechner, Michael Turquette, Stephen Boyd,
	Ohad Ben-Cohen, Bjorn Andersson, Philipp Zabel
  Cc: linux-arm-kernel, devicetree, linux-kernel, linux-clk,
	linux-remoteproc, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

The psc driver registers with the reset framework as a provider. Add
the #reset-cells property to the psc0 node.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
---
 arch/arm/boot/dts/da850.dtsi | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/boot/dts/da850.dtsi b/arch/arm/boot/dts/da850.dtsi
index a3b9a99b43ca..dad64dbf1f23 100644
--- a/arch/arm/boot/dts/da850.dtsi
+++ b/arch/arm/boot/dts/da850.dtsi
@@ -123,6 +123,7 @@
 			compatible = "ti,da850-psc0";
 			reg = <0x10000 0x1000>;
 			#clock-cells = <1>;
+			#reset-cells = <1>;
 			#power-domain-cells = <1>;
 			clocks = <&pll0_sysclk 1>, <&pll0_sysclk 2>,
 				 <&pll0_sysclk 4>, <&pll0_sysclk 6>,
-- 
2.16.1

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

* [PATCH v3 3/8] ARM: davinci: dts: add a reset control to the dsp node
  2018-03-23 11:47 [PATCH v3 0/8] ARM: davinci: complete the conversion to using the reset framework Bartosz Golaszewski
  2018-03-23 11:47 ` [PATCH v3 1/8] reset: modify the way reset lookup works for board files Bartosz Golaszewski
  2018-03-23 11:47 ` [PATCH v3 2/8] ARM: davinci: dts: make psc0 a reset provider Bartosz Golaszewski
@ 2018-03-23 11:47 ` Bartosz Golaszewski
  2018-03-23 11:47 ` [PATCH v3 4/8] clk: davinci: add a reset lookup table for psc0 Bartosz Golaszewski
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 15+ messages in thread
From: Bartosz Golaszewski @ 2018-03-23 11:47 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Rob Herring, Mark Rutland,
	Russell King, David Lechner, Michael Turquette, Stephen Boyd,
	Ohad Ben-Cohen, Bjorn Andersson, Philipp Zabel
  Cc: linux-arm-kernel, devicetree, linux-kernel, linux-clk,
	linux-remoteproc, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

The davinci-rproc driver will soon use the reset framework. Add the
resets property to the dsp node in da850.dtsi.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
---
 arch/arm/boot/dts/da850.dtsi | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/boot/dts/da850.dtsi b/arch/arm/boot/dts/da850.dtsi
index dad64dbf1f23..5b485e44b83e 100644
--- a/arch/arm/boot/dts/da850.dtsi
+++ b/arch/arm/boot/dts/da850.dtsi
@@ -109,6 +109,7 @@
 		interrupt-parent = <&intc>;
 		interrupts = <28>;
 		clocks = <&psc0 15>;
+		resets = <&psc0 15>;
 		status = "disabled";
 	};
 	soc@1c00000 {
-- 
2.16.1

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

* [PATCH v3 4/8] clk: davinci: add a reset lookup table for psc0
  2018-03-23 11:47 [PATCH v3 0/8] ARM: davinci: complete the conversion to using the reset framework Bartosz Golaszewski
                   ` (2 preceding siblings ...)
  2018-03-23 11:47 ` [PATCH v3 3/8] ARM: davinci: dts: add a reset control to the dsp node Bartosz Golaszewski
@ 2018-03-23 11:47 ` Bartosz Golaszewski
  2018-03-23 11:47 ` [PATCH v3 5/8] remoteproc: da8xx: add the missing retval check for clk_enable() Bartosz Golaszewski
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 15+ messages in thread
From: Bartosz Golaszewski @ 2018-03-23 11:47 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Rob Herring, Mark Rutland,
	Russell King, David Lechner, Michael Turquette, Stephen Boyd,
	Ohad Ben-Cohen, Bjorn Andersson, Philipp Zabel
  Cc: linux-arm-kernel, devicetree, linux-kernel, linux-clk,
	linux-remoteproc, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

In order to be able to use the reset framework in legacy boot mode as
well, add the reset lookup table to the psc driver for da850 variant.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
---
 drivers/clk/davinci/psc-da850.c | 7 +++++++
 drivers/clk/davinci/psc.c       | 1 +
 2 files changed, 8 insertions(+)

diff --git a/drivers/clk/davinci/psc-da850.c b/drivers/clk/davinci/psc-da850.c
index ccc7eb17bf3a..50cc0d17df40 100644
--- a/drivers/clk/davinci/psc-da850.c
+++ b/drivers/clk/davinci/psc-da850.c
@@ -6,6 +6,7 @@
  */
 
 #include <linux/clk-provider.h>
+#include <linux/reset-controller.h>
 #include <linux/clk.h>
 #include <linux/clkdev.h>
 #include <linux/init.h>
@@ -66,8 +67,14 @@ LPSC_CLKDEV3(ecap_clkdev,	"fck",	"ecap.0",
 				"fck",	"ecap.1",
 				"fck",	"ecap.2");
 
+static struct reset_control_lookup da850_psc0_reset_lookup_table[] = {
+	RESET_LOOKUP("da850-psc0", "davinci-rproc.0", NULL, 15),
+};
+
 static int da850_psc0_init(struct device *dev, void __iomem *base)
 {
+	reset_controller_add_lookup(da850_psc0_reset_lookup_table,
+				    ARRAY_SIZE(da850_psc0_reset_lookup_table));
 	return davinci_psc_register_clocks(dev, da850_psc0_info, 16, base);
 }
 
diff --git a/drivers/clk/davinci/psc.c b/drivers/clk/davinci/psc.c
index 3b0e59dfbdd7..063df62381ea 100644
--- a/drivers/clk/davinci/psc.c
+++ b/drivers/clk/davinci/psc.c
@@ -425,6 +425,7 @@ __davinci_psc_register_clocks(struct device *dev,
 
 	psc->rcdev.ops = &davinci_psc_reset_ops;
 	psc->rcdev.owner = THIS_MODULE;
+	psc->rcdev.dev = dev;
 	psc->rcdev.of_node = dev->of_node;
 	psc->rcdev.of_reset_n_cells = 1;
 	psc->rcdev.of_xlate = davinci_psc_reset_of_xlate;
-- 
2.16.1

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

* [PATCH v3 5/8] remoteproc: da8xx: add the missing retval check for clk_enable()
  2018-03-23 11:47 [PATCH v3 0/8] ARM: davinci: complete the conversion to using the reset framework Bartosz Golaszewski
                   ` (3 preceding siblings ...)
  2018-03-23 11:47 ` [PATCH v3 4/8] clk: davinci: add a reset lookup table for psc0 Bartosz Golaszewski
@ 2018-03-23 11:47 ` Bartosz Golaszewski
  2018-03-23 11:47 ` [PATCH v3 6/8] remoteproc: da8xx: prepare and unprepare the clock where needed Bartosz Golaszewski
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 15+ messages in thread
From: Bartosz Golaszewski @ 2018-03-23 11:47 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Rob Herring, Mark Rutland,
	Russell King, David Lechner, Michael Turquette, Stephen Boyd,
	Ohad Ben-Cohen, Bjorn Andersson, Philipp Zabel
  Cc: linux-arm-kernel, devicetree, linux-kernel, linux-clk,
	linux-remoteproc, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

The davinci platform is being switched to using the common clock
framework, where clk_enable() can fail. Add the return value check.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
---
 drivers/remoteproc/da8xx_remoteproc.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/remoteproc/da8xx_remoteproc.c b/drivers/remoteproc/da8xx_remoteproc.c
index bf3b9034c319..2b24291337b7 100644
--- a/drivers/remoteproc/da8xx_remoteproc.c
+++ b/drivers/remoteproc/da8xx_remoteproc.c
@@ -138,6 +138,7 @@ static int da8xx_rproc_start(struct rproc *rproc)
 	struct device *dev = rproc->dev.parent;
 	struct da8xx_rproc *drproc = (struct da8xx_rproc *)rproc->priv;
 	struct clk *dsp_clk = drproc->dsp_clk;
+	int ret;
 
 	/* hw requires the start (boot) address be on 1KB boundary */
 	if (rproc->bootaddr & 0x3ff) {
@@ -148,7 +149,12 @@ static int da8xx_rproc_start(struct rproc *rproc)
 
 	writel(rproc->bootaddr, drproc->bootreg);
 
-	clk_enable(dsp_clk);
+	ret = clk_enable(dsp_clk);
+	if (ret) {
+		dev_err(dev, "clk_enable() failed: %d\n", ret);
+		return ret;
+	}
+
 	davinci_clk_reset_deassert(dsp_clk);
 
 	return 0;
-- 
2.16.1

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

* [PATCH v3 6/8] remoteproc: da8xx: prepare and unprepare the clock where needed
  2018-03-23 11:47 [PATCH v3 0/8] ARM: davinci: complete the conversion to using the reset framework Bartosz Golaszewski
                   ` (4 preceding siblings ...)
  2018-03-23 11:47 ` [PATCH v3 5/8] remoteproc: da8xx: add the missing retval check for clk_enable() Bartosz Golaszewski
@ 2018-03-23 11:47 ` Bartosz Golaszewski
  2018-03-23 11:47 ` [PATCH v3 7/8] remoteproc: da8xx: use the reset framework Bartosz Golaszewski
  2018-03-23 11:47 ` [PATCH v3 8/8] clk: davinci: kill davinci_clk_reset_assert/deassert() Bartosz Golaszewski
  7 siblings, 0 replies; 15+ messages in thread
From: Bartosz Golaszewski @ 2018-03-23 11:47 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Rob Herring, Mark Rutland,
	Russell King, David Lechner, Michael Turquette, Stephen Boyd,
	Ohad Ben-Cohen, Bjorn Andersson, Philipp Zabel
  Cc: linux-arm-kernel, devicetree, linux-kernel, linux-clk,
	linux-remoteproc, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

We're currently switching the platform to using the common clock
framework. We need to explicitly prepare and unprepare the rproc
clock.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
---
 drivers/remoteproc/da8xx_remoteproc.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/remoteproc/da8xx_remoteproc.c b/drivers/remoteproc/da8xx_remoteproc.c
index 2b24291337b7..f134192922e0 100644
--- a/drivers/remoteproc/da8xx_remoteproc.c
+++ b/drivers/remoteproc/da8xx_remoteproc.c
@@ -149,9 +149,9 @@ static int da8xx_rproc_start(struct rproc *rproc)
 
 	writel(rproc->bootaddr, drproc->bootreg);
 
-	ret = clk_enable(dsp_clk);
+	ret = clk_prepare_enable(dsp_clk);
 	if (ret) {
-		dev_err(dev, "clk_enable() failed: %d\n", ret);
+		dev_err(dev, "clk_prepare_enable() failed: %d\n", ret);
 		return ret;
 	}
 
@@ -165,7 +165,7 @@ static int da8xx_rproc_stop(struct rproc *rproc)
 	struct da8xx_rproc *drproc = rproc->priv;
 
 	davinci_clk_reset_assert(drproc->dsp_clk);
-	clk_disable(drproc->dsp_clk);
+	clk_disable_unprepare(drproc->dsp_clk);
 
 	return 0;
 }
-- 
2.16.1

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

* [PATCH v3 7/8] remoteproc: da8xx: use the reset framework
  2018-03-23 11:47 [PATCH v3 0/8] ARM: davinci: complete the conversion to using the reset framework Bartosz Golaszewski
                   ` (5 preceding siblings ...)
  2018-03-23 11:47 ` [PATCH v3 6/8] remoteproc: da8xx: prepare and unprepare the clock where needed Bartosz Golaszewski
@ 2018-03-23 11:47 ` Bartosz Golaszewski
  2018-03-23 11:47 ` [PATCH v3 8/8] clk: davinci: kill davinci_clk_reset_assert/deassert() Bartosz Golaszewski
  7 siblings, 0 replies; 15+ messages in thread
From: Bartosz Golaszewski @ 2018-03-23 11:47 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Rob Herring, Mark Rutland,
	Russell King, David Lechner, Michael Turquette, Stephen Boyd,
	Ohad Ben-Cohen, Bjorn Andersson, Philipp Zabel
  Cc: linux-arm-kernel, devicetree, linux-kernel, linux-clk,
	linux-remoteproc, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

Switch to using the reset framework instead of handcoded reset routines
we used so far.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
---
 drivers/remoteproc/da8xx_remoteproc.c | 32 +++++++++++++++++++++++++++-----
 1 file changed, 27 insertions(+), 5 deletions(-)

diff --git a/drivers/remoteproc/da8xx_remoteproc.c b/drivers/remoteproc/da8xx_remoteproc.c
index f134192922e0..3689473f8b49 100644
--- a/drivers/remoteproc/da8xx_remoteproc.c
+++ b/drivers/remoteproc/da8xx_remoteproc.c
@@ -10,6 +10,7 @@
 
 #include <linux/bitops.h>
 #include <linux/clk.h>
+#include <linux/reset.h>
 #include <linux/err.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
@@ -20,8 +21,6 @@
 #include <linux/platform_device.h>
 #include <linux/remoteproc.h>
 
-#include <mach/clock.h>   /* for davinci_clk_reset_assert/deassert() */
-
 #include "remoteproc_internal.h"
 
 static char *da8xx_fw_name;
@@ -72,6 +71,7 @@ struct da8xx_rproc {
 	struct da8xx_rproc_mem *mem;
 	int num_mems;
 	struct clk *dsp_clk;
+	struct reset_control *dsp_reset;
 	void (*ack_fxn)(struct irq_data *data);
 	struct irq_data *irq_data;
 	void __iomem *chipsig;
@@ -138,6 +138,7 @@ static int da8xx_rproc_start(struct rproc *rproc)
 	struct device *dev = rproc->dev.parent;
 	struct da8xx_rproc *drproc = (struct da8xx_rproc *)rproc->priv;
 	struct clk *dsp_clk = drproc->dsp_clk;
+	struct reset_control *dsp_reset = drproc->dsp_reset;
 	int ret;
 
 	/* hw requires the start (boot) address be on 1KB boundary */
@@ -155,7 +156,11 @@ static int da8xx_rproc_start(struct rproc *rproc)
 		return ret;
 	}
 
-	davinci_clk_reset_deassert(dsp_clk);
+	ret = reset_control_deassert(dsp_reset);
+	if (ret) {
+		dev_err(dev, "reset_control_deassert() failed: %d\n", ret);
+		return ret;
+	}
 
 	return 0;
 }
@@ -163,8 +168,15 @@ static int da8xx_rproc_start(struct rproc *rproc)
 static int da8xx_rproc_stop(struct rproc *rproc)
 {
 	struct da8xx_rproc *drproc = rproc->priv;
+	int ret;
+
+	ret = reset_control_assert(drproc->dsp_reset);
+	if (ret) {
+		dev_err(rproc->dev.parent,
+			"reset_control_assert() failed: %d\n", ret);
+		return ret;
+	}
 
-	davinci_clk_reset_assert(drproc->dsp_clk);
 	clk_disable_unprepare(drproc->dsp_clk);
 
 	return 0;
@@ -232,6 +244,7 @@ static int da8xx_rproc_probe(struct platform_device *pdev)
 	struct resource *bootreg_res;
 	struct resource *chipsig_res;
 	struct clk *dsp_clk;
+	struct reset_control *dsp_reset;
 	void __iomem *chipsig;
 	void __iomem *bootreg;
 	int irq;
@@ -268,6 +281,15 @@ static int da8xx_rproc_probe(struct platform_device *pdev)
 		return PTR_ERR(dsp_clk);
 	}
 
+	dsp_reset = devm_reset_control_get_exclusive(dev, NULL);
+	if (IS_ERR(dsp_reset)) {
+		if (PTR_ERR(dsp_reset) != -EPROBE_DEFER)
+			dev_err(dev, "unable to get reset control: %ld\n",
+				PTR_ERR(dsp_reset));
+
+		return PTR_ERR(dsp_reset);
+	}
+
 	if (dev->of_node) {
 		ret = of_reserved_mem_device_init(dev);
 		if (ret) {
@@ -309,7 +331,7 @@ static int da8xx_rproc_probe(struct platform_device *pdev)
 	 * *not* in reset, but da8xx_rproc_start() needs the DSP to be
 	 * held in reset at the time it is called.
 	 */
-	ret = davinci_clk_reset_assert(drproc->dsp_clk);
+	ret = reset_control_assert(dsp_reset);
 	if (ret)
 		goto free_rproc;
 
-- 
2.16.1

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

* [PATCH v3 8/8] clk: davinci: kill davinci_clk_reset_assert/deassert()
  2018-03-23 11:47 [PATCH v3 0/8] ARM: davinci: complete the conversion to using the reset framework Bartosz Golaszewski
                   ` (6 preceding siblings ...)
  2018-03-23 11:47 ` [PATCH v3 7/8] remoteproc: da8xx: use the reset framework Bartosz Golaszewski
@ 2018-03-23 11:47 ` Bartosz Golaszewski
  7 siblings, 0 replies; 15+ messages in thread
From: Bartosz Golaszewski @ 2018-03-23 11:47 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Rob Herring, Mark Rutland,
	Russell King, David Lechner, Michael Turquette, Stephen Boyd,
	Ohad Ben-Cohen, Bjorn Andersson, Philipp Zabel
  Cc: linux-arm-kernel, devicetree, linux-kernel, linux-clk,
	linux-remoteproc, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

This code is no longer used. Remove it.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Reviewed-by: David Lechner <david@lechnology.com>
---
 arch/arm/mach-davinci/include/mach/clock.h | 21 ---------------------
 drivers/clk/davinci/psc.c                  | 18 ------------------
 2 files changed, 39 deletions(-)
 delete mode 100644 arch/arm/mach-davinci/include/mach/clock.h

diff --git a/arch/arm/mach-davinci/include/mach/clock.h b/arch/arm/mach-davinci/include/mach/clock.h
deleted file mode 100644
index 42ed4f2f5ce4..000000000000
--- a/arch/arm/mach-davinci/include/mach/clock.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * arch/arm/mach-davinci/include/mach/clock.h
- *
- * Clock control driver for DaVinci - header file
- *
- * Authors: Vladimir Barinov <source@mvista.com>
- *
- * 2007 (c) MontaVista Software, Inc. This file is licensed under
- * the terms of the GNU General Public License version 2. This program
- * is licensed "as is" without any warranty of any kind, whether express
- * or implied.
- */
-#ifndef __ASM_ARCH_DAVINCI_CLOCK_H
-#define __ASM_ARCH_DAVINCI_CLOCK_H
-
-struct clk;
-
-int davinci_clk_reset_assert(struct clk *c);
-int davinci_clk_reset_deassert(struct clk *c);
-
-#endif
diff --git a/drivers/clk/davinci/psc.c b/drivers/clk/davinci/psc.c
index 063df62381ea..75c4bc6f23e3 100644
--- a/drivers/clk/davinci/psc.c
+++ b/drivers/clk/davinci/psc.c
@@ -295,24 +295,6 @@ static int davinci_lpsc_clk_reset(struct clk *clk, bool reset)
 	return 0;
 }
 
-/*
- * REVISIT: These exported functions can be removed after a non-DT lookup is
- * added to the reset controller framework and the davinci-rproc driver is
- * updated to use the generic reset controller framework.
- */
-
-int davinci_clk_reset_assert(struct clk *clk)
-{
-	return davinci_lpsc_clk_reset(clk, true);
-}
-EXPORT_SYMBOL(davinci_clk_reset_assert);
-
-int davinci_clk_reset_deassert(struct clk *clk)
-{
-	return davinci_lpsc_clk_reset(clk, false);
-}
-EXPORT_SYMBOL(davinci_clk_reset_deassert);
-
 static int davinci_psc_reset_assert(struct reset_controller_dev *rcdev,
 				    unsigned long id)
 {
-- 
2.16.1

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

* Re: [PATCH v3 1/8] reset: modify the way reset lookup works for board files
  2018-03-23 11:47 ` [PATCH v3 1/8] reset: modify the way reset lookup works for board files Bartosz Golaszewski
@ 2018-03-23 12:04   ` Philipp Zabel
  0 siblings, 0 replies; 15+ messages in thread
From: Philipp Zabel @ 2018-03-23 12:04 UTC (permalink / raw)
  To: Bartosz Golaszewski, Sekhar Nori, Kevin Hilman, Rob Herring,
	Mark Rutland, Russell King, David Lechner, Michael Turquette,
	Stephen Boyd, Ohad Ben-Cohen, Bjorn Andersson
  Cc: linux-arm-kernel, devicetree, linux-kernel, linux-clk,
	linux-remoteproc, Bartosz Golaszewski

Hi Bartosz,

On Fri, 2018-03-23 at 12:47 +0100, Bartosz Golaszewski wrote:
> From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
> 
> Commit 7af1bb19f1d7 ("reset: add support for non-DT systems")
> introduced reset control lookup mechanism for boards that still use
> board files.
> 
> The routine used to register lookup entries takes the corresponding
> reset_controlled_dev structure as argument.
> 
> It's been determined however that for the first user of this new
> interface - davinci psc driver - it will be easier to register the
> lookup entries using the reset controller device name.
> 
> This patch changes the way lookup entries are added.
> 
> Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
> ---
>  drivers/reset/core.c             | 38 +++++++++++++++++++++++++++++++-------
>  include/linux/reset-controller.h | 12 +++++++-----
>  2 files changed, 38 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/reset/core.c b/drivers/reset/core.c
> index 06fa4907afc4..f4a29c046995 100644
> --- a/drivers/reset/core.c
> +++ b/drivers/reset/core.c
> @@ -153,12 +153,10 @@ EXPORT_SYMBOL_GPL(devm_reset_controller_register);
>  
>  /**
>   * reset_controller_add_lookup - register a set of lookup entries
> - * @rcdev: initialized reset controller device owning the reset line
>   * @lookup: array of reset lookup entries
>   * @num_entries: number of entries in the lookup array
>   */
> -void reset_controller_add_lookup(struct reset_controller_dev *rcdev,
> -				 struct reset_control_lookup *lookup,
> +void reset_controller_add_lookup(struct reset_control_lookup *lookup,
>  				 unsigned int num_entries)
>  {
>  	struct reset_control_lookup *entry;
> @@ -168,13 +166,12 @@ void reset_controller_add_lookup(struct reset_controller_dev *rcdev,
>  	for (i = 0; i < num_entries; i++) {
>  		entry = &lookup[i];
>  
> -		if (!entry->dev_id) {
> -			pr_warn("%s(): reset lookup entry has no dev_id, skipping\n",
> +		if (!entry->dev_id || !entry->provider) {
> +			pr_warn("%s(): reset lookup entry badly specified, skipping\n",
>  				__func__);
>  			continue;
>  		}
>  
> -		entry->rcdev = rcdev;
>  		list_add_tail(&entry->list, &reset_lookup_list);
>  	}
>  	mutex_unlock(&reset_lookup_mutex);
> @@ -526,11 +523,30 @@ struct reset_control *__of_reset_control_get(struct device_node *node,
>  }
>  EXPORT_SYMBOL_GPL(__of_reset_control_get);
>  
> +static struct reset_controller_dev *
> +__reset_controller_by_name(const char *name)
> +{
> +	struct reset_controller_dev *rcdev;
> +
> +	lockdep_assert_held(&reset_list_mutex);
> +
> +	list_for_each_entry(rcdev, &reset_controller_list, list) {
> +		if (!rcdev->dev)
> +			continue;
> +
> +		if (!strcmp(name, dev_name(rcdev->dev)))
> +			return rcdev;
> +	}
> +
> +	return NULL;
> +}
> +
>  static struct reset_control *
>  __reset_control_get_from_lookup(struct device *dev, const char *con_id,
>  				bool shared, bool optional)
>  {
>  	const struct reset_control_lookup *lookup;
> +	struct reset_controller_dev *rcdev;
>  	const char *dev_id = dev_name(dev);
>  	struct reset_control *rstc = NULL;
>  
> @@ -547,7 +563,15 @@ __reset_control_get_from_lookup(struct device *dev, const char *con_id,
>  		    ((con_id && lookup->con_id) &&
>  		     !strcmp(con_id, lookup->con_id))) {
>  			mutex_lock(&reset_list_mutex);
> -			rstc = __reset_control_get_internal(lookup->rcdev,
> +			rcdev = __reset_controller_by_name(lookup->provider);
> +			if (!rcdev) {
> +				mutex_unlock(&reset_list_mutex);
> +				mutex_unlock(&reset_lookup_mutex);
> +				/* Reset provider may not be ready yet. */
> +				return -EPROBE_DEFER;
> +			}
> +
> +			rstc = __reset_control_get_internal(rcdev,
>  							    lookup->index,
>  							    shared);
>  			mutex_unlock(&reset_list_mutex);
> diff --git a/include/linux/reset-controller.h b/include/linux/reset-controller.h
> index 25698f6c1fae..c870acaa2e07 100644
> --- a/include/linux/reset-controller.h
> +++ b/include/linux/reset-controller.h
> @@ -30,21 +30,22 @@ struct of_phandle_args;
>   * struct reset_control_lookup - represents a single lookup entry
>   *
>   * @list: internal list of all reset lookup entries
> - * @rcdev: reset controller device controlling this reset line
> + * @provider: name of the reset controller device controlling this reset line
>   * @index: ID of the reset controller in the reset controller device
>   * @dev_id: name of the device associated with this reset line
>   * @con_id name of the reset line (can be NULL)
>   */
>  struct reset_control_lookup {
>  	struct list_head list;
> -	struct reset_controller_dev *rcdev;
> +	const char *provider;
>  	unsigned int index;
>  	const char *dev_id;
>  	const char *con_id;
>  };
>  
> -#define RESET_LOOKUP(_dev_id, _con_id, _index)				\
> +#define RESET_LOOKUP(_provider, _dev_id, _con_id, _index)		\

Please move the _index before _dev_id and _con_id, right after
_provider. Otherwise this looks fine to me.

regards
Philipp

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

* Re: [PATCH v3 0/8] ARM: davinci: complete the conversion to using the reset framework
  2018-03-27 16:48 ` David Lechner
@ 2018-03-30 11:07   ` Bartosz Golaszewski
  0 siblings, 0 replies; 15+ messages in thread
From: Bartosz Golaszewski @ 2018-03-30 11:07 UTC (permalink / raw)
  To: David Lechner
  Cc: Sekhar Nori, Kevin Hilman, Rob Herring, Mark Rutland,
	Russell King, Michael Turquette, Stephen Boyd, Ohad Ben-Cohen,
	Bjorn Andersson, Philipp Zabel, Linux ARM, devicetree,
	Linux Kernel Mailing List, linux-clk, linux-remoteproc,
	Bartosz Golaszewski

2018-03-27 18:48 GMT+02:00 David Lechner <david@lechnology.com>:
> Wasn't there a v4 already? Is this really v5 instead of v3?
>

Yes there was and Philipp applied the v4 alright.

>
> On 03/27/2018 04:20 AM, Bartosz Golaszewski wrote:
>>
>> From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
>>
>> This series converts the only user of the handcoded, mach-specific reset
>> routines in the davinci platform to using the reset framework.
>>
>> Patches 1-3 add necessary lookups/DT-properties.
>
>
> Should I just squash the DT changes into my common-clock-v9 branch
> since those patches haven't been picked up yet anyway? That will be
> 2 fewer patches to keep track of.

I would personally prefer to keep the changesets thematically
separate. The clock series is big anyway already.

Thanks,
Bartosz

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

* Re: [PATCH v3 0/8] ARM: davinci: complete the conversion to using the reset framework
  2018-03-27  9:20 [PATCH v3 0/8] ARM: davinci: complete the conversion to using the reset framework Bartosz Golaszewski
  2018-03-27  9:25 ` Philipp Zabel
  2018-03-27 16:48 ` David Lechner
@ 2018-03-28 22:41 ` Suman Anna
  2 siblings, 0 replies; 15+ messages in thread
From: Suman Anna @ 2018-03-28 22:41 UTC (permalink / raw)
  To: Bartosz Golaszewski, Sekhar Nori, Kevin Hilman, Rob Herring,
	Mark Rutland, Russell King, David Lechner, Michael Turquette,
	Stephen Boyd, Ohad Ben-Cohen, Bjorn Andersson, Philipp Zabel
  Cc: linux-arm-kernel, devicetree, linux-kernel, linux-clk,
	linux-remoteproc, Bartosz Golaszewski

Hi Bjorn,

On 03/27/2018 04:20 AM, Bartosz Golaszewski wrote:
> From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
> 
> This series converts the only user of the handcoded, mach-specific reset
> routines in the davinci platform to using the reset framework.
> 
> Patches 1-3 add necessary lookups/DT-properties.
> 
> Patches 4-6 fix issues found in the remoteproc davinci driver.

Can you pick up patches 4 through 6 for 4.17 itself through the
remoteproc tree? They can be picked up independent of the CCF
conversion. Anyway, the actual CCF conversion and the reset framework
adaptation patch would need the dts patches to be picked up first to
maintain functionality, and I do not think Sekhar is picking up the dts
changes for 4.17 this late.

regards
Suman

> 
> Patch 7 converts the davinci-rproc driver to the reset framework.
> 
> Patch 8 removes now dead code.
> 
> Philipp: it turned out that it's indeed better to use the reset
> controller's device name for the entry lookup.
> 
> Tested both in DT and legacy modes by booting the examples from
> ti-ipc-rtos recipe in meta-ti.
> 
> This series applies on top of David Lechner's common-clk-v9 branch[1]
> with Philipp Zabel's reset/next branch[2] pulled in.
> 
> It can be found in my github tree as well[3].
> 
> [1] git://github.com/dlech/ev3dev-kernel.git common-clk-v9
> [2] git://git.pengutronix.de/git/pza/linux reset/next
> [3] git@github.com:brgl/linux.git topic/davinci-reset
> 
> v1 -> v2:
> - fixed the device tree patches the descriptions of which were mixed up
> - return -EPROBE_DEFER from davinci-rproc's probe() if we can't get the
>   reset provider, since it's possible that the lookup table was not yet
>   registered
> - made the local variable naming consistent in the davinci-rproc driver
> - fixed a typo in PATCH 5/8
> 
> v2 -> v3:
> - reworded the commit messages (s/remoteproc: da8xx/remoteproc\/davinci/)
> - call clk_disable_unprepare() if reset_control_deassert() fails in
>   da8xx_rproc_start()
> - added a patch fixing the S_IRUGO checkpatch warning, since we're
>   already modifying this driver anyway
> - added a temp variable for code brevity in da8xx_rproc_stop()
> - removed patch 1/8 (already applied to reset/next)
> 
> Bartosz Golaszewski (8):
>   ARM: davinci: dts: make psc0 a reset provider
>   ARM: davinci: dts: add a reset control to the dsp node
>   clk: davinci: add a reset lookup table for psc0
>   remoteproc/davinci: add the missing retval check for clk_enable()
>   remoteproc/davinci: prepare and unprepare the clock where needed
>   remoteproc/davinci: use octal permissions for module_param()
>   remoteproc/davinci: use the reset framework
>   clk: davinci: kill davinci_clk_reset_assert/deassert()
> 
>  arch/arm/boot/dts/da850.dtsi               |  2 ++
>  arch/arm/mach-davinci/include/mach/clock.h | 21 --------------
>  drivers/clk/davinci/psc-da850.c            |  7 +++++
>  drivers/clk/davinci/psc.c                  | 19 +------------
>  drivers/remoteproc/da8xx_remoteproc.c      | 45 ++++++++++++++++++++++++------
>  5 files changed, 47 insertions(+), 47 deletions(-)
>  delete mode 100644 arch/arm/mach-davinci/include/mach/clock.h
> 

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

* Re: [PATCH v3 0/8] ARM: davinci: complete the conversion to using the reset framework
  2018-03-27  9:20 [PATCH v3 0/8] ARM: davinci: complete the conversion to using the reset framework Bartosz Golaszewski
  2018-03-27  9:25 ` Philipp Zabel
@ 2018-03-27 16:48 ` David Lechner
  2018-03-30 11:07   ` Bartosz Golaszewski
  2018-03-28 22:41 ` Suman Anna
  2 siblings, 1 reply; 15+ messages in thread
From: David Lechner @ 2018-03-27 16:48 UTC (permalink / raw)
  To: Bartosz Golaszewski, Sekhar Nori, Kevin Hilman, Rob Herring,
	Mark Rutland, Russell King, Michael Turquette, Stephen Boyd,
	Ohad Ben-Cohen, Bjorn Andersson, Philipp Zabel
  Cc: linux-arm-kernel, devicetree, linux-kernel, linux-clk,
	linux-remoteproc, Bartosz Golaszewski

Wasn't there a v4 already? Is this really v5 instead of v3?


On 03/27/2018 04:20 AM, Bartosz Golaszewski wrote:
> From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
> 
> This series converts the only user of the handcoded, mach-specific reset
> routines in the davinci platform to using the reset framework.
> 
> Patches 1-3 add necessary lookups/DT-properties.

Should I just squash the DT changes into my common-clock-v9 branch
since those patches haven't been picked up yet anyway? That will be
2 fewer patches to keep track of.

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

* Re: [PATCH v3 0/8] ARM: davinci: complete the conversion to using the reset framework
  2018-03-27  9:20 [PATCH v3 0/8] ARM: davinci: complete the conversion to using the reset framework Bartosz Golaszewski
@ 2018-03-27  9:25 ` Philipp Zabel
  2018-03-27 16:48 ` David Lechner
  2018-03-28 22:41 ` Suman Anna
  2 siblings, 0 replies; 15+ messages in thread
From: Philipp Zabel @ 2018-03-27  9:25 UTC (permalink / raw)
  To: Bartosz Golaszewski, Sekhar Nori, Kevin Hilman, Rob Herring,
	Mark Rutland, Russell King, David Lechner, Michael Turquette,
	Stephen Boyd, Ohad Ben-Cohen, Bjorn Andersson
  Cc: linux-arm-kernel, devicetree, linux-kernel, linux-clk,
	linux-remoteproc, Bartosz Golaszewski

On Tue, 2018-03-27 at 11:20 +0200, Bartosz Golaszewski wrote:
> From: Bartosz Golaszewski <bgolaszewski@baylibre.com>
> 
> This series converts the only user of the handcoded, mach-specific reset
> routines in the davinci platform to using the reset framework.
> 
> Patches 1-3 add necessary lookups/DT-properties.
> 
> Patches 4-6 fix issues found in the remoteproc davinci driver.
> 
> Patch 7 converts the davinci-rproc driver to the reset framework.
> 
> Patch 8 removes now dead code.
> 
> Philipp: it turned out that it's indeed better to use the reset
> controller's device name for the entry lookup.
> 
> Tested both in DT and legacy modes by booting the examples from
> ti-ipc-rtos recipe in meta-ti.
> 
> This series applies on top of David Lechner's common-clk-v9 branch[1]
> with Philipp Zabel's reset/next branch[2] pulled in.
> 
> It can be found in my github tree as well[3].
> 
> [1] git://github.com/dlech/ev3dev-kernel.git common-clk-v9
> [2] git://git.pengutronix.de/git/pza/linux reset/next

I have moved the relevant patches onto a separate, immutable branch,
which is merged into reset/next:

  git://git.pengutronix.de/git/pza/linux reset/lookup

regards
Philipp

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

* [PATCH v3 0/8] ARM: davinci: complete the conversion to using the reset framework
@ 2018-03-27  9:20 Bartosz Golaszewski
  2018-03-27  9:25 ` Philipp Zabel
                   ` (2 more replies)
  0 siblings, 3 replies; 15+ messages in thread
From: Bartosz Golaszewski @ 2018-03-27  9:20 UTC (permalink / raw)
  To: Sekhar Nori, Kevin Hilman, Rob Herring, Mark Rutland,
	Russell King, David Lechner, Michael Turquette, Stephen Boyd,
	Ohad Ben-Cohen, Bjorn Andersson, Philipp Zabel
  Cc: linux-arm-kernel, devicetree, linux-kernel, linux-clk,
	linux-remoteproc, Bartosz Golaszewski

From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

This series converts the only user of the handcoded, mach-specific reset
routines in the davinci platform to using the reset framework.

Patches 1-3 add necessary lookups/DT-properties.

Patches 4-6 fix issues found in the remoteproc davinci driver.

Patch 7 converts the davinci-rproc driver to the reset framework.

Patch 8 removes now dead code.

Philipp: it turned out that it's indeed better to use the reset
controller's device name for the entry lookup.

Tested both in DT and legacy modes by booting the examples from
ti-ipc-rtos recipe in meta-ti.

This series applies on top of David Lechner's common-clk-v9 branch[1]
with Philipp Zabel's reset/next branch[2] pulled in.

It can be found in my github tree as well[3].

[1] git://github.com/dlech/ev3dev-kernel.git common-clk-v9
[2] git://git.pengutronix.de/git/pza/linux reset/next
[3] git@github.com:brgl/linux.git topic/davinci-reset

v1 -> v2:
- fixed the device tree patches the descriptions of which were mixed up
- return -EPROBE_DEFER from davinci-rproc's probe() if we can't get the
  reset provider, since it's possible that the lookup table was not yet
  registered
- made the local variable naming consistent in the davinci-rproc driver
- fixed a typo in PATCH 5/8

v2 -> v3:
- reworded the commit messages (s/remoteproc: da8xx/remoteproc\/davinci/)
- call clk_disable_unprepare() if reset_control_deassert() fails in
  da8xx_rproc_start()
- added a patch fixing the S_IRUGO checkpatch warning, since we're
  already modifying this driver anyway
- added a temp variable for code brevity in da8xx_rproc_stop()
- removed patch 1/8 (already applied to reset/next)

Bartosz Golaszewski (8):
  ARM: davinci: dts: make psc0 a reset provider
  ARM: davinci: dts: add a reset control to the dsp node
  clk: davinci: add a reset lookup table for psc0
  remoteproc/davinci: add the missing retval check for clk_enable()
  remoteproc/davinci: prepare and unprepare the clock where needed
  remoteproc/davinci: use octal permissions for module_param()
  remoteproc/davinci: use the reset framework
  clk: davinci: kill davinci_clk_reset_assert/deassert()

 arch/arm/boot/dts/da850.dtsi               |  2 ++
 arch/arm/mach-davinci/include/mach/clock.h | 21 --------------
 drivers/clk/davinci/psc-da850.c            |  7 +++++
 drivers/clk/davinci/psc.c                  | 19 +------------
 drivers/remoteproc/da8xx_remoteproc.c      | 45 ++++++++++++++++++++++++------
 5 files changed, 47 insertions(+), 47 deletions(-)
 delete mode 100644 arch/arm/mach-davinci/include/mach/clock.h

-- 
2.16.1

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

end of thread, other threads:[~2018-03-30 11:07 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-23 11:47 [PATCH v3 0/8] ARM: davinci: complete the conversion to using the reset framework Bartosz Golaszewski
2018-03-23 11:47 ` [PATCH v3 1/8] reset: modify the way reset lookup works for board files Bartosz Golaszewski
2018-03-23 12:04   ` Philipp Zabel
2018-03-23 11:47 ` [PATCH v3 2/8] ARM: davinci: dts: make psc0 a reset provider Bartosz Golaszewski
2018-03-23 11:47 ` [PATCH v3 3/8] ARM: davinci: dts: add a reset control to the dsp node Bartosz Golaszewski
2018-03-23 11:47 ` [PATCH v3 4/8] clk: davinci: add a reset lookup table for psc0 Bartosz Golaszewski
2018-03-23 11:47 ` [PATCH v3 5/8] remoteproc: da8xx: add the missing retval check for clk_enable() Bartosz Golaszewski
2018-03-23 11:47 ` [PATCH v3 6/8] remoteproc: da8xx: prepare and unprepare the clock where needed Bartosz Golaszewski
2018-03-23 11:47 ` [PATCH v3 7/8] remoteproc: da8xx: use the reset framework Bartosz Golaszewski
2018-03-23 11:47 ` [PATCH v3 8/8] clk: davinci: kill davinci_clk_reset_assert/deassert() Bartosz Golaszewski
2018-03-27  9:20 [PATCH v3 0/8] ARM: davinci: complete the conversion to using the reset framework Bartosz Golaszewski
2018-03-27  9:25 ` Philipp Zabel
2018-03-27 16:48 ` David Lechner
2018-03-30 11:07   ` Bartosz Golaszewski
2018-03-28 22:41 ` Suman Anna

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