2023-03-07 16:31:22

by Wolfram Sang

[permalink] [raw]
Subject: [PATCH 00/11] tree-wide: remove support for Renesas R-Car H3 ES1

Because H3 ES1 becomes an increasing maintenance burden and was only available
to a development group, we decided to remove upstream support for it. Here are
the patches to remove driver changes. Review tags have been gathered before
during an internal discussion. Only change since the internal version is a
plain rebase to v6.3-rc1. A branch with all removals is here:

git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git renesas/h3es1-removal

Please apply individually per subsystem. There are no dependencies and the SoC
doesn't boot anymore since v6.3-rc1.

Thanks and happy hacking!


Wolfram Sang (11):
iommu/ipmmu-vmsa: remove R-Car H3 ES1.* handling
drm: rcar-du: remove R-Car H3 ES1.* workarounds
media: rcar-vin: remove R-Car H3 ES1.* handling
media: rcar-vin: csi2: remove R-Car H3 ES1.* handling
media: renesas: fdp1: remove R-Car H3 ES1.* handling
thermal/drivers/rcar_gen3_thermal: remove R-Car H3 ES1.* handling
ravb: remove R-Car H3 ES1.* handling
mmc: renesas_sdhi: remove R-Car H3 ES1.* handling
usb: host: xhci-rcar: remove leftover quirk handling
usb: host: xhci-rcar: remove R-Car H3 ES1.* handling
usb: gadget: udc: renesas_usb3: remove R-Car H3 ES1.* handling

drivers/gpu/drm/rcar-du/rcar_du_crtc.c | 37 ++-----------
drivers/gpu/drm/rcar-du/rcar_du_drv.c | 48 -----------------
drivers/gpu/drm/rcar-du/rcar_du_drv.h | 2 -
drivers/gpu/drm/rcar-du/rcar_du_regs.h | 3 +-
drivers/iommu/ipmmu-vmsa.c | 1 -
.../platform/renesas/rcar-vin/rcar-core.c | 36 -------------
.../platform/renesas/rcar-vin/rcar-csi2.c | 15 ++----
drivers/media/platform/renesas/rcar_fdp1.c | 4 --
drivers/mmc/host/renesas_sdhi_internal_dmac.c | 10 ++--
drivers/net/ethernet/renesas/ravb_main.c | 15 ------
drivers/thermal/rcar_gen3_thermal.c | 52 +------------------
drivers/usb/gadget/udc/renesas_usb3.c | 23 +-------
drivers/usb/host/xhci-rcar.c | 34 +-----------
13 files changed, 16 insertions(+), 264 deletions(-)

--
2.35.1



2023-03-07 16:31:37

by Wolfram Sang

[permalink] [raw]
Subject: [PATCH 01/11] iommu/ipmmu-vmsa: remove R-Car H3 ES1.* handling

R-Car H3 ES1.* was only available to an internal development group and
needed a lot of quirks and workarounds. These become a maintenance
burden now, so our development group decided to remove upstream support
and disable booting for this SoC. Public users only have ES2 onwards.

Reviewed-by: Laurent Pinchart <[email protected]>
Reviewed-by: Geert Uytterhoeven <[email protected]>
Signed-off-by: Wolfram Sang <[email protected]>
---
Please apply individually per subsystem. There are no dependencies and the SoC
doesn't boot anymore since v6.3-rc1.

