All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v7 1/3] MIPS: Loongson64: Add Loongson-2K1000 reset platform driver
@ 2021-07-01  3:01 Qing Zhang
  2021-07-01  3:01 ` [PATCH v7 2/3] MIPS: Loongson64: DTS: Add pm block node for Loongson-2K1000 Qing Zhang
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Qing Zhang @ 2021-07-01  3:01 UTC (permalink / raw)
  To: Thomas Bogendoerfer, Rob Herring, Jiaxun Yang
  Cc: devicetree, linux-mips, linux-kernel

Add power management register operations to support reboot and poweroff.

Signed-off-by: Qing Zhang <zhangqing@loongson.cn>
---

v6-v7:
No Change
---
 drivers/platform/mips/Kconfig      |  6 ++++
 drivers/platform/mips/Makefile     |  1 +
 drivers/platform/mips/ls2k-reset.c | 53 ++++++++++++++++++++++++++++++
 3 files changed, 60 insertions(+)
 create mode 100644 drivers/platform/mips/ls2k-reset.c

diff --git a/drivers/platform/mips/Kconfig b/drivers/platform/mips/Kconfig
index 8ac149173c64..d421e1482395 100644
--- a/drivers/platform/mips/Kconfig
+++ b/drivers/platform/mips/Kconfig
@@ -30,4 +30,10 @@ config RS780E_ACPI
 	help
 	  Loongson RS780E PCH ACPI Controller driver.
 
+config LS2K_RESET
+	bool "Loongson-2K1000 Reset Controller"
+	depends on MACH_LOONGSON64 || COMPILE_TEST
+	help
+	  Loongson-2K1000 Reset Controller driver.
+
 endif # MIPS_PLATFORM_DEVICES
diff --git a/drivers/platform/mips/Makefile b/drivers/platform/mips/Makefile
index 178149098777..4c71444e453a 100644
--- a/drivers/platform/mips/Makefile
+++ b/drivers/platform/mips/Makefile
@@ -1,3 +1,4 @@
 # SPDX-License-Identifier: GPL-2.0-only
 obj-$(CONFIG_CPU_HWMON) += cpu_hwmon.o
 obj-$(CONFIG_RS780E_ACPI) += rs780e-acpi.o
+obj-$(CONFIG_LS2K_RESET) += ls2k-reset.o
diff --git a/drivers/platform/mips/ls2k-reset.c b/drivers/platform/mips/ls2k-reset.c
new file mode 100644
index 000000000000..286d47bf6964
--- /dev/null
+++ b/drivers/platform/mips/ls2k-reset.c
@@ -0,0 +1,53 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ *  Copyright (C) 2021, Qing Zhang <zhangqing@loongson.cn>
+ *  Loongson-2K1000 reset support
+ */
+
+#include <linux/of_address.h>
+#include <linux/pm.h>
+#include <asm/reboot.h>
+
+#define	PM1_STS		0x0c /* Power Management1 Status Register */
+#define	PM1_CNT		0x14 /* Power Management 1 Control Register */
+#define	RST_CNT		0x30 /* Reset Control Register */
+
+static void __iomem *base;
+
+static void ls2k_restart(char *command)
+{
+	writel(0x1, (void *)base + RST_CNT);
+}
+
+static void ls2k_poweroff(void)
+{
+	/* Clear */
+	writel((readl((void *)base + PM1_STS) & 0xffffffff), (void *)base + PM1_STS);
+	/* Sleep Enable | Soft Off*/
+	writel(GENMASK(12, 10)|BIT(13), (void *)base + PM1_CNT);
+}
+
+static int ls2k_reset_init(void)
+{
+	struct device_node *np;
+
+	np = of_find_compatible_node(NULL, NULL, "loongson,ls2k-pm");
+	if (!np) {
+		pr_info("Failed to get PM node\n");
+		return -ENODEV;
+	}
+
+	base = of_iomap(np, 0);
+	if (!base) {
+		pr_info("Failed to map PM register base address\n");
+		return -ENOMEM;
+	}
+
+	_machine_restart = ls2k_restart;
+	pm_power_off = ls2k_poweroff;
+
+	of_node_put(np);
+	return 0;
+}
+
+arch_initcall(ls2k_reset_init);
-- 
2.31.0


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

* [PATCH v7 2/3] MIPS: Loongson64: DTS: Add pm block node for Loongson-2K1000
  2021-07-01  3:01 [PATCH v7 1/3] MIPS: Loongson64: Add Loongson-2K1000 reset platform driver Qing Zhang
@ 2021-07-01  3:01 ` Qing Zhang
  2021-07-01  3:01 ` [PATCH v7 3/3] dt-bindings: mips: Add Loongson-2K1000 reset support Qing Zhang
  2021-07-01  9:04 ` [PATCH v7 1/3] MIPS: Loongson64: Add Loongson-2K1000 reset platform driver Sergei Shtylyov
  2 siblings, 0 replies; 5+ messages in thread
