All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH RESEND 0/5] Loongson64: RS780E clean-ups
@ 2020-04-20  7:33 Jiaxun Yang
  2020-04-20  7:33 ` [PATCH RESEND 1/5] MIPS: Loongson64: Remove dead RTC code Jiaxun Yang
                   ` (6 more replies)
  0 siblings, 7 replies; 18+ messages in thread
From: Jiaxun Yang @ 2020-04-20  7:33 UTC (permalink / raw)
  To: linux-mips
  Cc: Jiaxun Yang, Thomas Bogendoerfer, Rob Herring, Huacai Chen,
	devicetree, linux-kernel

Basically ensure all RS780E stuff is enabled by DeviceTree.
So I can post LS7A support later on.

Hi Thomas, could you please pick them into MIPS tree?

Thanks.

Jiaxun Yang (5):
  MIPS: Loongson64: Remove dead RTC code
  MIPS: Loongson64: Make RS780E ACPI as a platform driver
  dt-bindings: Document Loongson RS780E PCH ACPI Controller
  MIPS: DTS: Loongson64: Add ACPI Controller Node
  MIPS: Loongson64: Mark RS780 HPET as broken

 .../bindings/mips/loongson/rs780e-acpi.yaml   | 40 +++++++++++++
 arch/mips/boot/dts/loongson/rs780e-pch.dtsi   |  5 ++
 .../include/asm/mach-loongson64/mc146818rtc.h | 36 ------------
 arch/mips/loongson64/Kconfig                  | 12 +---
 arch/mips/loongson64/Makefile                 |  3 +-
 arch/mips/loongson64/rtc.c                    | 39 -------------
 arch/mips/loongson64/time.c                   |  8 +--
 drivers/platform/mips/Kconfig                 |  6 ++
 drivers/platform/mips/Makefile                |  1 +
 .../platform/mips/rs780e-acpi.c               | 58 ++++++++++++-------
 10 files changed, 95 insertions(+), 113 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/mips/loongson/rs780e-acpi.yaml
 delete mode 100644 arch/mips/include/asm/mach-loongson64/mc146818rtc.h
 delete mode 100644 arch/mips/loongson64/rtc.c
 rename arch/mips/loongson64/acpi_init.c => drivers/platform/mips/rs780e-acpi.c (70%)

-- 
2.26.0.rc2


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

* [PATCH RESEND 1/5] MIPS: Loongson64: Remove dead RTC code
  2020-04-20  7:33 [PATCH RESEND 0/5] Loongson64: RS780E clean-ups Jiaxun Yang
@ 2020-04-20  7:33 ` Jiaxun Yang
  2020-04-20 12:06   ` maobibo
  2020-04-20  7:33 ` [PATCH RESEND 2/5] MIPS: Loongson64: Make RS780E ACPI as a platform driver Jiaxun Yang
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 18+ messages in thread
From: Jiaxun Yang @ 2020-04-20  7:33 UTC (permalink / raw)
  To: linux-mips
  Cc: Jiaxun Yang, Thomas Bogendoerfer, Rob Herring, Huacai Chen,
	devicetree, linux-kernel

RTC is now enabled by devicetree. So platform code is
no longer needed.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
---
 .../include/asm/mach-loongson64/mc146818rtc.h | 36 -----------------
 arch/mips/loongson64/Kconfig                  |  4 --
 arch/mips/loongson64/Makefile                 |  1 -
 arch/mips/loongson64/rtc.c                    | 39 -------------------
 arch/mips/loongson64/time.c                   |  8 +---
 5 files changed, 1 insertion(+), 87 deletions(-)
 delete mode 100644 arch/mips/include/asm/mach-loongson64/mc146818rtc.h
 delete mode 100644 arch/mips/loongson64/rtc.c

diff --git a/arch/mips/include/asm/mach-loongson64/mc146818rtc.h b/arch/mips/include/asm/mach-loongson64/mc146818rtc.h
deleted file mode 100644
index ebdccfee50be..000000000000
--- a/arch/mips/include/asm/mach-loongson64/mc146818rtc.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * This file is subject to the terms and conditions of the GNU General Public
- * License.  See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Copyright (C) 1998, 2001, 03, 07 by Ralf Baechle (ralf@linux-mips.org)
- *
- * RTC routines for PC style attached Dallas chip.
- */
-#ifndef __ASM_MACH_LOONGSON64_MC146818RTC_H
-#define __ASM_MACH_LOONGSON64_MC146818RTC_H
-
-#include <linux/io.h>
-
-#define RTC_PORT(x)	(0x70 + (x))
-#define RTC_IRQ		8
-
-static inline unsigned char CMOS_READ(unsigned long addr)
-{
-	outb_p(addr, RTC_PORT(0));
-	return inb_p(RTC_PORT(1));
-}
-
-static inline void CMOS_WRITE(unsigned char data, unsigned long addr)
-{
-	outb_p(addr, RTC_PORT(0));
-	outb_p(data, RTC_PORT(1));
-}
-
-#define RTC_ALWAYS_BCD	0
-
-#ifndef mc146818_decode_year
-#define mc146818_decode_year(year) ((year) < 70 ? (year) + 2000 : (year) + 1970)
-#endif
-
-#endif /* __ASM_MACH_LOONGSON64_MC146818RTC_H */
diff --git a/arch/mips/loongson64/Kconfig b/arch/mips/loongson64/Kconfig
index 48b29c198acf..c386b8a3c753 100644
--- a/arch/mips/loongson64/Kconfig
+++ b/arch/mips/loongson64/Kconfig
@@ -14,8 +14,4 @@ config RS780_HPET
 	  If unsure, say Yes.
 
 
-config LOONGSON_MC146818
-	bool
-	default n
-
 endif # MACH_LOONGSON64
diff --git a/arch/mips/loongson64/Makefile b/arch/mips/loongson64/Makefile
index f04461839540..102a19aa92aa 100644
--- a/arch/mips/loongson64/Makefile
+++ b/arch/mips/loongson64/Makefile
@@ -8,6 +8,5 @@ obj-$(CONFIG_MACH_LOONGSON64) += cop2-ex.o platform.o acpi_init.o dma.o \
 obj-$(CONFIG_SMP)	+= smp.o
 obj-$(CONFIG_NUMA)	+= numa.o
 obj-$(CONFIG_RS780_HPET) += hpet.o
-obj-$(CONFIG_LOONGSON_MC146818) += rtc.o
 obj-$(CONFIG_SUSPEND) += pm.o
 obj-$(CONFIG_PCI_QUIRKS) += vbios_quirk.o
diff --git a/arch/mips/loongson64/rtc.c b/arch/mips/loongson64/rtc.c
deleted file mode 100644
index 8d7628c0f513..000000000000
--- a/arch/mips/loongson64/rtc.c
+++ /dev/null
@@ -1,39 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- *  Lemote Fuloong platform support
- *
- *  Copyright(c) 2010 Arnaud Patard <apatard@mandriva.com>
- */
-
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/platform_device.h>
-#include <linux/mc146818rtc.h>
-
-static struct resource loongson_rtc_resources[] = {
-	{
-		.start	= RTC_PORT(0),
-		.end	= RTC_PORT(1),
-		.flags	= IORESOURCE_IO,
-	}, {
-		.start	= RTC_IRQ,
-		.end	= RTC_IRQ,
-		.flags	= IORESOURCE_IRQ,
-	}
-};
-
-static struct platform_device loongson_rtc_device = {
-	.name		= "rtc_cmos",
-	.id		= -1,
-	.resource	= loongson_rtc_resources,
-	.num_resources	= ARRAY_SIZE(loongson_rtc_resources),
-};
-
-
-static int __init loongson_rtc_platform_init(void)
-{
-	platform_device_register(&loongson_rtc_device);
-	return 0;
-}
-
-device_initcall(loongson_rtc_platform_init);
diff --git a/arch/mips/loongson64/time.c b/arch/mips/loongson64/time.c
index 1245f22cec84..91e842b58365 100644
--- a/arch/mips/loongson64/time.c
+++ b/arch/mips/loongson64/time.c
@@ -6,7 +6,7 @@
  * Copyright (C) 2009 Lemote Inc.
  * Author: Wu Zhangjin, wuzhangjin@gmail.com
  */
-#include <asm/mc146818-time.h>
+
 #include <asm/time.h>
 #include <asm/hpet.h>
 
@@ -21,9 +21,3 @@ void __init plat_time_init(void)
 	setup_hpet_timer();
 #endif
 }
-
-void read_persistent_clock64(struct timespec64 *ts)
-{
-	ts->tv_sec = mc146818_get_cmos_time();
-	ts->tv_nsec = 0;
-}
-- 
2.26.0.rc2


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

* [PATCH RESEND 2/5] MIPS: Loongson64: Make RS780E ACPI as a platform driver
  2020-04-20  7:33 [PATCH RESEND 0/5] Loongson64: RS780E clean-ups Jiaxun Yang
  2020-04-20  7:33 ` [PATCH RESEND 1/5] MIPS: Loongson64: Remove dead RTC code Jiaxun Yang
