Lines Matching defs:mcam
29 #include "mcam-core.h"
39 struct mcam_camera mcam;
45 static inline struct mmp_camera *mcam_to_cam(struct mcam_camera *mcam)
47 return container_of(mcam, struct mmp_camera, mcam);
59 static void mmpcam_calc_dphy(struct mcam_camera *mcam)
61 struct mmp_camera *cam = mcam_to_cam(mcam);
149 struct mcam_camera *mcam = data;
152 spin_lock(&mcam->dev_lock);
153 irqs = mcam_reg_read(mcam, REG_IRQSTAT);
154 handled = mccic_irq(mcam, irqs);
155 spin_unlock(&mcam->dev_lock);
159 static void mcam_init_clk(struct mcam_camera *mcam)
168 mcam->clk[i] = devm_clk_get(mcam->dev, mcam_clks[i]);
169 if (IS_ERR(mcam->clk[i]))
170 dev_warn(mcam->dev, "Could not get clk: %s\n",
179 struct mcam_camera *mcam;
193 mcam = &cam->mcam;
194 mcam->calc_dphy = mmpcam_calc_dphy;
195 mcam->dev = &pdev->dev;
198 mcam->mclk_src = pdata->mclk_src;
199 mcam->mclk_div = pdata->mclk_div;
200 mcam->bus_type = pdata->bus_type;
201 mcam->dphy = pdata->dphy;
202 mcam->lane = pdata->lane;
205 * These are values that used to be hardcoded in mcam-core and
210 mcam->mclk_src = 3;
211 mcam->mclk_div = 2;
213 if (mcam->bus_type == V4L2_MBUS_CSI2_DPHY) {
214 cam->mipi_clk = devm_clk_get(mcam->dev, "mipi");
215 if ((IS_ERR(cam->mipi_clk) && mcam->dphy[2] == 0))
218 mcam->mipi_enabled = false;
219 mcam->chip_id = MCAM_ARMADA610;
220 mcam->buffer_mode = B_DMA_sg;
221 strscpy(mcam->bus_info, "platform:mmp-camera", sizeof(mcam->bus_info));
222 spin_lock_init(&mcam->dev_lock);
226 mcam->regs = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
227 if (IS_ERR(mcam->regs))
228 return PTR_ERR(mcam->regs);
229 mcam->regs_size = resource_size(res);
231 mcam_init_clk(mcam);
241 v4l2_async_nf_init(&mcam->notifier, &mcam->v4l2_dev);
243 asd = v4l2_async_nf_add_fwnode_remote(&mcam->notifier, ep,
254 ret = mccic_register(mcam);
262 mcam->mclk);
277 "mmp-camera", mcam);
284 mccic_shutdown(mcam);
292 struct mcam_camera *mcam = &cam->mcam;
294 mccic_shutdown(mcam);
295 pm_runtime_force_suspend(mcam->dev);
305 struct mcam_camera *mcam = &cam->mcam;
309 if (!IS_ERR(mcam->clk[i]))
310 clk_prepare_enable(mcam->clk[i]);
319 struct mcam_camera *mcam = &cam->mcam;
323 if (!IS_ERR(mcam->clk[i]))
324 clk_disable_unprepare(mcam->clk[i]);
335 mccic_suspend(&cam->mcam);
344 return mccic_resume(&cam->mcam);