mirror_ubuntu-kernels/drivers/gpu/drm/panel
Douglas Anderson 8df1ddb5bf drm/dp: Don't attempt AUX transfers when eDP panels are not powered
If an eDP panel is not powered on then any attempts to talk to it over
the DP AUX channel will timeout. Unfortunately these attempts may be
quite slow. Userspace can initiate these attempts either via a
/dev/drm_dp_auxN device or via the created i2c device.

Making the DP AUX drivers timeout faster is a difficult proposition.
In theory we could just poll the panel's HPD line in the AUX transfer
function and immediately return an error there. However, this is
easier said than done. For one thing, there's no hard requirement to
hook the HPD line up for eDP panels and it's OK to just delay a fixed
amount. For another thing, the HPD line may not be fast to probe. On
parade-ps8640 we need to wait for the bridge chip's firmware to boot
before we can get the HPD line and this is a slow process.

The fact that the transfers are taking so long to timeout is causing
real problems. The open source fwupd daemon sometimes scans DP busses
looking for devices whose firmware need updating. If it happens to
scan while a panel is turned off this scan can take a long time. The
fwupd daemon could try to be smarter and only scan when eDP panels are
turned on, but we can also improve the behavior in the kernel.

Let's let eDP panels drivers specify that a panel is turned off and
then modify the common AUX transfer code not to attempt a transfer in
this case.

