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 3 commits into
Conversation
Add support for Waveshare automatic recognition 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: Engineer_Will <646689853@qq.com>
Add the auto_rec overlay parameter to select the automatic recognition panel compatible string (waveshare,automatic-recognition-panel). This enables runtime panel detection via I2C for Waveshare DSI displays that support automatic identification. Use lowercase with underscores for the parameter name to follow kernel naming conventions. Signed-off-by: Engineer_Will <646689853@qq.com>
drm/panel: waveshare: Add automatic panel recognition for DSI panels
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)
| { | ||
| 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).
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)