]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: stm32: dcmipp: bytecap: remove useless cmier variable
authorAlain Volmat <alain.volmat@foss.st.com>
Fri, 19 Dec 2025 14:30:40 +0000 (15:30 +0100)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Fri, 16 Jan 2026 13:08:52 +0000 (14:08 +0100)
The struct dcmipp_bytecap_device embeds a cmier variable which is
actually only set once and then used in several places for interrupt
mask or interrupt enable/disable. Use the DCMIPP_CMIER_P0ALL
bitfield macro directly instead of using it through the cmier
variable.

There is also no need to mask again vcap->cmsr2 against enabled
interrupts bit since this has already been done when storing the
interrupt status into the cmsr2 variable.

Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
drivers/media/platform/st/stm32/stm32-dcmipp/dcmipp-bytecap.c

index dcb791c56d4c8615636c749dd0e08deb56dd8934..19e6b187be223afae527ade5315736ca5a50e99e 100644 (file)
@@ -147,7 +147,6 @@ struct dcmipp_bytecap_device {
 
        void __iomem *regs;
 
-       u32 cmier;
        u32 cmsr2;
 
        struct {
@@ -443,8 +442,7 @@ static int dcmipp_bytecap_start_streaming(struct vb2_queue *vq,
        dcmipp_start_capture(vcap, vcap->next);
 
        /* Enable interruptions */
-       vcap->cmier |= DCMIPP_CMIER_P0ALL;
-       reg_set(vcap, DCMIPP_CMIER, vcap->cmier);
+       reg_set(vcap, DCMIPP_CMIER, DCMIPP_CMIER_P0ALL);
 
        vcap->state = DCMIPP_RUNNING;
 
@@ -500,7 +498,7 @@ static void dcmipp_bytecap_stop_streaming(struct vb2_queue *vq)
        media_pipeline_stop(vcap->vdev.entity.pads);
 
        /* Disable interruptions */
-       reg_clear(vcap, DCMIPP_CMIER, vcap->cmier);
+       reg_clear(vcap, DCMIPP_CMIER, DCMIPP_CMIER_P0ALL);
 
        /* Stop capture */
        reg_clear(vcap, DCMIPP_P0FCTCR, DCMIPP_P0FCTCR_CPTREQ);
@@ -749,23 +747,20 @@ static irqreturn_t dcmipp_bytecap_irq_thread(int irq, void *arg)
        struct dcmipp_bytecap_device *vcap =
                        container_of(arg, struct dcmipp_bytecap_device, ved);
        size_t bytesused = 0;
-       u32 cmsr2;
 
        spin_lock_irq(&vcap->irqlock);
 
-       cmsr2 = vcap->cmsr2 & vcap->cmier;
-
        /*
         * If we have an overrun, a frame-end will probably not be generated,
         * in that case the active buffer will be recycled as next buffer by
         * the VSYNC handler
         */
-       if (cmsr2 & DCMIPP_CMSR2_P0OVRF) {
+       if (vcap->cmsr2 & DCMIPP_CMSR2_P0OVRF) {
                vcap->count.errors++;
                vcap->count.overrun++;
        }
 
-       if (cmsr2 & DCMIPP_CMSR2_P0FRAMEF) {
+       if (vcap->cmsr2 & DCMIPP_CMSR2_P0FRAMEF) {
                vcap->count.frame++;
 
                /* Read captured buffer size */
@@ -773,7 +768,7 @@ static irqreturn_t dcmipp_bytecap_irq_thread(int irq, void *arg)
                dcmipp_bytecap_process_frame(vcap, bytesused);
        }
 
-       if (cmsr2 & DCMIPP_CMSR2_P0VSYNCF) {
+       if (vcap->cmsr2 & DCMIPP_CMSR2_P0VSYNCF) {
                vcap->count.vsync++;
                if (vcap->state == DCMIPP_WAIT_FOR_BUFFER) {
                        vcap->count.underrun++;
@@ -804,7 +799,7 @@ static irqreturn_t dcmipp_bytecap_irq_callback(int irq, void *arg)
                        container_of(arg, struct dcmipp_bytecap_device, ved);
 
        /* Store interrupt status register */
-       vcap->cmsr2 = reg_read(vcap, DCMIPP_CMSR2) & vcap->cmier;
+       vcap->cmsr2 = reg_read(vcap, DCMIPP_CMSR2) & DCMIPP_CMIER_P0ALL;
        vcap->count.it++;
 
        /* Clear interrupt */