waveshare dsi panel v2 : fix panel power-up sequencing and add new product support#7414
Conversation
Some Waveshare DSI touch panels (e.g. the 8.8-DSI-TOUCH-A) need extra rails
on the on-board display MCU enabled before the panel itself starts
powering up, and require a longer settle time for those rails to come
up cleanly. The selection is made from device tree via the new
"pre-power-on" boolean property on the regulator's I2C node (asserted
by the matching overlay override).
When "pre-power-on" is present:
- OR BIT(4) | BIT(1) | BIT(0) into the initial poweron_state, so the
additional MCU rails are turned on together with VCC.
- Wait 200 ms after writing REG_TP / REG_LCD so the rails fully
stabilise before the panel/touch are accessed.
When the property is absent the driver behaves exactly as before:
poweron_state stays at BIT(9) | BIT(8) and the post-write delay
remains 20 ms.
Documented in the overlay README alongside the 8_8_inch_a parameter.
Signed-off-by: Waveshare_Team <support@waveshare.com>
The reset, iovcc and avdd GPIOs are requested with GPIOD_OUT_LOW today,
which forces every line low at probe time before the panel sequencing
code has a chance to drive them. On boards where the regulator MCU has
already brought these rails up (notably the 8.8-DSI-TOUCH-A using the new
"pre-power-on" path) this momentarily drops power/reset on a panel that
should already be live, producing visible flicker or a failed first
modeset.
Switch the three optional GPIO requests to GPIOD_ASIS so the kernel
inherits whatever state the bootloader / pre-power-on regulator left
behind. Subsequent gpiod_set_value() calls in prepare()/unprepare()
still drive the lines explicitly, so the runtime sequencing is
unchanged.
Tested on:
- 8.8" DSI touch (pre-power-on path): no flicker on boot, panel comes
up first try.
- 7.0" / 5.0" / 4.0"-c DSI touch (no pre-power-on): unchanged
behaviour, panels still initialise correctly across suspend/resume.
Signed-off-by: Waveshare_Team <support@waveshare.com>
The 8.8-DSI-TOUCH-A (8_8_inch_a) requires the on-board display MCU to enable additional power rails before the panel itself is brought up. Add the "pre-power-on" property to the display_mcu node via the 8_8_inch_a override so the regulator driver knows to assert the extra rails (and apply the longer settle delay) at probe time. Signed-off-by: Waveshare_Team <support@waveshare.com>
Add device tree binding documentation for Waveshare DSI touchscreen panels. This documents all supported compatible strings from 3.4" to 12.3" sizes. Signed-off-by: Waveshare_Team <support@waveshare.com>
Add support for two new Waveshare products: - 4-DSI-TOUCH-A (480x800, 2-lane) - 4.3-DSI-TOUCH-A (480x800, 2-lane) Signed-off-by: Waveshare_Team <support@waveshare.com>
…SI-TOUCH-A Add device tree overlay entries for the Waveshare 4-DSI-TOUCH-A and 4.3-DSI-TOUCH-A. Update the overlay README to document the new parameters. Signed-off-by: Waveshare_Team <support@waveshare.com>
|
Looks reasonable to me. I did notice that mainline are writing drivers for many of the Waveshare panels. It'd be nice if those drivers were adopted in the fullness of time so the drivers that only exist in our tree can be dropped. https://lore.kernel.org/dri-devel/20260413-waveshare-dsi-touch-v3-0-3aeb53022c32@oss.qualcomm.com/ is merged, so should be in the 7.2 kernel. |
|
Thanks for the review! We're aware of the upstream mainline efforts and are actively following them. The v3 driver that's already merged in 7.2 and the v5 under review are great steps forward. That said, the drivers in the RPi tree still cover some panel variants and features (like the pre-power-on sequencing for the 8.8-DSI-TOUCH-A, and the new 4" / 4.3" models in this PR) that aren't yet represented upstream. We'll continue maintaining these here for now and are happy to help migrate to upstream drivers as they gain coverage for the full product range. Is there anything you'd like us to change in this PR before it can be merged? |
|
I think this will do for now. |
kernel: Fix two thinkos in pcie-brcmstb and nvme pci drivers See: raspberrypi/linux#7407 kernel: Revert "drm/v3d: Increase the autosuspend delay" See: raspberrypi/linux#7408 kernel: of: Improve compatibility with old Pi 5 firmware See: raspberrypi/linux#7405 kernel: arm64/configs: Enable Microchip KSZ DSA support See: raspberrypi/linux#7404 kernel: dtoverlays: camera-mux-N-port: Allow multiple simultaneous instances See: raspberrypi/linux#7411 kernel: waveshare dsi panel v2 : fix panel power-up sequencing and add new product support See: raspberrypi/linux#7414
kernel: Fix two thinkos in pcie-brcmstb and nvme pci drivers See: raspberrypi/linux#7407 kernel: Revert "drm/v3d: Increase the autosuspend delay" See: raspberrypi/linux#7408 kernel: of: Improve compatibility with old Pi 5 firmware See: raspberrypi/linux#7405 kernel: arm64/configs: Enable Microchip KSZ DSA support See: raspberrypi/linux#7404 kernel: dtoverlays: camera-mux-N-port: Allow multiple simultaneous instances See: raspberrypi/linux#7411 kernel: waveshare dsi panel v2 : fix panel power-up sequencing and add new product support See: raspberrypi/linux#7414
This PR adds "pre-power-on" support for Waveshare 8.8-DSI-TOUCH-A panel to address additional power rail requirements and longer settling time.
Key changes:
Tested on 8.8" (pre-power-on) and multiple other panels for regression.