[v2,02/19] media: ti-vpe: cal: improve enable_irqs
Commit Message
IRQENABLE_SET registers are (usually) not meant to be read, only written
to. The current driver needlessly uses read-modify-write cycle to enable
IRQ bits.
The read-modify-write has no bad side effects here, but it's still
better to clean this up by only using write.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Tested-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
---
drivers/media/platform/ti-vpe/cal.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
Comments
Tomi,
Thanks for the patch.
On 3/19/20 2:50 AM, Tomi Valkeinen wrote:
> IRQENABLE_SET registers are (usually) not meant to be read, only written
> to. The current driver needlessly uses read-modify-write cycle to enable
> IRQ bits.
>
> The read-modify-write has no bad side effects here, but it's still
> better to clean this up by only using write.
>
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
> Tested-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Reviewed-by: Benoit Parrot <bparrot@ti.com>
> ---
> drivers/media/platform/ti-vpe/cal.c | 16 ++++++++--------
> 1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/media/platform/ti-vpe/cal.c b/drivers/media/platform/ti-vpe/cal.c
> index 9dd6de14189b..76d55c76d938 100644
> --- a/drivers/media/platform/ti-vpe/cal.c
> +++ b/drivers/media/platform/ti-vpe/cal.c
> @@ -706,16 +706,16 @@ static void cal_quickdump_regs(struct cal_dev *dev)
> */
> static void enable_irqs(struct cal_ctx *ctx)
> {
> + u32 val;
> +
> /* Enable IRQ_WDMA_END 0/1 */
> - reg_write_field(ctx->dev,
> - CAL_HL_IRQENABLE_SET(2),
> - CAL_HL_IRQ_ENABLE,
> - CAL_HL_IRQ_MASK(ctx->csi2_port));
> + val = 0;
> + set_field(&val, CAL_HL_IRQ_ENABLE, CAL_HL_IRQ_MASK(ctx->csi2_port));
> + reg_write(ctx->dev, CAL_HL_IRQENABLE_SET(2), val);
> /* Enable IRQ_WDMA_START 0/1 */
> - reg_write_field(ctx->dev,
> - CAL_HL_IRQENABLE_SET(3),
> - CAL_HL_IRQ_ENABLE,
> - CAL_HL_IRQ_MASK(ctx->csi2_port));
> + val = 0;
> + set_field(&val, CAL_HL_IRQ_ENABLE, CAL_HL_IRQ_MASK(ctx->csi2_port));
> + reg_write(ctx->dev, CAL_HL_IRQENABLE_SET(3), val);
> /* Todo: Add VC_IRQ and CSI2_COMPLEXIO_IRQ handling */
> reg_write(ctx->dev, CAL_CSI2_VC_IRQENABLE(1), 0xFF000000);
> }
>
@@ -706,16 +706,16 @@ static void cal_quickdump_regs(struct cal_dev *dev)
*/
static void enable_irqs(struct cal_ctx *ctx)
{
+ u32 val;
+
/* Enable IRQ_WDMA_END 0/1 */
- reg_write_field(ctx->dev,
- CAL_HL_IRQENABLE_SET(2),
- CAL_HL_IRQ_ENABLE,
- CAL_HL_IRQ_MASK(ctx->csi2_port));
+ val = 0;
+ set_field(&val, CAL_HL_IRQ_ENABLE, CAL_HL_IRQ_MASK(ctx->csi2_port));
+ reg_write(ctx->dev, CAL_HL_IRQENABLE_SET(2), val);
/* Enable IRQ_WDMA_START 0/1 */
- reg_write_field(ctx->dev,
- CAL_HL_IRQENABLE_SET(3),
- CAL_HL_IRQ_ENABLE,
- CAL_HL_IRQ_MASK(ctx->csi2_port));
+ val = 0;
+ set_field(&val, CAL_HL_IRQ_ENABLE, CAL_HL_IRQ_MASK(ctx->csi2_port));
+ reg_write(ctx->dev, CAL_HL_IRQENABLE_SET(3), val);
/* Todo: Add VC_IRQ and CSI2_COMPLEXIO_IRQ handling */
reg_write(ctx->dev, CAL_CSI2_VC_IRQENABLE(1), 0xFF000000);
}