@ 2020-04-20  7:33 ` Jiaxun Yang
  2020-04-20  7:33 ` [PATCH RESEND 3/5] dt-bindings: Document Loongson RS780E PCH ACPI Controller Jiaxun Yang
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 18+ messages in thread
From: Jiaxun Yang @ 2020-04-20  7:33 UTC (permalink / raw)
  To: linux-mips
  Cc: Jiaxun Yang, Thomas Bogendoerfer, Rob Herring, Huacai Chen,
	devicetree, linux-kernel

Make RS780E ACPI as a platform driver so we can enable it
by DeviceTree selectively.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
---
 arch/mips/loongson64/Makefile                 |  2 +-
 drivers/platform/mips/Kconfig                 |  6 ++
 drivers/platform/mips/Makefile                |  1 +
 .../platform/mips/rs780e-acpi.c               | 58 ++++++++++++-------
 4 files changed, 46 insertions(+), 21 deletions(-)
 rename arch/mips/loongson64/acpi_init.c => drivers/platform/mips/rs780e-acpi.c (70%)

diff --git a/arch/mips/loongson64/Makefile b/arch/mips/loongson64/Makefile
index 102a19aa92aa..6f81b822aeae 100644
--- a/arch/mips/loongson64/Makefile
+++ b/arch/mips/loongson64/Makefile
@@ -2,7 +2,7 @@
 #
 # Makefile for Loongson-3 family machines
 #
-obj-$(CONFIG_MACH_LOONGSON64) += cop2-ex.o platform.o acpi_init.o dma.o \
+obj-$(CONFIG_MACH_LOONGSON64) += cop2-ex.o platform.o dma.o \
 				setup.o init.o env.o time.o reset.o \
 
 obj-$(CONFIG_SMP)	+= smp.o
diff --git a/drivers/platform/mips/Kconfig b/drivers/platform/mips/Kconfig
index 5e77b0dc5fd6..8ac149173c64 100644
--- a/drivers/platform/mips/Kconfig
+++ b/drivers/platform/mips/Kconfig
@@ -24,4 +24,10 @@ config CPU_HWMON
 	help
 	  Loongson-3A/3B CPU Hwmon (temperature sensor) driver.
 
+config RS780E_ACPI
+	bool "Loongson RS780E ACPI Controller"
+	depends on MACH_LOONGSON64 || COMPILE_TEST
+	help
+	  Loongson RS780E PCH ACPI Controller driver.
+
 endif # MIPS_PLATFORM_DEVICES
diff --git a/drivers/platform/mips/Makefile b/drivers/platform/mips/Makefile
index be8146c20dc8..178149098777 100644
--- a/drivers/platform/mips/Makefile
+++ b/drivers/platform/mips/Makefile
@@ -1,2 +1,3 @@
 # SPDX-License-Identifier: GPL-2.0-only
 obj-$(CONFIG_CPU_HWMON) += cpu_hwmon.o
+obj-$(CONFIG_RS780E_ACPI) += rs780e-acpi.o
diff --git a/arch/mips/loongson64/acpi_init.c b/drivers/platform/mips/rs780e-acpi.c
similarity index 70%
rename from arch/mips/loongson64/acpi_init.c
rename to drivers/platform/mips/rs780e-acpi.c
index 8d7c119ddf91..e5a643b78ac9 100644
--- a/arch/mips/loongson64/acpi_init.c
+++ b/drivers/platform/mips/rs780e-acpi.c
@@ -3,32 +3,23 @@
 #include <linux/init.h>
 #include <linux/ioport.h>
 #include <linux/export.h>
+#include <linux/of.h>
+#include <linux/platform_device.h>
 
-#define SBX00_ACPI_IO_BASE 0x800
-#define SBX00_ACPI_IO_SIZE 0x100
+static unsigned long acpi_iobase;
 
-#define ACPI_PM_EVT_BLK         (SBX00_ACPI_IO_BASE + 0x00) /* 4 bytes */
-#define ACPI_PM_CNT_BLK         (SBX00_ACPI_IO_BASE + 0x04) /* 2 bytes */
-#define ACPI_PMA_CNT_BLK        (SBX00_ACPI_IO_BASE + 0x0F) /* 1 byte */
-#define ACPI_PM_TMR_BLK         (SBX00_ACPI_IO_BASE + 0x18) /* 4 bytes */
-#define ACPI_GPE0_BLK           (SBX00_ACPI_IO_BASE + 0x10) /* 8 bytes */
-#define ACPI_END                (SBX00_ACPI_IO_BASE + 0x80)
+#define ACPI_PM_EVT_BLK         (acpi_iobase + 0x00) /* 4 bytes */
+#define ACPI_PM_CNT_BLK         (acpi_iobase + 0x04) /* 2 bytes */
+#define ACPI_PMA_CNT_BLK        (acpi_iobase + 0x0F) /* 1 byte */
+#define ACPI_PM_TMR_BLK         (acpi_iobase + 0x18) /* 4 bytes */
+#define ACPI_GPE0_BLK           (acpi_iobase + 0x10) /* 8 bytes */
+#define ACPI_END                (acpi_iobase + 0x80)
 
 #define PM_INDEX        0xCD6
 #define PM_DATA         0xCD7
 #define PM2_INDEX       0xCD0
 #define PM2_DATA        0xCD1
 
-/*
- * SCI interrupt need acpi space, allocate here
- */
-
-static int __init register_acpi_resource(void)
-{
-	request_region(SBX00_ACPI_IO_BASE, SBX00_ACPI_IO_SIZE, "acpi");
-	return 0;
-}
-
 static void pmio_write_index(u16 index, u8 reg, u8 value)
 {
 	outb(reg, index);
@@ -141,11 +132,38 @@ void acpi_registers_setup(void)
 	pm2_iowrite(0xf8, value);
 }
 
-int __init sbx00_acpi_init(void)
+static int rs780e_acpi_probe(struct platform_device *pdev)
 {
-	register_acpi_resource();
+	struct resource *res;
+
+	res = platform_get_resource(pdev, IORESOURCE_IO, 0);
+	if (!res)
+		return -ENODEV;
+
+	/* SCI interrupt need acpi space, allocate here */
+	if (!request_region(res->start, resource_size(res), "acpi")) {
+		pr_err("RS780E-ACPI: Failed to request IO Region\n");
+		return -EBUSY;
+	}
+
+	acpi_iobase = res->start;
+
 	acpi_registers_setup();
 	acpi_hw_clear_status();
 
 	return 0;
 }
+
+static const struct of_device_id rs780e_acpi_match[] = {
+	{ .compatible = "loongson,rs780e-acpi" },
+	{},
+};
+
+static struct platform_driver rs780e_acpi_driver = {
+	.probe = rs780e_acpi_probe,
+	.driver = {
+		.name = "RS780E-ACPI",
+		.of_match_table = rs780e_acpi_match,
+	},
+};
+builtin_platform_driver(rs780e_acpi_driver);
-- 
2.26.0.rc2


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

* [PATCH RESEND 3/5] dt-bindings: Document Loongson RS780E PCH ACPI Controller
  2020-04-20  7:33 [PATCH RESEND 0/5] Loongson64: RS780E clean-ups Jiaxun Yang
  2020-04-20  7:33 ` [PATCH RESEND 1/5] MIPS: Loongson64: Remove dead RTC code Jiaxun Yang
  2020-04-20  7:33 ` [PATCH RESEND 2/5] MIPS: Loongson64: Make RS780E ACPI as a platform driver Jiaxun Yang
@ 2020-04-20  7:33 ` Jiaxun Yang
  2020-04-20  7:33 ` [PATCH RESEND 4/5] MIPS: DTS: Loongson64: Add ACPI Controller Node Jiaxun Yang
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 18+ messages in thread
From: Jiaxun Yang @ 2020-04-20  7:33 UTC (permalink / raw)
  To: linux-mips
  Cc: Jiaxun Yang, Rob Herring, Thomas Bogendoerfer, Rob Herring,
	Huacai Chen, devicetree, linux-kernel