drivers/iommu/ipmmu-vmsa.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/drivers/iommu/ipmmu-vmsa.c b/drivers/iommu/ipmmu-vmsa.c
index bdf1a4e5eae0..ba42001a6f57 100644
--- a/drivers/iommu/ipmmu-vmsa.c
+++ b/drivers/iommu/ipmmu-vmsa.c
@@ -697,7 +697,6 @@ static const struct soc_device_attribute soc_needs_opt_in[] = {

static const struct soc_device_attribute soc_denylist[] = {
{ .soc_id = "r8a774a1", },
- { .soc_id = "r8a7795", .revision = "ES1.*" },
{ .soc_id = "r8a7795", .revision = "ES2.*" },
{ .soc_id = "r8a7796", },
{ /* sentinel */ }
--
2.35.1


2023-03-07 16:31:41

by Wolfram Sang

[permalink] [raw]
Subject: [PATCH 03/11] media: rcar-vin: remove R-Car H3 ES1.* handling

R-Car H3 ES1.* was only available to an internal development group and
needed a lot of quirks and workarounds. These become a maintenance
burden now, so our development group decided to remove upstream support
and disable booting for this SoC. Public users only have ES2 onwards.

Reviewed-by: Laurent Pinchart <[email protected]>
Reviewed-by: Niklas Söderlund <[email protected]>
Reviewed-by: Geert Uytterhoeven <[email protected]>
Signed-off-by: Wolfram Sang <[email protected]>
---
Please apply individually per subsystem. There are no dependencies and the SoC
doesn't boot anymore since v6.3-rc1.

.../platform/renesas/rcar-vin/rcar-core.c | 36 -------------------
1 file changed, 36 deletions(-)

diff --git a/drivers/media/platform/renesas/rcar-vin/rcar-core.c b/drivers/media/platform/renesas/rcar-vin/rcar-core.c
index 5e53d6b7036c..ac8f2126540b 100644
--- a/drivers/media/platform/renesas/rcar-vin/rcar-core.c
+++ b/drivers/media/platform/renesas/rcar-vin/rcar-core.c
@@ -17,7 +17,6 @@
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/slab.h>
-#include <linux/sys_soc.h>

#include <media/v4l2-async.h>
#include <media/v4l2-fwnode.h>
@@ -1183,24 +1182,6 @@ static const struct rvin_info rcar_info_r8a7795 = {
.scaler = rvin_scaler_gen3,
};

-static const struct rvin_group_route rcar_info_r8a7795es1_routes[] = {
- { .master = 0, .csi = RVIN_CSI20, .chsel = 0x04 },
- { .master = 0, .csi = RVIN_CSI21, .chsel = 0x05 },
- { .master = 0, .csi = RVIN_CSI40, .chsel = 0x03 },
- { .master = 4, .csi = RVIN_CSI20, .chsel = 0x04 },
- { .master = 4, .csi = RVIN_CSI21, .chsel = 0x05 },
- { .master = 4, .csi = RVIN_CSI41, .chsel = 0x03 },
- { /* Sentinel */ }
-};
-
-static const struct rvin_info rcar_info_r8a7795es1 = {
- .model = RCAR_GEN3,
- .use_mc = true,
- .max_width = 4096,
- .max_height = 4096,
- .routes = rcar_info_r8a7795es1_routes,
-};
-
static const struct rvin_group_route rcar_info_r8a7796_routes[] = {
{ .master = 0, .csi = RVIN_CSI20, .chsel = 0x04 },
{ .master = 0, .csi = RVIN_CSI40, .chsel = 0x03 },
@@ -1372,17 +1353,8 @@ static const struct of_device_id rvin_of_id_table[] = {
};
MODULE_DEVICE_TABLE(of, rvin_of_id_table);

-static const struct soc_device_attribute r8a7795es1[] = {
- {
- .soc_id = "r8a7795", .revision = "ES1.*",
- .data = &rcar_info_r8a7795es1,
- },
- { /* Sentinel */ }
-};
-
static int rcar_vin_probe(struct platform_device *pdev)
{
- const struct soc_device_attribute *attr;
struct rvin_dev *vin;
int irq, ret;

@@ -1394,14 +1366,6 @@ static int rcar_vin_probe(struct platform_device *pdev)
vin->info = of_device_get_match_data(&pdev->dev);
vin->alpha = 0xff;

- /*
- * Special care is needed on r8a7795 ES1.x since it
- * uses different routing than r8a7795 ES2.0.
- */
- attr = soc_device_match(r8a7795es1);
- if (attr)
- vin->info = attr->data;
-
vin->base = devm_platform_ioremap_resource(pdev, 0);
if (IS_ERR(vin->base))
return PTR_ERR(vin->base);
--
2.35.1


2023-03-07 16:31:47

by Wolfram Sang

[permalink] [raw]
Subject: [PATCH 02/11] drm: rcar-du: remove R-Car H3 ES1.* workarounds

R-Car H3 ES1.* was only available to an internal development group and
needed a lot of quirks and workarounds. These become a maintenance
burden now, so our development group decided to remove upstream support
and disable booting for this SoC. Public users only have ES2 onwards.

Signed-off-by: Wolfram Sang <[email protected]>
---
Please apply individually per subsystem. There are no dependencies and the SoC
doesn't boot anymore since v6.3-rc1.

drivers/gpu/drm/rcar-du/rcar_du_crtc.c | 37 ++------------------
drivers/gpu/drm/rcar-du/rcar_du_drv.c | 48 --------------------------
drivers/gpu/drm/rcar-du/rcar_du_drv.h | 2 --
drivers/gpu/drm/rcar-du/rcar_du_regs.h | 3 +-
4 files changed, 4 insertions(+), 86 deletions(-)

diff --git a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
index 008e172ed43b..84411c452e30 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
@@ -223,20 +223,6 @@ static void rcar_du_crtc_set_display_timing(struct rcar_du_crtc *rcrtc)
* DU channels that have a display PLL can't use the internal
* system clock, and have no internal clock divider.
*/
-
- /*
- * The H3 ES1.x exhibits dot clock duty cycle stability issues.
- * We can work around them by configuring the DPLL to twice the
- * desired frequency, coupled with a /2 post-divider. Restrict
- * the workaround to H3 ES1.x as ES2.0 and all other SoCs have
- * no post-divider when a display PLL is present (as shown by
- * the workaround breaking HDMI output on M3-W during testing).
- */
- if (rcdu->info->quirks & RCAR_DU_QUIRK_H3_ES1_PCLK_STABILITY) {
- target *= 2;
- div = 1;
- }
-
extclk = clk_get_rate(rcrtc->extclock);
rcar_du_dpll_divider(rcrtc, &dpll, extclk, target);

@@ -245,30 +231,13 @@ static void rcar_du_crtc_set_display_timing(struct rcar_du_crtc *rcrtc)
| DPLLCR_N(dpll.n) | DPLLCR_M(dpll.m)
| DPLLCR_STBY;

- if (rcrtc->index == 1) {
+ if (rcrtc->index == 1)
dpllcr |= DPLLCR_PLCS1
| DPLLCR_INCS_DOTCLKIN1;
- } else {
- dpllcr |= DPLLCR_PLCS0_PLL
+ else
+ dpllcr |= DPLLCR_PLCS0
| DPLLCR_INCS_DOTCLKIN0;

- /*
- * On ES2.x we have a single mux controlled via bit 21,
- * which selects between DCLKIN source (bit 21 = 0) and
- * a PLL source (bit 21 = 1), where the PLL is always
- * PLL1.
- *
- * On ES1.x we have an additional mux, controlled
- * via bit 20, for choosing between PLL0 (bit 20 = 0)
- * and PLL1 (bit 20 = 1). We always want to use PLL1,
- * so on ES1.x, in addition to setting bit 21, we need
- * to set the bit 20.
- */
-
- if (rcdu->info->quirks & RCAR_DU_QUIRK_H3_ES1_PLL)
- dpllcr |= DPLLCR_PLCS0_H3ES1X_PLL1;
- }
-
rcar_du_group_write(rcrtc->group, DPLLCR, dpllcr);

escr = ESCR_DCLKSEL_DCLKIN | div;
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
index b9a94c5260e9..1ffde19cb87f 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
@@ -16,7 +16,6 @@
#include <linux/platform_device.h>
#include <linux/pm.h>
#include <linux/slab.h>
-#include <linux/sys_soc.h>
#include <linux/wait.h>

#include <drm/drm_atomic_helper.h>
@@ -387,43 +386,6 @@ static const struct rcar_du_device_info rcar_du_r8a7795_info = {
.dpll_mask = BIT(2) | BIT(1),
};

-static const struct rcar_du_device_info rcar_du_r8a7795_es1_info = {
- .gen = 3,
- .features = RCAR_DU_FEATURE_CRTC_IRQ
- | RCAR_DU_FEATURE_CRTC_CLOCK
- | RCAR_DU_FEATURE_VSP1_SOURCE
- | RCAR_DU_FEATURE_INTERLACED
- | RCAR_DU_FEATURE_TVM_SYNC,
- .quirks = RCAR_DU_QUIRK_H3_ES1_PCLK_STABILITY
- | RCAR_DU_QUIRK_H3_ES1_PLL,
- .channels_mask = BIT(3) | BIT(2) | BIT(1) | BIT(0),
- .routes = {
- /*
- * R8A7795 has one RGB output, two HDMI outputs and one
- * LVDS output.
- */
- [RCAR_DU_OUTPUT_DPAD0] = {
- .possible_crtcs = BIT(3),
- .port = 0,
- },
- [RCAR_DU_OUTPUT_HDMI0] = {
- .possible_crtcs = BIT(1),
- .port = 1,
- },
- [RCAR_DU_OUTPUT_HDMI1] = {
- .possible_crtcs = BIT(2),
- .port = 2,
- },
- [RCAR_DU_OUTPUT_LVDS0] = {
- .possible_crtcs = BIT(0),
- .port = 3,
- },
- },
- .num_lvds = 1,
- .num_rpf = 5,
- .dpll_mask = BIT(2) | BIT(1),
-};
-
static const struct rcar_du_device_info rcar_du_r8a7796_info = {
.gen = 3,
.features = RCAR_DU_FEATURE_CRTC_IRQ
@@ -614,11 +576,6 @@ static const struct of_device_id rcar_du_of_table[] = {

MODULE_DEVICE_TABLE(of, rcar_du_of_table);

-static const struct soc_device_attribute rcar_du_soc_table[] = {
- { .soc_id = "r8a7795", .revision = "ES1.*", .data = &rcar_du_r8a7795_es1_info },
- { /* sentinel */ }
-};
-
const char *rcar_du_output_name(enum rcar_du_output output)
{
static const char * const names[] = {
@@ -707,7 +664,6 @@ static void rcar_du_shutdown(struct platform_device *pdev)

static int rcar_du_probe(struct platform_device *pdev)
{
- const struct soc_device_attribute *soc_attr;
struct rcar_du_device *rcdu;
unsigned int mask;
int ret;
@@ -725,10 +681,6 @@ static int rcar_du_probe(struct platform_device *pdev)

rcdu->info = of_device_get_match_data(rcdu->dev);

- soc_attr = soc_device_match(rcar_du_soc_table);
- if (soc_attr)
- rcdu->info = soc_attr->data;
-
platform_set_drvdata(pdev, rcdu);

/* I/O resources */
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.h b/drivers/gpu/drm/rcar-du/rcar_du_drv.h
index acc3673fefe1..5cfa2bb7ad93 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_drv.h
+++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.h
@@ -34,8 +34,6 @@ struct rcar_du_device;
#define RCAR_DU_FEATURE_NO_BLENDING BIT(5) /* PnMR.SPIM does not have ALP nor EOR bits */

#define RCAR_DU_QUIRK_ALIGN_128B BIT(0) /* Align pitches to 128 bytes */
-#define RCAR_DU_QUIRK_H3_ES1_PCLK_STABILITY BIT(1) /* H3 ES1 has pclk stability issue */
-#define RCAR_DU_QUIRK_H3_ES1_PLL BIT(2) /* H3 ES1 PLL setup differs from non-ES1 */

enum rcar_du_output {
RCAR_DU_OUTPUT_DPAD0,
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_regs.h b/drivers/gpu/drm/rcar-du/rcar_du_regs.h
index 789ae9285108..288eff12b2b1 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_regs.h
+++ b/drivers/gpu/drm/rcar-du/rcar_du_regs.h
@@ -283,8 +283,7 @@
#define DPLLCR 0x20044
#define DPLLCR_CODE (0x95 << 24)
#define DPLLCR_PLCS1 (1 << 23)
-#define DPLLCR_PLCS0_PLL (1 << 21)
-#define DPLLCR_PLCS0_H3ES1X_PLL1 (1 << 20)
+#define DPLLCR_PLCS0 (1 << 21)
#define DPLLCR_CLKE (1 << 18)
#define DPLLCR_FDPLL(n) ((n) << 12)
#define DPLLCR_N(n) ((n) << 5)
--
2.35.1


2023-03-07 16:31:53

by Wolfram Sang

[permalink] [raw]
Subject: [PATCH 04/11] media: rcar-vin: csi2: remove R-Car H3 ES1.* handling

R-Car H3 ES1.* was only available to an internal development group and
needed a lot of quirks and workarounds. These become a maintenance
burden now, so our development group decided to remove upstream support
and disable booting for this SoC. Public users only have ES2 onwards.

Reviewed-by: Laurent Pinchart <[email protected]>
Reviewed-by: Niklas Söderlund <[email protected]>
Signed-off-by: Wolfram Sang <[email protected]>
---
Please apply individually per subsystem. There are no dependencies and the SoC
doesn't boot anymore since v6.3-rc1.

.../media/platform/renesas/rcar-vin/rcar-csi2.c | 15 +++------------
1 file changed, 3 insertions(+), 12 deletions(-)

diff --git a/drivers/media/platform/renesas/rcar-vin/rcar-csi2.c b/drivers/media/platform/renesas/rcar-vin/rcar-csi2.c
index 174aa6176f54..5dbd0daa8735 100644
--- a/drivers/media/platform/renesas/rcar-vin/rcar-csi2.c
+++ b/drivers/media/platform/renesas/rcar-vin/rcar-csi2.c
@@ -345,7 +345,7 @@ static const struct rcsi2_mbps_reg hsfreqrange_h3_v3h_m3n[] = {
{ /* sentinel */ },
};

-static const struct rcsi2_mbps_reg hsfreqrange_m3w_h3es1[] = {
+static const struct rcsi2_mbps_reg hsfreqrange_m3w[] = {
{ .mbps = 80, .reg = 0x00 },
{ .mbps = 90, .reg = 0x10 },
{ .mbps = 100, .reg = 0x20 },
@@ -1369,11 +1369,6 @@ static const struct rcar_csi2_info rcar_csi2_info_r8a7795 = {
.clear_ulps = true,
};

-static const struct rcar_csi2_info rcar_csi2_info_r8a7795es1 = {
- .hsfreqrange = hsfreqrange_m3w_h3es1,
- .num_channels = 4,
-};
-
static const struct rcar_csi2_info rcar_csi2_info_r8a7795es2 = {
.init_phtw = rcsi2_init_phtw_h3es2,
.hsfreqrange = hsfreqrange_h3_v3h_m3n,
@@ -1383,12 +1378,12 @@ static const struct rcar_csi2_info rcar_csi2_info_r8a7795es2 = {
};

static const struct rcar_csi2_info rcar_csi2_info_r8a7796 = {
- .hsfreqrange = hsfreqrange_m3w_h3es1,
+ .hsfreqrange = hsfreqrange_m3w,
.num_channels = 4,
};

static const struct rcar_csi2_info rcar_csi2_info_r8a77961 = {
- .hsfreqrange = hsfreqrange_m3w_h3es1,
+ .hsfreqrange = hsfreqrange_m3w,
.num_channels = 4,
};

@@ -1481,10 +1476,6 @@ static const struct of_device_id rcar_csi2_of_table[] = {
MODULE_DEVICE_TABLE(of, rcar_csi2_of_table);

static const struct soc_device_attribute r8a7795[] = {
- {
- .soc_id = "r8a7795", .revision = "ES1.*",
- .data = &rcar_csi2_info_r8a7795es1,
- },
{
.soc_id = "r8a7795", .revision = "ES2.*",
.data = &rcar_csi2_info_r8a7795es2,
--
2.35.1


2023-03-07 16:31:59

by Wolfram Sang

[permalink] [raw]
Subject: [PATCH 05/11] media: renesas: fdp1: remove R-Car H3 ES1.* handling

R-Car H3 ES1.* was only available to an internal development group and
needed a lot of quirks and workarounds. These become a maintenance
burden now, so our development group decided to remove upstream support
and disable booting for this SoC. Public users only have ES2 onwards.

Reviewed-by: Geert Uytterhoeven <[email protected]>
Signed-off-by: Wolfram Sang <[email protected]>
---
Please apply individually per subsystem. There are no dependencies and the SoC
doesn't boot anymore since v6.3-rc1.

drivers/media/platform/renesas/rcar_fdp1.c | 4 ----
1 file changed, 4 deletions(-)

diff --git a/drivers/media/platform/renesas/rcar_fdp1.c b/drivers/media/platform/renesas/rcar_fdp1.c
index 37ecf489d112..f4a1fc8ce595 100644
--- a/drivers/media/platform/renesas/rcar_fdp1.c
+++ b/drivers/media/platform/renesas/rcar_fdp1.c
@@ -254,7 +254,6 @@ MODULE_PARM_DESC(debug, "activate debug info");

/* Internal Data (HW Version) */
#define FD1_IP_INTDATA 0x0800
-#define FD1_IP_H3_ES1 0x02010101
#define FD1_IP_M3W 0x02010202
#define FD1_IP_H3 0x02010203
#define FD1_IP_M3N 0x02010204
@@ -2359,9 +2358,6 @@ static int fdp1_probe(struct platform_device *pdev)

hw_version = fdp1_read(fdp1, FD1_IP_INTDATA);
switch (hw_version) {
- case FD1_IP_H3_ES1:
- dprintk(fdp1, "FDP1 Version R-Car H3 ES1\n");
- break;
case FD1_IP_M3W:
dprintk(fdp1, "FDP1 Version R-Car M3-W\n");
break;
--
2.35.1


2023-03-07 16:32:03

by Wolfram Sang

[permalink] [raw]
Subject: [PATCH 06/11] thermal/drivers/rcar_gen3_thermal: remove R-Car H3 ES1.* handling

R-Car H3 ES1.* was only available to an internal development group and
needed a lot of quirks and workarounds. These become a maintenance
burden now, so our development group decided to remove upstream support
and disable booting for this SoC. Public users only have ES2 onwards.

Reviewed-by: Laurent Pinchart <[email protected]>
Reviewed-by: Niklas Söderlund <[email protected]>
Reviewed-by: Geert Uytterhoeven <[email protected]>
Signed-off-by: Wolfram Sang <[email protected]>
---
Please apply individually per subsystem. There are no dependencies and the SoC
doesn't boot anymore since v6.3-rc1.

drivers/thermal/rcar_gen3_thermal.c | 52 ++---------------------------
1 file changed, 2 insertions(+), 50 deletions(-)

diff --git a/drivers/thermal/rcar_gen3_thermal.c b/drivers/thermal/rcar_gen3_thermal.c
index d6b5b59c5c53..e97d1798b5a3 100644
--- a/drivers/thermal/rcar_gen3_thermal.c
+++ b/drivers/thermal/rcar_gen3_thermal.c
@@ -14,7 +14,6 @@
#include <linux/of_device.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
-#include <linux/sys_soc.h>
#include <linux/thermal.h>

#include "thermal_hwmon.h"
@@ -27,7 +26,6 @@
#define REG_GEN3_IRQTEMP1 0x14
#define REG_GEN3_IRQTEMP2 0x18
#define REG_GEN3_IRQTEMP3 0x1C
-#define REG_GEN3_CTSR 0x20
#define REG_GEN3_THCTR 0x20
#define REG_GEN3_TEMP 0x28
#define REG_GEN3_THCODE1 0x50
@@ -46,14 +44,6 @@
#define IRQ_TEMPD2 BIT(4)
#define IRQ_TEMPD3 BIT(5)

-/* CTSR bits */
-#define CTSR_PONM BIT(8)
-#define CTSR_AOUT BIT(7)
-#define CTSR_THBGR BIT(5)
-#define CTSR_VMEN BIT(4)
-#define CTSR_VMST BIT(1)
-#define CTSR_THSST BIT(0)
-
/* THCTR bits */
#define THCTR_PONM BIT(6)
#define THCTR_THSST BIT(0)
@@ -88,8 +78,6 @@ struct rcar_gen3_thermal_priv {
struct rcar_gen3_thermal_tsc *tscs[TSC_MAX_NUM];
struct thermal_zone_device_ops ops;
unsigned int num_tscs;
- void (*thermal_init)(struct rcar_gen3_thermal_priv *priv,
- struct rcar_gen3_thermal_tsc *tsc);
int ptat[3];
};

@@ -248,11 +236,6 @@ static irqreturn_t rcar_gen3_thermal_irq(int irq, void *data)
return IRQ_HANDLED;
}

-static const struct soc_device_attribute r8a7795es1[] = {
- { .soc_id = "r8a7795", .revision = "ES1.*" },
- { /* sentinel */ }
-};
-
static bool rcar_gen3_thermal_read_fuses(struct rcar_gen3_thermal_priv *priv)
{
unsigned int i;
@@ -311,34 +294,6 @@ static bool rcar_gen3_thermal_read_fuses(struct rcar_gen3_thermal_priv *priv)
return true;
}

-static void rcar_gen3_thermal_init_r8a7795es1(struct rcar_gen3_thermal_priv *priv,
- struct rcar_gen3_thermal_tsc *tsc)
-{
- rcar_gen3_thermal_write(tsc, REG_GEN3_CTSR, CTSR_THBGR);
- rcar_gen3_thermal_write(tsc, REG_GEN3_CTSR, 0x0);
-
- usleep_range(1000, 2000);
-
- rcar_gen3_thermal_write(tsc, REG_GEN3_CTSR, CTSR_PONM);
-
- rcar_gen3_thermal_write(tsc, REG_GEN3_IRQCTL, 0x3F);
- rcar_gen3_thermal_write(tsc, REG_GEN3_IRQMSK, 0);
- if (priv->ops.set_trips)
- rcar_gen3_thermal_write(tsc, REG_GEN3_IRQEN,
- IRQ_TEMPD1 | IRQ_TEMP2);
-
- rcar_gen3_thermal_write(tsc, REG_GEN3_CTSR,
- CTSR_PONM | CTSR_AOUT | CTSR_THBGR | CTSR_VMEN);
-
- usleep_range(100, 200);
-
- rcar_gen3_thermal_write(tsc, REG_GEN3_CTSR,
- CTSR_PONM | CTSR_AOUT | CTSR_THBGR | CTSR_VMEN |
- CTSR_VMST | CTSR_THSST);
-
- usleep_range(1000, 2000);
-}
-
static void rcar_gen3_thermal_init(struct rcar_gen3_thermal_priv *priv,
struct rcar_gen3_thermal_tsc *tsc)
{
@@ -474,9 +429,6 @@ static int rcar_gen3_thermal_probe(struct platform_device *pdev)
return -ENOMEM;

priv->ops = rcar_gen3_tz_of_ops;
- priv->thermal_init = rcar_gen3_thermal_init;
- if (soc_device_match(r8a7795es1))
- priv->thermal_init = rcar_gen3_thermal_init_r8a7795es1;

platform_set_drvdata(pdev, priv);

@@ -516,7 +468,7 @@ static int rcar_gen3_thermal_probe(struct platform_device *pdev)
for (i = 0; i < priv->num_tscs; i++) {
struct rcar_gen3_thermal_tsc *tsc = priv->tscs[i];

- priv->thermal_init(priv, tsc);
+ rcar_gen3_thermal_init(priv, tsc);
rcar_gen3_thermal_calc_coefs(priv, tsc, *ths_tj_1);

zone = devm_thermal_of_zone_register(dev, i, tsc, &priv->ops);
@@ -564,7 +516,7 @@ static int __maybe_unused rcar_gen3_thermal_resume(struct device *dev)
for (i = 0; i < priv->num_tscs; i++) {
struct rcar_gen3_thermal_tsc *tsc = priv->tscs[i];

- priv->thermal_init(priv, tsc);
+ rcar_gen3_thermal_init(priv, tsc);
}

return 0;
--
2.35.1


2023-03-07 16:32:05

by Wolfram Sang

[permalink] [raw]
Subject: [PATCH 07/11] ravb: remove R-Car H3 ES1.* handling

R-Car H3 ES1.* was only available to an internal development group and
needed a lot of quirks and workarounds. These become a maintenance
burden now, so our development group decided to remove upstream support
and disable booting for this SoC. Public users only have ES2 onwards.

Reviewed-by: Laurent Pinchart <[email protected]>
Reviewed-by: Geert Uytterhoeven <[email protected]>
Signed-off-by: Wolfram Sang <[email protected]>
---
Please apply individually per subsystem. There are no dependencies and the SoC
doesn't boot anymore since v6.3-rc1.

drivers/net/ethernet/renesas/ravb_main.c | 15 ---------------
1 file changed, 15 deletions(-)

diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index 0f54849a3823..b81f0d8dfda8 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -28,7 +28,6 @@
#include <linux/pm_runtime.h>
#include <linux/slab.h>
#include <linux/spinlock.h>
-#include <linux/sys_soc.h>
#include <linux/reset.h>
#include <linux/math64.h>

@@ -1390,11 +1389,6 @@ static void ravb_adjust_link(struct net_device *ndev)
phy_print_status(phydev);
}

-static const struct soc_device_attribute r8a7795es10[] = {
- { .soc_id = "r8a7795", .revision = "ES1.0", },
- { /* sentinel */ }
-};
-
/* PHY init function */
static int ravb_phy_init(struct net_device *ndev)
{
@@ -1434,15 +1428,6 @@ static int ravb_phy_init(struct net_device *ndev)
goto err_deregister_fixed_link;
}

- /* This driver only support 10/100Mbit speeds on R-Car H3 ES1.0
- * at this time.
- */
- if (soc_device_match(r8a7795es10)) {
- phy_set_max_speed(phydev, SPEED_100);
-
- netdev_info(ndev, "limited PHY to 100Mbit/s\n");
- }
-
if (!info->half_duplex) {
/* 10BASE, Pause and Asym Pause is not supported */
phy_remove_link_mode(phydev, ETHTOOL_LINK_MODE_10baseT_Half_BIT);
--
2.35.1


2023-03-07 16:32:10

by Wolfram Sang

[permalink] [raw]
Subject: [PATCH 08/11] mmc: renesas_sdhi: remove R-Car H3 ES1.* handling

R-Car H3 ES1.* was only available to an internal development group and
needed a lot of quirks and workarounds. These become a maintenance
burden now, so our development group decided to remove upstream support
and disable booting for this SoC. Public users only have ES2 onwards.

Reviewed-by: Laurent Pinchart <[email protected]>
Reviewed-by: Geert Uytterhoeven <[email protected]>
Signed-off-by: Wolfram Sang <[email protected]>
---
Please apply individually per subsystem. There are no dependencies and the SoC
doesn't boot anymore since v6.3-rc1.

drivers/mmc/host/renesas_sdhi_internal_dmac.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/drivers/mmc/host/renesas_sdhi_internal_dmac.c b/drivers/mmc/host/renesas_sdhi_internal_dmac.c
index f38003f6b1ca..9ab813903b2c 100644
--- a/drivers/mmc/host/renesas_sdhi_internal_dmac.c
+++ b/drivers/mmc/host/renesas_sdhi_internal_dmac.c
@@ -72,11 +72,10 @@ enum renesas_sdhi_dma_cookie {

static unsigned long global_flags;
/*
- * Workaround for avoiding to use RX DMAC by multiple channels.
- * On R-Car H3 ES1.* and M3-W ES1.0, when multiple SDHI channels use
- * RX DMAC simultaneously, sometimes hundreds of bytes data are not
- * stored into the system memory even if the DMAC interrupt happened.
- * So, this driver then uses one RX DMAC channel only.
+ * Workaround for avoiding to use RX DMAC by multiple channels. On R-Car M3-W
+ * ES1.0, when multiple SDHI channels use RX DMAC simultaneously, sometimes
+ * hundreds of data bytes are not stored into the system memory even if the
+ * DMAC interrupt happened. So, this driver then uses one RX DMAC channel only.
*/
#define SDHI_INTERNAL_DMAC_RX_IN_USE 0

@@ -222,7 +221,6 @@ static const struct renesas_sdhi_quirks sdhi_quirks_r9a09g011 = {
*/
static const struct soc_device_attribute sdhi_quirks_match[] = {
{ .soc_id = "r8a774a1", .revision = "ES1.[012]", .data = &sdhi_quirks_4tap_nohs400 },
- { .soc_id = "r8a7795", .revision = "ES1.*", .data = &sdhi_quirks_4tap_nohs400_one_rx },
{ .soc_id = "r8a7795", .revision = "ES2.0", .data = &sdhi_quirks_4tap },
{ .soc_id = "r8a7796", .revision = "ES1.0", .data = &sdhi_quirks_4tap_nohs400_one_rx },
{ .soc_id = "r8a7796", .revision = "ES1.[12]", .data = &sdhi_quirks_4tap_nohs400 },
--
2.35.1


2023-03-07 16:32:16

by Wolfram Sang

[permalink] [raw]
Subject: [PATCH 10/11] usb: host: xhci-rcar: remove R-Car H3 ES1.* handling

R-Car H3 ES1.* was only available to an internal development group and
needed a lot of quirks and workarounds. These become a maintenance
burden now, so our development group decided to remove upstream support
and disable booting for this SoC. Public users only have ES2 onwards.

Reviewed-by: Laurent Pinchart <[email protected]>
Reviewed-by: Geert Uytterhoeven <[email protected]>
Signed-off-by: Wolfram Sang <[email protected]>
---
Please apply individually per subsystem. There are no dependencies and the SoC
doesn't boot anymore since v6.3-rc1.

drivers/usb/host/xhci-rcar.c | 31 ++-----------------------------
1 file changed, 2 insertions(+), 29 deletions(-)

diff --git a/drivers/usb/host/xhci-rcar.c b/drivers/usb/host/xhci-rcar.c
index 567b096a24e9..c4925f8d6b06 100644
--- a/drivers/usb/host/xhci-rcar.c
+++ b/drivers/usb/host/xhci-rcar.c
@@ -12,26 +12,22 @@
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/usb/phy.h>
-#include <linux/sys_soc.h>

#include "xhci.h"
#include "xhci-plat.h"
#include "xhci-rzv2m.h"

#define XHCI_RCAR_FIRMWARE_NAME_V1 "r8a779x_usb3_v1.dlmem"
-#define XHCI_RCAR_FIRMWARE_NAME_V2 "r8a779x_usb3_v2.dlmem"
#define XHCI_RCAR_FIRMWARE_NAME_V3 "r8a779x_usb3_v3.dlmem"

/*
-* - The V3 firmware is for almost all R-Car Gen3 (except r8a7795 ES1.x)
-* - The V2 firmware is for r8a7795 ES1.x.
+* - The V3 firmware is for all R-Car Gen3
* - The V2 firmware is possible to use on R-Car Gen2. However, the V2 causes
* performance degradation. So, this driver continues to use the V1 if R-Car
* Gen2.
* - The V1 firmware is impossible to use on R-Car Gen3.
*/
MODULE_FIRMWARE(XHCI_RCAR_FIRMWARE_NAME_V1);
-MODULE_FIRMWARE(XHCI_RCAR_FIRMWARE_NAME_V2);
MODULE_FIRMWARE(XHCI_RCAR_FIRMWARE_NAME_V3);

/*** Register Offset ***/
@@ -78,17 +74,6 @@ MODULE_FIRMWARE(XHCI_RCAR_FIRMWARE_NAME_V3);
#define RCAR_USB3_RX_POL_VAL BIT(21)
#define RCAR_USB3_TX_POL_VAL BIT(4)

-/* For soc_device_attribute */
-#define RCAR_XHCI_FIRMWARE_V2 BIT(0) /* FIRMWARE V2 */
-
-static const struct soc_device_attribute rcar_quirks_match[] = {
- {
- .soc_id = "r8a7795", .revision = "ES1.*",
- .data = (void *)RCAR_XHCI_FIRMWARE_V2,
- },
- { /* sentinel */ }
-};
-
static void xhci_rcar_start_gen2(struct usb_hcd *hcd)
{
/* LCLK Select */
@@ -134,9 +119,6 @@ static int xhci_rcar_download_firmware(struct usb_hcd *hcd)
const struct firmware *fw;
int retval, index, j;
u32 data, val, temp;
- u32 quirks = 0;
- const struct soc_device_attribute *attr;
- const char *firmware_name;

/*
* According to the datasheet, "Upon the completion of FW Download,
@@ -145,17 +127,8 @@ static int xhci_rcar_download_firmware(struct usb_hcd *hcd)
if (readl(regs + RCAR_USB3_DL_CTRL) & RCAR_USB3_DL_CTRL_FW_SUCCESS)
return 0;

- attr = soc_device_match(rcar_quirks_match);
- if (attr)
- quirks = (uintptr_t)attr->data;
-
- if (quirks & RCAR_XHCI_FIRMWARE_V2)
- firmware_name = XHCI_RCAR_FIRMWARE_NAME_V2;
- else
- firmware_name = priv->firmware_name;
-
/* request R-Car USB3.0 firmware */
- retval = request_firmware(&fw, firmware_name, dev);
+ retval = request_firmware(&fw, priv->firmware_name, dev);
if (retval)
return retval;

--
2.35.1


2023-03-07 16:32:20

by Wolfram Sang

[permalink] [raw]
Subject: [PATCH 09/11] usb: host: xhci-rcar: remove leftover quirk handling

Loading V3 firmware does not need a quirk anymore, remove the leftover
code.

Fixes: ed8603e11124 ("usb: host: xhci-rcar: Simplify getting the firmware name for R-Car Gen3")
Reviewed-by: Geert Uytterhoeven <[email protected]>
Signed-off-by: Wolfram Sang <[email protected]>
---
Please apply individually per subsystem. This is in preparation for
R-Car H3 ES1 removal. There are no dependencies.


drivers/usb/host/xhci-rcar.c | 3 ---
1 file changed, 3 deletions(-)

diff --git a/drivers/usb/host/xhci-rcar.c b/drivers/usb/host/xhci-rcar.c
index 7f18509a1d39..567b096a24e9 100644
--- a/drivers/usb/host/xhci-rcar.c
+++ b/drivers/usb/host/xhci-rcar.c
@@ -80,7 +80,6 @@ MODULE_FIRMWARE(XHCI_RCAR_FIRMWARE_NAME_V3);

/* For soc_device_attribute */
#define RCAR_XHCI_FIRMWARE_V2 BIT(0) /* FIRMWARE V2 */
-#define RCAR_XHCI_FIRMWARE_V3 BIT(1) /* FIRMWARE V3 */

static const struct soc_device_attribute rcar_quirks_match[] = {
{
@@ -152,8 +151,6 @@ static int xhci_rcar_download_firmware(struct usb_hcd *hcd)

if (quirks & RCAR_XHCI_FIRMWARE_V2)
firmware_name = XHCI_RCAR_FIRMWARE_NAME_V2;
- else if (quirks & RCAR_XHCI_FIRMWARE_V3)
- firmware_name = XHCI_RCAR_FIRMWARE_NAME_V3;
else
firmware_name = priv->firmware_name;

--
2.35.1


2023-03-07 16:32:30

by Wolfram Sang

[permalink] [raw]
Subject: [PATCH 11/11] usb: gadget: udc: renesas_usb3: remove R-Car H3 ES1.* handling

R-Car H3 ES1.* was only available to an internal development group and
needed a lot of quirks and workarounds. These become a maintenance
burden now, so our development group decided to remove upstream support
and disable booting for this SoC. Public users only have ES2 onwards.

Reviewed-by: Laurent Pinchart <[email protected]>
Reviewed-by: Geert Uytterhoeven <[email protected]>
Signed-off-by: Wolfram Sang <[email protected]>
---
Please apply individually per subsystem. There are no dependencies and the SoC
doesn't boot anymore since v6.3-rc1.

drivers/usb/gadget/udc/renesas_usb3.c | 23 +----------------------
1 file changed, 1 insertion(+), 22 deletions(-)

diff --git a/drivers/usb/gadget/udc/renesas_usb3.c b/drivers/usb/gadget/udc/renesas_usb3.c
index bee6bceafc4f..f2ac6447b748 100644
--- a/drivers/usb/gadget/udc/renesas_usb3.c
+++ b/drivers/usb/gadget/udc/renesas_usb3.c
@@ -22,7 +22,6 @@
#include <linux/sizes.h>
#include <linux/slab.h>
#include <linux/string.h>
-#include <linux/sys_soc.h>
#include <linux/uaccess.h>
#include <linux/usb/ch9.h>
#include <linux/usb/gadget.h>
@@ -2781,13 +2780,6 @@ static void renesas_usb3_init_ram(struct renesas_usb3 *usb3, struct device *dev,
}
}

-static const struct renesas_usb3_priv renesas_usb3_priv_r8a7795_es1 = {
- .ramsize_per_ramif = SZ_16K,
- .num_ramif = 2,
- .ramsize_per_pipe = SZ_4K,
- .workaround_for_vbus = true,
-};
-
static const struct renesas_usb3_priv renesas_usb3_priv_gen3 = {
.ramsize_per_ramif = SZ_16K,
.num_ramif = 4,
@@ -2829,14 +2821,6 @@ static const struct of_device_id usb3_of_match[] = {
};
MODULE_DEVICE_TABLE(of, usb3_of_match);

-static const struct soc_device_attribute renesas_usb3_quirks_match[] = {
- {
- .soc_id = "r8a7795", .revision = "ES1.*",
- .data = &renesas_usb3_priv_r8a7795_es1,
- },
- { /* sentinel */ }
-};
-
static const unsigned int renesas_usb3_cable[] = {
EXTCON_USB,
EXTCON_USB_HOST,
@@ -2854,13 +2838,8 @@ static int renesas_usb3_probe(struct platform_device *pdev)
struct renesas_usb3 *usb3;
int irq, ret;
const struct renesas_usb3_priv *priv;
- const struct soc_device_attribute *attr;

- attr = soc_device_match(renesas_usb3_quirks_match);
- if (attr)
- priv = attr->data;
- else
- priv = of_device_get_match_data(&pdev->dev);
+ priv = of_device_get_match_data(&pdev->dev);

irq = platform_get_irq(pdev, 0);
if (irq < 0)
--
2.35.1


2023-03-07 17:27:11

by Simon Horman

[permalink] [raw]
Subject: Re: [PATCH 07/11] ravb: remove R-Car H3 ES1.* handling

On Tue, Mar 07, 2023 at 05:30:35PM +0100, Wolfram Sang wrote:
> R-Car H3 ES1.* was only available to an internal development group and
> needed a lot of quirks and workarounds. These become a maintenance
> burden now, so our development group decided to remove upstream support
> and disable booting for this SoC. Public users only have ES2 onwards.
>
> Reviewed-by: Laurent Pinchart <[email protected]>
> Reviewed-by: Geert Uytterhoeven <[email protected]>
> Signed-off-by: Wolfram Sang <[email protected]>

This brought back some memories.

Signed-off-by: Simon Horman <[email protected]>

2023-03-08 00:37:35

by Kieran Bingham

[permalink] [raw]
Subject: Re: [PATCH 05/11] media: renesas: fdp1: remove R-Car H3 ES1.* handling

Quoting Wolfram Sang (2023-03-07 16:30:33)
> R-Car H3 ES1.* was only available to an internal development group and
> needed a lot of quirks and workarounds. These become a maintenance
> burden now, so our development group decided to remove upstream support
> and disable booting for this SoC. Public users only have ES2 onwards.
>
> Reviewed-by: Geert Uytterhoeven <[email protected]>
> Signed-off-by: Wolfram Sang <[email protected]>

Reviewed-by: Kieran Bingham <[email protected]>

> ---
> Please apply individually per subsystem. There are no dependencies and the SoC
> doesn't boot anymore since v6.3-rc1.
>
> drivers/media/platform/renesas/rcar_fdp1.c | 4 ----
> 1 file changed, 4 deletions(-)
>
> diff --git a/drivers/media/platform/renesas/rcar_fdp1.c b/drivers/media/platform/renesas/rcar_fdp1.c
> index 37ecf489d112..f4a1fc8ce595 100644
> --- a/drivers/media/platform/renesas/rcar_fdp1.c
> +++ b/drivers/media/platform/renesas/rcar_fdp1.c
> @@ -254,7 +254,6 @@ MODULE_PARM_DESC(debug, "activate debug info");
>
> /* Internal Data (HW Version) */
> #define FD1_IP_INTDATA 0x0800
> -#define FD1_IP_H3_ES1 0x02010101
> #define FD1_IP_M3W 0x02010202
> #define FD1_IP_H3 0x02010203
> #define FD1_IP_M3N 0x02010204
> @@ -2359,9 +2358,6 @@ static int fdp1_probe(struct platform_device *pdev)
>
> hw_version = fdp1_read(fdp1, FD1_IP_INTDATA);
> switch (hw_version) {
> - case FD1_IP_H3_ES1:
> - dprintk(fdp1, "FDP1 Version R-Car H3 ES1\n");
> - break;
> case FD1_IP_M3W:
> dprintk(fdp1, "FDP1 Version R-Car M3-W\n");
> break;
> --
> 2.35.1
>

2023-03-08 09:40:08

by Sergei Shtylyov

[permalink] [raw]
Subject: Re: [PATCH 07/11] ravb: remove R-Car H3 ES1.* handling

Hello!

(Sending via Gmail account, as the OMP SMTP server rejects...)

On 3/7/23 7:30 PM, Wolfram Sang wrote:

> R-Car H3 ES1.* was only available to an internal development group and
> needed a lot of quirks and workarounds. These become a maintenance
> burden now, so our development group decided to remove upstream support
> and disable booting for this SoC. Public users only have ES2 onwards.
>
> Reviewed-by: Laurent Pinchart <[email protected]>
> Reviewed-by: Geert Uytterhoeven <[email protected]>
> Signed-off-by: Wolfram Sang <[email protected]>

Reviewed-by: Sergey Shtylyov <[email protected]>

[...]

MBR, Sergey

2023-03-08 10:12:03

by Kieran Bingham

[permalink] [raw]
Subject: Re: [PATCH 02/11] drm: rcar-du: remove R-Car H3 ES1.* workarounds

Hi Wolfram,

Quoting Wolfram Sang (2023-03-07 16:30:30)
> R-Car H3 ES1.* was only available to an internal development group and
> needed a lot of quirks and workarounds. These become a maintenance
> burden now, so our development group decided to remove upstream support
> and disable booting for this SoC. Public users only have ES2 onwards.
>
> Signed-off-by: Wolfram Sang <[email protected]>

Wow, this lets us get rid of workarounds all throughout.

This looks pretty decisive, and complete to me.

Reviewed-by: Kieran Bingham <[email protected]>

> ---
> Please apply individually per subsystem. There are no dependencies and the SoC
> doesn't boot anymore since v6.3-rc1.
>
> drivers/gpu/drm/rcar-du/rcar_du_crtc.c | 37 ++------------------
> drivers/gpu/drm/rcar-du/rcar_du_drv.c | 48 --------------------------
> drivers/gpu/drm/rcar-du/rcar_du_drv.h | 2 --
> drivers/gpu/drm/rcar-du/rcar_du_regs.h | 3 +-
> 4 files changed, 4 insertions(+), 86 deletions(-)
>
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
> index 008e172ed43b..84411c452e30 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_crtc.c
> @@ -223,20 +223,6 @@ static void rcar_du_crtc_set_display_timing(struct rcar_du_crtc *rcrtc)
> * DU channels that have a display PLL can't use the internal
> * system clock, and have no internal clock divider.
> */
> -
> - /*
> - * The H3 ES1.x exhibits dot clock duty cycle stability issues.
> - * We can work around them by configuring the DPLL to twice the
> - * desired frequency, coupled with a /2 post-divider. Restrict
> - * the workaround to H3 ES1.x as ES2.0 and all other SoCs have
> - * no post-divider when a display PLL is present (as shown by
> - * the workaround breaking HDMI output on M3-W during testing).
> - */
> - if (rcdu->info->quirks & RCAR_DU_QUIRK_H3_ES1_PCLK_STABILITY) {
> - target *= 2;
> - div = 1;
> - }
> -
> extclk = clk_get_rate(rcrtc->extclock);
> rcar_du_dpll_divider(rcrtc, &dpll, extclk, target);
>
> @@ -245,30 +231,13 @@ static void rcar_du_crtc_set_display_timing(struct rcar_du_crtc *rcrtc)
> | DPLLCR_N(dpll.n) | DPLLCR_M(dpll.m)
> | DPLLCR_STBY;
>
> - if (rcrtc->index == 1) {
> + if (rcrtc->index == 1)
> dpllcr |= DPLLCR_PLCS1
> | DPLLCR_INCS_DOTCLKIN1;
> - } else {
> - dpllcr |= DPLLCR_PLCS0_PLL
> + else
> + dpllcr |= DPLLCR_PLCS0
> | DPLLCR_INCS_DOTCLKIN0;
>
> - /*
> - * On ES2.x we have a single mux controlled via bit 21,
> - * which selects between DCLKIN source (bit 21 = 0) and
> - * a PLL source (bit 21 = 1), where the PLL is always
> - * PLL1.
> - *
> - * On ES1.x we have an additional mux, controlled
> - * via bit 20, for choosing between PLL0 (bit 20 = 0)
> - * and PLL1 (bit 20 = 1). We always want to use PLL1,
> - * so on ES1.x, in addition to setting bit 21, we need
> - * to set the bit 20.
> - */
> -
> - if (rcdu->info->quirks & RCAR_DU_QUIRK_H3_ES1_PLL)
> - dpllcr |= DPLLCR_PLCS0_H3ES1X_PLL1;
> - }
> -
> rcar_du_group_write(rcrtc->group, DPLLCR, dpllcr);
>
> escr = ESCR_DCLKSEL_DCLKIN | div;
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> index b9a94c5260e9..1ffde19cb87f 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c
> @@ -16,7 +16,6 @@
> #include <linux/platform_device.h>
> #include <linux/pm.h>
> #include <linux/slab.h>
> -#include <linux/sys_soc.h>
> #include <linux/wait.h>
>
> #include <drm/drm_atomic_helper.h>
> @@ -387,43 +386,6 @@ static const struct rcar_du_device_info rcar_du_r8a7795_info = {
> .dpll_mask = BIT(2) | BIT(1),
> };
>
> -static const struct rcar_du_device_info rcar_du_r8a7795_es1_info = {
> - .gen = 3,
> - .features = RCAR_DU_FEATURE_CRTC_IRQ
> - | RCAR_DU_FEATURE_CRTC_CLOCK
> - | RCAR_DU_FEATURE_VSP1_SOURCE
> - | RCAR_DU_FEATURE_INTERLACED
> - | RCAR_DU_FEATURE_TVM_SYNC,
> - .quirks = RCAR_DU_QUIRK_H3_ES1_PCLK_STABILITY
> - | RCAR_DU_QUIRK_H3_ES1_PLL,
> - .channels_mask = BIT(3) | BIT(2) | BIT(1) | BIT(0),
> - .routes = {
> - /*
> - * R8A7795 has one RGB output, two HDMI outputs and one
> - * LVDS output.
> - */
> - [RCAR_DU_OUTPUT_DPAD0] = {
> - .possible_crtcs = BIT(3),
> - .port = 0,
> - },
> - [RCAR_DU_OUTPUT_HDMI0] = {
> - .possible_crtcs = BIT(1),
> - .port = 1,
> - },
> - [RCAR_DU_OUTPUT_HDMI1] = {
> - .possible_crtcs = BIT(2),
> - .port = 2,
> - },
> - [RCAR_DU_OUTPUT_LVDS0] = {
> - .possible_crtcs = BIT(0),
> - .port = 3,
> - },
> - },
> - .num_lvds = 1,
> - .num_rpf = 5,
> - .dpll_mask = BIT(2) | BIT(1),
> -};
> -
> static const struct rcar_du_device_info rcar_du_r8a7796_info = {
> .gen = 3,
> .features = RCAR_DU_FEATURE_CRTC_IRQ
> @@ -614,11 +576,6 @@ static const struct of_device_id rcar_du_of_table[] = {
>
> MODULE_DEVICE_TABLE(of, rcar_du_of_table);
>
> -static const struct soc_device_attribute rcar_du_soc_table[] = {
> - { .soc_id = "r8a7795", .revision = "ES1.*", .data = &rcar_du_r8a7795_es1_info },
> - { /* sentinel */ }
> -};
> -
> const char *rcar_du_output_name(enum rcar_du_output output)
> {
> static const char * const names[] = {
> @@ -707,7 +664,6 @@ static void rcar_du_shutdown(struct platform_device *pdev)
>
> static int rcar_du_probe(struct platform_device *pdev)
> {
> - const struct soc_device_attribute *soc_attr;
> struct rcar_du_device *rcdu;
> unsigned int mask;
> int ret;
> @@ -725,10 +681,6 @@ static int rcar_du_probe(struct platform_device *pdev)
>
> rcdu->info = of_device_get_match_data(rcdu->dev);
>
> - soc_attr = soc_device_match(rcar_du_soc_table);
> - if (soc_attr)
> - rcdu->info = soc_attr->data;
> -
> platform_set_drvdata(pdev, rcdu);
>
> /* I/O resources */
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.h b/drivers/gpu/drm/rcar-du/rcar_du_drv.h
> index acc3673fefe1..5cfa2bb7ad93 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.h
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.h
> @@ -34,8 +34,6 @@ struct rcar_du_device;
> #define RCAR_DU_FEATURE_NO_BLENDING BIT(5) /* PnMR.SPIM does not have ALP nor EOR bits */
>
> #define RCAR_DU_QUIRK_ALIGN_128B BIT(0) /* Align pitches to 128 bytes */
> -#define RCAR_DU_QUIRK_H3_ES1_PCLK_STABILITY BIT(1) /* H3 ES1 has pclk stability issue */
> -#define RCAR_DU_QUIRK_H3_ES1_PLL BIT(2) /* H3 ES1 PLL setup differs from non-ES1 */
>
> enum rcar_du_output {
> RCAR_DU_OUTPUT_DPAD0,
> diff --git a/drivers/gpu/drm/rcar-du/rcar_du_regs.h b/drivers/gpu/drm/rcar-du/rcar_du_regs.h
> index 789ae9285108..288eff12b2b1 100644
> --- a/drivers/gpu/drm/rcar-du/rcar_du_regs.h
> +++ b/drivers/gpu/drm/rcar-du/rcar_du_regs.h
> @@ -283,8 +283,7 @@
> #define DPLLCR 0x20044
> #define DPLLCR_CODE (0x95 << 24)
> #define DPLLCR_PLCS1 (1 << 23)
> -#define DPLLCR_PLCS0_PLL (1 << 21)
> -#define DPLLCR_PLCS0_H3ES1X_PLL1 (1 << 20)
> +#define DPLLCR_PLCS0 (1 << 21)
> #define DPLLCR_CLKE (1 << 18)
> #define DPLLCR_FDPLL(n) ((n) << 12)
> #define DPLLCR_N(n) ((n) << 5)
> --
> 2.35.1
>

2023-03-08 18:04:59

by Daniel Lezcano

[permalink] [raw]
Subject: Re: [PATCH 06/11] thermal/drivers/rcar_gen3_thermal: remove R-Car H3 ES1.* handling

On 07/03/2023 17:30, Wolfram Sang wrote:
> R-Car H3 ES1.* was only available to an internal development group and
> needed a lot of quirks and workarounds. These become a maintenance
> burden now, so our development group decided to remove upstream support
> and disable booting for this SoC. Public users only have ES2 onwards.
>
> Reviewed-by: Laurent Pinchart <[email protected]>
> Reviewed-by: Niklas Söderlund <[email protected]>
> Reviewed-by: Geert Uytterhoeven <[email protected]>
> Signed-off-by: Wolfram Sang <[email protected]>
> ---
> Please apply individually per subsystem. There are no dependencies and the SoC
> doesn't boot anymore since v6.3-rc1.

Applied, thanks

--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog


2023-03-09 07:30:36

by patchwork-bot+netdevbpf

[permalink] [raw]
Subject: Re: [PATCH 00/11] tree-wide: remove support for Renesas R-Car H3 ES1

Hello:

This patch was applied to netdev/net-next.git (main)
by Jakub Kicinski <[email protected]>:

On Tue, 7 Mar 2023 17:30:28 +0100 you wrote:
> Because H3 ES1 becomes an increasing maintenance burden and was only available
> to a development group, we decided to remove upstream support for it. Here are
> the patches to remove driver changes. Review tags have been gathered before
> during an internal discussion. Only change since the internal version is a
> plain rebase to v6.3-rc1. A branch with all removals is here:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git renesas/h3es1-removal
>
> [...]

Here is the summary with links:
- [07/11] ravb: remove R-Car H3 ES1.* handling
https://git.kernel.org/netdev/net-next/c/6bf0ad7f2917

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



2023-03-09 15:05:50

by Ulf Hansson

[permalink] [raw]
Subject: Re: [PATCH 08/11] mmc: renesas_sdhi: remove R-Car H3 ES1.* handling

On Tue, 7 Mar 2023 at 17:31, Wolfram Sang
<[email protected]> wrote:
>
> R-Car H3 ES1.* was only available to an internal development group and
> needed a lot of quirks and workarounds. These become a maintenance
> burden now, so our development group decided to remove upstream support
> and disable booting for this SoC. Public users only have ES2 onwards.
>
> Reviewed-by: Laurent Pinchart <[email protected]>
> Reviewed-by: Geert Uytterhoeven <[email protected]>
> Signed-off-by: Wolfram Sang <[email protected]>

Applied for next, thanks!

Kind regards
Uffe


> ---
> Please apply individually per subsystem. There are no dependencies and the SoC
> doesn't boot anymore since v6.3-rc1.
>
> drivers/mmc/host/renesas_sdhi_internal_dmac.c | 10 ++++------
> 1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/mmc/host/renesas_sdhi_internal_dmac.c b/drivers/mmc/host/renesas_sdhi_internal_dmac.c
> index f38003f6b1ca..9ab813903b2c 100644
> --- a/drivers/mmc/host/renesas_sdhi_internal_dmac.c
> +++ b/drivers/mmc/host/renesas_sdhi_internal_dmac.c
> @@ -72,11 +72,10 @@ enum renesas_sdhi_dma_cookie {
>
> static unsigned long global_flags;
> /*
> - * Workaround for avoiding to use RX DMAC by multiple channels.
> - * On R-Car H3 ES1.* and M3-W ES1.0, when multiple SDHI channels use
> - * RX DMAC simultaneously, sometimes hundreds of bytes data are not
> - * stored into the system memory even if the DMAC interrupt happened.
> - * So, this driver then uses one RX DMAC channel only.
> + * Workaround for avoiding to use RX DMAC by multiple channels. On R-Car M3-W
> + * ES1.0, when multiple SDHI channels use RX DMAC simultaneously, sometimes
> + * hundreds of data bytes are not stored into the system memory even if the
> + * DMAC interrupt happened. So, this driver then uses one RX DMAC channel only.
> */
> #define SDHI_INTERNAL_DMAC_RX_IN_USE 0
>
> @@ -222,7 +221,6 @@ static const struct renesas_sdhi_quirks sdhi_quirks_r9a09g011 = {
> */
> static const struct soc_device_attribute sdhi_quirks_match[] = {
> { .soc_id = "r8a774a1", .revision = "ES1.[012]", .data = &sdhi_quirks_4tap_nohs400 },
> - { .soc_id = "r8a7795", .revision = "ES1.*", .data = &sdhi_quirks_4tap_nohs400_one_rx },
> { .soc_id = "r8a7795", .revision = "ES2.0", .data = &sdhi_quirks_4tap },
> { .soc_id = "r8a7796", .revision = "ES1.0", .data = &sdhi_quirks_4tap_nohs400_one_rx },
> { .soc_id = "r8a7796", .revision = "ES1.[12]", .data = &sdhi_quirks_4tap_nohs400 },
> --
> 2.35.1
>

2023-03-22 13:31:46

by Joerg Roedel

[permalink] [raw]
Subject: Re: [PATCH 01/11] iommu/ipmmu-vmsa: remove R-Car H3 ES1.* handling

On Tue, Mar 07, 2023 at 05:30:29PM +0100, Wolfram Sang wrote:
> drivers/iommu/ipmmu-vmsa.c | 1 -
> 1 file changed, 1 deletion(-)

Applied, thanks.

Btw, b4 reported DKIM issues with your submission, can you please check?

2023-04-24 17:40:44

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH 05/11] media: renesas: fdp1: remove R-Car H3 ES1.* handling

Hi Wolfram,

On Tue, Mar 7, 2023 at 5:31 PM Wolfram Sang
<[email protected]> wrote:
> R-Car H3 ES1.* was only available to an internal development group and
> needed a lot of quirks and workarounds. These become a maintenance
> burden now, so our development group decided to remove upstream support
> and disable booting for this SoC. Public users only have ES2 onwards.
>
> Reviewed-by: Geert Uytterhoeven <[email protected]>
> Signed-off-by: Wolfram Sang <[email protected]>

Thanks for your patch, which is now commit af4273b43f2bd9ee ("media:
renesas: fdp1: remove R-Car H3 ES1.* handling") in media/master
(next-20230417 and later).

> --- a/drivers/media/platform/renesas/rcar_fdp1.c
> +++ b/drivers/media/platform/renesas/rcar_fdp1.c
> @@ -254,7 +254,6 @@ MODULE_PARM_DESC(debug, "activate debug info");
>
> /* Internal Data (HW Version) */
> #define FD1_IP_INTDATA 0x0800
> -#define FD1_IP_H3_ES1 0x02010101
> #define FD1_IP_M3W 0x02010202
> #define FD1_IP_H3 0x02010203
> #define FD1_IP_M3N 0x02010204
> @@ -2359,9 +2358,6 @@ static int fdp1_probe(struct platform_device *pdev)
>
> hw_version = fdp1_read(fdp1, FD1_IP_INTDATA);
> switch (hw_version) {
> - case FD1_IP_H3_ES1:
> - dprintk(fdp1, "FDP1 Version R-Car H3 ES1\n");
> - break;
> case FD1_IP_M3W:
> dprintk(fdp1, "FDP1 Version R-Car M3-W\n");
> break;

Apparently 0x02010101 is also used on (at least) R-Car M2-W ES1.0,
causing the following annoying (but further harmless?) messages
during boot:

rcar_fdp1 fe940000.fdp1: FDP1 Unidentifiable (0x02010101)
rcar_fdp1 fe944000.fdp1: FDP1 Unidentifiable (0x02010101)

Note that the R-Car Gen2 documentation states the register's contents
are all zeroes. But that value would trigger the error message, too.

Sorry for not noticing before. Apparently I never booted a kernel
with this patch on koelsch...

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

2023-04-24 19:23:30

by Wolfram Sang

[permalink] [raw]
Subject: Re: [PATCH 05/11] media: renesas: fdp1: remove R-Car H3 ES1.* handling

Hi Geert,

thanks for reporting!

> > -#define FD1_IP_H3_ES1 0x02010101

...

> Apparently 0x02010101 is also used on (at least) R-Car M2-W ES1.0,
> causing the following annoying (but further harmless?) messages
> during boot:
>
> rcar_fdp1 fe940000.fdp1: FDP1 Unidentifiable (0x02010101)
> rcar_fdp1 fe944000.fdp1: FDP1 Unidentifiable (0x02010101)

Hmm, that means before my removal patch, Gen2 has been incorrectly
defined as H3 ES1?

> Note that the R-Car Gen2 documentation states the register's contents
> are all zeroes. But that value would trigger the error message, too.

Bad, but well...

> Sorry for not noticing before. Apparently I never booted a kernel
> with this patch on koelsch...

We could re-add this version and just let it print "FDP1 Initial
Version" or something? I could test this on my Lager board.

All the best,

Wolfram


Attachments:
(No filename) (914.00 B)
signature.asc (849.00 B)
Download all attachments

2023-04-24 19:48:27

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH 05/11] media: renesas: fdp1: remove R-Car H3 ES1.* handling

Hi Wolfram,

On Mon, Apr 24, 2023 at 9:17 PM Wolfram Sang
<[email protected]> wrote:
> > > -#define FD1_IP_H3_ES1 0x02010101
>
> ...
>
> > Apparently 0x02010101 is also used on (at least) R-Car M2-W ES1.0,
> > causing the following annoying (but further harmless?) messages
> > during boot:
> >
> > rcar_fdp1 fe940000.fdp1: FDP1 Unidentifiable (0x02010101)
> > rcar_fdp1 fe944000.fdp1: FDP1 Unidentifiable (0x02010101)
>
> Hmm, that means before my removal patch, Gen2 has been incorrectly
> defined as H3 ES1?

Indeed, but the driver doesn't seem to do anything with the detected
version, except for printing a debug or error message.

> > Note that the R-Car Gen2 documentation states the register's contents
> > are all zeroes. But that value would trigger the error message, too.
>
> Bad, but well...
>
> > Sorry for not noticing before. Apparently I never booted a kernel
> > with this patch on koelsch...
>
> We could re-add this version and just let it print "FDP1 Initial
> Version" or something? I could test this on my Lager board.

I plan to test it on a few other boards, too...
Just wanted to let you know ASAP...

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds

2023-04-24 23:52:47

by Laurent Pinchart

[permalink] [raw]
Subject: Re: [PATCH 05/11] media: renesas: fdp1: remove R-Car H3 ES1.* handling

On Mon, Apr 24, 2023 at 09:37:00PM +0200, Geert Uytterhoeven wrote:
> On Mon, Apr 24, 2023 at 9:17 PM Wolfram Sang wrote:
> > > > -#define FD1_IP_H3_ES1 0x02010101
> >
> > ...
> >
> > > Apparently 0x02010101 is also used on (at least) R-Car M2-W ES1.0,
> > > causing the following annoying (but further harmless?) messages
> > > during boot:
> > >
> > > rcar_fdp1 fe940000.fdp1: FDP1 Unidentifiable (0x02010101)
> > > rcar_fdp1 fe944000.fdp1: FDP1 Unidentifiable (0x02010101)
> >
> > Hmm, that means before my removal patch, Gen2 has been incorrectly
> > defined as H3 ES1?
>
> Indeed, but the driver doesn't seem to do anything with the detected
> version, except for printing a debug or error message.

It may not now, but I'd rather get this fixes nonetheless to avoid
forgetting about the issue and wondering later once we take the version
into account why M2-W doesn't work.

> > > Note that the R-Car Gen2 documentation states the register's contents
> > > are all zeroes. But that value would trigger the error message, too.
> >
> > Bad, but well...
> >
> > > Sorry for not noticing before. Apparently I never booted a kernel
> > > with this patch on koelsch...
> >
> > We could re-add this version and just let it print "FDP1 Initial
> > Version" or something? I could test this on my Lager board.
>
> I plan to test it on a few other boards, too...
> Just wanted to let you know ASAP...

--
Regards,

Laurent Pinchart