summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/panel
AgeCommit message (Collapse)Author
35 hoursMerge branch 'headers' of git://git.infradead.org/users/willy/pagecache.gitMark Brown
# Conflicts: # drivers/gpu/drm/amd/amdkfd/kfd_migrate.c # net/ceph/osd_client.c
2 daysdrm/panel-edp: Add Sharp LQ138P1JX61 (Surface Laptop 8th Ed.)Gopikrishna Garmidi
The internal eDP panel of the Microsoft Surface Laptop 13.8" 8th Edition is not in edp_panels[], so panel-edp falls back to conservative timings. EDID, read over the panel's DP AUX DDC bus: 00 ff ff ff ff ff ff 00 4d 10 72 15 a1 31 05 54 31 23 01 04 b5 1d 13 78 03 7d 77 ad 50 46 ad 26 0f 50 53 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 60 b6 00 a0 90 00 2b 60 30 20 3a 00 23 c2 10 00 00 18 60 b6 00 a0 90 00 56 66 30 20 3a 00 23 c2 10 00 00 18 00 00 00 fd 00 18 78 be be 2f 01 00 00 00 00 00 00 00 00 00 00 fc 00 4c 51 31 33 38 50 31 4a 58 36 31 0a 20 01 4e 02 03 0f 00 e3 05 80 00 e6 06 05 01 73 6a 0b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 aa Manufacturer: SHP Model: 0x1572 Made in: week 49 of 2025 Display Product Name: 'LQ138P1JX61' DTD 1: 2304x1536 120.000329 Hz 3:2 (291 mm x 194 mm) DTD 2: 2304x1536 60.000164 Hz 3:2 (291 mm x 194 mm) No datasheet is available, so use delay_200_500_e200: it keeps the 200 ms enable delay of the conservative fallback, but uses the 500 ms unprepare delay of the real panels in the table. This matches the entry for the closely related Sharp LQ120P1JX51 (SHP 0x15a7). Assisted-by: LLM Signed-off-by: Gopikrishna Garmidi <gopikrishna.garmidi@oss.qualcomm.com> Reviewed-by: Douglas Anderson <dianders@chromium.org> Signed-off-by: Douglas Anderson <dianders@chromium.org> Link: https://patch.msgid.link/20261006-mahua-surface-laptop-v1-4-406fc042162a@oss.qualcomm.com
7 daysdrm/panel: Add driver for Raydium RM69220 DDICAlexander Koskovich
Add a panel driver for Raydium RM69220 DDIC based displays such as the BOE BF068MWM-TD0 found in the Nothing Phone (3a). Signed-off-by: Alexander Koskovich <akoskovich@pm.me> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20261001-asteroids-panel-support-v4-2-fb228194ad91@pm.me
7 daysdrm/panel: ronbo-rb070d30: Ignore DCS errors in disable()Hsieh Hung-En
If rb070d30_panel_disable() returns an error, drm_panel_disable() skips clearing panel->enabled. unprepare() still powers the panel off, but the next drm_panel_enable() sees the panel as already enabled and does nothing, so the panel stays dark. Always return 0 from disable(). A failed ENTER_SLEEP_MODE is still logged by mipi_dsi_dcs_enter_sleep_mode_multi(). Suggested-by: Douglas Anderson <dianders@chromium.org> Signed-off-by: Hsieh Hung-En <hungen3108@gmail.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20261001004940.110776-1-hungen3108@gmail.com
7 daysdrm/panel: ronbo-rb070d30: Use mipi_dsi_*_multi() functionsHsieh Hung-En
Replace the deprecated mipi_dsi_dcs_exit_sleep_mode() and mipi_dsi_dcs_enter_sleep_mode() calls in the enable and disable callbacks with their _multi variants, as suggested in Documentation/gpu/todo.rst. The callbacks retain the same return values. The new helpers additionally log an error if the command fails. Signed-off-by: Hsieh Hung-En <hungen3108@gmail.com> Reviewed-by: Douglas Anderson <dianders@chromium.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260929080143.559685-1-hungen3108@gmail.com
7 daysdrm/panel: fix novatek-nt36536 dependenciesArnd Bergmann
The recently added driver requires access to DSC helper code and fails to link without that: ld.lld: error: undefined symbol: drm_dsc_pps_payload_pack >>> referenced by panel-novatek-nt36536.c:109 (/home/arnd/arm-soc/drivers/gpu/drm/panel/panel-novatek-nt36536.c:109) >>> drivers/gpu/drm/panel/panel-novatek-nt36536.o:(novatek_prepare) in archive vmlinux.a Add the usual Kconfig dependency. Fixes: 75a5dbd1f4f7 ("drm/panel: Add Novatek NT36536 panel driver") Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260925130125.3897046-1-arnd@kernel.org
7 daysdrm/panel: visionox-vtdr6130: Add Retroid Pocket 6 panelAaron Kling
Add support for the 1080x1920 panel used in the Retroid Pocket 6. Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Aaron Kling <webgeek1234@gmail.com> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260925-rp6-panel-v2-4-19c425e523de@gmail.com
7 daysdrm/panel: visionox-vtdr6130: Modularize panel configAaron Kling
The vtdr6130 is a DDIC, a common chip that is used by multiple panels. Prepare the driver for more panels. Signed-off-by: Aaron Kling <webgeek1234@gmail.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260925-rp6-panel-v2-3-19c425e523de@gmail.com
7 daysdrm/panel: visionox-vtdr6130: Add panel orientation supportAaron Kling
Fetch orientation from the device tree if provided. Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Aaron Kling <webgeek1234@gmail.com> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260925-rp6-panel-v2-2-19c425e523de@gmail.com
7 daysdrivers: gpu: drm: panel: Add BOE NT51021 driverNickolay Goppen
Add driver for BOE NT51021-based 8-inch and 10-inch DSI video mode panels used in Xiaomi Mi Pad 4, Mi Pad 4 Plus (xiaomi-clover) and Amazon Fire HD 10 (2017) (amazon-suez) tablets. NT51021-based panels also support content-adaptive brightness control by generating a PWM signal for backlight driver IC. Content adaptation means that content grey level scale can be increased while simultaneously decreasing brightness of the backlight to achieve same perceived brightness. This makes the power consumption of backlight be reduced with keeping acceptable display quality. Both panels are very similar, differences are only in init sequence and resolution. The register sequence of the TV101WUM-NM0 is the BOE branch of init_lcm_registers() in drivers/misc/mediatek/lcm/nt51021_wuxga_dsi_vdo/ in the Fire OS 3.18 tree, command for command, with only a 120 ms wait after sleep-out added where the vendor waits its trailing 5 ms. The 0x8f 0xa5 and 0x8f 0x00 that bracket it are the vendor's command interface selection, sent on every board that is not an early proto or HVT unit. It is much shorter than boe_tv101wum_nx0_init() because this module is left on its own factory trim. NT51021 R8CH selects whether V1/V14, gamma and HAOP come from the panel's OTP memory or from control registers, and the 0x8c 0x80 here leaves all three on OTP, where the NX0's 0x8e switches them to registers so that the three pages of gamma it then writes take effect. So the absent gamma is deliberate rather than an omission, and the differing 0x8c is its consequence. CABC is likewise untouched because the vendor drives it over I2C from the backlight path. What is left is 0xc0 and 0xc8, which the public NT51021 specification does not describe; everything else this sequence touches carries the same value as the other two panels, including the terminal resistor, TP_SYNC, the MIPI Rx drive strength and all three test modes. The timings are the vendor's lcm_get_params(): hsync 1, hbp 32, hfp 110, vsync 1, vbp 14, vfp 11, so htotal 1343 and vtotal 1946. The pixel clock follows the vendor's PLL_CLOCK = 490, which after DDR is 980 Mbps per lane and over four lanes at 24bpp is 163.33 MHz, so 62.5 Hz. The bootloader leaves the MIPI TX PLL at that rate: read back before the kernel touches it, this board's PLL decodes to exactly 980 Mbps per lane, so the panel is already there when the kernel takes over. The front porch is the vendor's declared 110 rather than the smaller value its own DSI driver ends up running. That driver also sets clk_lp_per_line_enable, which makes ddp_dsi_config() overwrite HFP_WC after the declared timing is programmed, shrinking it to leave just enough room to take the clock lane to LP and back. That is a controller-side workaround rather than a panel property, and it contradicts the cont_clock = 1 set beside it, which disables the very LP transition it makes room for. Mainline mtk_dsi handles the clock lane itself, so the panel's declared timing is the right thing to carry here. The vendor asks for SYNC_EVENT_VDO_MODE with cont_clock = 1 rather than burst, so make mode_flags per variant instead of fixed in probe(). The two existing panels keep the flags they had. Burst was also tried on this hardware and worked, but the vendor configuration is the one the module is characterised for. The physical size is the datasheet active area, 216.576 x 135.36 mm, which measures 216 x 135 on the glass. The vendor's declared a physical_width = 136 and physical_height = 221, which appears to be an error. The size of the test unit was physically measured. 1200/136 and 1920/221 disagree by 1.5%. The vendor's bootloader and kernel both carry a second register sequence for the Innolux module this board second-sources against, selected from two board ID straps. No Innolux unit was available, so that sequence is left out rather than carried untested; however, the Innolux part number was identified as "P101KDA-AB0", should someone with that glass need to upstream support in the future. Tested on the Amazon Fire HD 10 (2017) driven by mediatek-drm: 1200x1920 at 62.5 Hz across a cold boot, display off and on cycles and a suspend/resume, with the MIPI TX PLL reading back at the intended rate every time. Assisted-by: LLM Tested-by: Ryan Brue <ryanbrue.dev@gmail.com> # Amazon Fire HD 10 (2017), boe,tv101wum-nm0 Co-developed-by: Ryan Brue <ryanbrue.dev@gmail.com> Signed-off-by: Ryan Brue <ryanbrue.dev@gmail.com> Co-developed-by: Alexey Minnekhanov <alexeymin@minlexx.ru> Signed-off-by: Alexey Minnekhanov <alexeymin@minlexx.ru> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Nickolay Goppen <setotau@mainlining.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260924-qcom-novatek-nt51021-panels-v5-2-f5eaf5685c9c@mainlining.org
7 daysdrm/panel: simple: Add Raystar RFF500F-AWH-DNN enable delayFabio Estevam
The RFF500F-AWH-DNN datasheet requires a minimum delay of 250 ms between display signal output and backlight power-on. Without this delay, the backlight can expose unsettled panel contents during display startup, resulting in a brief bright flash. Set the panel enable delay to the datasheet-specified minimum. Cc: stable@vger.kernel.org Fixes: 1b2a9ec82099 ("drm/panel: simple: Add Raystar RFF500F-AWH-DNN panel entry") Signed-off-by: Fabio Estevam <festevam@nabladev.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260909201346.937343-1-festevam@gmail.com
9 daysdrm/panel: select DRM_KMS_HELPERSasha Levin
Since the panel_bridge code moved into drm_panel.c, any config with DRM built in but without the KMS helpers fails to link, for example arc haps_hs_smp_defconfig with allnoconfig and the kselftest fragment: arc-elf32-ld: drivers/gpu/drm/drm_panel.o:(.rodata+0x28): undefined reference to `drm_atomic_helper_bridge_duplicate_state' arc-elf32-ld: drivers/gpu/drm/drm_panel.o:(.rodata+0x2c): undefined reference to `drm_atomic_helper_bridge_destroy_state' ... With DRM=m, modpost fails the same way: ERROR: modpost: drivers/gpu/drm/drm_panel.ko: symbol 'drm_atomic_helper_bridge_duplicate_state' undefined! The panel_bridge used to live in bridge/panel.c, which was part of drm_kms_helper and was therefore only built when DRM_KMS_HELPER was enabled. drm_panel.c is built for DRM_PANEL instead, which DRM_PANEL_BRIDGE selects whenever DRM_BRIDGE is set, and DRM_BRIDGE is enabled for every DRM config. Nothing on that path selects DRM_KMS_HELPER, so the bridge and connector helpers used by the moved code can be missing. The panel_bridge code in drm_panel.c is built unconditionally, so make DRM_PANEL select DRM_KMS_HELPER. Reported-by: kernelci.org bot <bot@kernelci.org> Closes: https://d.kernelci.org/i/maestro:9ed7f4b210fa7c1d3bb109b0fcd62285e98c5b81 Fixes: aa8a8c7e4641 ("drm/bridge: panel: move all code to drm_panel.c") Assisted-by: LLM Signed-off-by: Sasha Levin <sashal@kernel.org> Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Tested-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Link: https://patch.msgid.link/20260929114828.3260345-1-sashal@kernel.org Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
9 daysdrm/panel-edp: Support NV140WU2-M70 edp panelHaikun Zhou
NV140WU2-M70 raw edid: 00 ff ff ff ff ff ff 00 09 e5 ae 38 00 00 00 00 14 24 01 04 a5 1e 13 78 07 7a 95 97 5d 59 95 29 20 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 24 31 80 a0 70 b0 3c 40 30 20 36 00 2d bc 10 00 00 1a 00 00 00 fd 00 28 3c 4c 4c 10 01 0a 20 20 20 20 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fc 00 4e 56 31 34 30 57 55 32 2d 4d 37 30 0a 01 35 70 20 79 02 00 20 00 0c 9a 0e 00 ae 38 00 00 00 00 14 1a 00 21 01 1d c8 0b 5d 07 80 07 b0 04 88 74 b9 5d 99 85 95 97 42 20 02 35 54 b0 5c b0 5c 66 32 12 78 22 00 14 3f 66 02 85 7f 07 9f 00 2f 00 1f 00 af 04 3b 00 02 00 05 00 81 00 15 74 1a 00 00 03 01 28 3c 00 00 53 42 53 42 3c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 8d 90 Signed-off-by: Haikun Zhou <zhouhaikun5@huaqin.corp-partner.google.com> Reviewed-by: Douglas Anderson <dianders@chromium.org> Signed-off-by: Douglas Anderson <dianders@chromium.org> Link: https://patch.msgid.link/20260930063856.183763-1-zhouhaikun5@huaqin.corp-partner.google.com
12 daysdrm/panel: move to a new moduleLuca Ceresoli
Work is in progress for every drm_panel to embed a drm_bridge, which will make the drm_panel code (currently in the drm module) depend on the drm_kms_helper module. To avoid the main drm module to depend on other drm modules and create a depepdency loop, move drm_panel.o to a new drm_panel module, so the module dependency will be drm_panel -> drm_kms_helper instead. Reviewed-by: Maxime Ripard <mripard@kernel.org> Link: https://patch.msgid.link/20260916-drm-bridge-every-panel-v3-3-83afb4f1a707@bootlin.com Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
2026-09-24drm/panel: simple: Add BOE DV215FHM-R01 panelVishnu Saini
Add the BOE DV215FHM-R01 21.5" FHD (1920x1080) dual-channel LVDS panel. Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Vishnu Saini <vishnu.saini@oss.qualcomm.com> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260903-b4-lvds-panel-doc-v4-2-861738a0d5de@oss.qualcomm.com
2026-09-24drm/panel: simple: Add support for Truly TFT320240-229-E panelFrank Bodammer
Add display mode and panel descriptor for the Truly TFT320240-229-E LCD panel. Register the panel in the of_device_id table with the compatible string "truly,tft320240-229-e". Signed-off-by: Frank Bodammer <frank.bodammer@siemens.com> Signed-off-by: Alexander Sverdlin <alexander.sverdlin@siemens.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260917110517.1053556-3-alexander.sverdlin@siemens.com
2026-09-24drm/panel: ilitek-ili9882t: Add support for Ilitek IL79600A-based panelsMarek Vasut
The Ilitek IL79600A display controller is similar to the ILI9882T and can be supported within the existing `panel-ilitek-ili9882t.c` driver. This patch extends the ILI9882T driver to handle IL79600A-based panels, such as the 10" Raspberry Pi Touch Display 2. The IL79600A uses a similar command sequence and initialization flow, with minor differences in power supply configuration and timing. Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260910181918.31551-4-marek.vasut+renesas@mailbox.org
2026-09-24drm/panel: ilitek-ili9882t: Set prepare_prev_firstMarek Vasut
Sending DSI commands from the prepare() callback requires DSI link to be up at that point. For DSI hosts is guaranteed only if the panel driver sets the .prepare_prev_first flag. Set it to let these panels work with the DSI hosts which don't power on the link in their .mode_set callback. Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260910181918.31551-3-marek.vasut+renesas@mailbox.org
2026-09-24drm/panel: ilitek-ili9882t: Make enable GPIO optionalMarek Vasut
The enable GPIO may not be accessible on the panel, make it optional. This is the case on 10" Raspberry Pi Touch Display 2. Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260910181918.31551-2-marek.vasut+renesas@mailbox.org
2026-09-24drm/panel: ebbg-ft8719: Split initialization into enable/disable fnDavid Heidelberg
Move the MIPI commands into enable/disable callbacks since they are called between prepare/unprepare callbacks. Signed-off-by: David Heidelberg <david@ixit.cz> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Reviewed-by: Linus Walleij <linusw@kernel.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260908-ebbg-ft8719-fixups-v2-3-5454ae1f5581@ixit.cz
2026-09-24drm/panel: ebbg-ft8719: Fix the MODULE_LICENSE() stringDavid Heidelberg
Replace the bogus "GPL v2" with "GPL" as MODULE_LICNSE() string. The value does not declare the module's exact license, but only lets the module loader test whether the module is Free Software or not. See commit bf7fbeeae6db ("module: Cure the MODULE_LICENSE "GPL" vs. "GPL v2" bogosity") in the details of the issue. The fix is to use "GPL" for all modules under any variant of the GPL. Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: David Heidelberg <david@ixit.cz> Reviewed-by: Linus Walleij <linusw@kernel.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260908-ebbg-ft8719-fixups-v2-2-5454ae1f5581@ixit.cz
2026-09-24drm/panel: ebbg-ft8719: Set prepare_prev_firstCasey Connolly
This corrects the host initialisation sequence so that we can send DSI/DCS commands in prepare(). Cc: stable@vger.kernel.org Fixes: b00de0e237da ("drm/panel: introduce ebbg,ft8719 panel") Signed-off-by: Casey Connolly <casey.connolly@linaro.org> Tested-by: Marco Mattiolo <marco.mattiolo@hotmail.it> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: David Heidelberg <david@ixit.cz> Reviewed-by: Linus Walleij <linusw@kernel.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260908-ebbg-ft8719-fixups-v2-1-5454ae1f5581@ixit.cz
2026-09-21drm/panel-edp: add CSOT MNE007QB1-1 entrySrinivas Kandagatla
14" 1920x1200 IPS panel used on Lenovo ThinkPad T14s Gen 7 (Mahua). The panel identifies as CSW 0x1465 over eDP AUX and is not in edp_panels[] today, so probe falls back to conservative timings. EDID, read over the panel's DP AUX DDC bus: 00 ff ff ff ff ff ff 00 0e 77 65 14 00 00 00 00 00 23 01 04 a5 1e 13 78 07 37 3a a3 55 4d 9c 25 0c 50 55 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 35 3c 80 a0 70 b0 23 40 30 20 66 00 2d bc 10 00 00 18 00 00 00 fd 00 1e 3c 4a 4a 10 01 0a 20 20 20 20 20 20 00 00 00 fe 00 43 53 4f 54 20 54 33 0a 20 20 20 20 20 00 00 00 fc 00 4d 4e 45 30 30 37 51 42 31 2d 31 0a 20 01 6a 70 20 79 02 00 20 00 0c 40 8b f6 65 14 00 00 00 00 00 19 00 21 00 1d c8 0b 5d 07 80 07 b0 04 00 3d 7a 54 cc 94 99 66 52 0f 02 35 54 00 80 00 80 00 80 12 78 26 00 09 02 00 00 00 00 00 01 00 00 22 00 14 0f 5a 02 05 7f 07 9f 00 2f 00 1f 00 af 04 22 00 05 00 05 00 81 00 15 74 1a 00 00 03 51 1e 3c 00 00 00 00 00 00 3c 00 00 00 00 8d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 90 Manufacturer: CSW Model: 0x1465 Made in: 2025 Display Product Name: 'MNE007QB1-1' ASCII String: 'CSOT T3' DTD 1: 1920x1200 60.006199 Hz 16:10 (302 mm x 189 mm) Datasheet was not available, so timings are not datasheet-derived. The delay_200_500_e50 preset matches the sibling CSOT MNE007QB/QS entries already in the file. Assisted-by: Claude:claude-opus-4-7 Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com> Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com> Reviewed-by: Douglas Anderson <dianders@chromium.org> Signed-off-by: Douglas Anderson <dianders@chromium.org> Link: https://patch.msgid.link/20260918120515.595782-3-srinivas.kandagatla@oss.qualcomm.com
2026-09-14drm/panel: samsung-s6e88a0-ams452ef01: Use test key helpersLinus Walleij
The F0 command pair in this driver is already documented as enabling and disabling level 2 commands. Replace the raw writes with the shared level 2 test key helpers. Assisted-by: LLM Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Acked-by: David Heidelberg <david@ixit.cz> Signed-off-by: Linus Walleij <linusw@kernel.org> Link: https://patch.msgid.link/20260903-drm-panels-sofef0-v1-2-9e841645beba@kernel.org
2026-09-14drm/panel: samsung: Add shared test key helpersLinus Walleij
Several Samsung display controllers use identical commands to enable and disable their three levels of test keys. The drivers currently duplicate these commands in local macros. Move the commands to typed helpers in a private Samsung DSI header and use them from the drivers which already identify the commands by their test key level. Assisted-by: LLM Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Acked-by: David Heidelberg <david@ixit.cz> Signed-off-by: Linus Walleij <linusw@kernel.org> Link: https://patch.msgid.link/20260903-drm-panels-sofef0-v1-1-9e841645beba@kernel.org
2026-09-10drm/panel-edp: Add BOE NV140FHM-T0ATerry Hsiao
The raw EDID: BOE NV140FHM-T0A 00 ff ff ff ff ff ff 00 09 e5 ea 38 00 00 00 00 1c 24 01 04 95 1f 11 78 03 28 65 97 59 54 8e 27 1e 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 c0 39 80 18 71 38 28 40 30 20 35 00 35 ae 10 00 00 1a 80 26 80 18 71 38 28 40 30 20 35 00 35 ae 10 00 00 1a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 0d 40 ff 0a 3c 7d 0c 10 21 7d 00 00 00 01 38 70 20 79 02 00 25 01 09 7f 41 02 7f 41 02 28 3c 80 81 00 10 6f 1a 00 00 03 01 28 3c 00 00 4a 5a 4a 5a 3c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c8 90 Signed-off-by: Terry Hsiao <terry_hsiao@compal.corp-partner.google.com> Reviewed-by: Douglas Anderson <dianders@chromium.org> Signed-off-by: Douglas Anderson <dianders@chromium.org> Link: https://patch.msgid.link/20260910030432.1009658-1-terry_hsiao@compal.corp-partner.google.com
2026-09-02drm/panel-edp: Add support for BOE panel used in KD116N36-30NB-A001Yongxing Mou
Add the BOE 0x0b21 panel entry used in the K&D Technology KD116N36-30NB-A001 eDP LCM, place the EDID here for subsequent reference. Timing values come from the KD116N36-30NB-A001 spec. 00 ff ff ff ff ff ff 00 09 e5 21 0b 00 00 00 00 01 1e 01 04 a5 1a 0e 78 0a 24 10 97 59 54 8e 27 1e 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 b2 39 80 d4 70 38 4b 40 30 20 36 00 04 8c 10 00 00 1a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fe 00 51 56 31 31 36 46 48 42 2d 4e 38 31 0a 00 b3 Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com> Reviewed-by: Douglas Anderson <dianders@chromium.org> Signed-off-by: Douglas Anderson <dianders@chromium.org> Link: https://patch.msgid.link/20260901-edp-id-boe-v1-1-f5e2c44255f7@oss.qualcomm.com
2026-09-02drm/panel: Use managed helpers in display vendor panelsOsama Abdelkader
Use the managed MIPI DSI attach and panel add helpers in display vendor panel drivers and drop the corresponding manual detach and panel remove calls from remove paths. Suggested-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Signed-off-by: Osama Abdelkader <osama.abdelkader@gmail.com> Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Link: https://patch.msgid.link/20260812152535.82238-1-osama.abdelkader@gmail.com Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
2026-09-02drm/panel: Use managed helpers in Himax and Ilitek panelsOsama Abdelkader
Use the managed MIPI DSI attach and panel add helpers in Himax and Ilitek panel drivers and drop the corresponding manual detach and panel remove calls from remove paths. Suggested-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Signed-off-by: Osama Abdelkader <osama.abdelkader@gmail.com> Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Link: https://patch.msgid.link/20260812151000.74799-1-osama.abdelkader@gmail.com Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
2026-09-02drm/panel: Use managed helpers in Samsung panelsOsama Abdelkader
Use the managed MIPI DSI attach and panel add helpers in Samsung panel drivers and drop the corresponding manual detach and panel remove calls from remove paths. Also, switch to devm_backlight_device_register in s6e3ha2 and s6e63j0x03. Suggested-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Signed-off-by: Osama Abdelkader <osama.abdelkader@gmail.com> Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Link: https://patch.msgid.link/20260812144426.62074-1-osama.abdelkader@gmail.com Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
2026-08-31drm/panel: Add Novatek NT36532 panel driverJunjie Cao
Add a driver for panels using the Novatek NT36532 Display Driver IC, including support for the CSOT PPC100HB1-1, found in the OnePlus Pad 2 tablets. It has been tested on the OnePlus Pad 2: the panel comes up in its native 3000x2120 mode at 120Hz over dual-DSI in bonded mode with DSC, and displays a stable image. Signed-off-by: Junjie Cao <junjie.cao@linux.dev> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260804074233.85629-1-junjie.cao@linux.dev
2026-08-31drm/panel: add Ilitek ILI7836A panel driverAaron Kling
This is a DDIC which can be used in various panels. The first supported panel is the one used in the Retroid Pocket Nova. Signed-off-by: Aaron Kling <webgeek1234@gmail.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260808-ili7836a-v1-2-07a7becc5636@gmail.com
2026-08-31Merge drm/drm-next into drm-misc-nextThomas Zimmermann
Getting drm-misc-next up to v7.3-rc1. In exynos, there was a conflict in exynos_dbi_bind(). The merge resolves it to the state of commit 3cc8eee9f346 ("drm/exynos: remove dependency on DRM simple helpers"). Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
2026-08-25headers: Remove swap.h from suspend.hMatthew Wilcox (Oracle)
Nothing in suspend.h needs swap.h. However, many files indirectly depend on some of swap.h's dependencies, so this is a large cross-subsystem patch. Stats: 42 are missing includes of interrupt.h (the question of why swap.h brings in interrupt.h remains unanswered). 10 missing includes of seq_file.h 5 missing includes of swap.h (obviously all files could have just added swap.h, but I preferred to bring in a more minimal inclusion set) 3 missing includes of highmem.h 2 missing includes of device.h 2 missing includes of string_choices.h 1 missing include of cacheflush.h 1 missing include of dma-direction.h 1 missing include of kthread.h 1 missing include of pagemap.h 1 missing include of string_helpers.h 1 missing include of writeback.h I tried to follow whatever conventions appeared to be in use for the various subsystems I touched; for example I added string_choices.h to drm_print.h instead of individually to each driver which used the functions declared there. Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
2026-08-21drm/panel-edp: Support MNE007QS3-F and TM140VDXP15 edp panelHaikun Zhou
MNE007QS3-F raw edid: 00 ff ff ff ff ff ff 00 0e 77 87 14 00 00 00 00 0f 24 01 04 a5 1e 13 78 03 2c c5 94 5c 59 95 29 1e 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 35 30 80 a0 70 b0 24 40 30 20 66 00 2d bc 10 00 00 1a 00 00 00 fd 00 28 3c 4b 4b 10 01 0a 20 20 20 20 20 20 00 00 00 fe 00 3d 4c 20 20 20 20 20 20 20 20 20 20 ff 00 00 00 fc 00 4d 4e 45 30 30 37 51 53 33 2d 46 0a 20 01 41 70 20 79 02 00 21 00 1d c8 0b 5d 07 80 07 b0 04 80 3f 79 5c 9e 05 95 9c f2 1d 02 45 54 b0 5c b0 5c 00 42 12 78 22 00 14 8c 5a 02 85 7f 07 9f 00 2f 80 1f 00 af 04 23 00 05 00 05 00 2b 00 0c 27 00 28 3b 00 00 27 00 28 3b 00 00 2e 00 06 00 42 b0 5c b0 5c 81 00 1e 72 1a 00 00 03 01 28 3c 00 00 53 ff 53 ff 3c 00 00 00 00 e3 05 04 00 e6 06 01 01 53 53 ff 00 00 00 00 00 00 00 00 00 7e 90 TM140VDXP15 raw edid: 00 ff ff ff ff ff ff 00 51 a1 37 21 00 00 00 00 0b 24 01 04 a5 1e 13 78 03 2b a5 97 5b 57 8c 28 20 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 24 31 80 a0 70 b0 3c 40 30 20 a6 00 2d bc 10 00 00 1a 00 00 00 fd 00 28 3c 4c 4c 10 01 0a 20 20 20 20 20 20 00 00 00 fe 00 3d 4c 20 20 20 20 20 20 20 20 20 20 ff 00 00 00 fc 00 54 4d 31 34 30 56 44 58 50 31 35 0a 20 01 dd 70 20 79 02 00 21 01 1d c2 0b 58 07 80 07 b0 04 80 71 69 5b 79 d5 8c 87 82 20 02 45 54 b0 5c b0 5c 00 42 12 78 22 00 14 3f 66 02 85 7f 07 9f 00 2f 80 1f 00 af 04 3b 00 05 00 05 00 2b 00 0c 27 00 28 3b 00 00 27 00 28 3b 00 00 2e 00 06 00 42 b0 5c b0 5c 81 00 17 72 1a 00 00 03 01 28 3c 00 00 53 ff 53 ff 3c 00 00 00 00 e3 05 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0a 90 Signed-off-by: Haikun Zhou <zhouhaikun5@huaqin.corp-partner.google.com> Reviewed-by: Douglas Anderson <dianders@chromium.org> Signed-off-by: Douglas Anderson <dianders@chromium.org> Link: https://patch.msgid.link/20260820012554.4038893-1-zhouhaikun5@huaqin.corp-partner.google.com
2026-08-20BackMerge tag 'v7.2' into drm-nextDave Airlie
Linux 7.2 There was a lot of conflicts this round between fixes and next, and I'd like to get the merge resolutions that we have in drm-tip. Signed-off-by: Dave Airlie <airlied@redhat.com>
2026-08-14drm/panel: samsung-s6d16d0: Use mipi_dsi_*_multi(); fix minor bugsAkash Sukhavasi
The mipi_dsi_dcs_*() functions used by this driver are deprecated in favour of their _multi() counterparts, as noted in Documentation/gpu/todo.rst. The _multi() variants record the first error in a context structure and skip subsequent calls once an error is set, removing the need to check the return value after each command. They also log failures internally, making the per-call dev_err() calls redundant. Convert prepare(), enable(), disable(), and unprepare() to use mipi_dsi_dcs_*_multi(). unprepare() previously returned an error if mipi_dsi_dcs_enter_sleep_mode() failed, skipping RESET assertion and regulator_disable(). Because drm_panel_unprepare() does not clear panel->prepared when the callback returns an error, drm_panel_prepare() would then return early on the next call, leaving the panel powered and unable to be re-initialised. The converted code always asserts RESET, disables the regulator, and returns 0. Also fix a typo in a comment ("Enabe" -> "Enable"). Signed-off-by: Akash Sukhavasi <akash.sukhavasi@gmail.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Linus Walleij <linusw@kernel.org> Link: https://patch.msgid.link/20260810-mipi-dsi-s6d16d0-multi-v2-1-8fcdfbf9bbd2@gmail.com
2026-08-06drm/panel: tdo-tl070wsh30: Use mipi_dsi_*_multi(); fix minor bugsAkash Sukhavasi
The mipi_dsi_dcs_*() functions used by this driver are deprecated in favor of their _multi() counterparts, as noted in Documentation/gpu/todo.rst. The _multi() variants record the first error in a context structure and skip every later call once an error is set, so the return value no longer has to be checked after each command. They also log their own failures, which makes the per-call dev_err() calls redundant. Convert prepare() and unprepare(). prepare() uses mipi_dsi_msleep() for the delays between DSI commands. unprepare() uses plain usleep_range() so the delays run unconditionally after the accumulated error is cleared. The delays in the GPIO reset sequence stay as plain msleep() and usleep_range(), since they run before any DSI transaction. unprepare() now disables the regulator unconditionally and returns 0. Previously a failure of set_display_off() was logged and the sequence continued, while a failure of enter_sleep_mode() returned early, leaving the regulator enabled and the panel unable to be brought back up, since drm_panel_unprepare() skips panel->prepared = false on error. The accumulated error from set_display_off() is cleared so that the delay and enter_sleep_mode() are still attempted, preserving the original fall-through behavior. Both drm_panel_prepare() and drm_panel_unprepare() return void, so the error was never propagated to a caller in any case. Signed-off-by: Akash Sukhavasi <akash.sukhavasi@gmail.com> Reviewed-by: Douglas Anderson <dianders@chromium.org> Signed-off-by: Douglas Anderson <dianders@chromium.org> Link: https://patch.msgid.link/20260730-mipi-dsi-tl070wsh30-multi-v3-1-60592caef4f4@gmail.com
2026-08-05drm/panel-edp: Add pre_unprepare delayHsin-Te Yuan
In eDP power-off timing specifications, T10 defines the minimum delay required between the end of valid video data from the source and panel power-down (main VDD off). Currently, panel-edp only supports the 'disable' delay, which corresponds to T9 (backlight off to end of video data) and runs in panel_edp_disable() while video data is still active. For panels that require a delay after video data has stopped before cutting power, this delay must occur in panel_edp_unprepare() before turning off power rails. Add a 'pre_unprepare' field to struct panel_delay to model T10-min, and delay for this duration in panel_edp_unprepare() before calling pm_runtime_put_sync_suspend(). Additionally, adjust the timing entry for TM156VDXP25 to use delay_200_500_e80_pu100 (enable = 80ms, pre_unprepare = 100ms) to match its panel specification, replacing the previous delay_200_500_e50_d100. Fixes: b9e2d5cdaab0 ("drm/panel-edp: Support NV140FHM-N5B and TM156VDXP25") Signed-off-by: Hsin-Te Yuan <yuanhsinte@chromium.org> Reviewed-by: Douglas Anderson <dianders@chromium.org> Signed-off-by: Douglas Anderson <dianders@chromium.org> Link: https://patch.msgid.link/20260803-edp-v1-1-3e92dec1d56c@chromium.org
2026-08-03drm/panel-edp: Add Sharp LQ120P1JX51 (Surface Pro 12in 1st Ed.)François Roux
The internal eDP panel of the Microsoft Surface Pro 12in 1st Edition (Snapdragon X Plus, X1P42100) is not in edp_panels[], so every boot produces the deliberate WARN_ON splat in panel_edp_probe() and the panel falls back to conservative timings: WARNING: drivers/gpu/drm/panel/panel-edp.c:814 panel_edp_probe+0x53c/0x56c panel-simple-dp-aux aux-aea0000.displayport-controller: Unknown panel SHP 0x15a7, using conservative timings EDID, read over the panel's DP AUX DDC bus: 00 ff ff ff ff ff ff 00 4d 10 a7 15 a0 00 00 1f 31 22 01 04 a5 19 11 78 07 ee 91 a3 54 4c 99 26 0f 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 62 53 94 a0 80 b8 2e 50 18 10 3a 00 fe a9 00 00 00 18 13 7d 94 a0 80 b8 2e 50 18 10 3a 00 fe a9 00 00 00 18 00 00 00 fd 00 18 5a 88 88 21 01 00 00 00 00 00 00 00 00 00 00 fc 00 4c 51 31 32 30 50 31 4a 58 35 31 0a 20 00 69 Manufacturer: SHP Model: 0x15a7 Made in: week 49 of 2024 Display Product Name: 'LQ120P1JX51' DTD 1: 2196x1464 60.001799 Hz 3:2 (254 mm x 169 mm) DTD 2: 2196x1464 90.002698 Hz 3:2 (254 mm x 169 mm) Timings are deliberately cautious rather than datasheet-derived. The conservative fallback sets unprepare=2000 and enable=200; unprepare=2000 is a safety margin for unknown panels only and is the single occurrence of that value in the file -- no real panel entry uses it. delay_200_500_e200 keeps the same generous 200 ms enable delay while using the 500 ms unprepare shared by every actual panel in the table. A shorter enable delay may well be fine, but has not been validated here. Signed-off-by: François Roux <info@humanlearning.ch> Reviewed-by: Douglas Anderson <dianders@chromium.org> Signed-off-by: Douglas Anderson <dianders@chromium.org> Link: https://patch.msgid.link/20260802135107.4420-1-info@humanlearning.ch
2026-07-29drm/panel-edp: Add CMN N116BCP-EA2 (HW: C3)Terry Hsiao
The raw EDID: 00 ff ff ff ff ff ff 00 0d ae 6c 11 00 00 00 00 02 24 01 04 95 1a 0e 78 03 67 75 98 59 53 90 27 1c 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 da 1d 56 e2 50 00 20 30 30 20 a6 00 00 90 10 00 00 1a e7 13 56 e2 50 00 20 30 30 20 a6 00 00 90 10 00 00 1a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 0c 47 ff 08 3c 7d 0d 0a 15 7d 00 00 00 00 05 Signed-off-by: Terry Hsiao <terry_hsiao@compal.corp-partner.google.com> Reviewed-by: Douglas Anderson <dianders@chromium.org> Signed-off-by: Douglas Anderson <dianders@chromium.org> Link: https://patch.msgid.link/20260728035931.10342-1-terry_hsiao@compal.corp-partner.google.com
2026-07-29drm/panel-edp: Add BOE NE140QDM-NX2Weiji Wang
Add timing from datasheet for BOE NE140QDM-NX2. edid-decode (hex): 00 ff ff ff ff ff ff 00 09 e5 f2 0a 00 00 00 00 20 1f 01 04 a5 1e 13 78 03 ee 96 a3 54 4c 99 26 0f 4e 51 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 60 d2 00 a0 a0 40 32 60 30 20 35 00 2e bd 10 00 00 18 c8 9d 00 a0 a0 40 32 60 30 20 35 00 2e bd 10 00 00 18 00 00 00 fd 00 30 78 c6 c6 36 01 0a 20 20 20 20 20 20 00 00 00 fe 00 4e 45 31 34 30 51 44 4d 2d 4e 58 32 20 01 f8 70 13 79 00 00 03 01 14 30 69 00 05 ff 09 9f 00 2f 00 1f 00 3f 06 31 00 02 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4d 90 Signed-off-by: Weiji Wang <nebclllo0444@gmail.com> Reviewed-by: Douglas Anderson <dianders@chromium.org> Signed-off-by: Douglas Anderson <dianders@chromium.org> Link: https://patch.msgid.link/82fc6395-3425-4f71-ba58-813856cee61d@gmail.com
2026-07-29drm/panel: ilitek-ili9805: make cleanup funcs voidMichail Tatas
Make cleanup functions return void since no one is checking their return values Signed-off-by: Michail Tatas <michail.tatas@gmail.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Reviewed-by: Douglas Anderson <dianders@chromium.org> Signed-off-by: Douglas Anderson <dianders@chromium.org> Link: https://patch.msgid.link/20260723203601.806697-4-michail.tatas@gmail.com
2026-07-29drm/panel: ilitek-ili9805: Use dsi_multi in initMichail Tatas
Drop the struct ili9805_instr and the init table and use init functions. Signed-off-by: Michail Tatas <michail.tatas@gmail.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Reviewed-by: Douglas Anderson <dianders@chromium.org> Signed-off-by: Douglas Anderson <dianders@chromium.org> Link: https://patch.msgid.link/20260723203601.806697-3-michail.tatas@gmail.com
2026-07-29drm/panel: ilitek-ili9805: Use _multi variantsMichail Tatas
Convert functions mipi_dsi_* to mipi_dsi_*_multi as per the gpu/todo file. The multi variant of these functions include improved error handling. Signed-off-by: Michail Tatas <michail.tatas@gmail.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Reviewed-by: Douglas Anderson <dianders@chromium.org> Signed-off-by: Douglas Anderson <dianders@chromium.org> Link: https://patch.msgid.link/20260723203601.806697-2-michail.tatas@gmail.com
2026-07-27drm/panel: novatek-nt36536: Fix panel double-remove on attach failureDavid Carlier
The DSI attach error path calls drm_panel_remove() by hand even though the panel was registered with devm_drm_panel_add(), which already arranges for drm_panel_remove() to run on driver detach. When mipi_dsi_attach() fails the panel is therefore removed twice: once directly and once again while devres unwinds. drm_panel_add() takes a reference and drm_panel_remove() drops one, so the extra removal releases the last reference early and frees the panel container. The put registered by devm_drm_panel_alloc() then operates on freed memory, resulting in a use-after-free and a reference-count underflow when a DSI host rejects the requested configuration during probe. Drop the manual drm_panel_remove() and let the managed cleanup handle it, matching the other dual-DSI panel drivers. Fixes: 75a5dbd1f4f7 ("drm/panel: Add Novatek NT36536 panel driver") Signed-off-by: David Carlier <devnexen@gmail.com> Reviewed-by: Pengyu Luo <mitltlatltl@gmail.com> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260724041746.12887-1-devnexen@gmail.com
2026-07-27drm/panel: simple: Add Ampire AM-800480N3TZQW-00HPaul Louvel
Add support for the Ampire AM-800480N3TZQW-00H 5" WVGA TFT LCD panel. Signed-off-by: Paul Louvel <paul.louvel@bootlin.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260723-support-am-800480n3tzqw-00h-v1-2-6a4ae0575a19@bootlin.com
2026-07-27drm/panel: st7703: Add AYANEO Pocket DS Lower Panel SupportAlexandre Hamamdjian
Add support for the lower (secondary) panel of the AYANEO Pocket DS, a dual-screen QCS8550 (Snapdragon 8 Gen 2) handheld. It is a 5.0" 1024x768 4:3 IPS LCD driven by a Sitronix ST7703 DDIC: every command in the vendor init sequence maps to an ST7703 manufacturer command (SETEXTC, SETMIPI, SETRGBIF, SETSCR, SETPOWER, SETGAMMA, SETGIP1/2), and the SETMIPI and SETRGBIF payloads are near-identical to the already-supported Powkiddy RGB10MAX3. The panel is mounted in portrait (768x1024) and rotated 270 degrees in the device, expressed through the panel rotation property. The SETEXTC unlock password ends in 0x87 rather than the canonical 0x83; this is the value shipped by the vendor firmware and is kept verbatim. Init sequence extracted from the AYANEO Pocket DS BSP kernel, via the ROCKNIX SM8550 port. Signed-off-by: Alexandre Hamamdjian <azkali.limited@gmail.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260723-b4-st7703-pocketds-lower-v1-2-e3db246589f4@gmail.com
2026-07-27drm: panel: jd9365da: Add DCLTek 300250 9.35in displayMarc-Olivier Champagne
The DCLTek dt300250 is a LCD panel using the jd9365da controller. Add the panel to the driver. Suggested-by: Hugo Villeneuve <hvilleneuve@dimonoff.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Marc-Olivier Champagne <marc-olivier.champagne@savoirfairelinux.com> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260722173840.3576444-5-marc-olivier.champagne@savoirfairelinux.com
2026-07-27drm: panel: jd9365da: Enable LPM modeMarc-Olivier Champagne
The JD9365DA-H3 uses DSI LPM for command transmissions, make sure this is configured correctly in the DSI mode flags. Suggested-by: Hugo Villeneuve <hvilleneuve@dimonoff.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by: Marc-Olivier Champagne <marc-olivier.champagne@savoirfairelinux.com> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patch.msgid.link/20260722173840.3576444-2-marc-olivier.champagne@savoirfairelinux.com