This controller is attached under ISA Bus and can be found
in Loongson-3 systems with RS780E PCH.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Reviewed-by: Rob Herring <robh@kernel.org>
---
 .../bindings/mips/loongson/rs780e-acpi.yaml   | 40 +++++++++++++++++++
 1 file changed, 40 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/mips/loongson/rs780e-acpi.yaml

diff --git a/Documentation/devicetree/bindings/mips/loongson/rs780e-acpi.yaml b/Documentation/devicetree/bindings/mips/loongson/rs780e-acpi.yaml
new file mode 100644
index 000000000000..d317897e1115
--- /dev/null
+++ b/Documentation/devicetree/bindings/mips/loongson/rs780e-acpi.yaml
@@ -0,0 +1,40 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/mips/loongson/rs780e-acpi.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: Loongson RS780E PCH ACPI Controller
+
+maintainers:
+  - Jiaxun Yang <jiaxun.yang@flygoat.com>
+
+description: |
+  This controller can be found in Loongson-3 systems with RS780E PCH.
+
+properties:
+  compatible:
+    const: loongson,rs780e-acpi
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+examples:
+  - |
+    isa@0 {
+      compatible = "isa";
+      #address-cells = <2>;
+      #size-cells = <1>;
+      ranges = <1 0 0 0x1000>;
+
+      acpi@800 {
+        compatible = "loongson,rs780e-acpi";
+        reg = <1 0x800 0x100>;
+      };
+    };
+
+...
-- 
2.26.0.rc2


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

* [PATCH RESEND 4/5] MIPS: DTS: Loongson64: Add ACPI Controller Node
  2020-04-20  7:33 [PATCH RESEND 0/5] Loongson64: RS780E clean-ups Jiaxun Yang
                   ` (2 preceding siblings ...)
  2020-04-20  7:33 ` [PATCH RESEND 3/5] dt-bindings: Document Loongson RS780E PCH ACPI Controller Jiaxun Yang
@ 2020-04-20  7:33 ` Jiaxun Yang
  2020-04-20  7:33 ` [PATCH RESEND 5/5] MIPS: Loongson64: Mark RS780 HPET as broken Jiaxun Yang
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 18+ messages in thread
From: Jiaxun Yang @ 2020-04-20  7:33 UTC (permalink / raw)
  To: linux-mips
  Cc: Jiaxun Yang, Thomas Bogendoerfer, Rob Herring, Huacai Chen,
	devicetree, linux-kernel

Add ACPI Controller Node for RS780E PCH to fit newly added driver.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
---
 arch/mips/boot/dts/loongson/rs780e-pch.dtsi | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/mips/boot/dts/loongson/rs780e-pch.dtsi b/arch/mips/boot/dts/loongson/rs780e-pch.dtsi
index 8766f97306c6..5e68ceae20ca 100644
--- a/arch/mips/boot/dts/loongson/rs780e-pch.dtsi
+++ b/arch/mips/boot/dts/loongson/rs780e-pch.dtsi
@@ -36,6 +36,11 @@ rtc0: rtc@70 {
 				interrupts = <8>;
 				interrupt-parent = <&htpic>;
 			};
+
+			acpi@800 {
+				compatible = "loongson,rs780e-acpi";
+				reg = <1 0x800 0x100>;
+			};
 		};
 	};
 };
-- 
2.26.0.rc2


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

* [PATCH RESEND 5/5] MIPS: Loongson64: Mark RS780 HPET as broken
  2020-04-20  7:33 [PATCH RESEND 0/5] Loongson64: RS780E clean-ups Jiaxun Yang
                   ` (3 preceding siblings ...)
  2020-04-20  7:33 ` [PATCH RESEND 4/5] MIPS: DTS: Loongson64: Add ACPI Controller Node Jiaxun Yang
@ 2020-04-20  7:33 ` Jiaxun Yang
  2020-04-20  9:07 ` [PATCH RESEND 0/5] Loongson64: RS780E clean-ups Thomas Bogendoerfer
  2020-04-20 13:45 ` [PATCH v2 1/5] MIPS: Loongson64: Remove dead RTC code Jiaxun Yang
  6 siblings, 0 replies; 18+ messages in thread
From: Jiaxun Yang @ 2020-04-20  7:33 UTC (permalink / raw)
  To: linux-mips
  Cc: Jiaxun Yang, Thomas Bogendoerfer, Rob Herring, Huacai Chen,
	devicetree, linux-kernel

This driver is using some dangerous hack to set MMIO address for HPET,
which might break systems with other kinds of PCH.

Also, as Loongson-3 cpufreq driver never appeared in mainline,
this driver rarely got used.

So we temporarily mark it as broken until we find a better solution.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
---
 arch/mips/loongson64/Kconfig | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/arch/mips/loongson64/Kconfig b/arch/mips/loongson64/Kconfig
index c386b8a3c753..16e6acab8cce 100644
--- a/arch/mips/loongson64/Kconfig
+++ b/arch/mips/loongson64/Kconfig
@@ -4,14 +4,12 @@ if MACH_LOONGSON64
 config RS780_HPET
 	bool "RS780/SBX00 HPET Timer"
 	depends on MACH_LOONGSON64
+	depends on BROKEN
 	select MIPS_EXTERNAL_TIMER
 	help
 	  This option enables the hpet timer of AMD RS780/SBX00.
 
-	  If you want to enable the Loongson3 CPUFreq Driver, Please enable
-	  this option at first, otherwise, You will get wrong system time.
-
-	  If unsure, say Yes.
-
+	  Note: This driver is doing some dangerous hack. Please only enable
+	  it on RS780E systems.
 
 endif # MACH_LOONGSON64
-- 
2.26.0.rc2


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

* Re: [PATCH RESEND 0/5] Loongson64: RS780E clean-ups
  2020-04-20  7:33 [PATCH RESEND 0/5] Loongson64: RS780E clean-ups Jiaxun Yang
                   ` (4 preceding siblings ...)
  2020-04-20  7:33 ` [PATCH RESEND 5/5] MIPS: Loongson64: Mark RS780 HPET as broken Jiaxun Yang
@ 2020-04-20  9:07 ` Thomas Bogendoerfer
  2020-04-20  9:31   ` Jiaxun Yang
  2020-04-20 13:45 ` [PATCH v2 1/5] MIPS: Loongson64: Remove dead RTC code Jiaxun Yang
  6 siblings, 1 reply; 18+ messages in thread
From: Thomas Bogendoerfer @ 2020-04-20  9:07 UTC (permalink / raw)
  To: Jiaxun Yang
  Cc: linux-mips, Rob Herring, Huacai Chen, devicetree, linux-kernel

On Mon, Apr 20, 2020 at 03:33:35PM +0800, Jiaxun Yang wrote:
> Basically ensure all RS780E stuff is enabled by DeviceTree.
> So I can post LS7A support later on.
> 
> Hi Thomas, could you please pick them into MIPS tree?

well, first patch doesn't apply, because it relies on your PCI patch
series. I've fixed this while applying and then faced

arch/mips/loongson64/pci.o: In function `pcibios_init':
pci.c:(.init.text+0x44): undefined reference to `sbx00_acpi_init'

IMHO there is something to improve...

Thomas.

-- 
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea.                                                [ RFC1925, 2.3 ]

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

* Re: [PATCH RESEND 0/5] Loongson64: RS780E clean-ups
  2020-04-20  9:07 ` [PATCH RESEND 0/5] Loongson64: RS780E clean-ups Thomas Bogendoerfer
@ 2020-04-20  9:31   ` Jiaxun Yang
  0 siblings, 0 replies; 18+ messages in thread
From: Jiaxun Yang @ 2020-04-20  9:31 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: linux-mips, Rob Herring, Huacai Chen, devicetree, linux-kernel



于 2020年4月20日 GMT+08:00 下午5:07:26, Thomas Bogendoerfer <tsbogend@alpha.franken.de> 写到:
>On Mon, Apr 20, 2020 at 03:33:35PM +0800, Jiaxun Yang wrote:
>> Basically ensure all RS780E stuff is enabled by DeviceTree.
>> So I can post LS7A support later on.
>> 
>> Hi Thomas, could you please pick them into MIPS tree?
>
>well, first patch doesn't apply, because it relies on your PCI patch
>series. I've fixed this while applying and then faced
>
>arch/mips/loongson64/pci.o: In function `pcibios_init':
>pci.c:(.init.text+0x44): undefined reference to `sbx00_acpi_init'
>
>IMHO there is something to improve...

