mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-11 13:27:06 +09:00
video: tegra: transmute HDMI modes into supported ones
Change-Id: I37222e9d1617a0ace062e05740365cfe5c0c2af8 Signed-off-by: Erik Gilling <konkers@android.com>
This commit is contained in:
@@ -391,23 +391,26 @@ static void hdmi_dumpregs(struct tegra_dc_hdmi_data *hdmi)
|
||||
static bool tegra_dc_hdmi_mode_equal(const struct fb_videomode *mode1,
|
||||
const struct fb_videomode *mode2)
|
||||
{
|
||||
int diff = (s64)mode1->pixclock - (s64)mode2->pixclock;
|
||||
|
||||
return mode1->xres == mode2->xres &&
|
||||
mode1->yres == mode2->yres &&
|
||||
diff < PIXCLOCK_TOLERANCE &&
|
||||
diff > -PIXCLOCK_TOLERANCE &&
|
||||
mode1->vmode == mode2->vmode;
|
||||
}
|
||||
|
||||
static bool tegra_dc_hdmi_mode_filter(struct fb_videomode *mode)
|
||||
{
|
||||
int i;
|
||||
int clocks;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(tegra_dc_hdmi_supported_modes); i++) {
|
||||
if (tegra_dc_hdmi_mode_equal(&tegra_dc_hdmi_supported_modes[i],
|
||||
mode))
|
||||
mode)) {
|
||||
memcpy(mode, &tegra_dc_hdmi_supported_modes[i], sizeof(*mode));
|
||||
mode->flag = FB_MODE_IS_DETAILED;
|
||||
clocks = (mode->left_margin + mode->xres + mode->right_margin + mode->hsync_len) *
|
||||
(mode->upper_margin + mode->yres + mode->lower_margin + mode->vsync_len);
|
||||
mode->refresh = (PICOS2KHZ(mode->pixclock) * 1000) / clocks;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user