lcd: add backlight for s6 [1/1]

PD#SWPL-180759

Problem:
s6 backlight support

Solution:
add support

Verify:
s6_bq201

Change-Id: I0bc4ddb975da404c2a1ca5b264406398a401c1ea
Signed-off-by: lizhi.hu <lizhi.hu@amlogic.com>
This commit is contained in:
lizhi.hu
2024-08-15 16:13:53 +08:00
committed by Lizhi Hu
parent f040a91d5b
commit 3159ee3bfb
8 changed files with 129 additions and 164 deletions
@@ -1914,6 +1914,15 @@
};
&periphs_pinctrl {
bl_pwm_off_pins:bl_pwm_off_pin {
mux {
groups = "GPIOF_4";
function = "gpio_periphs";
drive-strength = <3>;
bias-pull-up;
};
};
i2c0_pins1:i2c0_pins1 {
mux {
groups = "i2c0_sda_e",
@@ -76,7 +76,7 @@
0 1 0 10
0 0 0 100
0xff 0 0 0>; /*ending*/
backlight_index = <0x1>;
backlight_index = <0xff>;
};
dsi_0{
model_name = "AML08012001920-02";
@@ -192,57 +192,97 @@
0 1 0 10
0 0 0 100
0xff 0 0 0>; /*ending*/
backlight_index = <0x1>;
};
dsi_lt8911{
model_name = "DSI_to_eDP_LT8911EXB";
interface = "mipi";
//<H_active, V_active, H_period, V_period, lcd_bits, width, height>
basic_setting = <1920 1080 2200 1125 8 400 300>;
//<HSync, HS_backporch, HS_pol, VSync, VS_backporch, VS_pol>
lcd_timing = <44 88 0 5 36 0>;
//<fr_adj_type clk_ss clk_auto_generate PixelClk>
clk_attr = <0xff 0 1 148500000>;
//<lane_num bit_rate \ mode_init mode_display video_mode clk_always_hs \>
mipi_attr = <4 1000 0 1 0 2 1 0>;
/* power step: type, index, value, delay(ms) */
power_on_step = <
0 0 1 10 /*vcc en*/
0 1 1 1 /*rst high*/
0 3 1 30 /*3v3 high*/
0 1 0 10 /*rst low*/
0 1 1 20 /*rst high*/
2 0 0 100
3 0 0 0
0xff 0 0 0>; /*ending*/
power_off_step = <0xff 0 0 0>; /*ending*/
extern_init = <0>;
backlight_index = <0xff>;
};
dsi_1 {
model_name = "LX70WSK40164-V0";
interface = "mipi";
basic_setting = <600 1024 940 1058 8 90 153>;
lcd_timing = <60 140 0 4 14 0>;
clk_attr = <2 0 1 60>;
mipi_attr = <4 360 0 1 0 2 1 0>;
/* dsi_init: data_type, num, data... */
dsi_init_on = <
0x39 4 0xB9 0xF1 0x12 0x87
0x39 28 0xBA 0x33 0x81 0x05 0xF9 0x0E 0x0E 0x20 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x44 0x25 0x00 0x91 0x0A 0x00 0x00 0x01 0x4F
0x01 0x00 0x00 0x37
0x39 4 0xB2 0x00 0x15 0x78
0x39 11 0xB3 0x28 0x28 0x28 0x28 0x03 0xFF 0x00 0x00 0x00 0x00
0x15 2 0xB4 0xA0
0x39 3 0xB5 0x09 0x09
0x39 3 0xB6 0x78 0x78
0x39 3 0xB8 0x26 0x22
0x15 2 0xBC 0x46
0x39 6 0xBF 0x02 0x11 0x00 0x80 0x04
0x39 10 0xC0 0x73 0x73 0x50 0x50 0x00 0x00 0x08 0x73 0x00
0x39 18 0xC1 0x54 0x00 0x32 0x32 0x77 0xF1 0x3C 0x3C 0x7E 0x7E 0xCF
0xCF 0x11 0x11 0x00 0x00 0x32
0x39 13 0xC7 0xB8 0x00 0x0A 0x00 0x00 0x00 0x00 0x80 0xED 0xC7 0x00
0xA5
0x39 5 0xC8 0x10 0x40 0x1E 0x03
0x39 2 0xCC 0x0B
0x39 35 0xE0 0x00 0x02 0x03 0x23 0x38 0x3F 0x2D 0x27 0x04 0x08 0x0A
0x0F 0x11 0x0E 0x11 0x12 0x18 0x00 0x02 0x03 0x23 0x38 0x3F
0x2D 0x27 0x04 0x08 0x0A 0x0F 0x11 0x0E 0x11 0x12 0x18
0x39 8 0xE1 0x11 0x11 0x91 0x00 0x00 0x00 0x00
0x39 15 0xE3 0x07 0x07 0x0B 0x0B 0x03 0x0B 0x00 0x00 0x00 0x00 0xFF
0x04 0xC0 0x10
0x39 64 0xE9 0xC8 0x10 0x03 0x04 0x0A 0x80 0x81 0x12 0x31 0x23 0x4F
0x81 0x80 0x81 0x37 0x08 0x00 0x04 0x08 0x00 0x00 0x00 0x00
0x04 0x08 0x00 0x00 0x00 0x88 0x94 0xF8 0x13 0x57 0x18 0x88
0x88 0x88 0x88 0x88 0x88 0x94 0xF8 0x02 0x46 0x08 0x88 0x88
0x88 0x88 0x88 0x00 0x00 0x00 0x00 0x00 0x80 0x81 0x30 0x00
0x00 0x00 0x00 0x00
0x39 64 0xEA 0x01 0x10 0x01 0x02 0x03 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x88 0x88 0x88 0x88 0x88 0x88 0x88 0x88 0x88 0x88 0x88
0x88 0x88 0x88 0x88 0x88 0x88 0x88 0x88 0x88 0x88 0x88 0x23
0x00 0x00 0x00 0xB8 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x04 0x0D 0x12 0x30 0x30 0x80 0x81 0x50 0x80
0x81 0x00 0x00 0x00
0x39 4 0xEF 0xFF 0xFF 0x01
0x05 1 0x11
0xfd 1 250
0x05 1 0x29
0xfd 1 50
0xff 0>; /*ending*/
dsi_init_off = <
0x05 1 0x28
0xfd 1 10 /*delay(ms)*/
0x05 1 0x10
0xfd 1 10 /*delay(ms)*/
0xff 0>; /*ending*/
extern_init = <0xff>; /*0xff for invalid*/
/* power step: type, index, value, delay(ms) */
power_on_step = <
0 0 1 10 /* LCD_VCC */
0 2 1 0 /* BL_EN, IO_VDD */
0 1 0 10
0 1 1 15 /* LCD_RST */
2 0 0 0
0 3 1 0 /* BL_PWM */
0xff 0 0 0>; /*ending*/
power_off_step = <
0 3 0 40
2 0 0 50
0 2 0 5
0 1 0 5
0 0 0 0
0xff 0 0 0>; /*ending*/
backlight_index = <0xff>;
};
dsi_test {
model_name = "DSI_test";
interface = "mipi";
basic_setting = <1920 1080 2200 1125 8 160 90>;
lcd_timing = <44 148 0 5 36 0>;
clk_attr = <0 0 1 165>;
mipi_attr = <4 2800 0 1 0 0 1 0>;
mipi_attr = <4 2500 0 1 0 0 1 0>;
/* dsi_init: data_type, num, data... */
dsi_init_on = <
0x05 1 0x11
0xff 200
0x05 1 0x29
0xff 20
0xff 0xff>; /* ending flag */
dsi_init_off = <
0x05 1 0x28
0xff 10
0x05 1 0x10
0xff 10
0xff 0xff>; /* ending flag */
dsi_init_on = <0xff 0xff>; /* ending flag */
dsi_init_off = <0xff 0xff>; /* ending flag */
/* extern_init: 0xff for invalid */
extern_init = <0xff>;
/* power step: type,index,value,delay(ms) */
@@ -312,18 +352,10 @@
};
lcd_extern{
compatible = "amlogic, lcd_extern";
status = "okay";
status = "disabled";
index = <0>;
key_valid = <0>;
i2c_bus = "i2c_bus_a";
extern_0{
index = <0>;
extern_name = "LT8911EXB";
status = "okay";
type = <0>; /* 0=i2c, 1=spi, 2=mipi */
i2c_address = <0x29>;
};
};
backlight{
@@ -332,19 +364,21 @@
index = <0>;
key_valid = <0>;
pinctrl-names = "pwm_on","pwm_off";
// pinctrl-0 = <&pwm_e_pins>; /* GPIOY_1*/
// pinctrl-1 = <&bl_pwm_off_pins>; /* GPIOY_1*/
//pinctrl-0 = <&pwm_e_pins1>; /* GPIOF_4*/
//pinctrl-1 = <&bl_pwm_off_pins>; /* GPIOY_1*/
pinctrl_version = <2>; /* for uboot */
interrupts = <0 197 1>, <0 194 1>;
interrupt-names = "vsync","vsync2";
/*bl_pwm_config = <&bl_pwm_conf>; */
bl_pwm_config = <&bl_pwm_conf>;
/* pwm port: PWM_A, PWM_B, PWM_C, PWM_D, PWM_E, PWM_F, PWM_VS*/
/* power index:(point gpios_index, 0xff=invalid) */
/* power value:(0=output low, 1=output high, 2=input) */
/* power delay:(unit in ms) */
bl-gpios = <&gpio GPIOA_5 GPIO_ACTIVE_HIGH>, //LCD_BL_EN_I2S_DOUT_7
<&gpio GPIOA_11 GPIO_ACTIVE_HIGH>; //LCD_BL_PWM_LINE_IN_DETECT
bl_gpio_names = "GPIOA_5", "GPIOA_11";
<&gpio GPIOA_11 GPIO_ACTIVE_HIGH>, //LCD_BL_PWM_LINE_IN_DETECT
<&gpio GPIOF_4 GPIO_ACTIVE_HIGH>; //LCD_BL_PWM_TEST_ON_sta_LED
bl_gpio_names = "GPIOA_5", "GPIOA_11", "GPIOF_4";
backlight_0{
index = <0>;
@@ -356,15 +390,25 @@
bl_power_attr = <0 /*en_gpio_index*/
1 0 /*on_value, off_value*/
200 200>; /*on_delay(ms), off_delay(ms)*/
bl_pwm_port = "PWM_E";
bl_pwm_port = "PWM_C";
bl_pwm_attr = <1 /*pwm_method(0=negative, 1=positive)*/
180 /*pwm_freq(pwm:Hz, pwm_vs:multiple of vs)*/
100 25>; /*duty_max(%), duty_min(%)*/
bl_pwm_power = <1 0 /*pwm_gpio_index, pwm_gpio_off*/
2000 /*pwm_freq(pwm:Hz, pwm_vs:multiple of vs)*/
100 5>; /*duty_max(%), duty_min(%)*/
bl_pwm_power = <2 0 /*pwm_gpio_index, pwm_gpio_off*/
10 10>; /*pwm_on_delay(ms), pwm_off_delay(ms)*/
en_sequence_reverse = <0>; /* 1 for reverse */
};
};
bl_pwm_conf:bl_pwm_conf{
pwm_channel_0 {
pwm_port = "PWM_C";
pwms = <&pwm_c MESON_PWM_0 30040 0>;
};
};
}; /* end of / */
//&pwm_c {
// status = "okay";
//};
+10
View File
@@ -4209,6 +4209,12 @@ static struct bl_data_s bl_data_txhd2 = {
.pwm_vs_flag = 1,
};
static struct bl_data_s bl_data_s6 = {
.chip_type = LCD_CHIP_S6,
.chip_name = "s6",
.pwm_vs_flag = 1,
};
static const struct of_device_id bl_dt_match_table[] = {
{
.compatible = "amlogic, backlight-axg",
@@ -4276,6 +4282,10 @@ static const struct of_device_id bl_dt_match_table[] = {
.compatible = "amlogic, backlight-txhd2",
.data = &bl_data_txhd2,
},
{
.compatible = "amlogic, backlight-s6",
.data = &bl_data_s6,
},
{}
};
#endif
-100
View File
@@ -10,16 +10,6 @@ menuconfig AMLOGIC_LCD_EXTERN
through the panel interface to write data to the LCD,
make its initialization
config AMLOGIC_LCD_EXTERN_I2C_T5800Q
bool "lcd external i2c T5800Q init driver"
default n
depends on AMLOGIC_LCD_EXTERN
help
Amlogic LCD external i2c_T5800Q init driver support
Once the power on, according to the timing requirements,
through the i2c interface to write data to the LCD,
make its initialization
config AMLOGIC_LCD_EXTERN_I2C_ANX6862_7911
bool "lcd external i2c ANX6862_7911 init driver"
default n
@@ -30,26 +20,6 @@ config AMLOGIC_LCD_EXTERN_I2C_ANX6862_7911
through the i2c interface to write data to the LCD,
make its initialization
config AMLOGIC_LCD_EXTERN_I2C_DLPC3439
bool "lcd external i2c DLPC3439 init driver"
default n
depends on AMLOGIC_LCD_EXTERN
help
Amlogic LCD external i2c_DLPC3439 init driver support
Once the power on, according to the timing requirements,
through the i2c interface to write data to the LCD,
make its initialization
config AMLOGIC_LCD_EXTERN_I2C_ANX6345
bool "lcd external i2c ANX6345 init driver"
default n
depends on AMLOGIC_LCD_EXTERN
help
Amlogic LCD external i2c_ANX6345 init driver support
Once the power on, according to the timing requirements,
through the i2c interface to write data to the LCD,
make its initialization
config AMLOGIC_LCD_EXTERN_I2C_CS602
bool "lcd external i2c CS602 init driver"
default n
@@ -69,73 +39,3 @@ config AMLOGIC_LCD_EXTERN_I2C_OLED
Once the power on, according to the timing requirements,
through the i2c interface to write data to the LCD,
make its initialization
config AMLOGIC_LCD_EXTERN_SPI_LD070WS2
bool "lcd external spi LD070WS2 init driver"
default n
depends on AMLOGIC_LCD_EXTERN
help
Amlogic LCD external spi_LD070WS2 init driver support
Once the power on, according to the timing requirements,
through the spi interface to write data to the LCD,
make its initialization
config AMLOGIC_LCD_EXTERN_MIPI_KD080D13
bool "lcd external mipi KD080D13 init driver"
default n
depends on AMLOGIC_LCD_EXTERN
help
Amlogic LCD external mipi_KD080D13 init driver support
Once the power on, according to the timing requirements,
through the mipi interface to write data to the LCD,
make its initialization
config AMLOGIC_LCD_EXTERN_MIPI_N070ICN
bool "lcd external mipi N070ICN init driver"
default n
depends on AMLOGIC_LCD_EXTERN
help
Amlogic LCD external mipi_N070ICN init driver support
Once the power on, according to the timing requirements,
through the mipi interface to write data to the LCD,
make its initialization
config AMLOGIC_LCD_EXTERN_MIPI_TV070WSM
bool "lcd external mipi TV070WSM init driver"
default n
depends on AMLOGIC_LCD_EXTERN
help
Amlogic LCD external mipi_TV070WSM init driver support
Once the power on, according to the timing requirements,
through the mipi interface to write data to the LCD,
make its initialization
config AMLOGIC_LCD_EXTERN_MIPI_ST7701
bool "lcd external mipi ST7701 init driver"
default n
depends on AMLOGIC_LCD_EXTERN
help
Amlogic LCD external mipi_ST7701 init driver support
Once the power on, according to the timing requirements,
through the mipi interface to write data to the LCD,
make its initialization
config AMLOGIC_LCD_EXTERN_MIPI_P070ACB
bool "lcd external mipi P070ACB init driver"
default n
depends on AMLOGIC_LCD_EXTERN
help
Amlogic LCD external mipi_P070ACB init driver support
Once the power on, according to the timing requirements,
through the mipi interface to write data to the LCD,
make its initialization
config AMLOGIC_LCD_EXTERN_MIPI_TL050FHV02CT
bool "lcd external mipi TL050FHV02CT init driver"
default n
depends on AMLOGIC_LCD_EXTERN
help
Amlogic LCD external mipi_TL050FHV02CT init driver support
Once the power on, according to the timing requirements,
through the mipi interface to write data to the LCD,
make its initialization
+2 -2
View File
@@ -6,6 +6,6 @@ $(MEDIA_MODULE_NAME)-$(CONFIG_AMLOGIC_LCD_EXTERN) += vout/lcd/lcd_extern/ext_spi
$(MEDIA_MODULE_NAME)-$(CONFIG_AMLOGIC_LCD_EXTERN) += vout/lcd/lcd_extern/ext_func.o
$(MEDIA_MODULE_NAME)-$(CONFIG_AMLOGIC_LCD_EXTERN) += vout/lcd/lcd_extern/ext_default.o
$(MEDIA_MODULE_NAME)-$(CONFIG_AMLOGIC_LCD_EXTERN) += vout/lcd/lcd_extern/mipi_default.o
$(MEDIA_MODULE_NAME)-$(CONFIG_AMLOGIC_LCD_EXTERN_I2C_ANX6862_7911) += vout/lcd/lcd_extern/i2c_ANX6862_7911.o
$(MEDIA_MODULE_NAME)-$(CONFIG_AMLOGIC_LCD_EXTERN_I2C_CS602) += vout/lcd/lcd_extern/i2c_CS602.o
$(MEDIA_MODULE_NAME)-$(CONFIG_AMLOGIC_LCD_EXTERN_I2C_OLED) += vout/lcd/lcd_extern/i2c_oled.o
include $(COMMON_DRIVERS_DIR)/drivers/media/vout/lcd/lcd_extern/external_chip/Makefile
@@ -0,0 +1,2 @@
$(MEDIA_MODULE_NAME)-$(CONFIG_AMLOGIC_LCD_EXTERN_I2C_ANX6862_7911) += vout/lcd/lcd_extern/i2c_ANX6862_7911.o
$(MEDIA_MODULE_NAME)-$(CONFIG_AMLOGIC_LCD_EXTERN_I2C_CS602) += vout/lcd/lcd_extern/i2c_CS602.o
@@ -15,7 +15,7 @@
#include <linux/slab.h>
#include <linux/of.h>
#include <linux/amlogic/media/vout/lcd/lcd_extern.h>
#include "lcd_extern.h"
#include "../lcd_extern.h"
#define LCD_EXTERN_NAME "i2c_ANX6862_7911"
@@ -14,7 +14,7 @@
#include <linux/slab.h>
#include <linux/of.h>
#include <linux/amlogic/media/vout/lcd/lcd_extern.h>
#include "lcd_extern.h"
#include "../lcd_extern.h"
#define LCD_EXTERN_NAME "i2c_CS602"