Oops, sorry.
It should depends on PCI series.

I'll send v2 without this requirement soon.

Thanks.

>
>Thomas.
>

-- 
Jiaxun Yang

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

* Re: [PATCH RESEND 1/5] MIPS: Loongson64: Remove dead RTC code
  2020-04-20  7:33 ` [PATCH RESEND 1/5] MIPS: Loongson64: Remove dead RTC code Jiaxun Yang
@ 2020-04-20 12:06   ` maobibo
  2020-04-20 12:13     ` Jiaxun Yang
  0 siblings, 1 reply; 18+ messages in thread
From: maobibo @ 2020-04-20 12:06 UTC (permalink / raw)
  To: Jiaxun Yang, linux-mips
  Cc: Thomas Bogendoerfer, Rob Herring, Huacai Chen, devicetree, linux-kernel



On 04/20/2020 03:33 PM, Jiaxun Yang wrote:
> RTC is now enabled by devicetree. So platform code is
> no longer needed.
> 
> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> ---
>  .../include/asm/mach-loongson64/mc146818rtc.h | 36 -----------------
>  arch/mips/loongson64/Kconfig                  |  4 --
>  arch/mips/loongson64/Makefile                 |  1 -
>  arch/mips/loongson64/rtc.c                    | 39 -------------------
>  arch/mips/loongson64/time.c                   |  8 +---
>  5 files changed, 1 insertion(+), 87 deletions(-)
>  delete mode 100644 arch/mips/include/asm/mach-loongson64/mc146818rtc.h
>  delete mode 100644 arch/mips/loongson64/rtc.c
> 
> diff --git a/arch/mips/include/asm/mach-loongson64/mc146818rtc.h b/arch/mips/include/asm/mach-loongson64/mc146818rtc.h
> deleted file mode 100644
> index ebdccfee50be..000000000000
> --- a/arch/mips/include/asm/mach-loongson64/mc146818rtc.h
> +++ /dev/null
> @@ -1,36 +0,0 @@
> -/*
> - * This file is subject to the terms and conditions of the GNU General Public
> - * License.  See the file "COPYING" in the main directory of this archive
> - * for more details.
> - *
> - * Copyright (C) 1998, 2001, 03, 07 by Ralf Baechle (ralf@linux-mips.org)
> - *
> - * RTC routines for PC style attached Dallas chip.
> - */
> -#ifndef __ASM_MACH_LOONGSON64_MC146818RTC_H
> -#define __ASM_MACH_LOONGSON64_MC146818RTC_H
> -
> -#include <linux/io.h>
> -
> -#define RTC_PORT(x)	(0x70 + (x))
> -#define RTC_IRQ		8
> -
> -static inline unsigned char CMOS_READ(unsigned long addr)
> -{
> -	outb_p(addr, RTC_PORT(0));
> -	return inb_p(RTC_PORT(1));
> -}
> -
> -static inline void CMOS_WRITE(unsigned char data, unsigned long addr)
> -{
> -	outb_p(addr, RTC_PORT(0));
> -	outb_p(data, RTC_PORT(1));
> -}
> -
> -#define RTC_ALWAYS_BCD	0
> -
> -#ifndef mc146818_decode_year
> -#define mc146818_decode_year(year) ((year) < 70 ? (year) + 2000 : (year) + 1970)
> -#endif
> -
> -#endif /* __ASM_MACH_LOONGSON64_MC146818RTC_H */
> diff --git a/arch/mips/loongson64/Kconfig b/arch/mips/loongson64/Kconfig
> index 48b29c198acf..c386b8a3c753 100644
> --- a/arch/mips/loongson64/Kconfig
> +++ b/arch/mips/loongson64/Kconfig
> @@ -14,8 +14,4 @@ config RS780_HPET
>  	  If unsure, say Yes.
>  
>  
> -config LOONGSON_MC146818
> -	bool
> -	default n
> -
>  endif # MACH_LOONGSON64
> diff --git a/arch/mips/loongson64/Makefile b/arch/mips/loongson64/Makefile
> index f04461839540..102a19aa92aa 100644
> --- a/arch/mips/loongson64/Makefile
> +++ b/arch/mips/loongson64/Makefile
> @@ -8,6 +8,5 @@ obj-$(CONFIG_MACH_LOONGSON64) += cop2-ex.o platform.o acpi_init.o dma.o \
>  obj-$(CONFIG_SMP)	+= smp.o
>  obj-$(CONFIG_NUMA)	+= numa.o
>  obj-$(CONFIG_RS780_HPET) += hpet.o
> -obj-$(CONFIG_LOONGSON_MC146818) += rtc.o
>  obj-$(CONFIG_SUSPEND) += pm.o
>  obj-$(CONFIG_PCI_QUIRKS) += vbios_quirk.o
> diff --git a/arch/mips/loongson64/rtc.c b/arch/mips/loongson64/rtc.c
> deleted file mode 100644
> index 8d7628c0f513..000000000000
> --- a/arch/mips/loongson64/rtc.c
> +++ /dev/null
> @@ -1,39 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-or-later
> -/*
> - *  Lemote Fuloong platform support
> - *
> - *  Copyright(c) 2010 Arnaud Patard <apatard@mandriva.com>
> - */
> -
> -#include <linux/init.h>
> -#include <linux/kernel.h>
> -#include <linux/platform_device.h>
> -#include <linux/mc146818rtc.h>
> -
> -static struct resource loongson_rtc_resources[] = {
> -	{
> -		.start	= RTC_PORT(0),
> -		.end	= RTC_PORT(1),
> -		.flags	= IORESOURCE_IO,
> -	}, {
> -		.start	= RTC_IRQ,
> -		.end	= RTC_IRQ,
> -		.flags	= IORESOURCE_IRQ,
> -	}
> -};
> -
> -static struct platform_device loongson_rtc_device = {
> -	.name		= "rtc_cmos",
> -	.id		= -1,
> -	.resource	= loongson_rtc_resources,
> -	.num_resources	= ARRAY_SIZE(loongson_rtc_resources),
> -};
> -
> -
> -static int __init loongson_rtc_platform_init(void)
> -{
> -	platform_device_register(&loongson_rtc_device);
> -	return 0;
> -}
> -
> -device_initcall(loongson_rtc_platform_init);
> diff --git a/arch/mips/loongson64/time.c b/arch/mips/loongson64/time.c
> index 1245f22cec84..91e842b58365 100644
> --- a/arch/mips/loongson64/time.c
> +++ b/arch/mips/loongson64/time.c
> @@ -6,7 +6,7 @@
>   * Copyright (C) 2009 Lemote Inc.
>   * Author: Wu Zhangjin, wuzhangjin@gmail.com
>   */
> -#include <asm/mc146818-time.h>
> +
>  #include <asm/time.h>
>  #include <asm/hpet.h>
>  
> @@ -21,9 +21,3 @@ void __init plat_time_init(void)
>  	setup_hpet_timer();
>  #endif
>  }
> -
> -void read_persistent_clock64(struct timespec64 *ts)
> -{
> -	ts->tv_sec = mc146818_get_cmos_time();
> -	ts->tv_nsec = 0;
> -}
> 
Hi Jiaxun,

Are you sure to remove function read_persistent_clock64 ? which is called in kernel/time/timekeeping.c

regards
bibo,mao


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

* Re: [PATCH RESEND 1/5] MIPS: Loongson64: Remove dead RTC code
  2020-04-20 12:06   ` maobibo
@ 2020-04-20 12:13     ` Jiaxun Yang
  2020-04-20 13:04       ` maobibo
  0 siblings, 1 reply; 18+ messages in thread
From: Jiaxun Yang @ 2020-04-20 12:13 UTC (permalink / raw)
  To: maobibo
  Cc: linux-mips, Thomas Bogendoerfer, Rob Herring, Huacai Chen,
	devicetree, linux-kernel

On Mon, 20 Apr 2020 20:06:02 +0800
maobibo <maobibo@loongson.cn> wrote:

