]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
media: atomisp: Get rid of PCI device ID hack check
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Tue, 2 Apr 2024 20:44:47 +0000 (21:44 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Fri, 26 Apr 2024 09:25:50 +0000 (10:25 +0100)
Always check exact PCI ID match and drop hack checks.

Link: https://lore.kernel.org/r/20240402204447.294280-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/staging/media/atomisp/pci/atomisp_internal.h
drivers/staging/media/atomisp/pci/atomisp_v4l2.c

index ca8ed3a6b9b8ee266cd154f3cd4217f222e79142..d6e86d013be93b19292c37e4d4f7656c7b26e6e6 100644 (file)
        (((isp)->media_dev.hw_revision & ATOMISP_HW_REVISION_MASK) == \
         ((rev) << ATOMISP_HW_REVISION_SHIFT))
 
-#define ATOMISP_PCI_DEVICE_SOC_MASK    0xfff8
+#define ATOMISP_PCI_DEVICE_SOC_BYT     0x0f38
 /* MRFLD with 0x1178: ISP freq can burst to 457MHz */
 #define ATOMISP_PCI_DEVICE_SOC_MRFLD   0x1178
 /* MRFLD with 0x1179: max ISP freq limited to 400MHz */
 #define ATOMISP_PCI_DEVICE_SOC_MRFLD_1179      0x1179
 /* MRFLD with 0x117a: max ISP freq is 400MHz and max freq at Vmin is 200MHz */
 #define ATOMISP_PCI_DEVICE_SOC_MRFLD_117A      0x117a
-#define ATOMISP_PCI_DEVICE_SOC_BYT     0x0f38
 #define ATOMISP_PCI_DEVICE_SOC_ANN     0x1478
 #define ATOMISP_PCI_DEVICE_SOC_CHT     0x22b8
 
index 7f702b151704fc58e3762f79b58a20de2c1ee989..1d7d38e2f90409b45f4edbc2ecca96ac39dda867 100644 (file)
@@ -1226,7 +1226,8 @@ static int atomisp_pci_probe(struct pci_dev *pdev, const struct pci_device_id *i
        const struct atomisp_platform_data *pdata;
        struct atomisp_device *isp;
        unsigned int start;
-       int err, val;
+       u32 val;
+       int err;
 
        /* Pointer to struct device. */
        atomisp_dev = &pdev->dev;
@@ -1254,8 +1255,10 @@ static int atomisp_pci_probe(struct pci_dev *pdev, const struct pci_device_id *i
 
        pci_set_drvdata(pdev, isp);
 
-       switch (id->device & ATOMISP_PCI_DEVICE_SOC_MASK) {
+       switch (id->device) {
        case ATOMISP_PCI_DEVICE_SOC_MRFLD:
+       case ATOMISP_PCI_DEVICE_SOC_MRFLD_1179:
+       case ATOMISP_PCI_DEVICE_SOC_MRFLD_117A:
                isp->media_dev.hw_revision =
                    (ATOMISP_HW_REVISION_ISP2400
                     << ATOMISP_HW_REVISION_SHIFT) |
@@ -1408,28 +1411,25 @@ static int atomisp_pci_probe(struct pci_dev *pdev, const struct pci_device_id *i
         */
        atomisp_css2_hw_store_32(MRFLD_CSI_RECEIVER_SELECTION_REG, 1);
 
-       if ((id->device & ATOMISP_PCI_DEVICE_SOC_MASK) ==
-           ATOMISP_PCI_DEVICE_SOC_MRFLD) {
-               u32 csi_afe_trim;
-
+       switch (id->device) {
+       case ATOMISP_PCI_DEVICE_SOC_MRFLD:
+       case ATOMISP_PCI_DEVICE_SOC_MRFLD_1179:
+       case ATOMISP_PCI_DEVICE_SOC_MRFLD_117A:
                /*
                 * Workaround for imbalance data eye issue which is observed
                 * on TNG B0.
                 */
-               pci_read_config_dword(pdev, MRFLD_PCI_CSI_AFE_TRIM_CONTROL, &csi_afe_trim);
-               csi_afe_trim &= ~((MRFLD_PCI_CSI_HSRXCLKTRIM_MASK <<
-                                  MRFLD_PCI_CSI1_HSRXCLKTRIM_SHIFT) |
-                                 (MRFLD_PCI_CSI_HSRXCLKTRIM_MASK <<
-                                  MRFLD_PCI_CSI2_HSRXCLKTRIM_SHIFT) |
-                                 (MRFLD_PCI_CSI_HSRXCLKTRIM_MASK <<
-                                  MRFLD_PCI_CSI3_HSRXCLKTRIM_SHIFT));
-               csi_afe_trim |= (MRFLD_PCI_CSI1_HSRXCLKTRIM <<
-                                MRFLD_PCI_CSI1_HSRXCLKTRIM_SHIFT) |
-                               (MRFLD_PCI_CSI2_HSRXCLKTRIM <<
-                                MRFLD_PCI_CSI2_HSRXCLKTRIM_SHIFT) |
-                               (MRFLD_PCI_CSI3_HSRXCLKTRIM <<
-                                MRFLD_PCI_CSI3_HSRXCLKTRIM_SHIFT);
-               pci_write_config_dword(pdev, MRFLD_PCI_CSI_AFE_TRIM_CONTROL, csi_afe_trim);
+               pci_read_config_dword(pdev, MRFLD_PCI_CSI_AFE_TRIM_CONTROL, &val);
+               val &= ~((MRFLD_PCI_CSI_HSRXCLKTRIM_MASK << MRFLD_PCI_CSI1_HSRXCLKTRIM_SHIFT) |
+                        (MRFLD_PCI_CSI_HSRXCLKTRIM_MASK << MRFLD_PCI_CSI2_HSRXCLKTRIM_SHIFT) |
+                        (MRFLD_PCI_CSI_HSRXCLKTRIM_MASK << MRFLD_PCI_CSI3_HSRXCLKTRIM_SHIFT));
+               val |= (MRFLD_PCI_CSI1_HSRXCLKTRIM << MRFLD_PCI_CSI1_HSRXCLKTRIM_SHIFT) |
+                      (MRFLD_PCI_CSI2_HSRXCLKTRIM << MRFLD_PCI_CSI2_HSRXCLKTRIM_SHIFT) |
+                      (MRFLD_PCI_CSI3_HSRXCLKTRIM << MRFLD_PCI_CSI3_HSRXCLKTRIM_SHIFT);
+               pci_write_config_dword(pdev, MRFLD_PCI_CSI_AFE_TRIM_CONTROL, val);
+               break;
+       default:
+               break;
        }
 
        err = atomisp_initialize_modules(isp);