• Javier Martinez Canillas's avatar
    drm/ssd130x: Init display before the SSD130X_DISPLAY_ON command · 343c7004
    Javier Martinez Canillas authored
    Commit 622113b9 ("drm/ssd130x: Replace simple display helpers with the
    atomic helpers") changed the driver to just use the atomic helpers instead
    of the simple KMS abstraction layer.
    
    But the commit also made a subtle change on the display power sequence and
    initialization order, by moving the ssd130x_power_on() call to the encoder
    .atomic_enable handler and the ssd130x_init() call to CRTC .reset handler.
    
    Before this change, both ssd130x_power_on() and ssd130x_init() were called
    in the simple display pipeline .enable handler, so the display was already
    initialized by the time the SSD130X_DISPLAY_ON command was sent.
    
    For some reasons, it only made the ssd130x SPI driver to fail but the I2C
    was still working. That is the reason why the bug was not noticed before.
    
    To revert to the old driver behavior, move the ssd130x_init() call to the
    encoder .atomic_enable as well. Besides fixing the panel not being turned
    on when using SPI, it also gets rid of the custom CRTC .reset callback.
    
    Fixes: 622113b9 ("drm/ssd130x: Replace simple display helpers with the atomic helpers")
    Signed-off-by: default avatarJavier Martinez Canillas <javierm@redhat.com>
    Reviewed-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230125184230.3343206-1-javierm@redhat.com
    343c7004
ssd130x.c 28.4 KB