mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 18:10:52 +07:00
fbdev fixes for 3.3
It includes: - two fixes for OMAP HDMI - one fix to make new OMAP functions behave as they are supposed to - one Kconfig dependency fix - two fixes for viafb for modesetting on VX900 hardware -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.12 (GNU/Linux) iQIcBAABAgAGBQJPUTAuAAoJECSVL5KnPj1PwIoP/3BosrH3mE7hDAXLI6EoXTmo SaePt271FV+RqlG5Tjd07IDceXaCz3zf+ZyS9sKZXvGi9QNMKKs52Ah0PeWDfalM MJVtRh2FBvaSKFvSqKjN3Fzv+bHpJZwekQBLDaHYHNdtQjWNW8Nnkth6n9xNDwau Xp5owI/p9ZECoCcj/D17LF59t8kiynqKdDOmhzZ1bp/c1LgL4waSXnP5/ToQxmcL zjUrvR4u3RNDqTxJmScswyDZq4u8qLx4fovhScoPe1OpU2cVXV69UdivzoF4A30c t02ZPEE+NM5tFfPMtUNn3zCEN+I893e4ABHoZlDfzS8Ab7JJjnDFduvUzJdSPa8H 3kMZH7YmQhs1KhbrEcZPeBuxmZaNXpojRYmlbnw7w+kHtcaxVUxhR87TI8kYZIaS oqsTXmO+f9T8cMy3WbhUylj+uUpcBQYbIHd4QUhGFvylU24mrrJJQtwsPTFTElE7 CBKPavbtFMkQepeXRX0Sig/xwVcKA7UUfdvirsD4BjfxZqsOxWeBCQN/scEDcSwo KOsLN4Kc4T3On3vNHc2fdq4f+sd2rlGeB9tH/NRtt7UBjGhxK+9lD5YmiavUopyH ectsoEMXg9FMQS1GwmQZwQx7r1QXRylBRgrHV/l1XwBU/QfQp3WFqBrVTFZkw4rg 9U0wHlmQYnnU66rUChUt =+UnE -----END PGP SIGNATURE----- Merge tag 'fbdev-fixes-for-3.3-2' of git://github.com/schandinat/linux-2.6 fbdev fixes for 3.3 from Florian Tobias Schandinat It includes: - two fixes for OMAP HDMI - one fix to make new OMAP functions behave as they are supposed to - one Kconfig dependency fix - two fixes for viafb for modesetting on VX900 hardware * tag 'fbdev-fixes-for-3.3-2' of git://github.com/schandinat/linux-2.6: OMAPDSS: APPLY: make ovl_enable/disable synchronous OMAPDSS: panel-dvi: Add Kconfig dependency on I2C viafb: fix IGA1 modesetting on VX900 viafb: select HW scaling on VX900 for IGA2 OMAPDSS: HDMI: hot plug detect fix OMAPDSS: HACK: Ensure DSS clock domain gets out of idle when HDMI is enabled
This commit is contained in:
commit
d085a09cf3
@ -12,7 +12,7 @@ config PANEL_GENERIC_DPI
|
||||
|
||||
config PANEL_DVI
|
||||
tristate "DVI output"
|
||||
depends on OMAP2_DSS_DPI
|
||||
depends on OMAP2_DSS_DPI && I2C
|
||||
help
|
||||
Driver for external monitors, connected via DVI. The driver uses i2c
|
||||
to read EDID information from the monitor.
|
||||
|
@ -1276,6 +1276,9 @@ int dss_ovl_enable(struct omap_overlay *ovl)
|
||||
|
||||
spin_unlock_irqrestore(&data_lock, flags);
|
||||
|
||||
/* wait for overlay to be enabled */
|
||||
wait_pending_extra_info_updates();
|
||||
|
||||
mutex_unlock(&apply_lock);
|
||||
|
||||
return 0;
|
||||
@ -1313,6 +1316,9 @@ int dss_ovl_disable(struct omap_overlay *ovl)
|
||||
|
||||
spin_unlock_irqrestore(&data_lock, flags);
|
||||
|
||||
/* wait for the overlay to be disabled */
|
||||
wait_pending_extra_info_updates();
|
||||
|
||||
mutex_unlock(&apply_lock);
|
||||
|
||||
return 0;
|
||||
|
@ -165,9 +165,25 @@ static int hdmi_runtime_get(void)
|
||||
|
||||
DSSDBG("hdmi_runtime_get\n");
|
||||
|
||||
/*
|
||||
* HACK: Add dss_runtime_get() to ensure DSS clock domain is enabled.
|
||||
* This should be removed later.
|
||||
*/
|
||||
r = dss_runtime_get();
|
||||
if (r < 0)
|
||||
goto err_get_dss;
|
||||
|
||||
r = pm_runtime_get_sync(&hdmi.pdev->dev);
|
||||
WARN_ON(r < 0);
|
||||
return r < 0 ? r : 0;
|
||||
if (r < 0)
|
||||
goto err_get_hdmi;
|
||||
|
||||
return 0;
|
||||
|
||||
err_get_hdmi:
|
||||
dss_runtime_put();
|
||||
err_get_dss:
|
||||
return r;
|
||||
}
|
||||
|
||||
static void hdmi_runtime_put(void)
|
||||
@ -178,6 +194,12 @@ static void hdmi_runtime_put(void)
|
||||
|
||||
r = pm_runtime_put_sync(&hdmi.pdev->dev);
|
||||
WARN_ON(r < 0);
|
||||
|
||||
/*
|
||||
* HACK: This is added to complement the dss_runtime_get() call in
|
||||
* hdmi_runtime_get(). This should be removed later.
|
||||
*/
|
||||
dss_runtime_put();
|
||||
}
|
||||
|
||||
int hdmi_init_display(struct omap_dss_device *dssdev)
|
||||
|
@ -479,14 +479,7 @@ int ti_hdmi_4xxx_read_edid(struct hdmi_ip_data *ip_data,
|
||||
|
||||
bool ti_hdmi_4xxx_detect(struct hdmi_ip_data *ip_data)
|
||||
{
|
||||
int r;
|
||||
|
||||
void __iomem *base = hdmi_core_sys_base(ip_data);
|
||||
|
||||
/* HPD */
|
||||
r = REG_GET(base, HDMI_CORE_SYS_SYS_STAT, 1, 1);
|
||||
|
||||
return r == 1;
|
||||
return gpio_get_value(ip_data->hpd_gpio);
|
||||
}
|
||||
|
||||
static void hdmi_core_init(struct hdmi_core_video_config *video_cfg,
|
||||
|
@ -1810,7 +1810,11 @@ static void hw_init(void)
|
||||
break;
|
||||
}
|
||||
|
||||
/* magic required on VX900 for correct modesetting on IGA1 */
|
||||
via_write_reg_mask(VIACR, 0x45, 0x00, 0x01);
|
||||
|
||||
/* probably this should go to the scaling code one day */
|
||||
via_write_reg_mask(VIACR, 0xFD, 0, 0x80); /* VX900 hw scale on IGA2 */
|
||||
viafb_write_regx(scaling_parameters, ARRAY_SIZE(scaling_parameters));
|
||||
|
||||
/* Fill VPIT Parameters */
|
||||
|
Loading…
Reference in New Issue
Block a user