diff options
Diffstat (limited to 'drivers/video/tegra/dc/of_dc.c')
-rw-r--r-- | drivers/video/tegra/dc/of_dc.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/video/tegra/dc/of_dc.c b/drivers/video/tegra/dc/of_dc.c index aed0fda91299..4e071cf9f139 100644 --- a/drivers/video/tegra/dc/of_dc.c +++ b/drivers/video/tegra/dc/of_dc.c @@ -246,6 +246,29 @@ parse_tmds_fail: return -EINVAL; } +static u32 parse_dt_lvds_drive_strength(struct device_node *np) +{ + u32 temp[4]; + u32 drive_strength = 0; + + if(of_property_read_u32_array(np, "lvds-drive-strength", + temp, 4)) { + OF_DC_LOG("No lvds-drive-strength entry\n"); + return 0; + } + + for (int i = 0; i < 4;i++) { + if (temp[i] < 0x100) { + drive_strength += (temp[i] << i*8); + } else { + OF_DC_LOG("Invalid LVDS driver strength for lane %d\n", i); + return 0; + } + } + + return drive_strength; +} + static int parse_dt_lt(struct device_node *np, u8 *addr) { @@ -1803,6 +1826,8 @@ struct tegra_dc_platform_data pr_err("lvds/display node is NOT valid\n"); goto fail_parse; } + pdata->default_out->lvds_drive_strength = + parse_dt_lvds_drive_strength(np_target_disp); pdata->default_out->enable = dc_lvds_enable; pdata->default_out->disable = dc_lvds_disable; |