drm/ssd130x: Replace simple display helpers with the atomic helpers

The simple display pipeline is a set of helpers that can be used by DRM
drivers to avoid dealing with all the needed components and just define
a few functions to operate a simple display device with one full-screen
scanout buffer feeding a single output.

But it is arguable that this provides the correct level of abstraction
for simple drivers, and recently some have been ported from using these
simple display helpers to use the regular atomic helpers instead.

The rationale for this is that the simple display pipeline helpers don't
hide that much of the DRM complexity, while adding an indirection layer
that conflates the concepts of CRTCs and planes. This makes the helpers
less flexible and harder to be reused among different graphics drivers.

Also, for simple drivers, using the full atomic helpers doesn't require
a lot of additional code. So adding a simple display pipeline layer may
not be worth it.

For these reasons, let's follow that trend and make ssd130x a plain DRM
driver that creates its own primary plane, CRTC, enconder and connector.
Suggested-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: default avatarJavier Martinez Canillas <javierm@redhat.com>
Acked-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20220905222759.2597186-1-javierm@redhat.com
parent 580c00e6
This diff is collapsed.
...@@ -13,8 +13,11 @@ ...@@ -13,8 +13,11 @@
#ifndef __SSD1307X_H__ #ifndef __SSD1307X_H__
#define __SSD1307X_H__ #define __SSD1307X_H__
#include <drm/drm_connector.h>
#include <drm/drm_crtc.h>
#include <drm/drm_drv.h> #include <drm/drm_drv.h>
#include <drm/drm_simple_kms_helper.h> #include <drm/drm_encoder.h>
#include <drm/drm_plane_helper.h>
#include <linux/regmap.h> #include <linux/regmap.h>
...@@ -42,8 +45,10 @@ struct ssd130x_deviceinfo { ...@@ -42,8 +45,10 @@ struct ssd130x_deviceinfo {
struct ssd130x_device { struct ssd130x_device {
struct drm_device drm; struct drm_device drm;
struct device *dev; struct device *dev;
struct drm_simple_display_pipe pipe;
struct drm_display_mode mode; struct drm_display_mode mode;
struct drm_plane primary_plane;
struct drm_crtc crtc;
struct drm_encoder encoder;
struct drm_connector connector; struct drm_connector connector;
struct i2c_client *client; struct i2c_client *client;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment