From: Sasha Levin Date: Sat, 21 Oct 2023 20:45:36 +0000 (-0400) Subject: Fixes for 6.1 X-Git-Tag: v4.14.328~45 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5fed2ffb5adcfd669662e32e5ce2d33694e099e1;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 6.1 Signed-off-by: Sasha Levin --- diff --git a/queue-6.1/asoc-pxa-fix-a-memory-leak-in-probe.patch b/queue-6.1/asoc-pxa-fix-a-memory-leak-in-probe.patch new file mode 100644 index 00000000000..1a567b4ff8a --- /dev/null +++ b/queue-6.1/asoc-pxa-fix-a-memory-leak-in-probe.patch @@ -0,0 +1,36 @@ +From 0ae15ff9014a950c32053b56e638266bcb07c145 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 5 Oct 2023 17:00:24 +0300 +Subject: ASoC: pxa: fix a memory leak in probe() + +From: Dan Carpenter + +[ Upstream commit aa6464edbd51af4a2f8db43df866a7642b244b5f ] + +Free the "priv" pointer before returning the error code. + +Fixes: 90eb6b59d311 ("ASoC: pxa-ssp: add support for an external clock in devicetree") +Signed-off-by: Dan Carpenter +Link: https://lore.kernel.org/r/84ac2313-1420-471a-b2cb-3269a2e12a7c@moroto.mountain +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/pxa/pxa-ssp.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sound/soc/pxa/pxa-ssp.c b/sound/soc/pxa/pxa-ssp.c +index 430dd446321e5..452f0caf415b9 100644 +--- a/sound/soc/pxa/pxa-ssp.c ++++ b/sound/soc/pxa/pxa-ssp.c +@@ -779,7 +779,7 @@ static int pxa_ssp_probe(struct snd_soc_dai *dai) + if (IS_ERR(priv->extclk)) { + ret = PTR_ERR(priv->extclk); + if (ret == -EPROBE_DEFER) +- return ret; ++ goto err_priv; + + priv->extclk = NULL; + } +-- +2.42.0 + diff --git a/queue-6.1/drm-bridge-ti-sn65dsi86-associate-dsi-device-lifetim.patch b/queue-6.1/drm-bridge-ti-sn65dsi86-associate-dsi-device-lifetim.patch new file mode 100644 index 00000000000..6184daac66c --- /dev/null +++ b/queue-6.1/drm-bridge-ti-sn65dsi86-associate-dsi-device-lifetim.patch @@ -0,0 +1,97 @@ +From 6b218768851aaf7328b4f3fe5b98e5e448420607 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 2 Oct 2023 16:54:06 -0700 +Subject: drm/bridge: ti-sn65dsi86: Associate DSI device lifetime with + auxiliary device + +From: Stephen Boyd + +[ Upstream commit 7b821db95140e2c118567aee22a78bf85f3617e0 ] + +The kernel produces a warning splat and the DSI device fails to register +in this driver if the i2c driver probes, populates child auxiliary +devices, and then somewhere in ti_sn_bridge_probe() a function call +returns -EPROBE_DEFER. When the auxiliary driver probe defers, the dsi +device created by devm_mipi_dsi_device_register_full() is left +registered because the devm managed device used to manage the lifetime +of the DSI device is the parent i2c device, not the auxiliary device +that is being probed. + +Associate the DSI device created and managed by this driver to the +lifetime of the auxiliary device, not the i2c device, so that the DSI +device is removed when the auxiliary driver unbinds. Similarly change +the device pointer used for dev_err_probe() so the deferred probe errors +are associated with the auxiliary device instead of the parent i2c +device so we can narrow down future problems faster. + +Cc: Douglas Anderson +Cc: Maxime Ripard +Fixes: c3b75d4734cb ("drm/bridge: sn65dsi86: Register and attach our DSI device at probe") +Signed-off-by: Stephen Boyd +Reviewed-by: Neil Armstrong +Reviewed-by: Douglas Anderson +Signed-off-by: Douglas Anderson +Link: https://patchwork.freedesktop.org/patch/msgid/20231002235407.769399-1-swboyd@chromium.org +Signed-off-by: Sasha Levin +--- + drivers/gpu/drm/bridge/ti-sn65dsi86.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c +index b89f7f7ca1885..1b5c27ed27370 100644 +--- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c ++++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c +@@ -673,7 +673,7 @@ static struct ti_sn65dsi86 *bridge_to_ti_sn65dsi86(struct drm_bridge *bridge) + return container_of(bridge, struct ti_sn65dsi86, bridge); + } + +-static int ti_sn_attach_host(struct ti_sn65dsi86 *pdata) ++static int ti_sn_attach_host(struct auxiliary_device *adev, struct ti_sn65dsi86 *pdata) + { + int val; + struct mipi_dsi_host *host; +@@ -688,7 +688,7 @@ static int ti_sn_attach_host(struct ti_sn65dsi86 *pdata) + if (!host) + return -EPROBE_DEFER; + +- dsi = devm_mipi_dsi_device_register_full(dev, host, &info); ++ dsi = devm_mipi_dsi_device_register_full(&adev->dev, host, &info); + if (IS_ERR(dsi)) + return PTR_ERR(dsi); + +@@ -706,7 +706,7 @@ static int ti_sn_attach_host(struct ti_sn65dsi86 *pdata) + + pdata->dsi = dsi; + +- return devm_mipi_dsi_attach(dev, dsi); ++ return devm_mipi_dsi_attach(&adev->dev, dsi); + } + + static int ti_sn_bridge_attach(struct drm_bridge *bridge, +@@ -1279,9 +1279,9 @@ static int ti_sn_bridge_probe(struct auxiliary_device *adev, + struct device_node *np = pdata->dev->of_node; + int ret; + +- pdata->next_bridge = devm_drm_of_get_bridge(pdata->dev, np, 1, 0); ++ pdata->next_bridge = devm_drm_of_get_bridge(&adev->dev, np, 1, 0); + if (IS_ERR(pdata->next_bridge)) +- return dev_err_probe(pdata->dev, PTR_ERR(pdata->next_bridge), ++ return dev_err_probe(&adev->dev, PTR_ERR(pdata->next_bridge), + "failed to create panel bridge\n"); + + ti_sn_bridge_parse_lanes(pdata, np); +@@ -1300,9 +1300,9 @@ static int ti_sn_bridge_probe(struct auxiliary_device *adev, + + drm_bridge_add(&pdata->bridge); + +- ret = ti_sn_attach_host(pdata); ++ ret = ti_sn_attach_host(adev, pdata); + if (ret) { +- dev_err_probe(pdata->dev, ret, "failed to attach dsi host\n"); ++ dev_err_probe(&adev->dev, ret, "failed to attach dsi host\n"); + goto err_remove_bridge; + } + +-- +2.42.0 + diff --git a/queue-6.1/drm-panel-move-aux-b116xw03-out-of-panel-edp-back-to.patch b/queue-6.1/drm-panel-move-aux-b116xw03-out-of-panel-edp-back-to.patch new file mode 100644 index 00000000000..383554a6c94 --- /dev/null +++ b/queue-6.1/drm-panel-move-aux-b116xw03-out-of-panel-edp-back-to.patch @@ -0,0 +1,157 @@ +From 323a3358bbee90c1ee3acd8eea03d8df3bb540d1 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 25 Sep 2023 15:00:11 -0700 +Subject: drm/panel: Move AUX B116XW03 out of panel-edp back to panel-simple + +From: Douglas Anderson + +[ Upstream commit ad3e33fe071dffea07279f96dab4f3773c430fe2 ] + +In commit 5f04e7ce392d ("drm/panel-edp: Split eDP panels out of +panel-simple") I moved a pile of panels out of panel-simple driver +into the newly created panel-edp driver. One of those panels, however, +shouldn't have been moved. + +As is clear from commit e35e305eff0f ("drm/panel: simple: Add AUO +B116XW03 panel support"), AUX B116XW03 is an LVDS panel. It's used in +exynos5250-snow and exynos5420-peach-pit where it's clear that the +panel is hooked up with LVDS. Furthermore, searching for datasheets I +found one that makes it clear that this panel is LVDS. + +As far as I can tell, I got confused because in commit 88d3457ceb82 +("drm/panel: auo,b116xw03: fix flash backlight when power on") Jitao +Shi added "DRM_MODE_CONNECTOR_eDP". That seems wrong. Looking at the +downstream ChromeOS trees, it seems like some Mediatek boards are +using a panel that they call "auo,b116xw03" that's an eDP panel. The +best I can guess is that they actually have a different panel that has +similar timing. If so then the proper panel should be used or they +should switch to the generic "edp-panel" compatible. + +When moving this back to panel-edp, I wasn't sure what to use for +.bus_flags and .bus_format and whether to add the extra "enable" delay +from commit 88d3457ceb82 ("drm/panel: auo,b116xw03: fix flash +backlight when power on"). I've added formats/flags/delays based on my +(inexpert) analysis of the datasheet. These are untested. + +NOTE: if/when this is backported to stable, we might run into some +trouble. Specifically, before 474c162878ba ("arm64: dts: mt8183: +jacuzzi: Move panel under aux-bus") this panel was used by +"mt8183-kukui-jacuzzi", which assumed it was an eDP panel. I don't +know what to suggest for that other than someone making up a bogus +panel for jacuzzi that's just for the stable channel. + +Fixes: 88d3457ceb82 ("drm/panel: auo,b116xw03: fix flash backlight when power on") +Fixes: 5f04e7ce392d ("drm/panel-edp: Split eDP panels out of panel-simple") +Tested-by: Anton Bambura +Acked-by: Hsin-Yi Wang +Signed-off-by: Douglas Anderson +Link: https://patchwork.freedesktop.org/patch/msgid/20230925150010.1.Iff672233861bcc4cf25a7ad0a81308adc3bda8a4@changeid +Signed-off-by: Sasha Levin +--- + drivers/gpu/drm/panel/panel-edp.c | 29 ----------------------- + drivers/gpu/drm/panel/panel-simple.c | 35 ++++++++++++++++++++++++++++ + 2 files changed, 35 insertions(+), 29 deletions(-) + +diff --git a/drivers/gpu/drm/panel/panel-edp.c b/drivers/gpu/drm/panel/panel-edp.c +index a163585a2a52b..2d22de9322281 100644 +--- a/drivers/gpu/drm/panel/panel-edp.c ++++ b/drivers/gpu/drm/panel/panel-edp.c +@@ -978,32 +978,6 @@ static const struct panel_desc auo_b116xak01 = { + }, + }; + +-static const struct drm_display_mode auo_b116xw03_mode = { +- .clock = 70589, +- .hdisplay = 1366, +- .hsync_start = 1366 + 40, +- .hsync_end = 1366 + 40 + 40, +- .htotal = 1366 + 40 + 40 + 32, +- .vdisplay = 768, +- .vsync_start = 768 + 10, +- .vsync_end = 768 + 10 + 12, +- .vtotal = 768 + 10 + 12 + 6, +- .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC, +-}; +- +-static const struct panel_desc auo_b116xw03 = { +- .modes = &auo_b116xw03_mode, +- .num_modes = 1, +- .bpc = 6, +- .size = { +- .width = 256, +- .height = 144, +- }, +- .delay = { +- .enable = 400, +- }, +-}; +- + static const struct drm_display_mode auo_b133han05_mode = { + .clock = 142600, + .hdisplay = 1920, +@@ -1727,9 +1701,6 @@ static const struct of_device_id platform_of_match[] = { + }, { + .compatible = "auo,b116xa01", + .data = &auo_b116xak01, +- }, { +- .compatible = "auo,b116xw03", +- .data = &auo_b116xw03, + }, { + .compatible = "auo,b133han05", + .data = &auo_b133han05, +diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c +index 0e8622ccd3a0f..00bb34c51d0cb 100644 +--- a/drivers/gpu/drm/panel/panel-simple.c ++++ b/drivers/gpu/drm/panel/panel-simple.c +@@ -893,6 +893,38 @@ static const struct panel_desc auo_b101xtn01 = { + }, + }; + ++static const struct drm_display_mode auo_b116xw03_mode = { ++ .clock = 70589, ++ .hdisplay = 1366, ++ .hsync_start = 1366 + 40, ++ .hsync_end = 1366 + 40 + 40, ++ .htotal = 1366 + 40 + 40 + 32, ++ .vdisplay = 768, ++ .vsync_start = 768 + 10, ++ .vsync_end = 768 + 10 + 12, ++ .vtotal = 768 + 10 + 12 + 6, ++ .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC, ++}; ++ ++static const struct panel_desc auo_b116xw03 = { ++ .modes = &auo_b116xw03_mode, ++ .num_modes = 1, ++ .bpc = 6, ++ .size = { ++ .width = 256, ++ .height = 144, ++ }, ++ .delay = { ++ .prepare = 1, ++ .enable = 200, ++ .disable = 200, ++ .unprepare = 500, ++ }, ++ .bus_format = MEDIA_BUS_FMT_RGB666_1X7X3_SPWG, ++ .bus_flags = DRM_BUS_FLAG_DE_HIGH, ++ .connector_type = DRM_MODE_CONNECTOR_LVDS, ++}; ++ + static const struct display_timing auo_g070vvn01_timings = { + .pixelclock = { 33300000, 34209000, 45000000 }, + .hactive = { 800, 800, 800 }, +@@ -3952,6 +3984,9 @@ static const struct of_device_id platform_of_match[] = { + }, { + .compatible = "auo,b101xtn01", + .data = &auo_b101xtn01, ++ }, { ++ .compatible = "auo,b116xw03", ++ .data = &auo_b116xw03, + }, { + .compatible = "auo,g070vvn01", + .data = &auo_g070vvn01, +-- +2.42.0 + diff --git a/queue-6.1/series b/queue-6.1/series index 0eb27022d2b..74681fdd4dc 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -193,3 +193,6 @@ platform-x86-asus-wmi-change-asus_wmi_brn_down-code-from-0x20-to-0x2e.patch platform-x86-asus-wmi-only-map-brightness-codes-when-using-asus-wmi-backlight-control.patch platform-x86-asus-wmi-map-0x2a-code-ignore-0x2b-and-0x2c-events.patch gpio-vf610-set-value-before-the-direction-to-avoid-a-glitch.patch +asoc-pxa-fix-a-memory-leak-in-probe.patch +drm-bridge-ti-sn65dsi86-associate-dsi-device-lifetim.patch +drm-panel-move-aux-b116xw03-out-of-panel-edp-back-to.patch