Lines Matching refs:mcam
42 struct mcam_camera mcam; member
48 static inline struct mmp_camera *mcam_to_cam(struct mcam_camera *mcam) in mcam_to_cam() argument
50 return container_of(mcam, struct mmp_camera, mcam); in mcam_to_cam()
110 static void mcam_clk_enable(struct mcam_camera *mcam) in mcam_clk_enable() argument
115 if (!IS_ERR(mcam->clk[i])) in mcam_clk_enable()
116 clk_prepare_enable(mcam->clk[i]); in mcam_clk_enable()
120 static void mcam_clk_disable(struct mcam_camera *mcam) in mcam_clk_disable() argument
125 if (!IS_ERR(mcam->clk[i])) in mcam_clk_disable()
126 clk_disable_unprepare(mcam->clk[i]); in mcam_clk_disable()
140 static int mmpcam_power_up(struct mcam_camera *mcam) in mmpcam_power_up() argument
142 struct mmp_camera *cam = mcam_to_cam(mcam); in mmpcam_power_up()
152 mcam_reg_write(mcam, REG_CLKCTRL, 0x60000002); in mmpcam_power_up()
156 mcam_reg_clear_bit(mcam, REG_CTRL1, 0x10000000); in mmpcam_power_up()
162 mcam_clk_enable(mcam); in mmpcam_power_up()
167 static void mmpcam_power_down(struct mcam_camera *mcam) in mmpcam_power_down() argument
169 struct mmp_camera *cam = mcam_to_cam(mcam); in mmpcam_power_down()
183 mcam_clk_disable(mcam); in mmpcam_power_down()
186 void mcam_ctlr_reset(struct mcam_camera *mcam) in mcam_ctlr_reset() argument
189 struct mmp_camera *cam = mcam_to_cam(mcam); in mcam_ctlr_reset()
191 if (mcam->ccic_id) { in mcam_ctlr_reset()
217 void mmpcam_calc_dphy(struct mcam_camera *mcam) in mmpcam_calc_dphy() argument
219 struct mmp_camera *cam = mcam_to_cam(mcam); in mmpcam_calc_dphy()
307 struct mcam_camera *mcam = data; in mmpcam_irq() local
310 spin_lock(&mcam->dev_lock); in mmpcam_irq()
311 irqs = mcam_reg_read(mcam, REG_IRQSTAT); in mmpcam_irq()
312 handled = mccic_irq(mcam, irqs); in mmpcam_irq()
313 spin_unlock(&mcam->dev_lock); in mmpcam_irq()
317 static void mcam_init_clk(struct mcam_camera *mcam) in mcam_init_clk() argument
326 mcam->clk[i] = devm_clk_get(mcam->dev, mcam_clks[i]); in mcam_init_clk()
327 if (IS_ERR(mcam->clk[i])) in mcam_init_clk()
328 dev_warn(mcam->dev, "Could not get clk: %s\n", in mcam_init_clk()
337 struct mcam_camera *mcam; in mmpcam_probe() local
352 mcam = &cam->mcam; in mmpcam_probe()
353 mcam->plat_power_up = mmpcam_power_up; in mmpcam_probe()
354 mcam->plat_power_down = mmpcam_power_down; in mmpcam_probe()
355 mcam->ctlr_reset = mcam_ctlr_reset; in mmpcam_probe()
356 mcam->calc_dphy = mmpcam_calc_dphy; in mmpcam_probe()
357 mcam->dev = &pdev->dev; in mmpcam_probe()
358 mcam->use_smbus = 0; in mmpcam_probe()
359 mcam->ccic_id = pdev->id; in mmpcam_probe()
360 mcam->mclk_min = pdata->mclk_min; in mmpcam_probe()
361 mcam->mclk_src = pdata->mclk_src; in mmpcam_probe()
362 mcam->mclk_div = pdata->mclk_div; in mmpcam_probe()
363 mcam->bus_type = pdata->bus_type; in mmpcam_probe()
364 mcam->dphy = pdata->dphy; in mmpcam_probe()
365 if (mcam->bus_type == V4L2_MBUS_CSI2) { in mmpcam_probe()
366 cam->mipi_clk = devm_clk_get(mcam->dev, "mipi"); in mmpcam_probe()
367 if ((IS_ERR(cam->mipi_clk) && mcam->dphy[2] == 0)) in mmpcam_probe()
370 mcam->mipi_enabled = false; in mmpcam_probe()
371 mcam->lane = pdata->lane; in mmpcam_probe()
372 mcam->chip_id = MCAM_ARMADA610; in mmpcam_probe()
373 mcam->buffer_mode = B_DMA_sg; in mmpcam_probe()
374 strlcpy(mcam->bus_info, "platform:mmp-camera", sizeof(mcam->bus_info)); in mmpcam_probe()
375 spin_lock_init(&mcam->dev_lock); in mmpcam_probe()
380 mcam->regs = devm_ioremap_resource(&pdev->dev, res); in mmpcam_probe()
381 if (IS_ERR(mcam->regs)) in mmpcam_probe()
382 return PTR_ERR(mcam->regs); in mmpcam_probe()
383 mcam->regs_size = resource_size(res); in mmpcam_probe()
396 mcam->i2c_adapter = platform_get_drvdata(pdata->i2c_device); in mmpcam_probe()
397 if (mcam->i2c_adapter == NULL) { in mmpcam_probe()
421 mcam_init_clk(mcam); in mmpcam_probe()
426 ret = mmpcam_power_up(mcam); in mmpcam_probe()
429 ret = mccic_register(mcam); in mmpcam_probe()
443 "mmp-camera", mcam); in mmpcam_probe()
450 mccic_shutdown(mcam); in mmpcam_probe()
452 mmpcam_power_down(mcam); in mmpcam_probe()
459 struct mcam_camera *mcam = &cam->mcam; in mmpcam_remove() local
462 mccic_shutdown(mcam); in mmpcam_remove()
463 mmpcam_power_down(mcam); in mmpcam_remove()
487 mccic_suspend(&cam->mcam); in mmpcam_suspend()
501 return mccic_resume(&cam->mcam); in mmpcam_resume()