diff --git a/doc/releases/migration-guide-4.3.rst b/doc/releases/migration-guide-4.3.rst index 0203fc278cc41..93be47bedfa33 100644 --- a/doc/releases/migration-guide-4.3.rst +++ b/doc/releases/migration-guide-4.3.rst @@ -82,6 +82,8 @@ Display This has now been fixed. Boards and applications that were tested or developed based on the previous sample may be affected by this change (see :github:`79996` for more information). +* SSD1363's properties using 'greyscale' now use 'grayscale'. + PTP Clock ********* diff --git a/drivers/display/display_ssd1363.c b/drivers/display/display_ssd1363.c index c85b948cde480..6618970b9a3bb 100644 --- a/drivers/display/display_ssd1363.c +++ b/drivers/display/display_ssd1363.c @@ -45,9 +45,10 @@ LOG_MODULE_REGISTER(ssd1363, CONFIG_DISPLAY_LOG_LEVEL); #define SSD1363_WRITE_RAM 0x5C #define SSD1363_READ_RAM 0x5D #define SSD1363_SET_REMAP_VALUE 0xA0 -#define SSD1363_SET_GREY_ENHANCE 0xB4 +#define SSD1363_SET_GRAY_ENHANCE 0xB4 -#define SSD1363_RESET_DELAY 100 +#define SSD1363_RESET_DELAY 100 +#define SSD1363_SET_LUT_COUNT 15 typedef int (*ssd1363_write_bus_cmd_fn)(const struct device *dev, const uint8_t cmd, const uint8_t *data, size_t len); @@ -75,10 +76,9 @@ struct ssd1363_config { uint8_t precharge_period; uint8_t precharge_config; uint16_t column_offset; - uint8_t greyscale_table[15]; - bool greyscale_table_present; + const uint8_t *grayscale_table; bool color_inversion; - bool greyscale_enhancement; + bool grayscale_enhancement; uint8_t *conversion_buf; size_t conversion_buf_size; }; @@ -156,8 +156,9 @@ static inline int ssd1363_set_hardware_config(const struct device *dev) if (err < 0) { return err; } - if (config->greyscale_table_present) { - err = config->write_cmd(dev, SSD1363_SET_LUT, config->greyscale_table, 15); + if (config->grayscale_table != NULL) { + err = config->write_cmd(dev, SSD1363_SET_LUT, config->grayscale_table, + SSD1363_SET_LUT_COUNT); if (err < 0) { return err; } @@ -178,11 +179,11 @@ static inline int ssd1363_set_hardware_config(const struct device *dev) if (err < 0) { return err; } - if (config->greyscale_enhancement) { + if (config->grayscale_enhancement) { /* Undocumented values from datasheet */ buf[0] = 0x32; buf[1] = 0x0c; - err = config->write_cmd(dev, SSD1363_SET_GREY_ENHANCE, buf, 2); + err = config->write_cmd(dev, SSD1363_SET_GRAY_ENHANCE, buf, 2); if (err < 0) { return err; } @@ -462,17 +463,15 @@ static DEVICE_API(display, ssd1363_driver_api) = { #define SSD1363_CONV_BUFFER_SIZE(node_id) \ DIV_ROUND_UP(DT_PROP(node_id, width) * CONFIG_SSD1363_CONV_BUFFER_LINES, 1) -#define SSD1363_GREYSCALE_TABLE_YES(node_id) \ - .greyscale_table = DT_PROP(node_id, greyscale_table), .greyscale_table_present = true - -#define SSD1363_GREYSCALE_TABLE_NO(node_id) .greyscale_table_present = false - -#define SSD1363_GREYSCALE_TABLE(node_id) \ - COND_CODE_1(DT_NODE_HAS_PROP(node_id, greyscale_table), \ - (SSD1363_GREYSCALE_TABLE_YES(node_id)), (SSD1363_GREYSCALE_TABLE_NO(node_id))) +#define SSD1363_GRAYSCALE_TABLE(node_id) \ + .grayscale_table = COND_CODE_1(DT_NODE_HAS_PROP(node_id, grayscale_table), \ + (ssd1363_grayscale_table_##node_id), (NULL)) #define SSD1363_DEFINE_I2C(node_id) \ static uint8_t conversion_buf##node_id[SSD1363_CONV_BUFFER_SIZE(node_id)]; \ + COND_CODE_1(DT_NODE_HAS_PROP(node_id, grayscale_table), ( \ + static const uint8_t ssd1363_grayscale_table_##node_id[SSD1363_SET_LUT_COUNT] = \ + DT_PROP(node_id, grayscale_table);), ()) \ static const struct ssd1363_config config##node_id = { \ .i2c = I2C_DT_SPEC_GET(node_id), \ .height = DT_PROP(node_id, height), \ @@ -490,8 +489,8 @@ static DEVICE_API(display, ssd1363_driver_api) = { .precharge_period = DT_PROP(node_id, precharge_period), \ .precharge_config = DT_PROP(node_id, precharge_config), \ .column_offset = DT_PROP(node_id, column_offset), \ - .greyscale_enhancement = DT_PROP(node_id, greyscale_enhancement), \ - SSD1363_GREYSCALE_TABLE(node_id), \ + .grayscale_enhancement = DT_PROP(node_id, grayscale_enhancement), \ + SSD1363_GRAYSCALE_TABLE(node_id), \ .write_cmd = ssd1363_write_bus_cmd_i2c, \ .write_pixels = ssd1363_write_pixels_i2c, \ .conversion_buf = conversion_buf##node_id, \ @@ -503,6 +502,9 @@ static DEVICE_API(display, ssd1363_driver_api) = { #define SSD1363_DEFINE_MIPI(node_id) \ static uint8_t conversion_buf##node_id[SSD1363_CONV_BUFFER_SIZE(node_id)]; \ + COND_CODE_1(DT_NODE_HAS_PROP(node_id, grayscale_table), ( \ + static const uint8_t ssd1363_grayscale_table_##node_id[SSD1363_SET_LUT_COUNT] = \ + DT_PROP(node_id, grayscale_table);), ()) \ static const struct ssd1363_config config##node_id = { \ .mipi_dev = DEVICE_DT_GET(DT_PARENT(node_id)), \ .dbi_config = MIPI_DBI_CONFIG_DT( \ @@ -522,8 +524,8 @@ static DEVICE_API(display, ssd1363_driver_api) = { .precharge_period = DT_PROP(node_id, precharge_period), \ .precharge_config = DT_PROP(node_id, precharge_config), \ .column_offset = DT_PROP(node_id, column_offset), \ - .greyscale_enhancement = DT_PROP(node_id, greyscale_enhancement), \ - SSD1363_GREYSCALE_TABLE(node_id), \ + .grayscale_enhancement = DT_PROP(node_id, grayscale_enhancement), \ + SSD1363_GRAYSCALE_TABLE(node_id), \ .write_cmd = ssd1363_write_bus_cmd_mipi, \ .write_pixels = ssd1363_write_pixels_mipi, \ .conversion_buf = conversion_buf##node_id, \ diff --git a/drivers/display/ssd1327.c b/drivers/display/ssd1327.c index dbce63a74b94d..4dec70fbf9e44 100644 --- a/drivers/display/ssd1327.c +++ b/drivers/display/ssd1327.c @@ -47,7 +47,7 @@ struct ssd1327_config { uint8_t function_selection_b; uint8_t precharge_voltage; uint8_t vcomh_voltage; - uint8_t *grayscale_table; + const uint8_t *grayscale_table; bool color_inversion; uint8_t *conversion_buf; size_t conversion_buf_size; @@ -468,7 +468,7 @@ static DEVICE_API(display, ssd1327_driver_api) = { static uint8_t conversion_buf##node_id[SSD1327_CONV_BUFFER_SIZE(node_id)]; \ static struct ssd1327_data data##node_id; \ COND_CODE_1(DT_NODE_HAS_PROP(node_id, grayscale_table), ( \ - static uint8_t ssd1327_grayscale_table_##node_id[SSD1327_SET_LUT_COUNT] = \ + static const uint8_t ssd1327_grayscale_table_##node_id[SSD1327_SET_LUT_COUNT] = \ DT_PROP(node_id, grayscale_table);), ()) \ static const struct ssd1327_config config##node_id = { \ .i2c = I2C_DT_SPEC_GET(node_id), \ @@ -499,7 +499,7 @@ static DEVICE_API(display, ssd1327_driver_api) = { static uint8_t conversion_buf##node_id[SSD1327_CONV_BUFFER_SIZE(node_id)]; \ static struct ssd1327_data data##node_id; \ COND_CODE_1(DT_NODE_HAS_PROP(node_id, grayscale_table), ( \ - static uint8_t ssd1327_grayscale_table_##node_id[SSD1327_SET_LUT_COUNT] = \ + static const uint8_t ssd1327_grayscale_table_##node_id[SSD1327_SET_LUT_COUNT] = \ DT_PROP(node_id, grayscale_table);), ()) \ static const struct ssd1327_config config##node_id = { \ .mipi_dev = DEVICE_DT_GET(DT_PARENT(node_id)), \ diff --git a/dts/bindings/display/solomon,ssd1363-common.yaml b/dts/bindings/display/solomon,ssd1363-common.yaml index 9137db544caf4..5aa1a0c786c53 100644 --- a/dts/bindings/display/solomon,ssd1363-common.yaml +++ b/dts/bindings/display/solomon,ssd1363-common.yaml @@ -90,11 +90,11 @@ properties: type: boolean description: Turn on display color inverting - greyscale-enhancement: + grayscale-enhancement: type: boolean - description: Enable greyscale enhancement, undocumented. + description: Enable grayscale enhancement, undocumented. - greyscale-table: + grayscale-table: type: uint8-array description: 15 elements array defines gamma settings for each brightness levels. It seems last element must always be 60/0x3C.