Tested-by: Steev Klimaszewski <steev@kali.org>
Reviewed-by: Hsin-Yi Wang <hsinyi@chromium.org>
Tested-by: Eizan Miyamoto <eizan@chromium.org>
Acked-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240202141109.1.I24277520ac754ea538c9b14578edc94e1df11b48@changeid
2024-02-28 12:43:36 -08:00
..
Kconfig drm/panel: Add driver for DJN HX83112A LCD panel 2024-02-16 12:11:08 +01:00
Makefile drm/panel: Add driver for DJN HX83112A LCD panel 2024-02-16 12:11:08 +01:00
panel-abt-y030xx067a.c drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
panel-arm-versatile.c drm/panel: fix a possible null pointer dereference 2023-10-10 10:33:30 +02:00
panel-asus-z00t-tm5p5-n35596.c drm/panel: Don't store+check prepared/enabled for simple cases 2023-09-13 08:36:18 -07:00
panel-auo-a030jtn01.c drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
panel-boe-bf060y8m-aj0.c drm/panel: Don't store+check prepared/enabled for simple cases 2023-09-13 08:36:18 -07:00
panel-boe-himax8279d.c drm/panel: Simplify with dev_err_probe() 2024-01-12 10:34:55 +01:00
panel-boe-th101mb31ig002-28a.c drm/panel: Add driver for BOE TH101MB31IG002-28A panel 2024-01-12 10:23:59 +01:00
panel-boe-tv101wum-nl6.c drm/panel: boe-tv101wum-nl6: make use of prepare_prev_first 2024-02-19 10:09:02 +01:00
panel-dsi-cm.c drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
panel-ebbg-ft8719.c drm/mipi-dsi: Make remove callback return void 2022-07-09 10:50:03 +02:00
panel-edp.c drm/dp: Don't attempt AUX transfers when eDP panels are not powered 2024-02-28 12:43:36 -08:00
panel-elida-kd35t133.c drm/panel-elida-kd35t133: Drop prepare/unprepare logic 2023-11-20 09:35:09 +01:00
panel-feixin-k101-im2ba02.c drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
panel-feiyang-fy07024di26a30d.c drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
panel-himax-hx8394.c drm/panel: himax-hx8394: Add Support for Powkiddy X55 panel 2023-12-05 09:18:04 +01:00
panel-himax-hx83112a.c drm/panel: Add driver for DJN HX83112A LCD panel 2024-02-16 12:11:08 +01:00
panel-ilitek-ili9322.c drm/panel: ili9322: Convert to use maple tree register cache 2023-10-02 09:09:21 +02:00
panel-ilitek-ili9341.c drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
panel-ilitek-ili9805.c drm/panel: ilitek-ili9805: adjust the includes 2023-12-13 16:19:01 +01:00
panel-ilitek-ili9881c.c drm/panel: ilitek-ili9881c: Add Ampire AM8001280G LCD panel 2023-12-05 09:21:57 +01:00
panel-ilitek-ili9882t.c drm/panel: ili9882t: Avoid blurred screen from fast sleep 2023-10-19 14:45:28 -07:00
panel-innolux-ej030na.c drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
panel-innolux-p079zca.c drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
panel-jadard-jd9365da-h3.c drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
panel-jdi-fhd-r63452.c drm/panel: Don't store+check prepared/enabled for simple cases 2023-09-13 08:36:18 -07:00
panel-jdi-lpm102a188a.c drm/panel: Add driver for JDI LPM102A188A 2023-08-16 18:54:42 +02:00
panel-jdi-lt070me05000.c drm/panel: JDI LT070ME05000 simplify with dev_err_probe() 2023-08-14 14:48:49 +02:00
panel-khadas-ts050.c drm/panel: khadas-ts050: update timings to achieve 60Hz refresh rate 2023-06-01 16:10:25 +02:00
panel-kingdisplay-kd097d04.c drm/mipi-dsi: Make remove callback return void 2022-07-09 10:50:03 +02:00
panel-leadtek-ltk050h3146w.c drm-misc-next for v6.9: 2024-02-05 13:50:15 +10:00
panel-leadtek-ltk500hd1829.c drm/panel: ltk500hd1829: add panel type for ltk101b4029w 2024-02-16 23:36:42 +01:00
panel-lg-lb035q02.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
panel-lg-lg4573.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
panel-lvds.c drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
panel-magnachip-d53e6ea8966.c drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
panel-mantix-mlaf057we51.c drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
panel-nec-nl8048hl11.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
panel-newvision-nv3051d.c drm/panel: nv3051d: Add Powkiddy RK2023 Panel Support 2023-11-20 09:33:30 +01:00
panel-newvision-nv3052c.c drm/panel: nv3052c: Add Fascontek FS035VG158 LCD display 2023-12-11 10:12:30 +01:00
panel-novatek-nt35510.c drm/panel: nt35510: support FRIDA FRD400B25025-A-CTK 2024-01-09 14:06:12 +01:00
panel-novatek-nt35560.c drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
panel-novatek-nt35950.c drm/panel: Don't store+check prepared/enabled for simple cases 2023-09-13 08:36:18 -07:00
panel-novatek-nt36523.c drm/panel: novatek-nt36523: Set prepare_prev_first 2024-02-02 22:30:44 +01:00
panel-novatek-nt36672a.c drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
panel-novatek-nt36672e.c drm/panel: novatek-nt36672e: Include <linux/of.h> 2024-01-19 09:34:57 +01:00
panel-novatek-nt39016.c drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
panel-olimex-lcd-olinuxino.c drm: Switch i2c drivers back to use .probe() 2023-05-30 16:55:16 -07:00
panel-orisetech-ota5601a.c drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
panel-orisetech-otm8009a.c drm/panel: otm8009a: Don't double check prepared/enabled 2023-09-13 08:36:18 -07:00
panel-osd-osd101t2587-53ts.c drm/mipi-dsi: Make remove callback return void 2022-07-09 10:50:03 +02:00
panel-panasonic-vvx10f034n00.c drm/mipi-dsi: Make remove callback return void 2022-07-09 10:50:03 +02:00
panel-raspberrypi-touchscreen.c drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
panel-raydium-rm692e5.c drm/panel: Add driver for BOE RM692E5 AMOLED panel 2023-10-02 09:09:22 +02:00
panel-raydium-rm67191.c drm/mipi-dsi: Make remove callback return void 2022-07-09 10:50:03 +02:00
panel-raydium-rm68200.c drm/panel: Don't store+check prepared/enabled for simple cases 2023-09-13 08:36:18 -07:00
panel-ronbo-rb070d30.c drm/panel: Do not include <linux/fb.h> 2023-01-13 13:19:13 +01:00
panel-samsung-atna33xc20.c drm/dp: Don't attempt AUX transfers when eDP panels are not powered 2024-02-28 12:43:36 -08:00
panel-samsung-db7430.c drm/panel: db7430: remove unused variables 2023-07-24 19:55:53 +02:00
panel-samsung-ld9040.c drm/panel: ld9040: Register a backlight device 2023-07-14 10:12:06 +02:00
panel-samsung-s6d7aa0.c drm/panel: samsung-s6d7aa0: drop DRM_BUS_FLAG_DE_HIGH for lsl080al02 2024-01-12 10:26:28 +01:00
panel-samsung-s6d16d0.c drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
panel-samsung-s6d27a1.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
panel-samsung-s6e3ha2.c drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
panel-samsung-s6e8aa0.c drm: panel: Enable prepare_prev_first flag for samsung-s6e panels 2023-01-26 15:11:23 +09:00
panel-samsung-s6e63j0x03.c drm: panel: Enable prepare_prev_first flag for samsung-s6e panels 2023-01-26 15:11:23 +09:00
panel-samsung-s6e63m0-dsi.c drm: Explicitly include correct DT includes 2023-07-21 09:12:43 +02:00
panel-samsung-s6e63m0-spi.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
panel-samsung-s6e63m0.c drm/panel: s6e63m0: Don't store+check prepared/enabled 2023-09-13 08:36:18 -07:00
panel-samsung-s6e63m0.h
panel-samsung-s6e88a0-ams452ef01.c drm/panel: Don't store+check prepared/enabled for simple cases 2023-09-13 08:36:18 -07:00
panel-samsung-sofef00.c drm/panel: Don't store+check prepared/enabled for simple cases 2023-09-13 08:36:18 -07:00
panel-seiko-43wvf1g.c drm/panel: Convert to platform remove callback returning void 2023-06-08 09:04:11 -07:00
panel-sharp-lq101r1sx01.c drm/mipi-dsi: Make remove callback return void 2022-07-09 10:50:03 +02:00
panel-sharp-ls037v7dw01.c drm/panel: Convert to platform remove callback returning void 2023-06-08 09:04:11 -07:00
panel-sharp-ls043t1le01.c drm/panel: sharp-ls043t1le01: drop dummy functions and data fields 2023-05-11 10:45:51 +02:00
panel-sharp-ls060t1sx01.c drm/panel: Don't store+check prepared/enabled for simple cases 2023-09-13 08:36:18 -07:00
panel-simple.c drm/panel: simple: Add BOE BP082WX1-100 8.2" panel 2024-02-19 12:38:46 +01:00
panel-sitronix-st7701.c drm/panel: st7701: Add Anbernic RG-ARC Panel Support 2023-12-11 10:12:59 +01:00
panel-sitronix-st7703.c drm/panel: st7703: Add Panel Rotation Support 2024-02-13 19:51:03 +01:00
panel-sitronix-st7789v.c drm/panel: sitronix-st7789v: add jasonic jt240mhqs-hwt-ek-e3 support 2023-08-04 15:27:07 +02:00
panel-sony-acx565akm.c drm/panel: sony-acx565akm: Use backlight helpers 2022-06-24 21:38:04 +02:00
panel-sony-td4353-jdi.c drm/panel: Don't store+check prepared/enabled for simple cases 2023-09-13 08:36:18 -07:00
panel-sony-tulip-truly-nt35521.c drm/panel: Don't store+check prepared/enabled for simple cases 2023-09-13 08:36:18 -07:00
panel-startek-kd070fhfid015.c drm/panel: Don't store+check prepared/enabled for simple cases 2023-09-13 08:36:18 -07:00
panel-synaptics-r63353.c drm/panel: synaptics-r63353: adjust the includes 2023-12-13 16:19:01 +01:00
panel-tdo-tl070wsh30.c drm/mipi-dsi: Make remove callback return void 2022-07-09 10:50:03 +02:00
panel-tpo-td028ttec1.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
panel-tpo-td043mtea1.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
panel-tpo-tpg110.c drm/panel/panel-tpo-tpg110: fix a possible null pointer dereference 2023-10-10 10:34:08 +02:00
panel-truly-nt35597.c drm/panel: Don't store+check prepared/enabled for simple cases 2023-09-13 08:36:18 -07:00
panel-visionox-r66451.c drm/panel: visionox-r66451: Set prepare_prev_first flag 2024-02-05 11:03:35 +01:00
panel-visionox-rm69299.c drm/panel: Don't store+check prepared/enabled for simple cases 2023-09-13 08:36:18 -07:00
panel-visionox-vtdr6130.c drm/panel: visionox-vtdr6130: Set prepare_prev_first flag 2024-02-02 22:31:05 +01:00
panel-widechips-ws2401.c drm/panel: ws2401: Silent no spi_device_id warning 2022-10-03 21:50:53 +02:00
panel-xinpeng-xpp055c272.c drm/panel-xinpeng-xpp055c272: Drop custom DSI write macro 2023-01-11 18:50:57 +01:00