From 61bd00ad80c46b269f8c6782d1ca43462dae8f3d Mon Sep 17 00:00:00 2001 From: Mikhail Novosyolov Date: Sat, 26 Jun 2021 13:21:23 +0300 Subject: [PATCH] Update support of Baikal-M from kernel-image-std-def-5.10.46-alt1 --- ...plane_atomic_check-actually-re-enabl.patch | 25 ++++++++++ ...l_vdu-figure-out-LVDS-endpoint-count.patch | 48 +++++++++++++++++++ ...rost-disable-devfreq-on-BE-M1000-SoC.patch | 35 ++++++++++++++ kernel.spec | 4 +- 4 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 0629-baikal_vdu_drm-_plane_atomic_check-actually-re-enabl.patch create mode 100644 0630-baikal_vdu-figure-out-LVDS-endpoint-count.patch create mode 100644 0631-panfrost-disable-devfreq-on-BE-M1000-SoC.patch diff --git a/0629-baikal_vdu_drm-_plane_atomic_check-actually-re-enabl.patch b/0629-baikal_vdu_drm-_plane_atomic_check-actually-re-enabl.patch new file mode 100644 index 0000000..7cb7b97 --- /dev/null +++ b/0629-baikal_vdu_drm-_plane_atomic_check-actually-re-enabl.patch @@ -0,0 +1,25 @@ +From ed685cdc61fe5da518b096a848bf9846df44fa9a Mon Sep 17 00:00:00 2001 +From: Alexey Sheplyakov +Date: Thu, 22 Apr 2021 15:03:04 +0400 +Subject: [PATCH] baikal_vdu_drm: _plane_atomic_check: actually re-enable + clocking + +--- + drivers/gpu/drm/baikal/baikal_vdu_plane.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/gpu/drm/baikal/baikal_vdu_plane.c b/drivers/gpu/drm/baikal/baikal_vdu_plane.c +index 5a047835e154..3cf04f5b97cf 100644 +--- a/drivers/gpu/drm/baikal/baikal_vdu_plane.c ++++ b/drivers/gpu/drm/baikal/baikal_vdu_plane.c +@@ -76,6 +76,7 @@ static int baikal_vdu_primary_plane_atomic_check(struct drm_plane *plane, + /* release clock domain reset; enable clocking */ + cntl = readl(priv->regs + PCTR); + cntl |= PCTR_PCR + PCTR_PCI; ++ writel(cntl, priv->regs + PCTR); + + return ret; + } +-- +2.31.1 + diff --git a/0630-baikal_vdu-figure-out-LVDS-endpoint-count.patch b/0630-baikal_vdu-figure-out-LVDS-endpoint-count.patch new file mode 100644 index 0000000..5d530c3 --- /dev/null +++ b/0630-baikal_vdu-figure-out-LVDS-endpoint-count.patch @@ -0,0 +1,48 @@ +From 92c85bac95a139c996ef1c9a8047c717e4455d3f Mon Sep 17 00:00:00 2001 +From: Alexey Sheplyakov +Date: Wed, 26 May 2021 15:23:52 +0400 +Subject: [PATCH] baikal_vdu: figure out (LVDS) endpoint count + +So the driver works correctly even when 'num-lanes' property is missing +in the device tree. +--- + drivers/gpu/drm/baikal/baikal_vdu_drv.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/baikal/baikal_vdu_drv.c b/drivers/gpu/drm/baikal/baikal_vdu_drv.c +index 8eb9dda7fa01..f7fb3b81a9f1 100644 +--- a/drivers/gpu/drm/baikal/baikal_vdu_drv.c ++++ b/drivers/gpu/drm/baikal/baikal_vdu_drv.c +@@ -71,7 +71,7 @@ static int vdu_modeset_init(struct drm_device *dev) + struct drm_mode_config *mode_config; + struct baikal_vdu_private *priv = dev->dev_private; + struct arm_smccc_res res; +- int ret = 0; ++ int ret = 0, ep_count = 0; + + if (priv == NULL) + return -EINVAL; +@@ -103,6 +103,12 @@ static int vdu_modeset_init(struct drm_device *dev) + dev_info(dev->dev, "Bridge probe deferred\n"); + goto out_config; + } ++ ep_count = of_graph_get_endpoint_count(dev->dev->of_node); ++ if (ep_count <= 0) { ++ dev_err(dev->dev, "no endpoints connected to panel/bridge\n"); ++ goto out_config; ++ } ++ priv->ep_count = ep_count; + + if (priv->bridge) { + struct drm_encoder *encoder = &priv->encoder; +@@ -121,6 +127,7 @@ static int vdu_modeset_init(struct drm_device *dev) + goto out_config; + } + } else if (priv->panel) { ++ dev_dbg(dev->dev, "panel has %d endpoints\n", priv->ep_count); + ret = baikal_vdu_lvds_connector_create(dev); + if (ret) { + dev_err(dev->dev, "Failed to create DRM connector\n"); +-- +2.31.1 + diff --git a/0631-panfrost-disable-devfreq-on-BE-M1000-SoC.patch b/0631-panfrost-disable-devfreq-on-BE-M1000-SoC.patch new file mode 100644 index 0000000..3542961 --- /dev/null +++ b/0631-panfrost-disable-devfreq-on-BE-M1000-SoC.patch @@ -0,0 +1,35 @@ +From 5f6a25cbd373aa72738189356a0f606daa7bba59 Mon Sep 17 00:00:00 2001 +From: Alexey Sheplyakov +Date: Mon, 21 Jun 2021 15:42:47 +0400 +Subject: [PATCH] panfrost: disable devfreq on BE-M1000 SoC + +Enabling GPU frequency scaling on BE-M1000 cases GPU MMU lockup: + + [ 38.108633] panfrost 2a200000.gpu: AS_ACTIVE bit stuck + +Since GPU and CPU share the memory this locks up the whole system. +Therefore disable devfreq on BE-M1000. +--- + drivers/gpu/drm/panfrost/panfrost_devfreq.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/drivers/gpu/drm/panfrost/panfrost_devfreq.c b/drivers/gpu/drm/panfrost/panfrost_devfreq.c +index 8ab025d0035f..c2f46665cf33 100644 +--- a/drivers/gpu/drm/panfrost/panfrost_devfreq.c ++++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.c +@@ -97,6 +97,12 @@ int panfrost_devfreq_init(struct panfrost_device *pfdev) + struct thermal_cooling_device *cooling; + struct panfrost_devfreq *pfdevfreq = &pfdev->pfdevfreq; + ++ if (of_device_is_compatible(of_root, "baikal,baikal-m")) { ++ dev_info(pfdev->dev, "disabling GPU devfreq on BE-M1000\n"); ++ ret = 0; ++ goto err_fini; ++ } ++ + opp_table = dev_pm_opp_set_regulators(dev, pfdev->comp->supply_names, + pfdev->comp->num_supplies); + if (IS_ERR(opp_table)) { +-- +2.31.1 + diff --git a/kernel.spec b/kernel.spec index 25f8beb..69e94ba 100644 --- a/kernel.spec +++ b/kernel.spec @@ -374,7 +374,9 @@ Patch0625: 0625-baikal_vdu_drm-LVDS-panel-support.patch Patch0626: 0626-Serial-82550_dw-Fix-clock-rate-setting-in-dw8250_set.patch Patch0627: 0627-drm-panfrost-Fix-memory-attributes-for-Mali-T620.patch Patch0628: 0628-drm-panfrost-Trim-affinity-for-Mali-T620.patch - +Patch0629: 0629-baikal_vdu_drm-_plane_atomic_check-actually-re-enabl.patch +Patch0630: 0630-baikal_vdu-figure-out-LVDS-endpoint-count.patch +Patch0631: 0631-panfrost-disable-devfreq-on-BE-M1000-SoC.patch # Disable AutoReq AutoReq: 0