Commit e1ac35b3 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

media: atomisp: add a way for the driver to know the chipset version

The atomisp supports two different chipsets: ISP2400 and ISP2401.
Right now, this is controlled by ugly #defines inside the driver.

Add a global bolean to identify the type of hardware. While this
is hacky, it would be a quick way to start removing the ugly
ifdefs.
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 9a0d7fb5
...@@ -69,6 +69,9 @@ ...@@ -69,6 +69,9 @@
#define V4L2_MBUS_FMT_CUSTOM_M10MO_RAW 0x800b #define V4L2_MBUS_FMT_CUSTOM_M10MO_RAW 0x800b
#endif #endif
/* FIXME: for now, let's use a boolean to identify the type of atomisp chipset */
extern bool atomisp_hw_is_isp2401;
/* Configuration used by Bayer noise reduction and YCC noise reduction */ /* Configuration used by Bayer noise reduction and YCC noise reduction */
struct atomisp_nr_config { struct atomisp_nr_config {
/* [gain] Strength of noise reduction for Bayer NR (Used by Bayer NR) */ /* [gain] Strength of noise reduction for Bayer NR (Used by Bayer NR) */
......
...@@ -105,6 +105,21 @@ int pad_h = 16; ...@@ -105,6 +105,21 @@ int pad_h = 16;
module_param(pad_h, int, 0644); module_param(pad_h, int, 0644);
MODULE_PARM_DESC(pad_h, "extra data for ISP processing"); MODULE_PARM_DESC(pad_h, "extra data for ISP processing");
/*
* FIXME: this is a hack to make easier to support ISP2401 variant.
* As a given system will either be ISP2401 or not, we can just use
* a boolean, in order to replace existing #ifdef ISP2401 everywhere.
*
* Once this driver gets into a better shape, however, the best would
* be to replace this to something stored inside atomisp allocated
* structures.
*/
bool atomisp_hw_is_isp2401;
/* Types of atomisp hardware */
#define HW_IS_ISP2400 0
#define HW_IS_ISP2401 1
struct device *atomisp_dev; struct device *atomisp_dev;
void __iomem *atomisp_io_base; void __iomem *atomisp_io_base;
...@@ -1169,6 +1184,11 @@ static int atomisp_pci_probe(struct pci_dev *dev, ...@@ -1169,6 +1184,11 @@ static int atomisp_pci_probe(struct pci_dev *dev,
/* Pointer to struct device. */ /* Pointer to struct device. */
atomisp_dev = &dev->dev; atomisp_dev = &dev->dev;
if (id->driver_data == HW_IS_ISP2401)
atomisp_hw_is_isp2401 = true;
else
atomisp_hw_is_isp2401 = false;
pdata = atomisp_get_platform_data(); pdata = atomisp_get_platform_data();
if (!pdata) if (!pdata)
dev_warn(&dev->dev, "no platform data available\n"); dev_warn(&dev->dev, "no platform data available\n");
...@@ -1514,18 +1534,22 @@ static void atomisp_pci_remove(struct pci_dev *dev) ...@@ -1514,18 +1534,22 @@ static void atomisp_pci_remove(struct pci_dev *dev)
} }
static const struct pci_device_id atomisp_pci_tbl[] = { static const struct pci_device_id atomisp_pci_tbl[] = {
/*
* FIXME:
* remove the ifs once we get rid of the ifs on other parts of the driver
*/
#if defined(ISP2400) || defined(ISP2400B0) #if defined(ISP2400) || defined(ISP2400B0)
/* Merrifield */ /* Merrifield */
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x1178)}, {PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x1178), .driver_data = HW_IS_ISP2400},
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x1179)}, {PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x1179), .driver_data = HW_IS_ISP2400},
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x117a)}, {PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x117a), .driver_data = HW_IS_ISP2400},
/* Baytrail */ /* Baytrail */
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x0f38)}, {PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x0f38), .driver_data = HW_IS_ISP2400},
#elif defined(ISP2401) #elif defined(ISP2401)
/* Anniedale (Merrifield+ / Moorefield) */ /* Anniedale (Merrifield+ / Moorefield) */
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x1478)}, {PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x1478), .driver_data = HW_IS_ISP2401},
/* Cherrytrail */ /* Cherrytrail */
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x22b8)}, {PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x22b8), .driver_data = HW_IS_ISP2401},
#endif #endif
{0,} {0,}
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment