linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/3] reset: meson: add Meson-A1 SoC support
@ 2019-09-29  6:24 Xingyu Chen
  2019-09-29  6:24 ` [PATCH v3 1/3] arm64: dts: meson: add reset controller for Meson-A1 SoC Xingyu Chen
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Xingyu Chen @ 2019-09-29  6:24 UTC (permalink / raw)
  To: Philipp Zabel, Kevin Hilman, Neil Armstrong
  Cc: Xingyu Chen, Rob Herring, Jerome Brunet, Hanjie Lin, Jianxin Pan,
	linux-amlogic, linux-arm-kernel, linux-kernel, devicetree

This patchset adds support for Meson-A1 SoC Reset Controller. A new struct
meson_reset_param is introduced to describe the register differences between
Meson-A1 and previous SoCs.

Changes since v2 at [1]:
- add comments in header file to indicate holes
- reorder the Signed-off-by and Reviewed-by
- remove Jianxin's Signed-off-by
- add Kevin's Reviewed-by

Changes since v1 at [0]:
- rebase on linux-next
- add Neil's Reviewed-by

[0] https://lore.kernel.org/linux-amlogic/1568808746-1153-1-git-send-email-xingyu.chen@amlogic.com
[1] https://lore.kernel.org/linux-amlogic/1569227661-4261-1-git-send-email-xingyu.chen@amlogic.com

Xingyu Chen (3):
  arm64: dts: meson: add reset controller for Meson-A1 SoC
  dt-bindings: reset: add bindings for the Meson-A1 SoC Reset Controller
  reset: add support for the Meson-A1 SoC Reset Controller

 .../bindings/reset/amlogic,meson-reset.yaml        |  1 +
 arch/arm64/boot/dts/amlogic/meson-a1.dtsi          |  6 ++
 drivers/reset/reset-meson.c                        | 35 ++++++++--
 include/dt-bindings/reset/amlogic,meson-a1-reset.h | 74 ++++++++++++++++++++++
 4 files changed, 109 insertions(+), 7 deletions(-)
 create mode 100644 include/dt-bindings/reset/amlogic,meson-a1-reset.h

-- 
2.7.4


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

* [PATCH v3 1/3] arm64: dts: meson: add reset controller for Meson-A1 SoC
  2019-09-29  6:24 [PATCH v3 0/3] reset: meson: add Meson-A1 SoC support Xingyu Chen
@ 2019-09-29  6:24 ` Xingyu Chen
  2019-10-01 13:49   ` Neil Armstrong
  2019-12-09 21:52   ` Kevin Hilman
  2019-09-29  6:24 ` [PATCH v3 2/3] dt-bindings: reset: add bindings for the Meson-A1 SoC Reset Controller Xingyu Chen
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 8+ messages in thread
From: Xingyu Chen @ 2019-09-29  6:24 UTC (permalink / raw)
  To: Philipp Zabel, Kevin Hilman, Neil Armstrong
  Cc: Xingyu Chen, Rob Herring, Jerome Brunet, Hanjie Lin, Jianxin Pan,
	linux-amlogic, linux-arm-kernel, linux-kernel, devicetree

Add the reset controller device of Meson-A1 SoC family

Signed-off-by: Xingyu Chen <xingyu.chen@amlogic.com>
---
 arch/arm64/boot/dts/amlogic/meson-a1.dtsi | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/arm64/boot/dts/amlogic/meson-a1.dtsi b/arch/arm64/boot/dts/amlogic/meson-a1.dtsi
index 7210ad0..1c588ab 100644
--- a/arch/arm64/boot/dts/amlogic/meson-a1.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-a1.dtsi
@@ -74,6 +74,12 @@
 			#size-cells = <2>;
 			ranges = <0x0 0x0 0x0 0xfe000000 0x0 0x1000000>;
 
+			reset: reset-controller@0 {
+				compatible = "amlogic,meson-a1-reset";
+				reg = <0x0 0x0 0x0 0x8c>;
+				#reset-cells = <1>;
+			};
+
 			uart_AO: serial@1c00 {
 				compatible = "amlogic,meson-gx-uart",
 					     "amlogic,meson-ao-uart";
-- 
2.7.4


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

* [PATCH v3 2/3] dt-bindings: reset: add bindings for the Meson-A1 SoC Reset Controller
  2019-09-29  6:24 [PATCH v3 0/3] reset: meson: add Meson-A1 SoC support Xingyu Chen
  2019-09-29  6:24 ` [PATCH v3 1/3] arm64: dts: meson: add reset controller for Meson-A1 SoC Xingyu Chen
