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;
192 mcam = &cam->mcam;
193 mcam->calc_dphy = mmpcam_calc_dphy;
194 mcam->dev = &pdev->dev;
197 mcam->mclk_src = pdata->mclk_src;
198 mcam->mclk_div = pdata->mclk_div;
199 mcam->bus_type = pdata->bus_type;
200 mcam->dphy = pdata->dphy;
201 mcam->lane = pdata->lane;
204 * These are values that used to be hardcoded in mcam-core and
209 mcam->mclk_src = 3;
210 mcam->mclk_div = 2;
212 if (mcam->bus_type == V4L2_MBUS_CSI2_DPHY) {
213 cam->mipi_clk = devm_clk_get(mcam->dev, "mipi");
214 if ((IS_ERR(cam->mipi_clk) && mcam->dphy[2] == 0))
217 mcam->mipi_enabled = false;
218 mcam->chip_id = MCAM_ARMADA610;
219 mcam->buffer_mode = B_DMA_sg;
220 strscpy(mcam->bus_info, "platform:mmp-camera", sizeof(mcam->bus_info));
221 spin_lock_init(&mcam->dev_lock);
226 mcam->regs = devm_ioremap_resource(&pdev->dev, 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 mcam->asd.match_type = V4L2_ASYNC_MATCH_FWNODE;
242 mcam->asd.match.fwnode = fwnode_graph_get_remote_port_parent(ep);
249 ret = mccic_register(mcam);
257 mcam->mclk);
274 "mmp-camera", mcam);
281 fwnode_handle_put(mcam->asd.match.fwnode);
282 mccic_shutdown(mcam);
290 struct mcam_camera *mcam = &cam->mcam;
292 mccic_shutdown(mcam);
293 pm_runtime_force_suspend(mcam->dev);
314 struct mcam_camera *mcam = &cam->mcam;
318 if (!IS_ERR(mcam->clk[i]))
319 clk_prepare_enable(mcam->clk[i]);
328 struct mcam_camera *mcam = &cam->mcam;
332 if (!IS_ERR(mcam->clk[i]))
333 clk_disable_unprepare(mcam->clk[i]);
344 mccic_suspend(&cam->mcam);
353 return mccic_resume(&cam->mcam);