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

drm/exynos: dsi: set TE GPIO IRQ status as IRQ_NOAUTOEN

The exynos_dsi_te_irq_handler() works only dsi(DPMS) is on.
So it is enough to enable and disable TE GPIO IRQ in
exynos_dsi_enable(disable)_irq() like DSI IRQ.

Signed-off-by: YoungJun Cho <yj44.cho@samsung.com>
Acked-by: Inki Dae <inki.dae@samsung.com>a
Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>

authored by

YoungJun Cho and committed by
Inki Dae
0cef83a5 ecb84157

+5 -8
+5 -8
drivers/gpu/drm/exynos/exynos_drm_dsi.c
··· 1155 1155 static int exynos_dsi_register_te_irq(struct exynos_dsi *dsi) 1156 1156 { 1157 1157 int ret; 1158 + int te_gpio_irq; 1158 1159 1159 1160 dsi->te_gpio = of_get_named_gpio(dsi->panel_node, "te-gpios", 0); 1160 1161 if (!gpio_is_valid(dsi->te_gpio)) { ··· 1170 1169 goto out; 1171 1170 } 1172 1171 1173 - /* 1174 - * This TE GPIO IRQ should not be set to IRQ_NOAUTOEN, because panel 1175 - * calls drm_panel_init() first then calls mipi_dsi_attach() in probe(). 1176 - * It means that te_gpio is invalid when exynos_dsi_enable_irq() is 1177 - * called by drm_panel_init() before panel is attached. 1178 - */ 1179 - ret = request_threaded_irq(gpio_to_irq(dsi->te_gpio), 1180 - exynos_dsi_te_irq_handler, NULL, 1172 + te_gpio_irq = gpio_to_irq(dsi->te_gpio); 1173 + 1174 + irq_set_status_flags(te_gpio_irq, IRQ_NOAUTOEN); 1175 + ret = request_threaded_irq(te_gpio_irq, exynos_dsi_te_irq_handler, NULL, 1181 1176 IRQF_TRIGGER_RISING, "TE", dsi); 1182 1177 if (ret) { 1183 1178 dev_err(dsi->dev, "request interrupt failed with %d\n", ret);