From: Qing Zhang @ 2021-07-01  3:01 UTC (permalink / raw)
  To: Thomas Bogendoerfer, Rob Herring, Jiaxun Yang
  Cc: devicetree, linux-mips, linux-kernel

The module is now supported, enable it.

Signed-off-by: Qing Zhang <zhangqing@loongson.cn>
---

v6-v7:
No change
---
 arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi b/arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi
index 5747f171de29..6004400bb689 100644
--- a/arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi
+++ b/arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi
@@ -52,6 +52,11 @@ package0: bus@10000000 {
 			0 0x40000000 0 0x40000000 0 0x40000000
 			0xfe 0x00000000 0xfe 0x00000000 0 0x40000000>;
 
+		pm: power-controller@1fe07000 {
+			compatible = "loongson,ls2k-pm";
+			reg = <0 0x1fe07000 0 0x422>;
+		};
+
 		liointc0: interrupt-controller@1fe11400 {
 			compatible = "loongson,liointc-2.0";
 			reg = <0 0x1fe11400 0 0x40>,
-- 
2.31.0


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

* [PATCH v7 3/3] dt-bindings: mips: Add Loongson-2K1000 reset support
  2021-07-01  3:01 [PATCH v7 1/3] MIPS: Loongson64: Add Loongson-2K1000 reset platform driver Qing Zhang
  2021-07-01  3:01 ` [PATCH v7 2/3] MIPS: Loongson64: DTS: Add pm block node for Loongson-2K1000 Qing Zhang
@ 2021-07-01  3:01 ` Qing Zhang
  2021-07-01 14:02   ` Rob Herring
  2021-07-01  9:04 ` [PATCH v7 1/3] MIPS: Loongson64: Add Loongson-2K1000 reset platform driver Sergei Shtylyov
  2 siblings, 1 reply; 5+ messages in thread
From: Qing Zhang @ 2021-07-01  3:01 UTC (permalink / raw)
  To: Thomas Bogendoerfer, Rob Herring, Jiaxun Yang
  Cc: devicetree, linux-mips, linux-kernel

Switch the DT binding to a YAML schema to enable the DT validation.

Signed-off-by: Qing Zhang <zhangqing@loongson.cn>
---

v6-v7:
Add yaml file
---
 .../bindings/mips/loongson/ls2k-reset.yaml    | 38 +++++++++++++++++++
 1 file changed, 38 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/mips/loongson/ls2k-reset.yaml

diff --git a/Documentation/devicetree/bindings/mips/loongson/ls2k-reset.yaml b/Documentation/devicetree/bindings/mips/loongson/ls2k-reset.yaml
new file mode 100644
index 000000000000..6016ea756ccd
--- /dev/null
+++ b/Documentation/devicetree/bindings/mips/loongson/ls2k-reset.yaml
@@ -0,0 +1,38 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/mips/loongson/ls2k-reset.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: Loongson 2K1000 PM Controller
+
+maintainers:
+  - Qing Zhang <zhangqing@loongson.cn>
+
+description: |
+  This controller can be found in Loongson-2K1000 Soc systems.
+
+properties:
+  compatible:
+    const: loongson,ls2k-pm
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    bus {
+        #address-cells = <2>;
+        #size-cells = <2>;
+        pm: power-controller@1fe07000 {
+            compatible = "loongson,ls2k-pm";
+            reg = <0 0x1fe07000 0 0x422>;
+        };
+    };
+...
-- 
2.31.0


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

* Re: [PATCH v7 1/3] MIPS: Loongson64: Add Loongson-2K1000 reset platform driver
  2021-07-01  3:01 [PATCH v7 1/3] MIPS: Loongson64: Add Loongson-2K1000 reset platform driver Qing Zhang
  2021-07-01  3:01 ` [PATCH v7 2/3] MIPS: Loongson64: DTS: Add pm block node for Loongson-2K1000 Qing Zhang
  2021-07-01  3:01 ` [PATCH v7 3/3] dt-bindings: mips: Add Loongson-2K1000 reset support Qing Zhang
@ 2021-07-01  9:04 ` Sergei Shtylyov
  2 siblings, 0 replies; 5+ messages in thread
From: Sergei Shtylyov @ 2021-07-01  9:04 UTC (permalink / raw)
  To: Qing Zhang, Thomas Bogendoerfer, Rob Herring, Jiaxun Yang
  Cc: devicetree, linux-mips, linux-kernel

Hello!

On 01.07.2021 6:01, Qing Zhang wrote:

> Add power management register operations to support reboot and poweroff.
> 
> Signed-off-by: Qing Zhang <zhangqing@loongson.cn>
[...]
> diff --git a/drivers/platform/mips/ls2k-reset.c b/drivers/platform/mips/ls2k-reset.c
> new file mode 100644
> index 000000000000..286d47bf6964
> --- /dev/null
> +++ b/drivers/platform/mips/ls2k-reset.c
> @@ -0,0 +1,53 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + *  Copyright (C) 2021, Qing Zhang <zhangqing@loongson.cn>
> + *  Loongson-2K1000 reset support
> + */
> +
> +#include <linux/of_address.h>
> +#include <linux/pm.h>
> +#include <asm/reboot.h>
> +
> +#define	PM1_STS		0x0c /* Power Management1 Status Register */
                                                         ^ space missing?

> +#define	PM1_CNT		0x14 /* Power Management 1 Control Register */
> +#define	RST_CNT		0x30 /* Reset Control Register */
> +
> +static void __iomem *base;
> +
> +static void ls2k_restart(char *command)
> +{
> +	writel(0x1, (void *)base + RST_CNT);
> +}
> +
> +static void ls2k_poweroff(void)
> +{
> +	/* Clear */
> +	writel((readl((void *)base + PM1_STS) & 0xffffffff), (void *)base + PM1_STS);

    Are the pointer casts really necessary above?

> +	/* Sleep Enable | Soft Off*/
> +	writel(GENMASK(12, 10)|BIT(13), (void *)base + PM1_CNT);

    Spaces around that | are needed.

[...]

MBR, Sergei

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

* Re: [PATCH v7 3/3] dt-bindings: mips: Add Loongson-2K1000 reset support
  2021-07-01  3:01 ` [PATCH v7 3/3] dt-bindings: mips: Add Loongson-2K1000 reset support Qing Zhang
@ 2021-07-01 14:02   ` Rob Herring
  0 siblings, 0 replies; 5+ messages in thread
From: Rob Herring @ 2021-07-01 14:02 UTC (permalink / raw)
  To: Qing Zhang
  Cc: Thomas Bogendoerfer, linux-mips, Rob Herring, Jiaxun Yang,
	linux-kernel, devicetree

On Thu, 01 Jul 2021 11:01:37 +0800, Qing Zhang wrote:
> Switch the DT binding to a YAML schema to enable the DT validation.
> 
> Signed-off-by: Qing Zhang <zhangqing@loongson.cn>
> ---
> 
> v6-v7:
> Add yaml file
> ---
>  .../bindings/mips/loongson/ls2k-reset.yaml    | 38 +++++++++++++++++++
>  1 file changed, 38 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/mips/loongson/ls2k-reset.yaml
> 

My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check'
on your patch (DT_CHECKER_FLAGS is new in v5.13):

yamllint warnings/errors:

dtschema/dtc warnings/errors:
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/mips/loongson/ls2k-reset.example.dt.yaml: power-controller@1fe07000: '#power-domain-cells' is a required property
	From schema: /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/power/power-domain.yaml
\ndoc reference errors (make refcheckdocs):

See https://patchwork.ozlabs.org/patch/1499207

This check can fail if there are any dependencies. The base for a patch
series is generally the most recent rc1.

If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:

pip3 install dtschema --upgrade

Please check and re-submit.


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

end of thread, other threads:[~2021-07-01 14:03 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-01  3:01 [PATCH v7 1/3] MIPS: Loongson64: Add Loongson-2K1000 reset platform driver Qing Zhang
2021-07-01  3:01 ` [PATCH v7 2/3] MIPS: Loongson64: DTS: Add pm block node for Loongson-2K1000 Qing Zhang
2021-07-01  3:01 ` [PATCH v7 3/3] dt-bindings: mips: Add Loongson-2K1000 reset support Qing Zhang
2021-07-01 14:02   ` Rob Herring
2021-07-01  9:04 ` [PATCH v7 1/3] MIPS: Loongson64: Add Loongson-2K1000 reset platform driver Sergei Shtylyov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.