mirror of https://github.com/torvalds/linux.git
The HPD sense mechanism in Allwinner's old HDMI encoder hardware is more
or less an input-only GPIO. Other GPIO-based HPD implementations
directly return the current state, instead of polling for a specific
state and returning the other if that times out.
Remove the I/O polling from sun4i_hdmi_connector_detect() and directly
return a known state based on the current reading. This also gets rid
of excessive CPU usage by kworker as reported on Stack Exchange [1] and
Armbian forums [2].
[1] https://superuser.com/questions/1515001/debian-10-buster-on-cubietruck-with-bug-in-sun4i-drm-hdmi
[2] https://forum.armbian.com/topic/14282-headless-systems-and-sun4i_drm_hdmi-a10a20/
Fixes:
|
||
|---|---|---|
| .. | ||
| Kconfig | ||
| Makefile | ||
| sun4i_backend.c | ||
| sun4i_backend.h | ||
| sun4i_crtc.c | ||
| sun4i_crtc.h | ||
| sun4i_dotclock.c | ||
| sun4i_dotclock.h | ||
| sun4i_drv.c | ||
| sun4i_drv.h | ||
| sun4i_framebuffer.c | ||
| sun4i_framebuffer.h | ||
| sun4i_frontend.c | ||
| sun4i_frontend.h | ||
| sun4i_hdmi.h | ||
| sun4i_hdmi_ddc_clk.c | ||
| sun4i_hdmi_enc.c | ||
| sun4i_hdmi_i2c.c | ||
| sun4i_hdmi_tmds_clk.c | ||
| sun4i_layer.c | ||
| sun4i_layer.h | ||
| sun4i_lvds.c | ||
| sun4i_lvds.h | ||
| sun4i_rgb.c | ||
| sun4i_rgb.h | ||
| sun4i_tcon.c | ||
| sun4i_tcon.h | ||
| sun4i_tv.c | ||
| sun6i_drc.c | ||
| sun6i_mipi_dsi.c | ||
| sun6i_mipi_dsi.h | ||
| sun8i_csc.c | ||
| sun8i_csc.h | ||
| sun8i_dw_hdmi.c | ||
| sun8i_dw_hdmi.h | ||
| sun8i_hdmi_phy.c | ||
| sun8i_hdmi_phy_clk.c | ||
| sun8i_mixer.c | ||
| sun8i_mixer.h | ||
| sun8i_tcon_top.c | ||
| sun8i_tcon_top.h | ||
| sun8i_ui_layer.c | ||
| sun8i_ui_layer.h | ||
| sun8i_ui_scaler.c | ||
| sun8i_ui_scaler.h | ||
| sun8i_vi_layer.c | ||
| sun8i_vi_layer.h | ||
| sun8i_vi_scaler.c | ||
| sun8i_vi_scaler.h | ||
| sunxi_engine.h | ||