drm/ssd130x: Add a controller family id to the device info data
authorJavier Martinez Canillas <javierm@redhat.com>
Sat, 14 Oct 2023 07:15:04 +0000 (09:15 +0200)
committerJavier Martinez Canillas <javierm@redhat.com>
Wed, 18 Oct 2023 07:53:26 +0000 (09:53 +0200)
To allow the driver to have a per Solomon display controller modesetting
pipeline and support aother controller families besides SSD130x.

Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20231014071520.1342189-3-javierm@redhat.com
drivers/gpu/drm/solomon/ssd130x-i2c.c
drivers/gpu/drm/solomon/ssd130x-spi.c
drivers/gpu/drm/solomon/ssd130x.c
drivers/gpu/drm/solomon/ssd130x.h

index b4eb2d64bf6e01a9e863b9bb939c07b0daeb8e96..8f89b89d553fa7abcbc1c2a7bb54804ccba087f6 100644 (file)
@@ -54,6 +54,7 @@ static void ssd130x_i2c_shutdown(struct i2c_client *client)
 }
 
 static const struct of_device_id ssd130x_of_match[] = {
+       /* ssd130x family */
        {
                .compatible = "sinowealth,sh1106",
                .data = &ssd130x_variants[SH1106_ID],
index 19ab4942cb33cff89139286f007fd3217d736c16..257819bccbc8212540c8d4d486cd4a32b4c99305 100644 (file)
@@ -108,6 +108,7 @@ static void ssd130x_spi_shutdown(struct spi_device *spi)
 }
 
 static const struct of_device_id ssd130x_of_match[] = {
+       /* ssd130x family */
        {
                .compatible = "sinowealth,sh1106",
                .data = &ssd130x_variants[SH1106_ID],
@@ -142,6 +143,7 @@ MODULE_DEVICE_TABLE(of, ssd130x_of_match);
  * not be needed for this driver to match the registered SPI devices.
  */
 static const struct spi_device_id ssd130x_spi_table[] = {
+       /* ssd130x family */
        { "sh1106",  SH1106_ID },
        { "ssd1305", SSD1305_ID },
        { "ssd1306", SSD1306_ID },
index d530d13eef5a7ec9a294c4fc9c9efbe2e3839186..84093bcc85843ec52ad06510d1284a05d75f71b8 100644 (file)
@@ -104,6 +104,7 @@ const struct ssd130x_deviceinfo ssd130x_variants[] = {
                .default_width = 132,
                .default_height = 64,
                .page_mode_only = 1,
+               .family_id = SSD130X_FAMILY,
        },
        [SSD1305_ID] = {
                .default_vcomh = 0x34,
@@ -111,6 +112,7 @@ const struct ssd130x_deviceinfo ssd130x_variants[] = {
                .default_dclk_frq = 7,
                .default_width = 132,
                .default_height = 64,
+               .family_id = SSD130X_FAMILY,
        },
        [SSD1306_ID] = {
                .default_vcomh = 0x20,
@@ -119,6 +121,7 @@ const struct ssd130x_deviceinfo ssd130x_variants[] = {
                .need_chargepump = 1,
                .default_width = 128,
                .default_height = 64,
+               .family_id = SSD130X_FAMILY,
        },
        [SSD1307_ID] = {
                .default_vcomh = 0x20,
@@ -127,6 +130,7 @@ const struct ssd130x_deviceinfo ssd130x_variants[] = {
                .need_pwm = 1,
                .default_width = 128,
                .default_height = 39,
+               .family_id = SSD130X_FAMILY,
        },
        [SSD1309_ID] = {
                .default_vcomh = 0x34,
@@ -134,6 +138,7 @@ const struct ssd130x_deviceinfo ssd130x_variants[] = {
                .default_dclk_frq = 10,
                .default_width = 128,
                .default_height = 64,
+               .family_id = SSD130X_FAMILY,
        }
 };
 EXPORT_SYMBOL_NS_GPL(ssd130x_variants, DRM_SSD130X);
index bbe374453605bb505164127d5fa8609e3627297d..c562c2d00c166e55c8c193f79600fe1a9e1c543f 100644 (file)
 #define SSD130X_DATA                           0x40
 #define SSD130X_COMMAND                                0x80
 
+enum ssd130x_family_ids {
+       SSD130X_FAMILY
+};
+
 enum ssd130x_variants {
+       /* ssd130x family */
        SH1106_ID,
        SSD1305_ID,
        SSD1306_ID,
@@ -42,6 +47,8 @@ struct ssd130x_deviceinfo {
        bool need_pwm;
        bool need_chargepump;
        bool page_mode_only;
+
+       enum ssd130x_family_ids family_id;
 };
 
 struct ssd130x_device {