Lines Matching full:csi2
39 #include "ipu6-isys-csi2.h"
42 #include "ipu6-platform-isys-csi2-reg.h"
108 struct ipu6_isys_csi2_config *csi2) in isys_complete_ext_device_registration() argument
126 &isys->csi2[csi2->port].asd.sd.entity, in isys_complete_ext_device_registration()
134 isys->csi2[csi2->port].nlanes = csi2->nlanes; in isys_complete_ext_device_registration()
163 const struct ipu6_isys_internal_csi2_pdata *csi2 = in isys_csi2_unregister_subdevices() local
164 &isys->pdata->ipdata->csi2; in isys_csi2_unregister_subdevices()
167 for (i = 0; i < csi2->nports; i++) in isys_csi2_unregister_subdevices()
168 ipu6_isys_csi2_cleanup(&isys->csi2[i]); in isys_csi2_unregister_subdevices()
174 &isys->pdata->ipdata->csi2; in isys_csi2_register_subdevices()
179 ret = ipu6_isys_csi2_init(&isys->csi2[i], isys, in isys_csi2_register_subdevices()
192 ipu6_isys_csi2_cleanup(&isys->csi2[i]); in isys_csi2_register_subdevices()
200 &isys->pdata->ipdata->csi2; in isys_csi2_create_media_links()
206 struct media_entity *sd = &isys->csi2[i].asd.sd.entity; in isys_csi2_create_media_links()
209 struct ipu6_isys_video *av = &isys->csi2[i].av[j]; in isys_csi2_create_media_links()
214 dev_err(dev, "CSI2 can't create link\n"); in isys_csi2_create_media_links()
218 av->csi2 = &isys->csi2[i]; in isys_csi2_create_media_links()
228 &isys->pdata->ipdata->csi2; in isys_unregister_video_devices()
233 ipu6_isys_video_cleanup(&isys->csi2[i].av[j]); in isys_unregister_video_devices()
239 &isys->pdata->ipdata->csi2; in isys_register_video_devices()
245 struct ipu6_isys_video *av = &isys->csi2[i].av[j]; in isys_register_video_devices()
265 ipu6_isys_video_cleanup(&isys->csi2[i].av[j]); in isys_register_video_devices()
279 nports = isys->pdata->ipdata->csi2.nports; in isys_setup_hw()
285 writel(irqs, base + isys->pdata->ipdata->csi2.ctrl0_irq_edge); in isys_setup_hw()
286 writel(irqs, base + isys->pdata->ipdata->csi2.ctrl0_irq_lnp); in isys_setup_hw()
287 writel(irqs, base + isys->pdata->ipdata->csi2.ctrl0_irq_mask); in isys_setup_hw()
288 writel(irqs, base + isys->pdata->ipdata->csi2.ctrl0_irq_enable); in isys_setup_hw()
290 base + isys->pdata->ipdata->csi2.ctrl0_irq_clear); in isys_setup_hw()
307 static void ipu6_isys_csi2_isr(struct ipu6_isys_csi2 *csi2) in ipu6_isys_csi2_isr() argument
314 ipu6_isys_register_errors(csi2); in ipu6_isys_csi2_isr()
316 status = readl(csi2->base + CSI_PORT_REG_BASE_IRQ_CSI_SYNC + in ipu6_isys_csi2_isr()
319 writel(status, csi2->base + CSI_PORT_REG_BASE_IRQ_CSI_SYNC + in ipu6_isys_csi2_isr()
322 source = csi2->asd.source; in ipu6_isys_csi2_isr()
325 stream = ipu6_isys_query_stream_by_source(csi2->isys, in ipu6_isys_csi2_isr()
334 stream = ipu6_isys_query_stream_by_source(csi2->isys, in ipu6_isys_csi2_isr()
357 ctrl0_status = isys->pdata->ipdata->csi2.ctrl0_irq_status; in isys_isr()
358 ctrl0_clear = isys->pdata->ipdata->csi2.ctrl0_irq_clear; in isys_isr()
376 for (i = 0; i < isys->pdata->ipdata->csi2.nports; i++) { in isys_isr()
378 if (!isys->csi2[i].base) in isys_isr()
381 ipu6_isys_csi2_isr(&isys->csi2[i]); in isys_isr()
682 if (s_asd->csi2.port >= isys->pdata->ipdata->csi2.nports) { in isys_notifier_bound()
683 dev_err(&isys->adev->auxdev.dev, "invalid csi2 port %u\n", in isys_notifier_bound()
684 s_asd->csi2.port); in isys_notifier_bound()
695 sd->name, s_asd->csi2.nlanes, s_asd->csi2.port); in isys_notifier_bound()
696 ret = isys_complete_ext_device_registration(isys, sd, &s_asd->csi2); in isys_notifier_bound()
752 s_asd->csi2.port = vep.base.port; in isys_notifier_init()
753 s_asd->csi2.nlanes = vep.bus.mipi_csi2.num_data_lanes; in isys_notifier_init()
756 s_asd->csi2.port, s_asd->csi2.nlanes); in isys_notifier_init()
1066 csi2_pdata = &isys->pdata->ipdata->csi2; in isys_probe()
1068 isys->csi2 = devm_kcalloc(&auxdev->dev, csi2_pdata->nports, in isys_probe()
1069 sizeof(*isys->csi2), GFP_KERNEL); in isys_probe()
1070 if (!isys->csi2) in isys_probe()
1226 struct ipu6_isys_csi2 *csi2 = NULL; in isys_isr_one() local
1269 csi2 = ipu6_isys_subdev_to_csi2(stream->asd); in isys_isr_one()
1304 if (csi2) in isys_isr_one()
1305 ipu6_isys_csi2_error(csi2); in isys_isr_one()