Skip to content

waveshare dsi panel v2 : fix panel power-up sequencing and add new product support#7414

Merged
pelwell merged 6 commits into
raspberrypi:rpi-6.18.yfrom
waveshare:DSI-TOUCH-2605
Jun 4, 2026
Merged

waveshare dsi panel v2 : fix panel power-up sequencing and add new product support#7414
pelwell merged 6 commits into
raspberrypi:rpi-6.18.yfrom
waveshare:DSI-TOUCH-2605

Conversation

@waveshare
Copy link
Copy Markdown

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:

  • Add "pre-power-on" device tree property to enable extra MCU rails
  • Extend post-write delay to 200ms when property is present
  • Change GPIO request flags from GPIOD_OUT_LOW to GPIOD_ASIS to prevent flicker
  • Add support for 4-DSI-TOUCH-A and 4.3-DSI-TOUCH-A
  • Update device tree bindings and overlay README

Tested on 8.8" (pre-power-on) and multiple other panels for regression.

Waveshare_Team added 6 commits May 20, 2026 20:03
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>
@6by9
Copy link
Copy Markdown
Contributor

6by9 commented Jun 3, 2026

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.
https://lore.kernel.org/dri-devel/20260507-waveshare-dsi-touch-v5-1-d2ac7ccc22d4@oss.qualcomm.com/

@waveshare
Copy link
Copy Markdown
Author

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?

@pelwell
Copy link
Copy Markdown
Contributor

pelwell commented Jun 4, 2026

I think this will do for now.

@pelwell pelwell merged commit ba50f02 into raspberrypi:rpi-6.18.y Jun 4, 2026
12 checks passed
popcornmix added a commit to raspberrypi/firmware that referenced this pull request Jun 4, 2026
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
popcornmix added a commit to raspberrypi/rpi-firmware that referenced this pull request Jun 4, 2026
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants