mirror of
https://github.com/torvalds/linux.git
synced 2024-09-21 07:23:06 +00:00
drm/ssd130x: Make default width and height to be controller dependent
Currently the driver hardcodes the default values to 96x16 pixels but this default resolution depends on the controller. The datasheets for the chips describes the following display controller resolutions: - SH1106: 132 x 64 Dot Matrix OLED/PLED - SSD1305: 132 x 64 Dot Matrix OLED/PLED - SSD1306: 128 x 64 Dot Matrix OLED/PLED - SSD1307: 128 x 39 Dot Matrix OLED/PLED - SSD1309: 128 x 64 Dot Matrix OLED/PLED Add this information to the devices' info structures, and use it set as a default if not defined in DT rather than hardcoding to an arbitrary value. Signed-off-by: Javier Martinez Canillas <javierm@redhat.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/20230609170941.1150941-2-javierm@redhat.com
This commit is contained in:
parent
c2807ecb52
commit
f1f288d07a
|
@ -99,29 +99,39 @@ const struct ssd130x_deviceinfo ssd130x_variants[] = {
|
|||
.default_vcomh = 0x40,
|
||||
.default_dclk_div = 1,
|
||||
.default_dclk_frq = 5,
|
||||
.default_width = 132,
|
||||
.default_height = 64,
|
||||
.page_mode_only = 1,
|
||||
},
|
||||
[SSD1305_ID] = {
|
||||
.default_vcomh = 0x34,
|
||||
.default_dclk_div = 1,
|
||||
.default_dclk_frq = 7,
|
||||
.default_width = 132,
|
||||
.default_height = 64,
|
||||
},
|
||||
[SSD1306_ID] = {
|
||||
.default_vcomh = 0x20,
|
||||
.default_dclk_div = 1,
|
||||
.default_dclk_frq = 8,
|
||||
.need_chargepump = 1,
|
||||
.default_width = 128,
|
||||
.default_height = 64,
|
||||
},
|
||||
[SSD1307_ID] = {
|
||||
.default_vcomh = 0x20,
|
||||
.default_dclk_div = 2,
|
||||
.default_dclk_frq = 12,
|
||||
.need_pwm = 1,
|
||||
.default_width = 128,
|
||||
.default_height = 39,
|
||||
},
|
||||
[SSD1309_ID] = {
|
||||
.default_vcomh = 0x34,
|
||||
.default_dclk_div = 1,
|
||||
.default_dclk_frq = 10,
|
||||
.default_width = 128,
|
||||
.default_height = 64,
|
||||
}
|
||||
};
|
||||
EXPORT_SYMBOL_NS_GPL(ssd130x_variants, DRM_SSD130X);
|
||||
|
@ -798,10 +808,10 @@ static void ssd130x_parse_properties(struct ssd130x_device *ssd130x)
|
|||
struct device *dev = ssd130x->dev;
|
||||
|
||||
if (device_property_read_u32(dev, "solomon,width", &ssd130x->width))
|
||||
ssd130x->width = 96;
|
||||
ssd130x->width = ssd130x->device_info->default_width;
|
||||
|
||||
if (device_property_read_u32(dev, "solomon,height", &ssd130x->height))
|
||||
ssd130x->height = 16;
|
||||
ssd130x->height = ssd130x->device_info->default_height;
|
||||
|
||||
if (device_property_read_u32(dev, "solomon,page-offset", &ssd130x->page_offset))
|
||||
ssd130x->page_offset = 1;
|
||||
|
|
|
@ -37,6 +37,8 @@ struct ssd130x_deviceinfo {
|
|||
u32 default_vcomh;
|
||||
u32 default_dclk_div;
|
||||
u32 default_dclk_frq;
|
||||
u32 default_width;
|
||||
u32 default_height;
|
||||
int need_pwm;
|
||||
int need_chargepump;
|
||||
bool page_mode_only;
|
||||
|
|
Loading…
Reference in New Issue
Block a user