> On 04/20/2020 03:33 PM, Jiaxun Yang wrote:
> > RTC is now enabled by devicetree. So platform code is
> > no longer needed.
> > 
> > Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> > ---
> >  .../include/asm/mach-loongson64/mc146818rtc.h | 36
> > ----------------- arch/mips/loongson64/Kconfig                  |
> > 4 -- arch/mips/loongson64/Makefile                 |  1 -
> >  arch/mips/loongson64/rtc.c                    | 39
> > ------------------- arch/mips/loongson64/time.c                   |
> >  8 +--- 5 files changed, 1 insertion(+), 87 deletions(-)
> >  delete mode 100644
> > arch/mips/include/asm/mach-loongson64/mc146818rtc.h delete mode
> > 100644 arch/mips/loongson64/rtc.c
> > 
> > diff --git a/arch/mips/include/asm/mach-loongson64/mc146818rtc.h
> > b/arch/mips/include/asm/mach-loongson64/mc146818rtc.h deleted file
> > mode 100644 index ebdccfee50be..000000000000
> > --- a/arch/mips/include/asm/mach-loongson64/mc146818rtc.h
> > +++ /dev/null
> > @@ -1,36 +0,0 @@
> > -/*
> > - * This file is subject to the terms and conditions of the GNU
> > General Public
> > - * License.  See the file "COPYING" in the main directory of this
> > archive
> > - * for more details.
> > - *
> > - * Copyright (C) 1998, 2001, 03, 07 by Ralf Baechle
> > (ralf@linux-mips.org)
> > - *
> > - * RTC routines for PC style attached Dallas chip.
> > - */
> > -#ifndef __ASM_MACH_LOONGSON64_MC146818RTC_H
> > -#define __ASM_MACH_LOONGSON64_MC146818RTC_H
> > -
> > -#include <linux/io.h>
> > -
> > -#define RTC_PORT(x)	(0x70 + (x))
> > -#define RTC_IRQ		8
> > -
> > -static inline unsigned char CMOS_READ(unsigned long addr)
> > -{
> > -	outb_p(addr, RTC_PORT(0));
> > -	return inb_p(RTC_PORT(1));
> > -}
> > -
> > -static inline void CMOS_WRITE(unsigned char data, unsigned long
> > addr) -{
> > -	outb_p(addr, RTC_PORT(0));
> > -	outb_p(data, RTC_PORT(1));
> > -}
> > -
> > -#define RTC_ALWAYS_BCD	0
> > -
> > -#ifndef mc146818_decode_year
> > -#define mc146818_decode_year(year) ((year) < 70 ? (year) + 2000 :
> > (year) + 1970) -#endif
> > -
> > -#endif /* __ASM_MACH_LOONGSON64_MC146818RTC_H */
> > diff --git a/arch/mips/loongson64/Kconfig
> > b/arch/mips/loongson64/Kconfig index 48b29c198acf..c386b8a3c753
> > 100644 --- a/arch/mips/loongson64/Kconfig
> > +++ b/arch/mips/loongson64/Kconfig
> > @@ -14,8 +14,4 @@ config RS780_HPET
> >  	  If unsure, say Yes.
> >  
> >  
> > -config LOONGSON_MC146818
> > -	bool
> > -	default n
> > -
> >  endif # MACH_LOONGSON64
> > diff --git a/arch/mips/loongson64/Makefile
> > b/arch/mips/loongson64/Makefile index f04461839540..102a19aa92aa
> > 100644 --- a/arch/mips/loongson64/Makefile
> > +++ b/arch/mips/loongson64/Makefile
> > @@ -8,6 +8,5 @@ obj-$(CONFIG_MACH_LOONGSON64) += cop2-ex.o
> > platform.o acpi_init.o dma.o \ obj-$(CONFIG_SMP)	+= smp.o
> >  obj-$(CONFIG_NUMA)	+= numa.o
> >  obj-$(CONFIG_RS780_HPET) += hpet.o
> > -obj-$(CONFIG_LOONGSON_MC146818) += rtc.o
> >  obj-$(CONFIG_SUSPEND) += pm.o
> >  obj-$(CONFIG_PCI_QUIRKS) += vbios_quirk.o
> > diff --git a/arch/mips/loongson64/rtc.c b/arch/mips/loongson64/rtc.c
> > deleted file mode 100644
> > index 8d7628c0f513..000000000000
> > --- a/arch/mips/loongson64/rtc.c
> > +++ /dev/null
> > @@ -1,39 +0,0 @@
> > -// SPDX-License-Identifier: GPL-2.0-or-later
> > -/*
> > - *  Lemote Fuloong platform support
> > - *
> > - *  Copyright(c) 2010 Arnaud Patard <apatard@mandriva.com>
> > - */
> > -
> > -#include <linux/init.h>
> > -#include <linux/kernel.h>
> > -#include <linux/platform_device.h>
> > -#include <linux/mc146818rtc.h>
> > -
> > -static struct resource loongson_rtc_resources[] = {
> > -	{
> > -		.start	= RTC_PORT(0),
> > -		.end	= RTC_PORT(1),
> > -		.flags	= IORESOURCE_IO,
> > -	}, {
> > -		.start	= RTC_IRQ,
> > -		.end	= RTC_IRQ,
> > -		.flags	= IORESOURCE_IRQ,
> > -	}
> > -};
> > -
> > -static struct platform_device loongson_rtc_device = {
> > -	.name		= "rtc_cmos",
> > -	.id		= -1,
> > -	.resource	= loongson_rtc_resources,
> > -	.num_resources	= ARRAY_SIZE(loongson_rtc_resources),
> > -};
> > -
> > -
> > -static int __init loongson_rtc_platform_init(void)
> > -{
> > -	platform_device_register(&loongson_rtc_device);
> > -	return 0;
> > -}
> > -
> > -device_initcall(loongson_rtc_platform_init);
> > diff --git a/arch/mips/loongson64/time.c
> > b/arch/mips/loongson64/time.c index 1245f22cec84..91e842b58365
> > 100644 --- a/arch/mips/loongson64/time.c
> > +++ b/arch/mips/loongson64/time.c
> > @@ -6,7 +6,7 @@
> >   * Copyright (C) 2009 Lemote Inc.
> >   * Author: Wu Zhangjin, wuzhangjin@gmail.com
> >   */
> > -#include <asm/mc146818-time.h>
> > +
> >  #include <asm/time.h>
> >  #include <asm/hpet.h>
> >  
> > @@ -21,9 +21,3 @@ void __init plat_time_init(void)
> >  	setup_hpet_timer();
> >  #endif
> >  }
> > -
> > -void read_persistent_clock64(struct timespec64 *ts)
> > -{
> > -	ts->tv_sec = mc146818_get_cmos_time();
> > -	ts->tv_nsec = 0;
> > -}
> >   
> Hi Jiaxun,
> 
> Are you sure to remove function read_persistent_clock64 ? which is
> called in kernel/time/timekeeping.c

Hi Bibi,

Thanks for your review.

Pretty sure. It is mc146818 specified, it can never work on LS7A/LS2K
which have another RTC implementation.

I have performed boot test with this patch.
Kernel have safety fallback on platforms without this callback. 

> 
> regards
> bibo,mao
> 

Thanks
--
Jiaxun Yang

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

* Re: [PATCH RESEND 1/5] MIPS: Loongson64: Remove dead RTC code
  2020-04-20 12:13     ` Jiaxun Yang
@ 2020-04-20 13:04       ` maobibo
  2020-04-20 13:15         ` Jiaxun Yang
  0 siblings, 1 reply; 18+ messages in thread
From: maobibo @ 2020-04-20 13:04 UTC (permalink / raw)
  To: Jiaxun Yang
  Cc: linux-mips, Thomas Bogendoerfer, Rob Herring, Huacai Chen,
	devicetree, linux-kernel



On 04/20/2020 08:13 PM, Jiaxun Yang wrote:
> Hi Bibi,
> 
> Thanks for your review.
> 
> Pretty sure. It is mc146818 specified, it can never work on LS7A/LS2K
> which have another RTC implementation.
> 
> I have performed boot test with this patch.
> Kernel have safety fallback on platforms without this callback. 
Although it boots ok, the wall time will be 0 for every boot since it does not read from rtc

regards
bibo, mao


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

* Re: [PATCH RESEND 1/5] MIPS: Loongson64: Remove dead RTC code
  2020-04-20 13:04       ` maobibo
