drm/panel: waveshare: Add automatic panel recognition for DSI panels - #7553
drm/panel: waveshare: Add automatic panel recognition for DSI panels#7553EngineerWill wants to merge 2 commits into
Conversation
6by9
left a comment
There was a problem hiding this comment.
Signed-off-by: Engineer_Will <646689853@qq.com>
This doesn't fulfill the requirement for the kernel certificate of origin - https://www.kernel.org/doc/html/latest/process/submitting-patches.html#sign-your-work-the-developer-s-certificate-of-origin
Seeing as there is no desire from Raspberry Pi to upstream this driver then I partly don't care.
"Auto detection" would be the more common name for this rather than "auto recognition".
Seeing as this is only used by Waveshare devices and all support will be from them, I'd be prepared to merge as it is.
Defer for 48 hours so updates can be made if they desire, otherwise merge.
| /* | ||
| * automatic recognition panel | ||
| */ | ||
| if (of_device_is_compatible(dev->of_node, "waveshare,automatic-recognition-panel")) { |
There was a problem hiding this comment.
You could simplify this to if (!_ws_panel_data->mode)
There was a problem hiding this comment.
Done, simplified to if (!_ws_panel_data->mode) as suggested.
| { | ||
| struct ws_panel *ts = i2c_get_clientdata(i2c); | ||
|
|
||
| ws_panel_i2c_write(ts, 0xd2, 0x5a); |
There was a problem hiding this comment.
This seems odd as nothing else ever writes register 0xd2.
Note that shutdown is not called on remove. Should the device get unbound and rebound, then it won't get this write (whatever it does).
There was a problem hiding this comment.
- The write to register 0xd2 (0x5a) resets the device so that configuration changes take effect.
- Extracted it into a dedicated ws_panel_reset() helper, and it is now called from both ws_panel_remove() and
ws_panel_shutdown(), so the reset also happens on unbind/rebind, not just at system shutdown.
Add support for Waveshare automatic detection DSI panels which identify themselves at runtime via I2C registers. The driver reads screen type, rotation and refresh rate from registers 0xd0-0xd3 to select the appropriate display mode and DSI lane configuration. Supported configurations include 1200x1920 and 1920x1200 panels at both 30fps (2 lanes) and 60fps (4 lanes) refresh rates. Signed-off-by: Goodwill <646689853@qq.com>
Add the auto_detect overlay parameter to select the automatic detection panel compatible string (waveshare,automatic-detection-panel). This enables runtime panel detection via I2C for Waveshare DSI displays that support automatic identification. Signed-off-by: Goodwill <646689853@qq.com>
5717aaa to
d6d4ebe
Compare
Thanks for the review. |
Add automatic panel recognition support for Waveshare DSI displays,targeting panels such as the 10.1inch DSI LCD (E) that identify themselves at runtime via I2C control registers.
Driver changes (drivers/gpu/drm/panel/panel-waveshare-dsi.c)
Overlay changes (vc4-kms-dsi-waveshare-panel)