Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

+35 -10
+1 -1
drivers/video/omap2/displays/Kconfig
··· 12 12 13 13 config PANEL_DVI 14 14 tristate "DVI output" 15 - depends on OMAP2_DSS_DPI 15 + depends on OMAP2_DSS_DPI && I2C 16 16 help 17 17 Driver for external monitors, connected via DVI. The driver uses i2c 18 18 to read EDID information from the monitor.
+6
drivers/video/omap2/dss/apply.c
··· 1276 1276 1277 1277 spin_unlock_irqrestore(&data_lock, flags); 1278 1278 1279 + /* wait for overlay to be enabled */ 1280 + wait_pending_extra_info_updates(); 1281 + 1279 1282 mutex_unlock(&apply_lock); 1280 1283 1281 1284 return 0; ··· 1315 1312 dss_set_go_bits(); 1316 1313 1317 1314 spin_unlock_irqrestore(&data_lock, flags); 1315 + 1316 + /* wait for the overlay to be disabled */ 1317 + wait_pending_extra_info_updates(); 1318 1318 1319 1319 mutex_unlock(&apply_lock); 1320 1320
+23 -1
drivers/video/omap2/dss/hdmi.c
··· 165 165 166 166 DSSDBG("hdmi_runtime_get\n"); 167 167 168 + /* 169 + * HACK: Add dss_runtime_get() to ensure DSS clock domain is enabled. 170 + * This should be removed later. 171 + */ 172 + r = dss_runtime_get(); 173 + if (r < 0) 174 + goto err_get_dss; 175 + 168 176 r = pm_runtime_get_sync(&hdmi.pdev->dev); 169 177 WARN_ON(r < 0); 170 - return r < 0 ? r : 0; 178 + if (r < 0) 179 + goto err_get_hdmi; 180 + 181 + return 0; 182 + 183 + err_get_hdmi: 184 + dss_runtime_put(); 185 + err_get_dss: 186 + return r; 171 187 } 172 188 173 189 static void hdmi_runtime_put(void) ··· 194 178 195 179 r = pm_runtime_put_sync(&hdmi.pdev->dev); 196 180 WARN_ON(r < 0); 181 + 182 + /* 183 + * HACK: This is added to complement the dss_runtime_get() call in 184 + * hdmi_runtime_get(). This should be removed later. 185 + */ 186 + dss_runtime_put(); 197 187 } 198 188 199 189 int hdmi_init_display(struct omap_dss_device *dssdev)
+1 -8
drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c
··· 479 479 480 480 bool ti_hdmi_4xxx_detect(struct hdmi_ip_data *ip_data) 481 481 { 482 - int r; 483 - 484 - void __iomem *base = hdmi_core_sys_base(ip_data); 485 - 486 - /* HPD */ 487 - r = REG_GET(base, HDMI_CORE_SYS_SYS_STAT, 1, 1); 488 - 489 - return r == 1; 482 + return gpio_get_value(ip_data->hpd_gpio); 490 483 } 491 484 492 485 static void hdmi_core_init(struct hdmi_core_video_config *video_cfg,
+4
drivers/video/via/hw.c
··· 1810 1810 break; 1811 1811 } 1812 1812 1813 + /* magic required on VX900 for correct modesetting on IGA1 */ 1814 + via_write_reg_mask(VIACR, 0x45, 0x00, 0x01); 1815 + 1813 1816 /* probably this should go to the scaling code one day */ 1817 + via_write_reg_mask(VIACR, 0xFD, 0, 0x80); /* VX900 hw scale on IGA2 */ 1814 1818 viafb_write_regx(scaling_parameters, ARRAY_SIZE(scaling_parameters)); 1815 1819 1816 1820 /* Fill VPIT Parameters */