@ 2020-04-20 13:15         ` Jiaxun Yang
  0 siblings, 0 replies; 18+ messages in thread
From: Jiaxun Yang @ 2020-04-20 13:15 UTC (permalink / raw)
  To: maobibo
  Cc: linux-mips, Thomas Bogendoerfer, Rob Herring, Huacai Chen,
	devicetree, linux-kernel



于 2020年4月20日 GMT+08:00 下午9:04:52, maobibo <maobibo@loongson.cn> 写到:
>
>
>On 04/20/2020 08:13 PM, Jiaxun Yang wrote:
>> Hi Bibi,
>> 
>> Thanks for your review.
>> 
>> Pretty sure. It is mc146818 specified, it can never work on LS7A/LS2K
>> which have another RTC implementation.
>> 
>> I have performed boot test with this patch.
>> Kernel have safety fallback on platforms without this callback. 
>Although it boots ok, the wall time will be 0 for every boot since it does not read from rtc

Not a big deal :-)

It must be removed unless we can come out a solution
fits both mc146818 and Loongson's in-house design RTC.

Thanks
>
>regards
>bibo, mao
>

-- 
Jiaxun Yang

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

* [PATCH v2 1/5] MIPS: Loongson64: Remove dead RTC code
  2020-04-20  7:33 [PATCH RESEND 0/5] Loongson64: RS780E clean-ups Jiaxun Yang
                   ` (5 preceding siblings ...)
  2020-04-20  9:07 ` [PATCH RESEND 0/5] Loongson64: RS780E clean-ups Thomas Bogendoerfer
@ 2020-04-20 13:45 ` Jiaxun Yang
  2020-04-20 13:45   ` [PATCH v2 2/5] MIPS: Loongson64: Make RS780E ACPI as a platform driver Jiaxun Yang
                     ` (4 more replies)
  6 siblings, 5 replies; 18+ messages in thread
From: Jiaxun Yang @ 2020-04-20 13:45 UTC (permalink / raw)
  To: linux-mips
  Cc: Jiaxun Yang, Thomas Bogendoerfer, Rob Herring, Huacai Chen,
	devicetree, linux-kernel

RTC is now enabled by devicetree. So platform code is
no longer needed.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
---
v2: Rebase to mips-next
---
 .../include/asm/mach-loongson64/mc146818rtc.h | 36 -----------------
 arch/mips/loongson64/Kconfig                  |  4 --
 arch/mips/loongson64/Makefile                 |  1 -
 arch/mips/loongson64/rtc.c                    | 39 -------------------
 arch/mips/loongson64/time.c                   |  8 +---
 5 files changed, 1 insertion(+), 87 deletions(-)
 delete mode 100644 arch/mips/include/asm/mach-loongson64/mc146818rtc.h
 delete mode 100644 arch/mips/loongson64/rtc.c

diff --git a/arch/mips/include/asm/mach-loongson64/mc146818rtc.h b/arch/mips/include/asm/mach-loongson64/mc146818rtc.h
deleted file mode 100644
index ebdccfee50be..000000000000
--- a/arch/mips/include/asm/mach-loongson64/mc146818rtc.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * This file is subject to the terms and conditions of the GNU General Public
- * License.  See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Copyright (C) 1998, 2001, 03, 07 by Ralf Baechle (ralf@linux-mips.org)
- *
- * RTC routines for PC style attached Dallas chip.
- */
-#ifndef __ASM_MACH_LOONGSON64_MC146818RTC_H
-#define __ASM_MACH_LOONGSON64_MC146818RTC_H
-
-#include <linux/io.h>
-
-#define RTC_PORT(x)	(0x70 + (x))
-#define RTC_IRQ		8
-
-static inline unsigned char CMOS_READ(unsigned long addr)
-{
-	outb_p(addr, RTC_PORT(0));
-	return inb_p(RTC_PORT(1));
-}
-
-static inline void CMOS_WRITE(unsigned char data, unsigned long addr)
-{
-	outb_p(addr, RTC_PORT(0));
-	outb_p(data, RTC_PORT(1));
-}
-
-#define RTC_ALWAYS_BCD	0
-
-#ifndef mc146818_decode_year
-#define mc146818_decode_year(year) ((year) < 70 ? (year) + 2000 : (year) + 1970)
-#endif
-
-#endif /* __ASM_MACH_LOONGSON64_MC146818RTC_H */
diff --git a/arch/mips/loongson64/Kconfig b/arch/mips/loongson64/Kconfig
index 48b29c198acf..c386b8a3c753 100644
--- a/arch/mips/loongson64/Kconfig
+++ b/arch/mips/loongson64/Kconfig
@@ -14,8 +14,4 @@ config RS780_HPET
 	  If unsure, say Yes.
 
 
-config LOONGSON_MC146818
-	bool
-	default n
-
 endif # MACH_LOONGSON64
diff --git a/arch/mips/loongson64/Makefile b/arch/mips/loongson64/Makefile
index b7f40b179c71..32b8c224852f 100644
--- a/arch/mips/loongson64/Makefile
+++ b/arch/mips/loongson64/Makefile
@@ -9,5 +9,4 @@ obj-$(CONFIG_SMP)	+= smp.o
 obj-$(CONFIG_NUMA)	+= numa.o
 obj-$(CONFIG_RS780_HPET) += hpet.o
 obj-$(CONFIG_PCI) += pci.o
-obj-$(CONFIG_LOONGSON_MC146818) += rtc.o
 obj-$(CONFIG_SUSPEND) += pm.o
diff --git a/arch/mips/loongson64/rtc.c b/arch/mips/loongson64/rtc.c
deleted file mode 100644
index 8d7628c0f513..000000000000
--- a/arch/mips/loongson64/rtc.c
+++ /dev/null
@@ -1,39 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- *  Lemote Fuloong platform support
- *
- *  Copyright(c) 2010 Arnaud Patard <apatard@mandriva.com>
- */
-
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/platform_device.h>
-#include <linux/mc146818rtc.h>
-
-static struct resource loongson_rtc_resources[] = {
-	{
-		.start	= RTC_PORT(0),
-		.end	= RTC_PORT(1),
-		.flags	= IORESOURCE_IO,
-	}, {
-		.start	= RTC_IRQ,
-		.end	= RTC_IRQ,
-		.flags	= IORESOURCE_IRQ,
-	}
-};
-
-static struct platform_device loongson_rtc_device = {
-	.name		= "rtc_cmos",
-	.id		= -1,
-	.resource	= loongson_rtc_resources,
-	.num_resources	= ARRAY_SIZE(loongson_rtc_resources),
-};
-
-
-static int __init loongson_rtc_platform_init(void)
-{
-	platform_device_register(&loongson_rtc_device);
-	return 0;
-}
-
-device_initcall(loongson_rtc_platform_init);
diff --git a/arch/mips/loongson64/time.c b/arch/mips/loongson64/time.c
index 1245f22cec84..91e842b58365 100644
--- a/arch/mips/loongson64/time.c
+++ b/arch/mips/loongson64/time.c
@@ -6,7 +6,7 @@
  * Copyright (C) 2009 Lemote Inc.
  * Author: Wu Zhangjin, wuzhangjin@gmail.com
  */
-#include <asm/mc146818-time.h>
+
 #include <asm/time.h>
 #include <asm/hpet.h>
 
@@ -21,9 +21,3 @@ void __init plat_time_init(void)
 	setup_hpet_timer();
 #endif
 }
-
-void read_persistent_clock64(struct timespec64 *ts)
-{
-	ts->tv_sec = mc146818_get_cmos_time();
-	ts->tv_nsec = 0;
-}
-- 
2.26.0.rc2


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

* [PATCH v2 2/5] MIPS: Loongson64: Make RS780E ACPI as a platform driver
  2020-04-20 13:45 ` [PATCH v2 1/5] MIPS: Loongson64: Remove dead RTC code Jiaxun Yang
@ 2020-04-20 13:45   ` Jiaxun Yang
  2020-04-20 13:45   ` [PATCH v2 3/5] dt-bindings: Document Loongson RS780E PCH ACPI Controller Jiaxun Yang
                     ` (3 subsequent siblings)
  4 siblings, 0 replies; 18+ messages in thread
From: Jiaxun Yang @ 2020-04-20 13:45 UTC (permalink / raw)
  To: linux-mips
  Cc: Jiaxun Yang, Thomas Bogendoerfer, Rob Herring, Huacai Chen,
	devicetree, linux-kernel

