* [PATCH 01/09] Prototype code for basic IMR-LX4 test
2018-12-19 10:26 [PATCH 00/09] Test R-Car Gen3 IMR-LX4 device Magnus Damm
@ 2018-12-19 10:26 ` Magnus Damm
2018-12-19 10:26 ` [PATCH 02/09] arm64: dts: renesas: r8a7795: One IMR-LX4 device for R-Car H3 Magnus Damm
` (7 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Magnus Damm @ 2018-12-19 10:26 UTC (permalink / raw)
To: linux-renesas-soc; +Cc: Magnus Damm
From: Magnus Damm <damm+renesas@opensource.se>
Introduce some basic test code for the IMR-LX4 device included in
R-Car Gen3 SoCs. At this point the code only controls clocks and
power domains using Runtime PM and resets the device. Obviously a
proper driver would be much more useful. This code is however useful
to test clocks and power domains and may in the future be extended
for IPMMU and further power management testing. Not for upstream merge.
Not-Signed-off-by: Magnus Damm <damm+renesas@opensource.se>
---
drivers/soc/renesas/Makefile | 2
drivers/soc/renesas/renesas-test-imr-lx4.c | 71 ++++++++++++++++++++++++++++
2 files changed, 72 insertions(+), 1 deletion(-)
--- 0001/drivers/soc/renesas/Makefile
+++ work/drivers/soc/renesas/Makefile 2018-12-19 17:58:52.476078897 +0900
@@ -1,6 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
# Generic, must be first because of soc_device_register()
-obj-$(CONFIG_SOC_RENESAS) += renesas-soc.o
+obj-$(CONFIG_SOC_RENESAS) += renesas-soc.o renesas-test-imr-lx4.o
# SoC
obj-$(CONFIG_SYSC_R8A7743) += r8a7743-sysc.o
--- /dev/null
+++ work/drivers/soc/renesas/renesas-test-imr-lx4.c 2018-12-19 18:41:47.436079896 +0900
@@ -0,0 +1,71 @@
+#include <linux/delay.h>
+#include <linux/err.h>
+#include <linux/io.h>
+#include <linux/module.h>
+#include <linux/mm.h>
+#include <linux/of_address.h>
+#include <linux/platform_device.h>
+#include <linux/pm_runtime.h>
+
+#define REG_CR 0x0008
+#define REG_ICR 0x0014
+#define REG_DLSAR 0x0030
+
+static const struct of_device_id imr_lx4_of_match[] = {
+ { .compatible = "renesas,imr-lx4" },
+ { /* sentinel */ }
+};
+MODULE_DEVICE_TABLE(of, imr_lx4_of_match);
+
+static int imr_lx4_probe(struct platform_device *pdev)
+{
+ struct device *dev = &pdev->dev;
+ struct resource *res;
+ void __iomem *base;
+
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ base = devm_ioremap_resource(dev, res);
+ if (IS_ERR(base)) {
+ dev_warn(dev, "unable to map imr-lx4 registers\n");
+ return PTR_ERR(base);
+ }
+
+ pm_runtime_enable(dev);
+ pm_runtime_get_sync(dev);
+
+ printk("IMR-LX4 test: DLSAR, ICR registers should change when reset\n");
+ printk("configuring DLSAR and ICR registers\n");
+ iowrite32(0xdeadbee8, base + REG_DLSAR);
+ iowrite32(0x18, base + REG_ICR);
+
+ printk("DLSAR register 0x%08x\n", ioread32(base + REG_DLSAR));
+ printk("ICR register 0x%08x\n", ioread32(base + REG_ICR));
+ printk("CR register 0x%08x\n", ioread32(base + REG_CR));
+
+ printk("performing reset via CR register\n");
+ iowrite32(0x8000, base + REG_CR);
+
+ mdelay(1000);
+
+ printk("DLSAR register 0x%08x\n", ioread32(base + REG_DLSAR));
+ printk("ICR register 0x%08x\n", ioread32(base + REG_ICR));
+ printk("CR register 0x%08x\n", ioread32(base + REG_CR));
+
+ pm_runtime_put(dev);
+ pm_runtime_disable(dev);
+
+ return -ENODEV;
+}
+
+static struct platform_driver imr_lx4_driver = {
+ .driver = {
+ .name = "renesas-imr-lx4",
+ .of_match_table = of_match_ptr(imr_lx4_of_match),
+ },
+ .probe = imr_lx4_probe,
+};
+
+module_platform_driver(imr_lx4_driver);
+
+MODULE_DESCRIPTION("Renesas IMR-LX4 test driver");
+MODULE_LICENSE("GPL v2");
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 02/09] arm64: dts: renesas: r8a7795: One IMR-LX4 device for R-Car H3
2018-12-19 10:26 [PATCH 00/09] Test R-Car Gen3 IMR-LX4 device Magnus Damm
2018-12-19 10:26 ` [PATCH 01/09] Prototype code for basic IMR-LX4 test Magnus Damm
@ 2018-12-19 10:26 ` Magnus Damm
2018-12-19 10:26 ` [PATCH 03/09] arm64: dts: renesas: r8a7796: One IMR-LX4 device for R-Car M3-W Magnus Damm
` (6 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Magnus Damm @ 2018-12-19 10:26 UTC (permalink / raw)
To: linux-renesas-soc; +Cc: Magnus Damm
From: Magnus Damm <damm+renesas@opensource.se>
We will only test a single IMR-LX4 device, so get rid of the other
channels in the r8a7795 dtsi file. Not for upstream merge.
Not-Signed-off-by: Magnus Damm <damm+renesas@opensource.se>
---
arch/arm64/boot/dts/renesas/r8a7795.dtsi | 30 ------------------------------
1 file changed, 30 deletions(-)
--- 0001/arch/arm64/boot/dts/renesas/r8a7795.dtsi
+++ work/arch/arm64/boot/dts/renesas/r8a7795.dtsi 2018-12-19 13:07:02.342050765 +0900
@@ -2617,36 +2617,6 @@
resets = <&cpg 823>;
};
- imr-lx4@fe870000 {
- compatible = "renesas,r8a7795-imr-lx4",
- "renesas,imr-lx4";
- reg = <0 0xfe870000 0 0x2000>;
- interrupts = <GIC_SPI 193 IRQ_TYPE_LEVEL_HIGH>;
- clocks = <&cpg CPG_MOD 822>;
- power-domains = <&sysc R8A7795_PD_A3VC>;
- resets = <&cpg 822>;
- };
-
- imr-lx4@fe880000 {
- compatible = "renesas,r8a7795-imr-lx4",
- "renesas,imr-lx4";
- reg = <0 0xfe880000 0 0x2000>;
- interrupts = <GIC_SPI 194 IRQ_TYPE_LEVEL_HIGH>;
- clocks = <&cpg CPG_MOD 821>;
- power-domains = <&sysc R8A7795_PD_A3VC>;
- resets = <&cpg 821>;
- };
-
- imr-lx4@fe890000 {
- compatible = "renesas,r8a7795-imr-lx4",
- "renesas,imr-lx4";
- reg = <0 0xfe890000 0 0x2000>;
- interrupts = <GIC_SPI 195 IRQ_TYPE_LEVEL_HIGH>;
- clocks = <&cpg CPG_MOD 820>;
- power-domains = <&sysc R8A7795_PD_A3VC>;
- resets = <&cpg 820>;
- };
-
fdp1@fe940000 {
compatible = "renesas,fdp1";
reg = <0 0xfe940000 0 0x2400>;
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 03/09] arm64: dts: renesas: r8a7796: One IMR-LX4 device for R-Car M3-W
2018-12-19 10:26 [PATCH 00/09] Test R-Car Gen3 IMR-LX4 device Magnus Damm
2018-12-19 10:26 ` [PATCH 01/09] Prototype code for basic IMR-LX4 test Magnus Damm
2018-12-19 10:26 ` [PATCH 02/09] arm64: dts: renesas: r8a7795: One IMR-LX4 device for R-Car H3 Magnus Damm
@ 2018-12-19 10:26 ` Magnus Damm
2018-12-19 10:26 ` [PATCH 04/09] arm64: dts: renesas: r8a77965: One IMR-LX4 device for R-Car M3-N Magnus Damm
` (5 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Magnus Damm @ 2018-12-19 10:26 UTC (permalink / raw)
To: linux-renesas-soc; +Cc: Magnus Damm
From: Magnus Damm <damm+renesas@opensource.se>
We will only test a single IMR-LX4 device, so get rid of the other
channels in the r8a7796 dtsi file. Not for upstream merge.
Not-Signed-off-by: Magnus Damm <damm+renesas@opensource.se>
---
arch/arm64/boot/dts/renesas/r8a7796.dtsi | 10 ----------
1 file changed, 10 deletions(-)
--- 0001/arch/arm64/boot/dts/renesas/r8a7796.dtsi
+++ work/arch/arm64/boot/dts/renesas/r8a7796.dtsi 2018-12-19 13:09:17.327127816 +0900
@@ -2480,16 +2480,6 @@
resets = <&cpg 823>;
};
- imr-lx4@fe870000 {
- compatible = "renesas,r8a7796-imr-lx4",
- "renesas,imr-lx4";
- reg = <0 0xfe870000 0 0x2000>;
- interrupts = <GIC_SPI 193 IRQ_TYPE_LEVEL_HIGH>;
- clocks = <&cpg CPG_MOD 822>;
- power-domains = <&sysc R8A7796_PD_A3VC>;
- resets = <&cpg 822>;
- };
-
fdp1@fe940000 {
compatible = "renesas,fdp1";
reg = <0 0xfe940000 0 0x2400>;
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 04/09] arm64: dts: renesas: r8a77965: One IMR-LX4 device for R-Car M3-N
2018-12-19 10:26 [PATCH 00/09] Test R-Car Gen3 IMR-LX4 device Magnus Damm
` (2 preceding siblings ...)
2018-12-19 10:26 ` [PATCH 03/09] arm64: dts: renesas: r8a7796: One IMR-LX4 device for R-Car M3-W Magnus Damm
@ 2018-12-19 10:26 ` Magnus Damm
2018-12-19 10:26 ` [PATCH 05/09] arm64: dts: renesas: r8a77970: One IMR-LX4 device for R-Car V3M Magnus Damm
` (4 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Magnus Damm @ 2018-12-19 10:26 UTC (permalink / raw)
To: linux-renesas-soc; +Cc: Magnus Damm
From: Magnus Damm <damm+renesas@opensource.se>
Introduce a single IMR-LX4 device to the r8a77965 dtsi file.
Not for upstream merge.
Not-Signed-off-by: Magnus Damm <damm+renesas@opensource.se>
---
arch/arm64/boot/dts/renesas/r8a77965.dtsi | 11 +++++++++++
1 file changed, 11 insertions(+)
--- 0001/arch/arm64/boot/dts/renesas/r8a77965.dtsi
+++ work/arch/arm64/boot/dts/renesas/r8a77965.dtsi 2018-12-19 14:50:28.657437885 +0900
@@ -1929,6 +1929,17 @@
status = "disabled";
};
+
+ imr-lx4@fe860000 {
+ compatible = "renesas,r8a77965-imr-lx4",
+ "renesas,imr-lx4";
+ reg = <0 0xfe860000 0 0x2000>;
+ interrupts = <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg CPG_MOD 823>;
+ power-domains = <&sysc R8A77965_PD_A3VC>;
+ resets = <&cpg 823>;
+ };
+
fdp1@fe940000 {
compatible = "renesas,fdp1";
reg = <0 0xfe940000 0 0x2400>;
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 05/09] arm64: dts: renesas: r8a77970: One IMR-LX4 device for R-Car V3M
2018-12-19 10:26 [PATCH 00/09] Test R-Car Gen3 IMR-LX4 device Magnus Damm
` (3 preceding siblings ...)
2018-12-19 10:26 ` [PATCH 04/09] arm64: dts: renesas: r8a77965: One IMR-LX4 device for R-Car M3-N Magnus Damm
@ 2018-12-19 10:26 ` Magnus Damm
2018-12-19 10:27 ` [PATCH 06/09] arm64: dts: renesas: r8a77980: One IMR-LX4 device for R-Car V3H Magnus Damm
` (3 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Magnus Damm @ 2018-12-19 10:26 UTC (permalink / raw)
To: linux-renesas-soc; +Cc: Magnus Damm
From: Magnus Damm <damm+renesas@opensource.se>
Introduce a single IMR-LX4 device to the r8a77970 dtsi file.
Not for upstream merge.
Not-Signed-off-by: Magnus Damm <damm+renesas@opensource.se>
---
arch/arm64/boot/dts/renesas/r8a77970.dtsi | 10 ++++++++++
1 file changed, 10 insertions(+)
--- 0001/arch/arm64/boot/dts/renesas/r8a77970.dtsi
+++ work/arch/arm64/boot/dts/renesas/r8a77970.dtsi 2018-12-19 15:38:53.655742270 +0900
@@ -1055,6 +1055,16 @@
resets = <&cpg 408>;
};
+ imr-lx4@fe860000 {
+ compatible = "renesas,r8a77970-imr-lx4",
+ "renesas,imr-lx4";
+ reg = <0 0xfe860000 0 0x2000>;
+ interrupts = <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg CPG_MOD 823>;
+ power-domains = <&sysc R8A77970_PD_ALWAYS_ON>;
+ resets = <&cpg 823>;
+ };
+
vspd0: vsp@fea20000 {
compatible = "renesas,vsp2";
reg = <0 0xfea20000 0 0x5000>;
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 06/09] arm64: dts: renesas: r8a77980: One IMR-LX4 device for R-Car V3H
2018-12-19 10:26 [PATCH 00/09] Test R-Car Gen3 IMR-LX4 device Magnus Damm
` (4 preceding siblings ...)
2018-12-19 10:26 ` [PATCH 05/09] arm64: dts: renesas: r8a77970: One IMR-LX4 device for R-Car V3M Magnus Damm
@ 2018-12-19 10:27 ` Magnus Damm
2018-12-19 10:27 ` [PATCH 07/09] arm64: dts: renesas: r8a77995: One IMR-LX4 device for R-Car D3 Magnus Damm
` (2 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Magnus Damm @ 2018-12-19 10:27 UTC (permalink / raw)
To: linux-renesas-soc; +Cc: Magnus Damm
From: Magnus Damm <damm+renesas@opensource.se>
Introduce a single IMR-LX4 device to the r8a77980 dtsi file.
Not for upstream merge.
Not-Signed-off-by: Magnus Damm <damm+renesas@opensource.se>
---
arch/arm64/boot/dts/renesas/r8a77980.dtsi | 10 ++++++++++
1 file changed, 10 insertions(+)
--- 0001/arch/arm64/boot/dts/renesas/r8a77980.dtsi
+++ work/arch/arm64/boot/dts/renesas/r8a77980.dtsi 2018-12-19 15:59:32.314683163 +0900
@@ -1374,6 +1374,16 @@
status = "disabled";
};
+ imr-lx4@fe860000 {
+ compatible = "renesas,r8a77980-imr-lx4",
+ "renesas,imr-lx4";
+ reg = <0 0xfe860000 0 0x2000>;
+ interrupts = <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg CPG_MOD 823>;
+ power-domains = <&sysc R8A77980_PD_ALWAYS_ON>;
+ resets = <&cpg 823>;
+ };
+
vspd0: vsp@fea20000 {
compatible = "renesas,vsp2";
reg = <0 0xfea20000 0 0x5000>;
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 07/09] arm64: dts: renesas: r8a77995: One IMR-LX4 device for R-Car D3
2018-12-19 10:26 [PATCH 00/09] Test R-Car Gen3 IMR-LX4 device Magnus Damm
` (5 preceding siblings ...)
2018-12-19 10:27 ` [PATCH 06/09] arm64: dts: renesas: r8a77980: One IMR-LX4 device for R-Car V3H Magnus Damm
@ 2018-12-19 10:27 ` Magnus Damm
2018-12-19 10:27 ` [PATCH 08/09] arm64: dts: renesas: r8a77990: One IMR-LX4 device for R-Car E3 Magnus Damm
2018-12-19 10:27 ` [PATCH 09/09] Random build workarounds for renesas-drivers Magnus Damm
8 siblings, 0 replies; 10+ messages in thread
From: Magnus Damm @ 2018-12-19 10:27 UTC (permalink / raw)
To: linux-renesas-soc; +Cc: Magnus Damm
From: Magnus Damm <damm+renesas@opensource.se>
Introduce a single IMR-LX4 device to the r8a77990 dtsi file.
Not for upstream merge.
Not-Signed-off-by: Magnus Damm <damm+renesas@opensource.se>
---
arch/arm64/boot/dts/renesas/r8a77990.dtsi | 10 ++++++++++
1 file changed, 10 insertions(+)
--- 0001/arch/arm64/boot/dts/renesas/r8a77990.dtsi
+++ work/arch/arm64/boot/dts/renesas/r8a77990.dtsi 2018-12-19 16:07:34.000937189 +0900
@@ -1526,6 +1526,16 @@
resets = <&cpg 408>;
};
+ imr-lx4@fe860000 {
+ compatible = "renesas,r8a77990-imr-lx4",
+ "renesas,imr-lx4";
+ reg = <0 0xfe860000 0 0x2000>;
+ interrupts = <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg CPG_MOD 823>;
+ power-domains = <&sysc R8A77990_PD_A3VC>;
+ resets = <&cpg 823>;
+ };
+
vspb0: vsp@fe960000 {
compatible = "renesas,vsp2";
reg = <0 0xfe960000 0 0x8000>;
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 08/09] arm64: dts: renesas: r8a77990: One IMR-LX4 device for R-Car E3
2018-12-19 10:26 [PATCH 00/09] Test R-Car Gen3 IMR-LX4 device Magnus Damm
` (6 preceding siblings ...)
2018-12-19 10:27 ` [PATCH 07/09] arm64: dts: renesas: r8a77995: One IMR-LX4 device for R-Car D3 Magnus Damm
@ 2018-12-19 10:27 ` Magnus Damm
2018-12-19 10:27 ` [PATCH 09/09] Random build workarounds for renesas-drivers Magnus Damm
8 siblings, 0 replies; 10+ messages in thread
From: Magnus Damm @ 2018-12-19 10:27 UTC (permalink / raw)
To: linux-renesas-soc; +Cc: Magnus Damm
From: Magnus Damm <damm+renesas@opensource.se>
Introduce a single IMR-LX4 device to the r8a77995 dtsi file.
Not for upstream merge.
Not-Signed-off-by: Magnus Damm <damm+renesas@opensource.se>
---
arch/arm64/boot/dts/renesas/r8a77995.dtsi | 10 ++++++++++
1 file changed, 10 insertions(+)
--- 0001/arch/arm64/boot/dts/renesas/r8a77995.dtsi
+++ work/arch/arm64/boot/dts/renesas/r8a77995.dtsi 2018-12-19 16:02:21.065530497 +0900
@@ -936,6 +936,16 @@
resets = <&cpg 408>;
};
+ imr-lx4@fe860000 {
+ compatible = "renesas,r8a77995-imr-lx4",
+ "renesas,imr-lx4";
+ reg = <0 0xfe860000 0 0x2000>;
+ interrupts = <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&cpg CPG_MOD 823>;
+ power-domains = <&sysc R8A77995_PD_ALWAYS_ON>;
+ resets = <&cpg 823>;
+ };
+
vspbs: vsp@fe960000 {
compatible = "renesas,vsp2";
reg = <0 0xfe960000 0 0x8000>;
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 09/09] Random build workarounds for renesas-drivers
2018-12-19 10:26 [PATCH 00/09] Test R-Car Gen3 IMR-LX4 device Magnus Damm
` (7 preceding siblings ...)
2018-12-19 10:27 ` [PATCH 08/09] arm64: dts: renesas: r8a77990: One IMR-LX4 device for R-Car E3 Magnus Damm
@ 2018-12-19 10:27 ` Magnus Damm
8 siblings, 0 replies; 10+ messages in thread
From: Magnus Damm @ 2018-12-19 10:27 UTC (permalink / raw)
To: linux-renesas-soc; +Cc: Magnus Damm
From: Magnus Damm <damm+renesas@opensource.se>
The latest renesas-drivers release does not build for me with
the arm64 defconfig. Probably related to my old toolchain.
Take the easy way out and work around the build issues locally.
Not for upstream merge.
Not-Signed-off-by: Magnus Damm <damm+renesas@opensource.se>
---
Applies on top of renesas-drivers-2018-12-18-v4.20-rc7
arch/arm64/include/asm/smp.h | 2 +-
drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c | 2 +-
drivers/tty/serial/sh-sci.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
--- 0001/arch/arm64/include/asm/smp.h
+++ work/arch/arm64/include/asm/smp.h 2018-12-19 13:51:47.246815997 +0900
@@ -30,7 +30,7 @@
#define CPU_PANIC_KERNEL (3)
#define CPU_STUCK_REASON_52_BIT_VA (1U << CPU_STUCK_REASON_SHIFT)
-#define CPU_STUCK_REASON_NO_GRAN (2U << CPU_STUCK_REASON_SHIFT)
+#define CPU_STUCK_REASON_NO_GRAN (2 << CPU_STUCK_REASON_SHIFT)
#ifndef __ASSEMBLY__
--- 0001/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c
+++ work/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c 2018-12-19 14:06:48.699077685 +0900
@@ -560,7 +560,7 @@ dw_mipi_dsi_get_lane_mbps(void *priv_dat
static const struct dw_mipi_dsi_phy_ops dw_mipi_dsi_rockchip_phy_ops = {
.init = dw_mipi_dsi_phy_init,
- .get_lane_mbps = dw_mipi_dsi_get_lane_mbps,
+ //.get_lane_mbps = dw_mipi_dsi_get_lane_mbps,
};
static void dw_mipi_dsi_rockchip_config(struct dw_mipi_dsi_rockchip *dsi,
--- 0001/drivers/tty/serial/sh-sci.c
+++ work/drivers/tty/serial/sh-sci.c 2018-12-19 13:42:38.328037070 +0900
@@ -1347,7 +1347,7 @@ static int sci_submit_rx(struct sci_port
{
struct dma_chan *chan = s->chan_rx;
struct uart_port *port = &s->port;
- unsigned long flags;
+ unsigned long flags = 0;
int i;
for (i = 0; i < 2; i++) {
^ permalink raw reply [flat|nested] 10+ messages in thread