devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v7 1/2] regmap: Add one flag to indicate if a hwlock should be used
@ 2017-12-25  6:37 Baolin Wang
  2017-12-25  6:37 ` [PATCH v7 2/2] mfd: syscon: Add hardware spinlock support Baolin Wang
       [not found] ` <29fa88f883dae4c1f8a3acb2656cbd7c5a539d40.1514180039.git.baolin.wang-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
  0 siblings, 2 replies; 12+ messages in thread
From: Baolin Wang @ 2017-12-25  6:37 UTC (permalink / raw)
  To: lee.jones, arnd, robh+dt, mark.rutland, broonie
  Cc: linux-kernel, devicetree, baolin.wang

Since the hwlock id 0 is valid for hardware spinlock core, but now id 0
is treated as one invalid value for regmap. Thus we should add one extra
flag for regmap config to indicate if a hardware spinlock should be used,
then id 0 can be valid for regmap to request.

Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
---
 - Add this new patch in V7.
---
 drivers/base/regmap/regmap.c |    2 +-
 include/linux/regmap.h       |    2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c
index f25ab18..d23a5c9 100644
--- a/drivers/base/regmap/regmap.c
+++ b/drivers/base/regmap/regmap.c
@@ -671,7 +671,7 @@ struct regmap *__regmap_init(struct device *dev,
 		map->lock = config->lock;
 		map->unlock = config->unlock;
 		map->lock_arg = config->lock_arg;
-	} else if (config->hwlock_id) {
+	} else if (config->use_hwlock) {
 		map->hwlock = hwspin_lock_request_specific(config->hwlock_id);
 		if (!map->hwlock) {
 			ret = -ENXIO;
diff --git a/include/linux/regmap.h b/include/linux/regmap.h
index 15eddc1..c78e005 100644
--- a/include/linux/regmap.h
+++ b/include/linux/regmap.h
@@ -317,6 +317,7 @@ struct regmap_access_table {
  *
  * @ranges: Array of configuration entries for virtual address ranges.
  * @num_ranges: Number of range configuration entries.
+ * @use_hwlock: Indicate if a hardware spinlock should be used.
  * @hwlock_id: Specify the hardware spinlock id.
  * @hwlock_mode: The hardware spinlock mode, should be HWLOCK_IRQSTATE,
  *		 HWLOCK_IRQ or 0.
@@ -365,6 +366,7 @@ struct regmap_config {
 	const struct regmap_range_cfg *ranges;
 	unsigned int num_ranges;
 
+	bool use_hwlock;
 	unsigned int hwlock_id;
 	unsigned int hwlock_mode;
 };
-- 
1.7.9.5

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

* [PATCH v7 2/2] mfd: syscon: Add hardware spinlock support
  2017-12-25  6:37 [PATCH v7 1/2] regmap: Add one flag to indicate if a hwlock should be used Baolin Wang
@ 2017-12-25  6:37 ` Baolin Wang
  2018-01-02 15:36   ` Lee Jones
                     ` (2 more replies)
       [not found] ` <29fa88f883dae4c1f8a3acb2656cbd7c5a539d40.1514180039.git.baolin.wang-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
  1 sibling, 3 replies; 12+ messages in thread
From: Baolin Wang @ 2017-12-25  6:37 UTC (permalink / raw)
  To: lee.jones, arnd, robh+dt, mark.rutland, broonie
  Cc: linux-kernel, devicetree, baolin.wang

Some system control registers need hardware spinlock to synchronize
between the multiple subsystems, so we should add hardware spinlock
support for syscon.

Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
Acked-by: Rob Herring <robh@kernel.org>
---
Changes since v6:
 - Treat hwlock id 0 as valid for regmap.

Changes since v5:
 - Fix the case that hwspinlock is not enabled.

Changes since v4:
 - Add one exapmle to show how to add hwlock.
 - Fix the coding style issue.

Changes since v3:
 - Add error handling for of_hwspin_lock_get_id()

Changes since v2:
 - Add acked tag from Rob.

Changes since v1:
 - Remove timeout configuration.
 - Modify the binding file to add hwlocks.
---
 Documentation/devicetree/bindings/mfd/syscon.txt |    8 ++++++++
 drivers/mfd/syscon.c                             |   19 +++++++++++++++++++
 2 files changed, 27 insertions(+)

diff --git a/Documentation/devicetree/bindings/mfd/syscon.txt b/Documentation/devicetree/bindings/mfd/syscon.txt
index 8b92d45..25d9e9c 100644
--- a/Documentation/devicetree/bindings/mfd/syscon.txt
+++ b/Documentation/devicetree/bindings/mfd/syscon.txt
@@ -16,9 +16,17 @@ Required properties:
 Optional property:
 - reg-io-width: the size (in bytes) of the IO accesses that should be
   performed on the device.
+- hwlocks: reference to a phandle of a hardware spinlock provider node.
 
 Examples:
 gpr: iomuxc-gpr@20e0000 {
 	compatible = "fsl,imx6q-iomuxc-gpr", "syscon";
 	reg = <0x020e0000 0x38>;
+	hwlocks = <&hwlock1 1>;
+};
+
+hwlock1: hwspinlock@40500000 {
+	...
+	reg = <0x40500000 0x1000>;
+	#hwlock-cells = <1>;
 };
diff --git a/drivers/mfd/syscon.c b/drivers/mfd/syscon.c
index b93fe4c..7eaa40b 100644
--- a/drivers/mfd/syscon.c
+++ b/drivers/mfd/syscon.c
@@ -13,6 +13,7 @@
  */
 
 #include <linux/err.h>
+#include <linux/hwspinlock.h>
 #include <linux/io.h>
 #include <linux/module.h>
 #include <linux/list.h>
@@ -87,6 +88,24 @@ static struct syscon *of_syscon_register(struct device_node *np)
 	if (ret)
 		reg_io_width = 4;
 
+	ret = of_hwspin_lock_get_id(np, 0);
+	if (ret > 0 || (IS_ENABLED(CONFIG_HWSPINLOCK) && ret == 0)) {
+		syscon_config.use_hwlock = true;
+		syscon_config.hwlock_id = ret;
+		syscon_config.hwlock_mode = HWLOCK_IRQSTATE;
+	} else if (ret < 0) {
+		switch (ret) {
+		case -ENOENT:
+			/* Ignore missing hwlock, it's optional. */
+			break;
+		default:
+			pr_err("Failed to retrieve valid hwlock: %d\n", ret);
+			/* fall-through */
+		case -EPROBE_DEFER:
+			goto err_regmap;
+		}
+	}
+
 	syscon_config.reg_stride = reg_io_width;
 	syscon_config.val_bits = reg_io_width * 8;
 	syscon_config.max_register = resource_size(&res) - reg_io_width;
-- 
1.7.9.5

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

* Applied "regmap: Add one flag to indicate if a hwlock should be used" to the regmap tree
       [not found] ` <29fa88f883dae4c1f8a3acb2656cbd7c5a539d40.1514180039.git.baolin.wang-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
@ 2017-12-27 10:39   ` Mark Brown
  0 siblings, 0 replies; 12+ messages in thread
From: Mark Brown @ 2017-12-27 10:39 UTC (permalink / raw)
  Cc: Mark Brown, lee.jones-QSEj5FYQhm4dnm+yROfE0A, arnd-r2nGTMty4D4,
	robh+dt-DgEjT+Ai2ygdnm+yROfE0A, mark.rutland-5wv7dgnIgG8

The patch

   regmap: Add one flag to indicate if a hwlock should be used

has been applied to the regmap tree at

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap.git 

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.  

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark

>From a4887813c3a9481ab87c8a71ab1de50b975cc823 Mon Sep 17 00:00:00 2001
From: Baolin Wang <baolin.wang-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Date: Mon, 25 Dec 2017 14:37:09 +0800
Subject: [PATCH] regmap: Add one flag to indicate if a hwlock should be used

Since the hwlock id 0 is valid for hardware spinlock core, but now id 0
is treated as one invalid value for regmap. Thus we should add one extra
flag for regmap config to indicate if a hardware spinlock should be used,
then id 0 can be valid for regmap to request.

Signed-off-by: Baolin Wang <baolin.wang-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Signed-off-by: Mark Brown <broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
---
 drivers/base/regmap/regmap.c | 2 +-
 include/linux/regmap.h       | 2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c
index f25ab18ca057..d23a5c99b639 100644
--- a/drivers/base/regmap/regmap.c
+++ b/drivers/base/regmap/regmap.c
@@ -671,7 +671,7 @@ struct regmap *__regmap_init(struct device *dev,
 		map->lock = config->lock;
 		map->unlock = config->unlock;
 		map->lock_arg = config->lock_arg;
-	} else if (config->hwlock_id) {
+	} else if (config->use_hwlock) {
 		map->hwlock = hwspin_lock_request_specific(config->hwlock_id);
 		if (!map->hwlock) {
 			ret = -ENXIO;
diff --git a/include/linux/regmap.h b/include/linux/regmap.h
index 15eddc1353ba..c78e0057df66 100644
--- a/include/linux/regmap.h
+++ b/include/linux/regmap.h
@@ -317,6 +317,7 @@ typedef void (*regmap_unlock)(void *);
  *
  * @ranges: Array of configuration entries for virtual address ranges.
  * @num_ranges: Number of range configuration entries.
+ * @use_hwlock: Indicate if a hardware spinlock should be used.
  * @hwlock_id: Specify the hardware spinlock id.
  * @hwlock_mode: The hardware spinlock mode, should be HWLOCK_IRQSTATE,
  *		 HWLOCK_IRQ or 0.
@@ -365,6 +366,7 @@ struct regmap_config {
 	const struct regmap_range_cfg *ranges;
 	unsigned int num_ranges;
 
+	bool use_hwlock;
 	unsigned int hwlock_id;
 	unsigned int hwlock_mode;
 };
-- 
2.15.0

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH v7 2/2] mfd: syscon: Add hardware spinlock support
  2017-12-25  6:37 ` [PATCH v7 2/2] mfd: syscon: Add hardware spinlock support Baolin Wang
@ 2018-01-02 15:36   ` Lee Jones
  2018-01-11 12:36     ` Baolin Wang
  2018-01-11 15:22   ` Lee Jones
  2018-01-12 20:01   ` Applied "mfd: syscon: Add hardware spinlock support" to the regmap tree Mark Brown
  2 siblings, 1 reply; 12+ messages in thread
From: Lee Jones @ 2018-01-02 15:36 UTC (permalink / raw)
  To: Baolin Wang
  Cc: arnd, robh+dt, mark.rutland, broonie, linux-kernel, devicetree

Arnd,

> Some system control registers need hardware spinlock to synchronize
> between the multiple subsystems, so we should add hardware spinlock
> support for syscon.
> 
> Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
> Acked-by: Rob Herring <robh@kernel.org>

... did you sign off on this in the end?

> ---
> Changes since v6:
>  - Treat hwlock id 0 as valid for regmap.
> 
> Changes since v5:
>  - Fix the case that hwspinlock is not enabled.
> 
> Changes since v4:
>  - Add one exapmle to show how to add hwlock.
>  - Fix the coding style issue.
> 
> Changes since v3:
>  - Add error handling for of_hwspin_lock_get_id()
> 
> Changes since v2:
>  - Add acked tag from Rob.
> 
> Changes since v1:
>  - Remove timeout configuration.
>  - Modify the binding file to add hwlocks.
> ---
>  Documentation/devicetree/bindings/mfd/syscon.txt |    8 ++++++++
>  drivers/mfd/syscon.c                             |   19 +++++++++++++++++++
>  2 files changed, 27 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/mfd/syscon.txt b/Documentation/devicetree/bindings/mfd/syscon.txt
> index 8b92d45..25d9e9c 100644
> --- a/Documentation/devicetree/bindings/mfd/syscon.txt
> +++ b/Documentation/devicetree/bindings/mfd/syscon.txt
> @@ -16,9 +16,17 @@ Required properties:
>  Optional property:
>  - reg-io-width: the size (in bytes) of the IO accesses that should be
>    performed on the device.
> +- hwlocks: reference to a phandle of a hardware spinlock provider node.
>  
>  Examples:
>  gpr: iomuxc-gpr@20e0000 {
>  	compatible = "fsl,imx6q-iomuxc-gpr", "syscon";
>  	reg = <0x020e0000 0x38>;
> +	hwlocks = <&hwlock1 1>;
> +};
> +
> +hwlock1: hwspinlock@40500000 {
> +	...
> +	reg = <0x40500000 0x1000>;
> +	#hwlock-cells = <1>;
>  };
> diff --git a/drivers/mfd/syscon.c b/drivers/mfd/syscon.c
> index b93fe4c..7eaa40b 100644
> --- a/drivers/mfd/syscon.c
> +++ b/drivers/mfd/syscon.c
> @@ -13,6 +13,7 @@
>   */
>  
>  #include <linux/err.h>
> +#include <linux/hwspinlock.h>
>  #include <linux/io.h>
>  #include <linux/module.h>
>  #include <linux/list.h>
> @@ -87,6 +88,24 @@ static struct syscon *of_syscon_register(struct device_node *np)
>  	if (ret)
>  		reg_io_width = 4;
>  
> +	ret = of_hwspin_lock_get_id(np, 0);
> +	if (ret > 0 || (IS_ENABLED(CONFIG_HWSPINLOCK) && ret == 0)) {
> +		syscon_config.use_hwlock = true;
> +		syscon_config.hwlock_id = ret;
> +		syscon_config.hwlock_mode = HWLOCK_IRQSTATE;
> +	} else if (ret < 0) {
> +		switch (ret) {
> +		case -ENOENT:
> +			/* Ignore missing hwlock, it's optional. */
> +			break;
> +		default:
> +			pr_err("Failed to retrieve valid hwlock: %d\n", ret);
> +			/* fall-through */
> +		case -EPROBE_DEFER:
> +			goto err_regmap;
> +		}
> +	}
> +
>  	syscon_config.reg_stride = reg_io_width;
>  	syscon_config.val_bits = reg_io_width * 8;
>  	syscon_config.max_register = resource_size(&res) - reg_io_width;

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

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

* Re: [PATCH v7 2/2] mfd: syscon: Add hardware spinlock support
  2018-01-02 15:36   ` Lee Jones
@ 2018-01-11 12:36     ` Baolin Wang
       [not found]       ` <CAMz4kuKZjnMZYm59PBa8anfW6pcbgBh-_FDA-3ZKurLXmO6wSA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 12+ messages in thread
From: Baolin Wang @ 2018-01-11 12:36 UTC (permalink / raw)
  To: Lee Jones
  Cc: Arnd Bergmann, Rob Herring, Mark Rutland, Mark Brown, LKML, DTML

Hi Arnd,

On 2 January 2018 at 23:36, Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> wrote:
> Arnd,
>
>> Some system control registers need hardware spinlock to synchronize
>> between the multiple subsystems, so we should add hardware spinlock
>> support for syscon.
>>
>> Signed-off-by: Baolin Wang <baolin.wang-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
>> Acked-by: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
>
> ... did you sign off on this in the end?
>

Could you apply this patch if there are no other issue? Thanks.

>> ---
>> Changes since v6:
>>  - Treat hwlock id 0 as valid for regmap.
>>
>> Changes since v5:
>>  - Fix the case that hwspinlock is not enabled.
>>
>> Changes since v4:
>>  - Add one exapmle to show how to add hwlock.
>>  - Fix the coding style issue.
>>
>> Changes since v3:
>>  - Add error handling for of_hwspin_lock_get_id()
>>
>> Changes since v2:
>>  - Add acked tag from Rob.
>>
>> Changes since v1:
>>  - Remove timeout configuration.
>>  - Modify the binding file to add hwlocks.
>> ---
>>  Documentation/devicetree/bindings/mfd/syscon.txt |    8 ++++++++
>>  drivers/mfd/syscon.c                             |   19 +++++++++++++++++++
>>  2 files changed, 27 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/mfd/syscon.txt b/Documentation/devicetree/bindings/mfd/syscon.txt
>> index 8b92d45..25d9e9c 100644
>> --- a/Documentation/devicetree/bindings/mfd/syscon.txt
>> +++ b/Documentation/devicetree/bindings/mfd/syscon.txt
>> @@ -16,9 +16,17 @@ Required properties:
>>  Optional property:
>>  - reg-io-width: the size (in bytes) of the IO accesses that should be
>>    performed on the device.
>> +- hwlocks: reference to a phandle of a hardware spinlock provider node.
>>
>>  Examples:
>>  gpr: iomuxc-gpr@20e0000 {
>>       compatible = "fsl,imx6q-iomuxc-gpr", "syscon";
>>       reg = <0x020e0000 0x38>;
>> +     hwlocks = <&hwlock1 1>;
>> +};
>> +
>> +hwlock1: hwspinlock@40500000 {
>> +     ...
>> +     reg = <0x40500000 0x1000>;
>> +     #hwlock-cells = <1>;
>>  };
>> diff --git a/drivers/mfd/syscon.c b/drivers/mfd/syscon.c
>> index b93fe4c..7eaa40b 100644
>> --- a/drivers/mfd/syscon.c
>> +++ b/drivers/mfd/syscon.c
>> @@ -13,6 +13,7 @@
>>   */
>>
>>  #include <linux/err.h>
>> +#include <linux/hwspinlock.h>
>>  #include <linux/io.h>
>>  #include <linux/module.h>
>>  #include <linux/list.h>
>> @@ -87,6 +88,24 @@ static struct syscon *of_syscon_register(struct device_node *np)
>>       if (ret)
>>               reg_io_width = 4;
>>
>> +     ret = of_hwspin_lock_get_id(np, 0);
>> +     if (ret > 0 || (IS_ENABLED(CONFIG_HWSPINLOCK) && ret == 0)) {
>> +             syscon_config.use_hwlock = true;
>> +             syscon_config.hwlock_id = ret;
>> +             syscon_config.hwlock_mode = HWLOCK_IRQSTATE;
>> +     } else if (ret < 0) {
>> +             switch (ret) {
>> +             case -ENOENT:
>> +                     /* Ignore missing hwlock, it's optional. */
>> +                     break;
>> +             default:
>> +                     pr_err("Failed to retrieve valid hwlock: %d\n", ret);
>> +                     /* fall-through */
>> +             case -EPROBE_DEFER:
>> +                     goto err_regmap;
>> +             }
>> +     }
>> +
>>       syscon_config.reg_stride = reg_io_width;
>>       syscon_config.val_bits = reg_io_width * 8;
>>       syscon_config.max_register = resource_size(&res) - reg_io_width;
>
> --
> Lee Jones
> Linaro Services Technical Lead
> Linaro.org │ Open source software for ARM SoCs
> Follow Linaro: Facebook | Twitter | Blog



-- 
Baolin.wang
Best Regards
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH v7 2/2] mfd: syscon: Add hardware spinlock support
       [not found]       ` <CAMz4kuKZjnMZYm59PBa8anfW6pcbgBh-_FDA-3ZKurLXmO6wSA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2018-01-11 13:08         ` Lee Jones
  2018-01-11 14:27           ` Arnd Bergmann
  0 siblings, 1 reply; 12+ messages in thread
From: Lee Jones @ 2018-01-11 13:08 UTC (permalink / raw)
  To: Baolin Wang
  Cc: Arnd Bergmann, Rob Herring, Mark Rutland, Mark Brown, LKML, DTML

On Thu, 11 Jan 2018, Baolin Wang wrote:

> Hi Arnd,
> 
> On 2 January 2018 at 23:36, Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> wrote:
> > Arnd,
> >
> >> Some system control registers need hardware spinlock to synchronize
> >> between the multiple subsystems, so we should add hardware spinlock
> >> support for syscon.
> >>
> >> Signed-off-by: Baolin Wang <baolin.wang-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> >> Acked-by: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
> >
> > ... did you sign off on this in the end?
> >
> 
> Could you apply this patch if there are no other issue? Thanks.

Arnd is the expert in this area.

Ideally I'd like his Ack before applying the patch.

-- 
Lee Jones
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH v7 2/2] mfd: syscon: Add hardware spinlock support
  2018-01-11 13:08         ` Lee Jones
@ 2018-01-11 14:27           ` Arnd Bergmann
  0 siblings, 0 replies; 12+ messages in thread
From: Arnd Bergmann @ 2018-01-11 14:27 UTC (permalink / raw)
  To: Lee Jones; +Cc: Baolin Wang, Rob Herring, Mark Rutland, Mark Brown, LKML, DTML

On Thu, Jan 11, 2018 at 2:08 PM, Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> wrote:
> On Thu, 11 Jan 2018, Baolin Wang wrote:
>
>> Hi Arnd,
>>
>> On 2 January 2018 at 23:36, Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> wrote:
>> > Arnd,
>> >
>> >> Some system control registers need hardware spinlock to synchronize
>> >> between the multiple subsystems, so we should add hardware spinlock
>> >> support for syscon.
>> >>
>> >> Signed-off-by: Baolin Wang <baolin.wang-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
>> >> Acked-by: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
>> >
>> > ... did you sign off on this in the end?
>> >
>>
>> Could you apply this patch if there are no other issue? Thanks.
>
> Arnd is the expert in this area.
>
> Ideally I'd like his Ack before applying the patch.

Reviewed-by: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>

Sorry for missing the latest version, this looks good to me.

     Arnd
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH v7 2/2] mfd: syscon: Add hardware spinlock support
  2017-12-25  6:37 ` [PATCH v7 2/2] mfd: syscon: Add hardware spinlock support Baolin Wang
  2018-01-02 15:36   ` Lee Jones
@ 2018-01-11 15:22   ` Lee Jones
  2018-01-22 13:43     ` Lee Jones
  2018-01-12 20:01   ` Applied "mfd: syscon: Add hardware spinlock support" to the regmap tree Mark Brown
  2 siblings, 1 reply; 12+ messages in thread
From: Lee Jones @ 2018-01-11 15:22 UTC (permalink / raw)
  To: Baolin Wang
  Cc: arnd, robh+dt, mark.rutland, broonie, linux-kernel, devicetree

On Mon, 25 Dec 2017, Baolin Wang wrote:

> Some system control registers need hardware spinlock to synchronize
> between the multiple subsystems, so we should add hardware spinlock
> support for syscon.
> 
> Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
> Acked-by: Rob Herring <robh@kernel.org>
> ---
> Changes since v6:
>  - Treat hwlock id 0 as valid for regmap.
> 
> Changes since v5:
>  - Fix the case that hwspinlock is not enabled.
> 
> Changes since v4:
>  - Add one exapmle to show how to add hwlock.
>  - Fix the coding style issue.
> 
> Changes since v3:
>  - Add error handling for of_hwspin_lock_get_id()
> 
> Changes since v2:
>  - Add acked tag from Rob.
> 
> Changes since v1:
>  - Remove timeout configuration.
>  - Modify the binding file to add hwlocks.
> ---
>  Documentation/devicetree/bindings/mfd/syscon.txt |    8 ++++++++
>  drivers/mfd/syscon.c                             |   19 +++++++++++++++++++
>  2 files changed, 27 insertions(+)

Applied, thanks.

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

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

* Applied "mfd: syscon: Add hardware spinlock support" to the regmap tree
  2017-12-25  6:37 ` [PATCH v7 2/2] mfd: syscon: Add hardware spinlock support Baolin Wang
  2018-01-02 15:36   ` Lee Jones
  2018-01-11 15:22   ` Lee Jones
@ 2018-01-12 20:01   ` Mark Brown
  2 siblings, 0 replies; 12+ messages in thread
From: Mark Brown @ 2018-01-12 20:01 UTC (permalink / raw)
  Cc: Rob Herring, Lee Jones, Mark Brown

The patch

   mfd: syscon: Add hardware spinlock support

has been applied to the regmap tree at

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap.git 

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.  

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark

>From 3bafc09e779710abaa7b836fe3bbeeeab7754c2b Mon Sep 17 00:00:00 2001
From: Baolin Wang <baolin.wang@linaro.org>
Date: Mon, 25 Dec 2017 14:37:10 +0800
Subject: [PATCH] mfd: syscon: Add hardware spinlock support

Some system control registers need hardware spinlock to synchronize
between the multiple subsystems, so we should add hardware spinlock
support for syscon.

Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
Acked-by: Rob Herring <robh@kernel.org>
Acked-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
---
 Documentation/devicetree/bindings/mfd/syscon.txt |  8 ++++++++
 drivers/mfd/syscon.c                             | 19 +++++++++++++++++++
 2 files changed, 27 insertions(+)

diff --git a/Documentation/devicetree/bindings/mfd/syscon.txt b/Documentation/devicetree/bindings/mfd/syscon.txt
index 8b92d4576c42..25d9e9c2fd53 100644
--- a/Documentation/devicetree/bindings/mfd/syscon.txt
+++ b/Documentation/devicetree/bindings/mfd/syscon.txt
@@ -16,9 +16,17 @@ Required properties:
 Optional property:
 - reg-io-width: the size (in bytes) of the IO accesses that should be
   performed on the device.
+- hwlocks: reference to a phandle of a hardware spinlock provider node.
 
 Examples:
 gpr: iomuxc-gpr@20e0000 {
 	compatible = "fsl,imx6q-iomuxc-gpr", "syscon";
 	reg = <0x020e0000 0x38>;
+	hwlocks = <&hwlock1 1>;
+};
+
+hwlock1: hwspinlock@40500000 {
+	...
+	reg = <0x40500000 0x1000>;
+	#hwlock-cells = <1>;
 };
diff --git a/drivers/mfd/syscon.c b/drivers/mfd/syscon.c
index b93fe4c4957a..7eaa40bc703f 100644
--- a/drivers/mfd/syscon.c
+++ b/drivers/mfd/syscon.c
@@ -13,6 +13,7 @@
  */
 
 #include <linux/err.h>
+#include <linux/hwspinlock.h>
 #include <linux/io.h>
 #include <linux/module.h>
 #include <linux/list.h>
@@ -87,6 +88,24 @@ static struct syscon *of_syscon_register(struct device_node *np)
 	if (ret)
 		reg_io_width = 4;
 
+	ret = of_hwspin_lock_get_id(np, 0);
+	if (ret > 0 || (IS_ENABLED(CONFIG_HWSPINLOCK) && ret == 0)) {
+		syscon_config.use_hwlock = true;
+		syscon_config.hwlock_id = ret;
+		syscon_config.hwlock_mode = HWLOCK_IRQSTATE;
+	} else if (ret < 0) {
+		switch (ret) {
+		case -ENOENT:
+			/* Ignore missing hwlock, it's optional. */
+			break;
+		default:
+			pr_err("Failed to retrieve valid hwlock: %d\n", ret);
+			/* fall-through */
+		case -EPROBE_DEFER:
+			goto err_regmap;
+		}
+	}
+
 	syscon_config.reg_stride = reg_io_width;
 	syscon_config.val_bits = reg_io_width * 8;
 	syscon_config.max_register = resource_size(&res) - reg_io_width;
-- 
2.15.1

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

* Re: [PATCH v7 2/2] mfd: syscon: Add hardware spinlock support
  2018-01-11 15:22   ` Lee Jones
@ 2018-01-22 13:43     ` Lee Jones
  2018-01-23  8:05       ` Baolin Wang
  0 siblings, 1 reply; 12+ messages in thread
From: Lee Jones @ 2018-01-22 13:43 UTC (permalink / raw)
  To: Baolin Wang
  Cc: arnd-r2nGTMty4D4, robh+dt-DgEjT+Ai2ygdnm+yROfE0A,
	mark.rutland-5wv7dgnIgG8, broonie-DgEjT+Ai2ygdnm+yROfE0A,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA

On Thu, 11 Jan 2018, Lee Jones wrote:
> On Mon, 25 Dec 2017, Baolin Wang wrote:
> 
> > Some system control registers need hardware spinlock to synchronize
> > between the multiple subsystems, so we should add hardware spinlock
> > support for syscon.
> > 
> > Signed-off-by: Baolin Wang <baolin.wang-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
> > Acked-by: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
> > ---
> > Changes since v6:
> >  - Treat hwlock id 0 as valid for regmap.
> > 
> > Changes since v5:
> >  - Fix the case that hwspinlock is not enabled.
> > 
> > Changes since v4:
> >  - Add one exapmle to show how to add hwlock.
> >  - Fix the coding style issue.
> > 
> > Changes since v3:
> >  - Add error handling for of_hwspin_lock_get_id()
> > 
> > Changes since v2:
> >  - Add acked tag from Rob.
> > 
> > Changes since v1:
> >  - Remove timeout configuration.
> >  - Modify the binding file to add hwlocks.
> > ---
> >  Documentation/devicetree/bindings/mfd/syscon.txt |    8 ++++++++
> >  drivers/mfd/syscon.c                             |   19 +++++++++++++++++++
> >  2 files changed, 27 insertions(+)
> 
> Applied, thanks.

In order to avoid confusion, I should like to tell you that this patch
is applied for v4.17, not v4.16.

-- 
Lee Jones
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH v7 2/2] mfd: syscon: Add hardware spinlock support
  2018-01-22 13:43     ` Lee Jones
@ 2018-01-23  8:05       ` Baolin Wang
  2018-01-23  9:11         ` Lee Jones
  0 siblings, 1 reply; 12+ messages in thread
From: Baolin Wang @ 2018-01-23  8:05 UTC (permalink / raw)
  To: Lee Jones
  Cc: Arnd Bergmann, Rob Herring, Mark Rutland, Mark Brown, LKML, DTML

Hi Lee,

On 22 January 2018 at 21:43, Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> wrote:
> On Thu, 11 Jan 2018, Lee Jones wrote:
>> On Mon, 25 Dec 2017, Baolin Wang wrote:
>>
>> > Some system control registers need hardware spinlock to synchronize
>> > between the multiple subsystems, so we should add hardware spinlock
>> > support for syscon.
>> >
>> > Signed-off-by: Baolin Wang <baolin.wang-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
>> > Acked-by: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
>> > ---
>> > Changes since v6:
>> >  - Treat hwlock id 0 as valid for regmap.
>> >
>> > Changes since v5:
>> >  - Fix the case that hwspinlock is not enabled.
>> >
>> > Changes since v4:
>> >  - Add one exapmle to show how to add hwlock.
>> >  - Fix the coding style issue.
>> >
>> > Changes since v3:
>> >  - Add error handling for of_hwspin_lock_get_id()
>> >
>> > Changes since v2:
>> >  - Add acked tag from Rob.
>> >
>> > Changes since v1:
>> >  - Remove timeout configuration.
>> >  - Modify the binding file to add hwlocks.
>> > ---
>> >  Documentation/devicetree/bindings/mfd/syscon.txt |    8 ++++++++
>> >  drivers/mfd/syscon.c                             |   19 +++++++++++++++++++
>> >  2 files changed, 27 insertions(+)
>>
>> Applied, thanks.
>
> In order to avoid confusion, I should like to tell you that this patch
> is applied for v4.17, not v4.16.

This patch has been applied into Mark's branch[1] with your ACK, so
Mark should drop this patch from his branch and you will pick it and
merge it into v4.17?

[1] https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap.git/commit/?h=topic/hwspinlock&id=3bafc09e779710abaa7b836fe3bbeeeab7754c2b

-- 
Baolin.wang
Best Regards
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH v7 2/2] mfd: syscon: Add hardware spinlock support
  2018-01-23  8:05       ` Baolin Wang
@ 2018-01-23  9:11         ` Lee Jones
  0 siblings, 0 replies; 12+ messages in thread
From: Lee Jones @ 2018-01-23  9:11 UTC (permalink / raw)
  To: Baolin Wang
  Cc: Arnd Bergmann, Rob Herring, Mark Rutland, Mark Brown, LKML, DTML

On Tue, 23 Jan 2018, Baolin Wang wrote:

> Hi Lee,
> 
> On 22 January 2018 at 21:43, Lee Jones <lee.jones@linaro.org> wrote:
> > On Thu, 11 Jan 2018, Lee Jones wrote:
> >> On Mon, 25 Dec 2017, Baolin Wang wrote:
> >>
> >> > Some system control registers need hardware spinlock to synchronize
> >> > between the multiple subsystems, so we should add hardware spinlock
> >> > support for syscon.
> >> >
> >> > Signed-off-by: Baolin Wang <baolin.wang@linaro.org>
> >> > Acked-by: Rob Herring <robh@kernel.org>
> >> > ---
> >> > Changes since v6:
> >> >  - Treat hwlock id 0 as valid for regmap.
> >> >
> >> > Changes since v5:
> >> >  - Fix the case that hwspinlock is not enabled.
> >> >
> >> > Changes since v4:
> >> >  - Add one exapmle to show how to add hwlock.
> >> >  - Fix the coding style issue.
> >> >
> >> > Changes since v3:
> >> >  - Add error handling for of_hwspin_lock_get_id()
> >> >
> >> > Changes since v2:
> >> >  - Add acked tag from Rob.
> >> >
> >> > Changes since v1:
> >> >  - Remove timeout configuration.
> >> >  - Modify the binding file to add hwlocks.
> >> > ---
> >> >  Documentation/devicetree/bindings/mfd/syscon.txt |    8 ++++++++
> >> >  drivers/mfd/syscon.c                             |   19 +++++++++++++++++++
> >> >  2 files changed, 27 insertions(+)
> >>
> >> Applied, thanks.
> >
> > In order to avoid confusion, I should like to tell you that this patch
> > is applied for v4.17, not v4.16.
> 
> This patch has been applied into Mark's branch[1] with your ACK, so
> Mark should drop this patch from his branch and you will pick it and
> merge it into v4.17?
> 
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap.git/commit/?h=topic/hwspinlock&id=3bafc09e779710abaa7b836fe3bbeeeab7754c2b

Ah, this is the one that failed to build when merged alone.

Very well.  Ignore my last.

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

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

end of thread, other threads:[~2018-01-23  9:11 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-12-25  6:37 [PATCH v7 1/2] regmap: Add one flag to indicate if a hwlock should be used Baolin Wang
2017-12-25  6:37 ` [PATCH v7 2/2] mfd: syscon: Add hardware spinlock support Baolin Wang
2018-01-02 15:36   ` Lee Jones
2018-01-11 12:36     ` Baolin Wang
     [not found]       ` <CAMz4kuKZjnMZYm59PBa8anfW6pcbgBh-_FDA-3ZKurLXmO6wSA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-01-11 13:08         ` Lee Jones
2018-01-11 14:27           ` Arnd Bergmann
2018-01-11 15:22   ` Lee Jones
2018-01-22 13:43     ` Lee Jones
2018-01-23  8:05       ` Baolin Wang
2018-01-23  9:11         ` Lee Jones
2018-01-12 20:01   ` Applied "mfd: syscon: Add hardware spinlock support" to the regmap tree Mark Brown
     [not found] ` <29fa88f883dae4c1f8a3acb2656cbd7c5a539d40.1514180039.git.baolin.wang-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2017-12-27 10:39   ` Applied "regmap: Add one flag to indicate if a hwlock should be used" " Mark Brown

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