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:
		
				
					committed by
					
						
						Julius Werner
					
				
			
			
				
	
			
			
			
						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();
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user