Commit ab59c6b2 authored by Yannick Fertre's avatar Yannick Fertre Committed by Raphael Gallais-Pou
Browse files

drm/stm: ltdc: add mask for lxcr register



The purpose of this mask is to simplify writing to the lxcr
register and not to forget any fields.

Signed-off-by: default avatarYannick Fertre <yannick.fertre@foss.st.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240712131423.98405-1-yannick.fertre@foss.st.com


Signed-off-by: default avatarRaphael Gallais-Pou <raphael.gallais-pou@foss.st.com>
parent 02fa62d4
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -188,6 +188,7 @@
#define LXCR_COLKEN	BIT(1)		/* Color Keying Enable */
#define LXCR_CLUTEN	BIT(4)		/* Color Look-Up Table ENable */
#define LXCR_HMEN	BIT(8)		/* Horizontal Mirroring ENable */
#define LXCR_MASK (LXCR_LEN | LXCR_COLKEN | LXCR_CLUTEN | LXCR_HMEN)

#define LXWHPCR_WHSTPOS	GENMASK(11, 0)	/* Window Horizontal StarT POSition */
#define LXWHPCR_WHSPPOS	GENMASK(27, 16)	/* Window Horizontal StoP POSition */
@@ -802,8 +803,7 @@ static void ltdc_crtc_atomic_disable(struct drm_crtc *crtc,

	/* Disable all layers */
	for (layer_index = 0; layer_index < ldev->caps.nb_layers; layer_index++)
		regmap_write_bits(ldev->regmap, LTDC_L1CR + layer_index * LAY_OFS,
				  LXCR_CLUTEN | LXCR_LEN, 0);
		regmap_write_bits(ldev->regmap, LTDC_L1CR + layer_index * LAY_OFS, LXCR_MASK, 0);

	/* disable IRQ */
	regmap_clear_bits(ldev->regmap, LTDC_IER, IER_FUWIE | IER_FUEIE | IER_RRIE | IER_TERRIE);
@@ -1468,7 +1468,7 @@ static void ltdc_plane_atomic_update(struct drm_plane *plane,
	if (newstate->rotation & DRM_MODE_REFLECT_X)
		val |= LXCR_HMEN;

	regmap_write_bits(ldev->regmap, LTDC_L1CR + lofs, LXCR_LEN | LXCR_CLUTEN | LXCR_HMEN, val);
	regmap_write_bits(ldev->regmap, LTDC_L1CR + lofs, LXCR_MASK, val);

	/* Commit shadow registers = update plane at next vblank */
	if (ldev->caps.plane_reg_shadow)
@@ -1506,7 +1506,7 @@ static void ltdc_plane_atomic_disable(struct drm_plane *plane,
	u32 lofs = plane->index * LAY_OFS;

	/* Disable layer */
	regmap_write_bits(ldev->regmap, LTDC_L1CR + lofs, LXCR_LEN | LXCR_CLUTEN |  LXCR_HMEN, 0);
	regmap_write_bits(ldev->regmap, LTDC_L1CR + lofs, LXCR_MASK, 0);

	/* Reset the layer transparency to hide any related background color */
	regmap_write_bits(ldev->regmap, LTDC_L1CACR + lofs, LXCACR_CONSTA, 0x00);