Make RS780E ACPI as a platform driver so we can enable it
by DeviceTree selectively.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
---
v2: Rebase to mips-next
---
 arch/mips/loongson64/Makefile                 |  2 +-
 arch/mips/loongson64/pci.c                    |  2 -
 drivers/platform/mips/Kconfig                 |  6 ++
 drivers/platform/mips/Makefile                |  1 +
 .../platform/mips/rs780e-acpi.c               | 58 ++++++++++++-------
 5 files changed, 46 insertions(+), 23 deletions(-)
 rename arch/mips/loongson64/acpi_init.c => drivers/platform/mips/rs780e-acpi.c (70%)

diff --git a/arch/mips/loongson64/Makefile b/arch/mips/loongson64/Makefile
index 32b8c224852f..6f3c2b47f66f 100644
--- a/arch/mips/loongson64/Makefile
+++ b/arch/mips/loongson64/Makefile
@@ -2,7 +2,7 @@
 #
 # Makefile for Loongson-3 family machines
 #
-obj-$(CONFIG_MACH_LOONGSON64) += cop2-ex.o platform.o acpi_init.o dma.o \
+obj-$(CONFIG_MACH_LOONGSON64) += cop2-ex.o platform.o dma.o \
 				setup.o init.o env.o time.o reset.o \
 
 obj-$(CONFIG_SMP)	+= smp.o
diff --git a/arch/mips/loongson64/pci.c b/arch/mips/loongson64/pci.c
index e84ae20c3290..a440a2725a20 100644
--- a/arch/mips/loongson64/pci.c
+++ b/arch/mips/loongson64/pci.c
@@ -43,8 +43,6 @@ static int __init pcibios_init(void)
 
 	register_pci_controller(&loongson_pci_controller);
 
-	sbx00_acpi_init();
-
 	return 0;
 }
 
diff --git a/drivers/platform/mips/Kconfig b/drivers/platform/mips/Kconfig
index 5e77b0dc5fd6..8ac149173c64 100644
--- a/drivers/platform/mips/Kconfig
+++ b/drivers/platform/mips/Kconfig
@@ -24,4 +24,10 @@ config CPU_HWMON
 	help
 	  Loongson-3A/3B CPU Hwmon (temperature sensor) driver.
 
+config RS780E_ACPI
+	bool "Loongson RS780E ACPI Controller"
+	depends on MACH_LOONGSON64 || COMPILE_TEST
+	help
+	  Loongson RS780E PCH ACPI Controller driver.
+
 endif # MIPS_PLATFORM_DEVICES
diff --git a/drivers/platform/mips/Makefile b/drivers/platform/mips/Makefile
index be8146c20dc8..178149098777 100644
--- a/drivers/platform/mips/Makefile
+++ b/drivers/platform/mips/Makefile
@@ -1,2 +1,3 @@
 # SPDX-License-Identifier: GPL-2.0-only
 obj-$(CONFIG_CPU_HWMON) += cpu_hwmon.o
+obj-$(CONFIG_RS780E_ACPI) += rs780e-acpi.o
diff --git a/arch/mips/loongson64/acpi_init.c b/drivers/platform/mips/rs780e-acpi.c
similarity index 70%
rename from arch/mips/loongson64/acpi_init.c
rename to drivers/platform/mips/rs780e-acpi.c
index 8d7c119ddf91..e5a643b78ac9 100644
--- a/arch/mips/loongson64/acpi_init.c
+++ b/drivers/platform/mips/rs780e-acpi.c
@@ -3,32 +3,23 @@
 #include <linux/init.h>
 #include <linux/ioport.h>
 #include <linux/export.h>
+#include <linux/of.h>
+#include <linux/platform_device.h>
 
-#define SBX00_ACPI_IO_BASE 0x800
-#define SBX00_ACPI_IO_SIZE 0x100
+static unsigned long acpi_iobase;
 
-#define ACPI_PM_EVT_BLK         (SBX00_ACPI_IO_BASE + 0x00) /* 4 bytes */
-#define ACPI_PM_CNT_BLK         (SBX00_ACPI_IO_BASE + 0x04) /* 2 bytes */
-#define ACPI_PMA_CNT_BLK        (SBX00_ACPI_IO_BASE + 0x0F) /* 1 byte */
-#define ACPI_PM_TMR_BLK         (SBX00_ACPI_IO_BASE + 0x18) /* 4 bytes */
-#define ACPI_GPE0_BLK           (SBX00_ACPI_IO_BASE + 0x10) /* 8 bytes */
-#define ACPI_END                (SBX00_ACPI_IO_BASE + 0x80)
+#define ACPI_PM_EVT_BLK         (acpi_iobase + 0x00) /* 4 bytes */
+#define ACPI_PM_CNT_BLK         (acpi_iobase + 0x04) /* 2 bytes */
+#define ACPI_PMA_CNT_BLK        (acpi_iobase + 0x0F) /* 1 byte */
+#define ACPI_PM_TMR_BLK         (acpi_iobase + 0x18) /* 4 bytes */
+#define ACPI_GPE0_BLK           (acpi_iobase + 0x10) /* 8 bytes */
+#define ACPI_END                (acpi_iobase + 0x80)
 
 #define PM_INDEX        0xCD6
 #define PM_DATA         0xCD7
 #define PM2_INDEX       0xCD0
 #define PM2_DATA        0xCD1
 
-/*
- * SCI interrupt need acpi space, allocate here
- */
-
-static int __init register_acpi_resource(void)
-{
-	request_region(SBX00_ACPI_IO_BASE, SBX00_ACPI_IO_SIZE, "acpi");
-	return 0;
-}
-
 static void pmio_write_index(u16 index, u8 reg, u8 value)
 {
 	outb(reg, index);
@@ -141,11 +132,38 @@ void acpi_registers_setup(void)
 	pm2_iowrite(0xf8, value);
 }
 
-int __init sbx00_acpi_init(void)
+static int rs780e_acpi_probe(struct platform_device *pdev)
 {
-	register_acpi_resource();
+	struct resource *res;
+
+	res = platform_get_resource(pdev, IORESOURCE_IO, 0);
+	if (!res)
+		return -ENODEV;
+
+	/* SCI interrupt need acpi space, allocate here */
+	if (!request_region(res->start, resource_size(res), "acpi")) {
+		pr_err("RS780E-ACPI: Failed to request IO Region\n");
+		return -EBUSY;
+	}
+
+	acpi_iobase = res->start;
+
 	acpi_registers_setup();
 	acpi_hw_clear_status();
 
 	return 0;
 }
+
+static const struct of_device_id rs780e_acpi_match[] = {
+	{ .compatible = "loongson,rs780e-acpi" },
+	{},
+};
+
+static struct platform_driver rs780e_acpi_driver = {
+	.probe = rs780e_acpi_probe,
+	.driver = {
+		.name = "RS780E-ACPI",
+		.of_match_table = rs780e_acpi_match,
+	},
+};
+builtin_platform_driver(rs780e_acpi_driver);
-- 
2.26.0.rc2


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

* [PATCH v2 3/5] dt-bindings: Document Loongson RS780E PCH ACPI Controller
  2020-04-20 13:45 ` [PATCH v2 1/5] MIPS: Loongson64: Remove dead RTC code Jiaxun Yang
  2020-04-20 13:45   ` [PATCH v2 2/5] MIPS: Loongson64: Make RS780E ACPI as a platform driver Jiaxun Yang