@ 2019-09-29  6:24 ` Xingyu Chen
  2019-10-01 13:47   ` Rob Herring
  2019-09-29  6:24 ` [PATCH v3 3/3] reset: add support " Xingyu Chen
  2019-10-08 14:23 ` [PATCH v3 0/3] reset: meson: add Meson-A1 SoC support Philipp Zabel
  3 siblings, 1 reply; 8+ messages in thread
From: Xingyu Chen @ 2019-09-29  6:24 UTC (permalink / raw)
  To: Philipp Zabel, Kevin Hilman, Neil Armstrong
  Cc: Xingyu Chen, Rob Herring, Jerome Brunet, Hanjie Lin, Jianxin Pan,
	linux-amlogic, linux-arm-kernel, linux-kernel, devicetree

Add DT bindings for the Meson-A1 SoC Reset Controller include file,
and also slightly update documentation.

Signed-off-by: Xingyu Chen <xingyu.chen@amlogic.com>
---
 .../bindings/reset/amlogic,meson-reset.yaml        |  1 +
 include/dt-bindings/reset/amlogic,meson-a1-reset.h | 74 ++++++++++++++++++++++
 2 files changed, 75 insertions(+)
 create mode 100644 include/dt-bindings/reset/amlogic,meson-a1-reset.h

diff --git a/Documentation/devicetree/bindings/reset/amlogic,meson-reset.yaml b/Documentation/devicetree/bindings/reset/amlogic,meson-reset.yaml
index 00917d8..b3f57d8 100644
--- a/Documentation/devicetree/bindings/reset/amlogic,meson-reset.yaml
+++ b/Documentation/devicetree/bindings/reset/amlogic,meson-reset.yaml
@@ -16,6 +16,7 @@ properties:
       - amlogic,meson8b-reset # Reset Controller on Meson8b and compatible SoCs
       - amlogic,meson-gxbb-reset # Reset Controller on GXBB and compatible SoCs
       - amlogic,meson-axg-reset # Reset Controller on AXG and compatible SoCs
+      - amlogic,meson-a1-reset # Reset Controller on A1 and compatible SoCs
 
   reg:
     maxItems: 1
diff --git a/include/dt-bindings/reset/amlogic,meson-a1-reset.h b/include/dt-bindings/reset/amlogic,meson-a1-reset.h
new file mode 100644
index 00000000..f1a3a79
--- /dev/null
+++ b/include/dt-bindings/reset/amlogic,meson-a1-reset.h
@@ -0,0 +1,74 @@
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+ *
+ * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
+ * Author: Xingyu Chen <xingyu.chen@amlogic.com>
+ *
+ */
+
+#ifndef _DT_BINDINGS_AMLOGIC_MESON_A1_RESET_H
+#define _DT_BINDINGS_AMLOGIC_MESON_A1_RESET_H
+
+/*	RESET0					*/
+/*					0	*/
+#define RESET_AM2AXI_VAD		1
+/*					2-3	*/
+#define RESET_PSRAM			4
+#define RESET_PAD_CTRL			5
+/*					6	*/
+#define RESET_TEMP_SENSOR		7
+#define RESET_AM2AXI_DEV		8
+/*					9	*/
+#define RESET_SPICC_A			10
+#define RESET_MSR_CLK			11
+#define RESET_AUDIO			12
+#define RESET_ANALOG_CTRL		13
+#define RESET_SAR_ADC			14
+#define RESET_AUDIO_VAD			15
+#define RESET_CEC			16
+#define RESET_PWM_EF			17
+#define RESET_PWM_CD			18
+#define RESET_PWM_AB			19
+/*					20	*/
+#define RESET_IR_CTRL			21
+#define RESET_I2C_S_A			22
+/*					23	*/
+#define RESET_I2C_M_D			24
+#define RESET_I2C_M_C			25
+#define RESET_I2C_M_B			26
+#define RESET_I2C_M_A			27
+#define RESET_I2C_PROD_AHB		28
+#define RESET_I2C_PROD			29
+/*					30-31	*/
+
+/*	RESET1					*/
+#define RESET_ACODEC			32
+#define RESET_DMA			33
+#define RESET_SD_EMMC_A			34
+/*					35	*/
+#define RESET_USBCTRL			36
+/*					37	*/
+#define RESET_USBPHY			38
+/*					39-41	*/
+#define RESET_RSA			42
+#define RESET_DMC			43
+/*					44	*/
+#define RESET_IRQ_CTRL			45
+/*					46	*/
+#define RESET_NIC_VAD			47
+#define RESET_NIC_AXI			48
+#define RESET_RAMA			49
+#define RESET_RAMB			50
+/*					51-52	*/
+#define RESET_ROM			53
+#define RESET_SPIFC			54
+#define RESET_GIC			55
+#define RESET_UART_C			56
+#define RESET_UART_B			57
+#define RESET_UART_A			58
+#define RESET_OSC_RING			59
+/*					60-63	*/
+
+/*	RESET2					*/
+/*					64-95	*/
+
+#endif
-- 
2.7.4


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

