Commit 7cee157b authored by Chen-Yu Tsai's avatar Chen-Yu Tsai Committed by Javier Martinez Canillas

drm/ssd130x: Add support for SINO WEALTH SH1106

The SINO WEALTH SH1106 is an OLED display driver that is somewhat
compatible with the SSD1306. It supports a slightly wider display,
at 132 instead of 128 pixels. The basic commands are the same, but
the SH1106 doesn't support the horizontal or vertical address modes.

Add support for this display driver. The default values for some of
the hardware settings are taken from the datasheet.
Signed-off-by: default avatarChen-Yu Tsai <wens@csie.org>
Acked-by: default avatarJavier Martinez Canillas <javierm@redhat.com>
Signed-off-by: default avatarJavier Martinez Canillas <javierm@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220406172956.3953-5-wens@kernel.org
parent b0daaa5c
...@@ -5,9 +5,9 @@ config DRM_SSD130X ...@@ -5,9 +5,9 @@ config DRM_SSD130X
select DRM_GEM_SHMEM_HELPER select DRM_GEM_SHMEM_HELPER
select DRM_KMS_HELPER select DRM_KMS_HELPER
help help
DRM driver for the SSD1305, SSD1306, SSD1307 and SSD1309 Solomon DRM driver for the SSD130x Solomon and SINO WEALTH SH110x OLED
OLED controllers. This is only for the core driver, a driver for controllers. This is only for the core driver, a driver for the
the appropriate bus transport in your chip also must be selected. appropriate bus transport in your chip also must be selected.
If M is selected the module will be called ssd130x. If M is selected the module will be called ssd130x.
...@@ -16,6 +16,7 @@ config DRM_SSD130X_I2C ...@@ -16,6 +16,7 @@ config DRM_SSD130X_I2C
depends on DRM_SSD130X && I2C depends on DRM_SSD130X && I2C
select REGMAP_I2C select REGMAP_I2C
help help
Say Y here if the SSD130x OLED display is connected via I2C bus. Say Y here if the SSD130x or SH110x OLED display is connected via
I2C bus.
If M is selected the module will be called ssd130x-i2c. If M is selected the module will be called ssd130x-i2c.
...@@ -53,6 +53,13 @@ static void ssd130x_i2c_shutdown(struct i2c_client *client) ...@@ -53,6 +53,13 @@ static void ssd130x_i2c_shutdown(struct i2c_client *client)
ssd130x_shutdown(ssd130x); ssd130x_shutdown(ssd130x);
} }
static struct ssd130x_deviceinfo ssd130x_sh1106_deviceinfo = {
.default_vcomh = 0x40,
.default_dclk_div = 1,
.default_dclk_frq = 5,
.page_mode_only = 1,
};
static struct ssd130x_deviceinfo ssd130x_ssd1305_deviceinfo = { static struct ssd130x_deviceinfo ssd130x_ssd1305_deviceinfo = {
.default_vcomh = 0x34, .default_vcomh = 0x34,
.default_dclk_div = 1, .default_dclk_div = 1,
...@@ -80,6 +87,10 @@ static struct ssd130x_deviceinfo ssd130x_ssd1309_deviceinfo = { ...@@ -80,6 +87,10 @@ static struct ssd130x_deviceinfo ssd130x_ssd1309_deviceinfo = {
}; };
static const struct of_device_id ssd130x_of_match[] = { static const struct of_device_id ssd130x_of_match[] = {
{
.compatible = "sinowealth,sh1106-i2c",
.data = &ssd130x_sh1106_deviceinfo,
},
{ {
.compatible = "solomon,ssd1305fb-i2c", .compatible = "solomon,ssd1305fb-i2c",
.data = &ssd130x_ssd1305_deviceinfo, .data = &ssd130x_ssd1305_deviceinfo,
......
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