]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: mgb4: Fix CMT registers update logic
authorMartin Tůma <martin.tuma@digiteqautomotive.com>
Fri, 21 Feb 2025 12:07:42 +0000 (13:07 +0100)
committerHans Verkuil <hverkuil@xs4all.nl>
Tue, 25 Feb 2025 08:14:05 +0000 (09:14 +0100)
The CMT "magic values" registers must be updated while the CMT reset
registers are active.

Fixes: 0ab13674a9bd ("media: pci: mgb4: Added Digiteq Automotive MGB4 driver")
Cc: stable@vger.kernel.org
Signed-off-by: Martin Tůma <martin.tuma@digiteqautomotive.com>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
drivers/media/pci/mgb4/mgb4_cmt.c

index a25b68403bc6081273bf4ba6e24921d333262114..bee4bdf54d1c5ec0fccdf28d3f7f6041489c08fe 100644 (file)
@@ -206,10 +206,11 @@ u32 mgb4_cmt_set_vout_freq(struct mgb4_vout_dev *voutdev, unsigned int freq)
 
        mgb4_write_reg(video, regs->config, 0x1 | (config & ~0x3));
 
+       mgb4_mask_reg(video, regs->config, 0x100, 0x100);
+
        for (i = 0; i < ARRAY_SIZE(cmt_addrs_out[0]); i++)
                mgb4_write_reg(&voutdev->mgbdev->cmt, addr[i], reg_set[i]);
 
-       mgb4_mask_reg(video, regs->config, 0x100, 0x100);
        mgb4_mask_reg(video, regs->config, 0x100, 0x0);
 
        mgb4_write_reg(video, regs->config, config & ~0x1);
@@ -236,10 +237,11 @@ void mgb4_cmt_set_vin_freq_range(struct mgb4_vin_dev *vindev,
 
        mgb4_write_reg(video, regs->config, 0x1 | (config & ~0x3));
 
+       mgb4_mask_reg(video, regs->config, 0x1000, 0x1000);
+
        for (i = 0; i < ARRAY_SIZE(cmt_addrs_in[0]); i++)
                mgb4_write_reg(&vindev->mgbdev->cmt, addr[i], reg_set[i]);
 
-       mgb4_mask_reg(video, regs->config, 0x1000, 0x1000);
        mgb4_mask_reg(video, regs->config, 0x1000, 0x0);
 
        mgb4_write_reg(video, regs->config, config & ~0x1);