* [PATCH v3 3/3] reset: add support for the Meson-A1 SoC Reset Controller
  2019-09-29  6:24 [PATCH v3 0/3] reset: meson: add Meson-A1 SoC support Xingyu Chen
  2019-09-29  6:24 ` [PATCH v3 1/3] arm64: dts: meson: add reset controller for Meson-A1 SoC Xingyu Chen
  2019-09-29  6:24 ` [PATCH v3 2/3] dt-bindings: reset: add bindings for the Meson-A1 SoC Reset Controller Xingyu Chen
@ 2019-09-29  6:24 ` Xingyu Chen
  2019-10-08 14:23 ` [PATCH v3 0/3] reset: meson: add Meson-A1 SoC support Philipp Zabel
  3 siblings, 0 replies; 8+ messages in thread
From: Xingyu Chen @ 2019-09-29  6:24 UTC (permalink / raw)
  To: Philipp Zabel, Kevin Hilman, Neil Armstrong
  Cc: Xingyu Chen, Rob Herring, Jerome Brunet, Hanjie Lin, Jianxin Pan,
	linux-amlogic, linux-arm-kernel, linux-kernel

The number of RESET registers and offset of RESET_LEVEL register for
Meson-A1 are different from previous SoCs, In order to describe these
differences, we introduce the struct meson_reset_param.

Reviewed-by: Kevin Hilman <khilman@baylibre.com>
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
Signed-off-by: Xingyu Chen <xingyu.chen@amlogic.com>
---
 drivers/reset/reset-meson.c | 35 ++++++++++++++++++++++++++++-------
 1 file changed, 28 insertions(+), 7 deletions(-)

diff --git a/drivers/reset/reset-meson.c b/drivers/reset/reset-meson.c
index 7d05d76..94d7ba8 100644
--- a/drivers/reset/reset-meson.c
+++ b/drivers/reset/reset-meson.c
@@ -15,12 +15,16 @@
 #include <linux/types.h>
 #include <linux/of_device.h>
 
-#define REG_COUNT	8
 #define BITS_PER_REG	32
-#define LEVEL_OFFSET	0x7c
+
+struct meson_reset_param {
+	int reg_count;
+	int level_offset;
+};
 
 struct meson_reset {
 	void __iomem *reg_base;
+	const struct meson_reset_param *param;
 	struct reset_controller_dev rcdev;
 	spinlock_t lock;
 };