@ 2020-04-20 13:45   ` Jiaxun Yang
  2020-04-20 13:45   ` [PATCH v2 4/5] MIPS: DTS: Loongson64: Add ACPI Controller Node Jiaxun Yang
                     ` (2 subsequent siblings)
  4 siblings, 0 replies; 18+ messages in thread
From: Jiaxun Yang @ 2020-04-20 13:45 UTC (permalink / raw)
  To: linux-mips
  Cc: Jiaxun Yang, Rob Herring, Thomas Bogendoerfer, Rob Herring,
	Huacai Chen, devicetree, linux-kernel

This controller is attached under ISA Bus and can be found
in Loongson-3 systems with RS780E PCH.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Reviewed-by: Rob Herring <robh@kernel.org>
---
 .../bindings/mips/loongson/rs780e-acpi.yaml   | 40 +++++++++++++++++++
 1 file changed, 40 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/mips/loongson/rs780e-acpi.yaml

diff --git a/Documentation/devicetree/bindings/mips/loongson/rs780e-acpi.yaml b/Documentation/devicetree/bindings/mips/loongson/rs780e-acpi.yaml
new file mode 100644
index 000000000000..d317897e1115
--- /dev/null
+++ b/Documentation/devicetree/bindings/mips/loongson/rs780e-acpi.yaml
@@ -0,0 +1,40 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/mips/loongson/rs780e-acpi.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: Loongson RS780E PCH ACPI Controller
+
+maintainers:
+  - Jiaxun Yang <jiaxun.yang@flygoat.com>
+
+description: |
+  This controller can be found in Loongson-3 systems with RS780E PCH.
+
+properties:
+  compatible:
+    const: loongson,rs780e-acpi
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+examples:
+  - |
+    isa@0 {
+      compatible = "isa";
+      #address-cells = <2>;
+      #size-cells = <1>;
+      ranges = <1 0 0 0x1000>;
+
+      acpi@800 {
+        compatible = "loongson,rs780e-acpi";
+        reg = <1 0x800 0x100>;
+      };
+    };
+
+...
-- 
2.26.0.rc2


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

* [PATCH v2 4/5] MIPS: DTS: Loongson64: Add ACPI Controller Node
  2020-04-20 13:45 ` [PATCH v2 1/5] MIPS: Loongson64: Remove dead RTC code Jiaxun Yang
  2020-04-20 13:45   ` [PATCH v2 2/5] MIPS: Loongson64: Make RS780E ACPI as a platform driver Jiaxun Yang
  2020-04-20 13:45   ` [PATCH v2 3/5] dt-bindings: Document Loongson RS780E PCH ACPI Controller Jiaxun Yang
@ 2020-04-20 13:45   ` Jiaxun Yang
  2020-04-20 13:45   ` [PATCH v2 5/5] MIPS: Loongson64: Mark RS780 HPET as broken Jiaxun Yang
  2020-04-20 17:40   ` [PATCH v2 1/5] MIPS: Loongson64: Remove dead RTC code Thomas Bogendoerfer
  4 siblings, 0 replies; 18+ messages in thread
From: Jiaxun Yang @ 2020-04-20 13:45 UTC (permalink / raw)
  To: linux-mips
  Cc: Jiaxun Yang, Thomas Bogendoerfer, Rob Herring, Huacai Chen,
	devicetree, linux-kernel

Add ACPI Controller Node for RS780E PCH to fit newly added driver.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
---
 arch/mips/boot/dts/loongson/rs780e-pch.dtsi | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/mips/boot/dts/loongson/rs780e-pch.dtsi b/arch/mips/boot/dts/loongson/rs780e-pch.dtsi
index 45c54d555fa4..8687c4f7370a 100644
--- a/arch/mips/boot/dts/loongson/rs780e-pch.dtsi
+++ b/arch/mips/boot/dts/loongson/rs780e-pch.dtsi
@@ -21,6 +21,11 @@ rtc0: rtc@70 {
 				interrupts = <8>;
 				interrupt-parent = <&htpic>;
 			};
+
+			acpi@800 {
+				compatible = "loongson,rs780e-acpi";
+				reg = <1 0x800 0x100>;
+			};
 		};
 	};
 };
-- 
2.26.0.rc2


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

* [PATCH v2 5/5] MIPS: Loongson64: Mark RS780 HPET as broken
  2020-04-20 13:45 ` [PATCH v2 1/5] MIPS: Loongson64: Remove dead RTC code Jiaxun Yang
                     ` (2 preceding siblings ...)
  2020-04-20 13:45   ` [PATCH v2 4/5] MIPS: DTS: Loongson64: Add ACPI Controller Node Jiaxun Yang
@ 2020-04-20 13:45   ` Jiaxun Yang
  2020-04-20 17:40   ` [PATCH v2 1/5] MIPS: Loongson64: Remove dead RTC code Thomas Bogendoerfer
  4 siblings, 0 replies; 18+ messages in thread
From: Jiaxun Yang @ 2020-04-20 13:45 UTC (permalink / raw)
  To: linux-mips
  Cc: Jiaxun Yang, Thomas Bogendoerfer, Rob Herring, Huacai Chen,
	devicetree, linux-kernel

This driver is using some dangerous hack to set MMIO address for HPET,
which might break systems with other kinds of PCH.

Also, as Loongson-3 cpufreq driver never appeared in mainline,
this driver rarely got used.

So we temporarily mark it as broken until we find a better solution.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
---
 arch/mips/loongson64/Kconfig | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/arch/mips/loongson64/Kconfig b/arch/mips/loongson64/Kconfig
index c386b8a3c753..517f1f8e81fb 100644
--- a/arch/mips/loongson64/Kconfig
+++ b/arch/mips/loongson64/Kconfig
@@ -4,14 +4,12 @@ if MACH_LOONGSON64
 config RS780_HPET
 	bool "RS780/SBX00 HPET Timer"
 	depends on MACH_LOONGSON64
+	depends on BROKEN
 	select MIPS_EXTERNAL_TIMER
 	help
 	  This option enables the hpet timer of AMD RS780/SBX00.
 
-	  If you want to enable the Loongson3 CPUFreq Driver, Please enable
-	  this option at first, otherwise, You will get wrong system time.
-
-	  If unsure, say Yes.
-
+	  Note: This driver is doing some dangerous hack. Please only enable
+	  it on RS780E systems.
 
 endif # MACH_LOONGSON64
-- 
2.26.0.rc2


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

* Re: [PATCH v2 1/5] MIPS: Loongson64: Remove dead RTC code
  2020-04-20 13:45 ` [PATCH v2 1/5] MIPS: Loongson64: Remove dead RTC code Jiaxun Yang
                     ` (3 preceding siblings ...)
  2020-04-20 13:45   ` [PATCH v2 5/5] MIPS: Loongson64: Mark RS780 HPET as broken Jiaxun Yang
@ 2020-04-20 17:40   ` Thomas Bogendoerfer
  4 siblings, 0 replies; 18+ messages in thread
From: Thomas Bogendoerfer @ 2020-04-20 17:40 UTC (permalink / raw)
  To: Jiaxun Yang
  Cc: linux-mips, Rob Herring, Huacai Chen, devicetree, linux-kernel

On Mon, Apr 20, 2020 at 09:45:25PM +0800, Jiaxun Yang wrote:
> RTC is now enabled by devicetree. So platform code is
> no longer needed.
> 
> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
> ---
> v2: Rebase to mips-next

series applied to mips-next.

Thomas.

-- 
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea.                                                [ RFC1925, 2.3 ]

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

end of thread, other threads:[~2020-04-20 17:58 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-20  7:33 [PATCH RESEND 0/5] Loongson64: RS780E clean-ups Jiaxun Yang
2020-04-20  7:33 ` [PATCH RESEND 1/5] MIPS: Loongson64: Remove dead RTC code Jiaxun Yang
2020-04-20 12:06   ` maobibo
2020-04-20 12:13     ` Jiaxun Yang
2020-04-20 13:04       ` maobibo
2020-04-20 13:15         ` Jiaxun Yang
2020-04-20  7:33 ` [PATCH RESEND 2/5] MIPS: Loongson64: Make RS780E ACPI as a platform driver Jiaxun Yang
2020-04-20  7:33 ` [PATCH RESEND 3/5] dt-bindings: Document Loongson RS780E PCH ACPI Controller Jiaxun Yang
2020-04-20  7:33 ` [PATCH RESEND 4/5] MIPS: DTS: Loongson64: Add ACPI Controller Node Jiaxun Yang
2020-04-20  7:33 ` [PATCH RESEND 5/5] MIPS: Loongson64: Mark RS780 HPET as broken Jiaxun Yang
2020-04-20  9:07 ` [PATCH RESEND 0/5] Loongson64: RS780E clean-ups Thomas Bogendoerfer
2020-04-20  9:31   ` Jiaxun Yang
2020-04-20 13:45 ` [PATCH v2 1/5] MIPS: Loongson64: Remove dead RTC code Jiaxun Yang
2020-04-20 13:45   ` [PATCH v2 2/5] MIPS: Loongson64: Make RS780E ACPI as a platform driver Jiaxun Yang
2020-04-20 13:45   ` [PATCH v2 3/5] dt-bindings: Document Loongson RS780E PCH ACPI Controller Jiaxun Yang
2020-04-20 13:45   ` [PATCH v2 4/5] MIPS: DTS: Loongson64: Add ACPI Controller Node Jiaxun Yang
2020-04-20 13:45   ` [PATCH v2 5/5] MIPS: Loongson64: Mark RS780 HPET as broken Jiaxun Yang
2020-04-20 17:40   ` [PATCH v2 1/5] MIPS: Loongson64: Remove dead RTC code Thomas Bogendoerfer

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.