コード例 #1
0
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);
}
コード例 #2
0
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);
}
コード例 #3
0
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);
}
コード例 #4
0
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);

}