@@ -46,10 +50,12 @@ static int meson_reset_level(struct reset_controller_dev *rcdev,
 		container_of(rcdev, struct meson_reset, rcdev);
 	unsigned int bank = id / BITS_PER_REG;
 	unsigned int offset = id % BITS_PER_REG;
-	void __iomem *reg_addr = data->reg_base + LEVEL_OFFSET + (bank << 2);
+	void __iomem *reg_addr;
 	unsigned long flags;
 	u32 reg;
 
+	reg_addr = data->reg_base + data->param->level_offset + (bank << 2);
+
 	spin_lock_irqsave(&data->lock, flags);
 
 	reg = readl(reg_addr);
@@ -81,10 +87,21 @@ static const struct reset_control_ops meson_reset_ops = {
 	.deassert	= meson_reset_deassert,
 };
 
+static const struct meson_reset_param meson8b_param = {
+	.reg_count	= 8,
+	.level_offset	= 0x7c,
+};
+
+static const struct meson_reset_param meson_a1_param = {
+	.reg_count	= 3,
+	.level_offset	= 0x40,
+};
+
 static const struct of_device_id meson_reset_dt_ids[] = {
-	 { .compatible = "amlogic,meson8b-reset" },
-	 { .compatible = "amlogic,meson-gxbb-reset" },
-	 { .compatible = "amlogic,meson-axg-reset" },
+	 { .compatible = "amlogic,meson8b-reset",    .data = &meson8b_param},
+	 { .compatible = "amlogic,meson-gxbb-reset", .data = &meson8b_param},
+	 { .compatible = "amlogic,meson-axg-reset",  .data = &meson8b_param},
+	 { .compatible = "amlogic,meson-a1-reset",   .data = &meson_a1_param},
 	 { /* sentinel */ },
 };
 
@@ -102,12 +119,16 @@ static int meson_reset_probe(struct platform_device *pdev)
 	if (IS_ERR(data->reg_base))
 		return PTR_ERR(data->reg_base);
 
+	data->param = of_device_get_match_data(&pdev->dev);
+	if (!data->param)
+		return -ENODEV;
+
 	platform_set_drvdata(pdev, data);
 
 	spin_lock_init(&data->lock);
 
 	data->rcdev.owner = THIS_MODULE;
-	data->rcdev.nr_resets = REG_COUNT * BITS_PER_REG;
+	data->rcdev.nr_resets = data->param->reg_count * BITS_PER_REG;
 	data->rcdev.ops = &meson_reset_ops;
 	data->rcdev.of_node = pdev->dev.of_node;
 
-- 
2.7.4


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

* Re: [PATCH v3 2/3] dt-bindings: reset: add bindings for the Meson-A1 SoC Reset Controller
  2019-09-29  6:24 ` [PATCH v3 2/3] dt-bindings: reset: add bindings for the Meson-A1 SoC Reset Controller Xingyu Chen
@ 2019-10-01 13:47   ` Rob Herring
  0 siblings, 0 replies; 8+ messages in thread
From: Rob Herring @ 2019-10-01 13:47 UTC (permalink / raw)
  To: Xingyu Chen
  Cc: Philipp Zabel, Kevin Hilman, Neil Armstrong, Xingyu Chen,
	Jerome Brunet, Hanjie Lin, Jianxin Pan, linux-amlogic,
	linux-arm-kernel, linux-kernel, devicetree

On Sun, 29 Sep 2019 14:24:14 +0800, Xingyu Chen wrote:
> Add DT bindings for the Meson-A1 SoC Reset Controller include file,
> and also slightly update documentation.
> 
> Signed-off-by: Xingyu Chen <xingyu.chen@amlogic.com>
> ---
>  .../bindings/reset/amlogic,meson-reset.yaml        |  1 +
>  include/dt-bindings/reset/amlogic,meson-a1-reset.h | 74 ++++++++++++++++++++++
>  2 files changed, 75 insertions(+)
>  create mode 100644 include/dt-bindings/reset/amlogic,meson-a1-reset.h
> 

Reviewed-by: Rob Herring <robh@kernel.org>

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

* Re: [PATCH v3 1/3] arm64: dts: meson: add reset controller for Meson-A1 SoC
  2019-09-29  6:24 ` [PATCH v3 1/3] arm64: dts: meson: add reset controller for Meson-A1 SoC Xingyu Chen
@ 2019-10-01 13:49   ` Neil Armstrong
  2019-12-09 21:52   ` Kevin Hilman
  1 sibling, 0 replies; 8+ messages in thread
From: Neil Armstrong @ 2019-10-01 13:49 UTC (permalink / raw)
  To: Xingyu Chen, Philipp Zabel, Kevin Hilman
  Cc: Rob Herring, Jerome Brunet, Hanjie Lin, Jianxin Pan,
	linux-amlogic, linux-arm-kernel, linux-kernel, devicetree

On 29/09/2019 08:24, Xingyu Chen wrote:
> Add the reset controller device of Meson-A1 SoC family
> 
> Signed-off-by: Xingyu Chen <xingyu.chen@amlogic.com>
> ---
>  arch/arm64/boot/dts/amlogic/meson-a1.dtsi | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/amlogic/meson-a1.dtsi b/arch/arm64/boot/dts/amlogic/meson-a1.dtsi
> index 7210ad0..1c588ab 100644
> --- a/arch/arm64/boot/dts/amlogic/meson-a1.dtsi
> +++ b/arch/arm64/boot/dts/amlogic/meson-a1.dtsi
> @@ -74,6 +74,12 @@
>  			#size-cells = <2>;
>  			ranges = <0x0 0x0 0x0 0xfe000000 0x0 0x1000000>;
>  
> +			reset: reset-controller@0 {
> +				compatible = "amlogic,meson-a1-reset";
> +				reg = <0x0 0x0 0x0 0x8c>;
> +				#reset-cells = <1>;
> +			};
> +
>  			uart_AO: serial@1c00 {
>  				compatible = "amlogic,meson-gx-uart",
>  					     "amlogic,meson-ao-uart";
> 

Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>

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

* Re: [PATCH v3 0/3] reset: meson: add Meson-A1 SoC support
  2019-09-29  6:24 [PATCH v3 0/3] reset: meson: add Meson-A1 SoC support Xingyu Chen
                   ` (2 preceding siblings ...)
  2019-09-29  6:24 ` [PATCH v3 3/3] reset: add support " Xingyu Chen
@ 2019-10-08 14:23 ` Philipp Zabel
  3 siblings, 0 replies; 8+ messages in thread
From: Philipp Zabel @ 2019-10-08 14:23 UTC (permalink / raw)
  To: Xingyu Chen, Kevin Hilman, Neil Armstrong
  Cc: Rob Herring, Jerome Brunet, Hanjie Lin, Jianxin Pan,
	linux-amlogic, linux-arm-kernel, linux-kernel, devicetree

Hi Xingyu,

On Sun, 2019-09-29 at 14:24 +0800, Xingyu Chen wrote:
> This patchset adds support for Meson-A1 SoC Reset Controller. A new struct
> meson_reset_param is introduced to describe the register differences between
> Meson-A1 and previous SoCs.
>
> Changes since v2 at [1]:
> - add comments in header file to indicate holes
> - reorder the Signed-off-by and Reviewed-by
> - remove Jianxin's Signed-off-by
> - add Kevin's Reviewed-by

Thank you, I have applied patches 2 and 3 to reset/next.

regards
Philipp

> Changes since v1 at [0]:
> - rebase on linux-next
> - add Neil's Reviewed-by
> 
> [0] https://lore.kernel.org/linux-amlogic/1568808746-1153-1-git-send-email-xingyu.chen@amlogic.com
> [1] https://lore.kernel.org/linux-amlogic/1569227661-4261-1-git-send-email-xingyu.chen@amlogic.com
> 
> Xingyu Chen (3):
>   arm64: dts: meson: add reset controller for Meson-A1 SoC
>   dt-bindings: reset: add bindings for the Meson-A1 SoC Reset Controller
>   reset: add support for the Meson-A1 SoC Reset Controller
> 
>  .../bindings/reset/amlogic,meson-reset.yaml        |  1 +
>  arch/arm64/boot/dts/amlogic/meson-a1.dtsi          |  6 ++
>  drivers/reset/reset-meson.c                        | 35 ++++++++--
>  include/dt-bindings/reset/amlogic,meson-a1-reset.h | 74 ++++++++++++++++++++++
>  4 files changed, 109 insertions(+), 7 deletions(-)
>  create mode 100644 include/dt-bindings/reset/amlogic,meson-a1-reset.h
> 

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

* Re: [PATCH v3 1/3] arm64: dts: meson: add reset controller for Meson-A1 SoC
  2019-09-29  6:24 ` [PATCH v3 1/3] arm64: dts: meson: add reset controller for Meson-A1 SoC Xingyu Chen
  2019-10-01 13:49   ` Neil Armstrong
@ 2019-12-09 21:52   ` Kevin Hilman
  1 sibling, 0 replies; 8+ messages in thread
From: Kevin Hilman @ 2019-12-09 21:52 UTC (permalink / raw)
  To: Xingyu Chen, Philipp Zabel, Neil Armstrong
  Cc: Xingyu Chen, Rob Herring, Jerome Brunet, Hanjie Lin, Jianxin Pan,
	linux-amlogic, linux-arm-kernel, linux-kernel, devicetree

Hi Xiangyu,

Xingyu Chen <xingyu.chen@amlogic.com> writes:

> Add the reset controller device of Meson-A1 SoC family
>
> Signed-off-by: Xingyu Chen <xingyu.chen@amlogic.com>

I just realized I missed the DT patch for this series.  Sorry about
that.  Generally it helps if you (re)send the DT patches separate from
the driver, and if if it's been a couple weeks and you haven't heard
from me, don't hesitate to ping me.

Queuing this up now, with Neils tag.  Sorry for the delay.

Kevin

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

end of thread, other threads:[~2019-12-09 21:52 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-29  6:24 [PATCH v3 0/3] reset: meson: add Meson-A1 SoC support Xingyu Chen
2019-09-29  6:24 ` [PATCH v3 1/3] arm64: dts: meson: add reset controller for Meson-A1 SoC Xingyu Chen
2019-10-01 13:49   ` Neil Armstrong
2019-12-09 21:52   ` Kevin Hilman
2019-09-29  6:24 ` [PATCH v3 2/3] dt-bindings: reset: add bindings for the Meson-A1 SoC Reset Controller Xingyu Chen
2019-10-01 13:47   ` Rob Herring
2019-09-29  6:24 ` [PATCH v3 3/3] reset: add support " Xingyu Chen
2019-10-08 14:23 ` [PATCH v3 0/3] reset: meson: add Meson-A1 SoC support Philipp Zabel

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