Commit ef824286 authored by Yannick Fertre's avatar Yannick Fertre Committed by Raphael Gallais-Pou

drm/stm: ltdc: remove reload interrupt

The reload interrupt is not used by the driver. To avoid
unnecessary calls of the interrupt routine, don't enable it.
Solve small typo and add mask to simplify the driver.
Signed-off-by: default avatarYannick Fertre <yannick.fertre@foss.st.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240712131453.98597-1-yannick.fertre@foss.st.comSigned-off-by: default avatarRaphael Gallais-Pou <raphael.gallais-pou@foss.st.com>
parent ab59c6b2
...@@ -170,6 +170,7 @@ ...@@ -170,6 +170,7 @@
#define IER_RRIE BIT(3) /* Register Reload Interrupt Enable */ #define IER_RRIE BIT(3) /* Register Reload Interrupt Enable */
#define IER_FUEIE BIT(6) /* Fifo Underrun Error Interrupt Enable */ #define IER_FUEIE BIT(6) /* Fifo Underrun Error Interrupt Enable */
#define IER_CRCIE BIT(7) /* CRC Error Interrupt Enable */ #define IER_CRCIE BIT(7) /* CRC Error Interrupt Enable */
#define IER_MASK (IER_LIE | IER_FUWIE | IER_TERRIE | IER_RRIE | IER_FUEIE | IER_CRCIE)
#define CPSR_CYPOS GENMASK(15, 0) /* Current Y position */ #define CPSR_CYPOS GENMASK(15, 0) /* Current Y position */
...@@ -781,7 +782,7 @@ static void ltdc_crtc_atomic_enable(struct drm_crtc *crtc, ...@@ -781,7 +782,7 @@ static void ltdc_crtc_atomic_enable(struct drm_crtc *crtc,
regmap_write(ldev->regmap, LTDC_BCCR, BCCR_BCBLACK); regmap_write(ldev->regmap, LTDC_BCCR, BCCR_BCBLACK);
/* Enable IRQ */ /* Enable IRQ */
regmap_set_bits(ldev->regmap, LTDC_IER, IER_FUWIE | IER_FUEIE | IER_RRIE | IER_TERRIE); regmap_set_bits(ldev->regmap, LTDC_IER, IER_FUWIE | IER_FUEIE | IER_TERRIE);
/* Commit shadow registers = update planes at next vblank */ /* Commit shadow registers = update planes at next vblank */
if (!ldev->caps.plane_reg_shadow) if (!ldev->caps.plane_reg_shadow)
...@@ -805,8 +806,8 @@ static void ltdc_crtc_atomic_disable(struct drm_crtc *crtc, ...@@ -805,8 +806,8 @@ static void ltdc_crtc_atomic_disable(struct drm_crtc *crtc,
for (layer_index = 0; layer_index < ldev->caps.nb_layers; layer_index++) for (layer_index = 0; layer_index < ldev->caps.nb_layers; layer_index++)
regmap_write_bits(ldev->regmap, LTDC_L1CR + layer_index * LAY_OFS, LXCR_MASK, 0); regmap_write_bits(ldev->regmap, LTDC_L1CR + layer_index * LAY_OFS, LXCR_MASK, 0);
/* disable IRQ */ /* Disable IRQ */
regmap_clear_bits(ldev->regmap, LTDC_IER, IER_FUWIE | IER_FUEIE | IER_RRIE | IER_TERRIE); regmap_clear_bits(ldev->regmap, LTDC_IER, IER_FUWIE | IER_FUEIE | IER_TERRIE);
/* immediately commit disable of layers before switching off LTDC */ /* immediately commit disable of layers before switching off LTDC */
if (!ldev->caps.plane_reg_shadow) if (!ldev->caps.plane_reg_shadow)
...@@ -1987,13 +1988,8 @@ int ltdc_load(struct drm_device *ddev) ...@@ -1987,13 +1988,8 @@ int ltdc_load(struct drm_device *ddev)
goto err; goto err;
} }
/* Disable interrupts */ /* Disable all interrupts */
if (ldev->caps.fifo_threshold) regmap_clear_bits(ldev->regmap, LTDC_IER, IER_MASK);
regmap_clear_bits(ldev->regmap, LTDC_IER, IER_LIE | IER_RRIE | IER_FUWIE |
IER_TERRIE);
else
regmap_clear_bits(ldev->regmap, LTDC_IER, IER_LIE | IER_RRIE | IER_FUWIE |
IER_TERRIE | IER_FUEIE);
DRM_DEBUG_DRIVER("ltdc hw version 0x%08x\n", ldev->caps.hw_version); DRM_DEBUG_DRIVER("ltdc hw version 0x%08x\n", ldev->caps.hw_version);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment