trogdor: Add backlight support for sn65dsi86bridge for Homestar
Add backlight support in sn65dsi86bridge through the AUX channel using eDP DPCD registers, which is needed on the GOOGLE_HOMESTAR board. Change-Id: Ie700080f1feabe2d3397c38088a64cff27bfbe55 Signed-off-by: Vinod Polimera <vpolimer@codeaurora.org> Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/52663 Reviewed-by: Douglas Anderson <dianders@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
e0dbeee40f
commit
6ea8033705
|
@ -31,6 +31,14 @@
|
||||||
#define DP_MAX_SUPPORTED_RATES 8 /* 16-bit little-endian */
|
#define DP_MAX_SUPPORTED_RATES 8 /* 16-bit little-endian */
|
||||||
#define DP_LANE_COUNT_MASK 0xf
|
#define DP_LANE_COUNT_MASK 0xf
|
||||||
|
|
||||||
|
/* Backlight configuration */
|
||||||
|
#define DP_BACKLIGHT_MODE_SET 0x721
|
||||||
|
#define DP_BACKLIGHT_CONTROL_MODE_MASK 0x3
|
||||||
|
#define DP_BACKLIGHT_CONTROL_MODE_DPCD 0x2
|
||||||
|
#define DP_DISPLAY_CONTROL_REGISTER 0x720
|
||||||
|
#define DP_BACKLIGHT_ENABLE 0x1
|
||||||
|
#define DP_BACKLIGHT_BRIGHTNESS_MSB 0x722
|
||||||
|
|
||||||
/* link configuration */
|
/* link configuration */
|
||||||
#define DP_LINK_BW_SET 0x100
|
#define DP_LINK_BW_SET 0x100
|
||||||
#define DP_LINK_BW_1_62 0x06
|
#define DP_LINK_BW_1_62 0x06
|
||||||
|
@ -497,6 +505,20 @@ static void sn65dsi86_bridge_link_training(uint8_t bus, uint8_t chip)
|
||||||
printk(BIOS_ERR, "ERROR: Link training failed 10 times\n");
|
printk(BIOS_ERR, "ERROR: Link training failed 10 times\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sn65dsi86_backlight_enable(uint8_t bus, uint8_t chip)
|
||||||
|
{
|
||||||
|
uint8_t val = DP_BACKLIGHT_CONTROL_MODE_DPCD;
|
||||||
|
sn65dsi86_bridge_aux_request(bus, chip, DP_BACKLIGHT_MODE_SET, 1, DPCD_WRITE, &val);
|
||||||
|
|
||||||
|
val = 0xff;
|
||||||
|
sn65dsi86_bridge_aux_request(bus, chip, DP_BACKLIGHT_BRIGHTNESS_MSB, 1,
|
||||||
|
DPCD_WRITE, &val);
|
||||||
|
|
||||||
|
val = DP_BACKLIGHT_ENABLE;
|
||||||
|
sn65dsi86_bridge_aux_request(bus, chip, DP_DISPLAY_CONTROL_REGISTER, 1,
|
||||||
|
DPCD_WRITE, &val);
|
||||||
|
}
|
||||||
|
|
||||||
static void sn65dsi86_bridge_assr_config(uint8_t bus, uint8_t chip, int enable)
|
static void sn65dsi86_bridge_assr_config(uint8_t bus, uint8_t chip, int enable)
|
||||||
{
|
{
|
||||||
if (enable)
|
if (enable)
|
||||||
|
|
|
@ -18,5 +18,6 @@ void sn65dsi86_bridge_configure(uint8_t bus, uint8_t chip,
|
||||||
struct edid *edid, uint32_t num_of_lines,
|
struct edid *edid, uint32_t num_of_lines,
|
||||||
uint32_t dsi_bpp);
|
uint32_t dsi_bpp);
|
||||||
enum cb_err sn65dsi86_bridge_read_edid(uint8_t bus, uint8_t chip, struct edid *out);
|
enum cb_err sn65dsi86_bridge_read_edid(uint8_t bus, uint8_t chip, struct edid *out);
|
||||||
|
void sn65dsi86_backlight_enable(uint8_t bus, uint8_t chip);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -7,6 +7,11 @@ if BOARD_GOOGLE_TROGDOR_COMMON
|
||||||
config TROGDOR_REV0
|
config TROGDOR_REV0
|
||||||
def_bool n
|
def_bool n
|
||||||
|
|
||||||
|
config TROGDOR_HAS_BRIDGE_BACKLIGHT
|
||||||
|
bool
|
||||||
|
default y if BOARD_GOOGLE_HOMESTAR
|
||||||
|
default n
|
||||||
|
|
||||||
config TROGDOR_HAS_FINGERPRINT
|
config TROGDOR_HAS_FINGERPRINT
|
||||||
bool
|
bool
|
||||||
default y if BOARD_GOOGLE_COACHZ
|
default y if BOARD_GOOGLE_COACHZ
|
||||||
|
|
|
@ -83,6 +83,9 @@ static void display_init(struct edid *edid)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
sn65dsi86_bridge_configure(BRIDGE_BUS, BRIDGE_CHIP, edid, lanes, dsi_bpp);
|
sn65dsi86_bridge_configure(BRIDGE_BUS, BRIDGE_CHIP, edid, lanes, dsi_bpp);
|
||||||
|
if (CONFIG(TROGDOR_HAS_BRIDGE_BACKLIGHT))
|
||||||
|
sn65dsi86_backlight_enable(BRIDGE_BUS, BRIDGE_CHIP);
|
||||||
|
|
||||||
mdp_dsi_video_config(edid);
|
mdp_dsi_video_config(edid);
|
||||||
mdss_dsi_video_mode_config(edid, dsi_bpp);
|
mdss_dsi_video_mode_config(edid, dsi_bpp);
|
||||||
mdp_dsi_video_on();
|
mdp_dsi_video_on();
|
||||||
|
|
Loading…
Reference in New Issue