static void pxa_ccic_enable_mclk(struct mmp_camera_dev *pcdev, enum v4l2_mbus_type bus_type) { struct mmp_cam_pdata *pdata = pcdev->pdev->dev.platform_data; struct device *dev = &pcdev->pdev->dev; int ctrl1 = 0; int mipi; switch_mclk_gpio_mfp(MCLK_PIN); if (bus_type == V4L2_MBUS_CSI2) mipi = MIPI_ENABLE; else mipi = MIPI_DISABLE; pdata->enable_clk(dev, mipi | POWER_ON); ccic_reg_write(pcdev, REG_CLKCTRL, (pdata->mclk_src << 29) | pdata->mclk_div); dev_dbg(dev, "camera: set sensor mclk = %d MHz\n", pdata->mclk_min); switch (pdata->dma_burst) { case 128: ctrl1 = C1_DMAB128; break; case 256: ctrl1 = C1_DMAB256; break; } ccic_reg_write(pcdev, REG_CTRL1, ctrl1 | C1_RESERVED | C1_DMAPOSTED); if (bus_type != V4L2_MBUS_CSI2) ccic_reg_write(pcdev, REG_CTRL3, 0x4); }
static void pxa_ccic_enable_mclk(struct mmp_camera_dev *pcdev, unsigned int bus_type) { struct mmp_cam_pdata *pdata = pcdev->pdev->dev.platform_data; struct device *dev = &pcdev->pdev->dev; int ctrl1 = 0; switch_mclk_gpio_mfp(MCLK_PIN); #if 0 /* FIXME */ if (bus_type == BUS_MIPI) pdata->bus_type == V4L2_MBUS_CSI2_LANES; else if (bus_type == BUS_PARALLEL) pdata->bus_type == 0x0; #endif // Prevent issue pdata->enable_clk(dev, 1); ccic_reg_write(pcdev, REG_CLKCTRL, (pdata->mclk_src << 29) | pdata->mclk_div); dev_info(dev, "camera: set sensor mclk = %d MHz\n", pdata->mclk_min); switch (pdata->dma_burst) { case 128: ctrl1 = C1_DMAB128; break; case 256: ctrl1 = C1_DMAB256; break; } ccic_reg_write(pcdev, REG_CTRL1, ctrl1 | C1_RESERVED | C1_DMAPOSTED); if (pdata->bus_type != V4L2_MBUS_CSI2_LANES) ccic_reg_write(pcdev, REG_CTRL3, 0x4); }
static void pxa_ccic_disable_mclk(struct mmp_camera_dev *pcdev, unsigned int bus_type) { struct mmp_cam_pdata *pdata = pcdev->pdev->dev.platform_data; #if 0 /* FIXME */ if (bus_type == BUS_MIPI) pdata->bus_type == V4L2_MBUS_CSI2_LANES; else if (bus_type == BUS_PARALLEL) pdata->bus_type == 0x0; #endif // Prevent issue ccic_reg_write(pcdev, REG_CLKCTRL, 0x0); /* * Bit[5:1] reserved and should not be changed */ ccic_reg_write(pcdev, REG_CTRL1, C1_RESERVED); pdata->enable_clk(&pcdev->pdev->dev, 0); switch_mclk_gpio_mfp(GPIO_PIN); }
static void pxa_ccic_disable_mclk(struct mmp_camera_dev *pcdev, enum v4l2_mbus_type bus_type) { struct mmp_cam_pdata *pdata = pcdev->pdev->dev.platform_data; struct device *dev = &pcdev->pdev->dev; int mipi; switch_mclk_gpio_mfp(GPIO_PIN); ccic_reg_write(pcdev, REG_CLKCTRL, 0x0); /* * Bit[5:1] reserved and should not be changed */ ccic_reg_write(pcdev, REG_CTRL1, C1_RESERVED); if (bus_type == V4L2_MBUS_CSI2) mipi = MIPI_ENABLE; else mipi = MIPI_DISABLE; pdata->enable_clk(dev, mipi | POWER_OFF); }