Lines Matching full:csi2

46 #include "csi2.h"
105 /* CSI2 HW output nodes first. */
129 .name = "csi2-ch0",
141 .name = "csi2-ch1",
147 .name = "csi2-ch2",
153 .name = "csi2-ch3",
303 struct csi2_device csi2; member
553 csi2_set_buffer(&cfe->csi2, node->id, addr, stride, size); in cfe_schedule_next_csi2_job()
706 csi2_isr(&cfe->csi2, sof, eof); in cfe_isr()
788 state = v4l2_subdev_get_locked_active_state(&cfe->csi2.sd); in cfe_get_vc_dt_fallback()
813 state = v4l2_subdev_get_locked_active_state(&cfe->csi2.sd); in cfe_get_vc_dt()
846 *vc = remote_desc.entry[i].bus.csi2.vc; in cfe_get_vc_dt()
847 *dt = remote_desc.entry[i].bus.csi2.dt; in cfe_get_vc_dt()
867 state = v4l2_subdev_get_locked_active_state(&cfe->csi2.sd); in cfe_start_channel()
873 cfe_dbg(cfe, "%s: %s using csi2 channel %d\n", __func__, in cfe_start_channel()
887 /* Must have a valid CSI2 datatype. */ in cfe_start_channel()
891 * Start the associated CSI2 Channel as well. in cfe_start_channel()
895 * this is handled by the CSI2 AUTO_ARM mode. in cfe_start_channel()
897 csi2_start_channel(&cfe->csi2, cfe->fe_csi2_channel, in cfe_start_channel()
900 csi2_set_buffer(&cfe->csi2, cfe->fe_csi2_channel, 0, 0, -1); in cfe_start_channel()
911 csi2_stop_channel(&cfe->csi2, in cfe_start_channel()
925 /* Must have a valid CSI2 datatype. */ in cfe_start_channel()
940 csi2_set_compression(&cfe->csi2, node->id, in cfe_start_channel()
945 /* Unconditionally start this CSI2 channel. */ in cfe_start_channel()
946 csi2_start_channel(&cfe->csi2, node->id, in cfe_start_channel()
971 csi2_stop_channel(&cfe->csi2, cfe->fe_csi2_channel); in cfe_stop_channel()
976 csi2_stop_channel(&cfe->csi2, node->id); in cfe_stop_channel()
1109 state = v4l2_subdev_get_locked_active_state(&cfe->csi2.sd); in cfe_get_source_link_freq()
1140 2 * cfe->csi2.dphy.active_lanes); in cfe_get_source_link_freq()
1187 state = v4l2_subdev_lock_and_get_active_state(&cfe->csi2.sd); in cfe_start_streaming()
1214 cfe->csi2.dphy.active_lanes = mbus_config.bus.mipi_csi2.num_data_lanes; in cfe_start_streaming()
1215 if (!cfe->csi2.dphy.active_lanes) in cfe_start_streaming()
1216 cfe->csi2.dphy.active_lanes = cfe->csi2.dphy.max_lanes; in cfe_start_streaming()
1217 if (cfe->csi2.dphy.active_lanes > cfe->csi2.dphy.max_lanes) { in cfe_start_streaming()
1219 cfe->csi2.dphy.active_lanes, cfe->csi2.dphy.max_lanes); in cfe_start_streaming()
1228 cfe->csi2.dphy.dphy_rate = div_s64(link_freq * 2, 1000000); in cfe_start_streaming()
1229 csi2_open_rx(&cfe->csi2); in cfe_start_streaming()
1250 csi2_close_rx(&cfe->csi2); in cfe_start_streaming()
1292 state = v4l2_subdev_lock_and_get_active_state(&cfe->csi2.sd); in cfe_stop_streaming()
1302 csi2_close_rx(&cfe->csi2); in cfe_stop_streaming()
1404 * Default to a format that works for both CSI2 and FE. in cfe_validate_fmt_vid_cap()
1859 struct media_entity *csi2 = &cfe->csi2.sd.entity; in cfe_video_link_notify() local
1886 if (link->source->entity != csi2) in cfe_video_link_notify()
1906 cfe_dbg(cfe, "%s: Found CSI2:%d -> FE:0 link\n", __func__, in cfe_video_link_notify()
1909 cfe_dbg(cfe, "%s: Unable to find CSI2:x -> FE:0 link\n", in cfe_video_link_notify()
2079 /* Source -> CSI2 */ in cfe_link_node_pads()
2082 &cfe->csi2.pad[CSI2_PAD_SINK], in cfe_link_node_pads()
2090 remote_pad = media_pad_remote_pad_unique(&cfe->csi2.pad[CSI2_PAD_SINK]); in cfe_link_node_pads()
2106 /* CSI2 channel # -> /dev/video# */ in cfe_link_node_pads()
2107 ret = media_create_pad_link(&cfe->csi2.sd.entity, in cfe_link_node_pads()
2114 /* CSI2 channel # -> FE Input */ in cfe_link_node_pads()
2115 ret = media_create_pad_link(&cfe->csi2.sd.entity, in cfe_link_node_pads()
2246 cfe->csi2.dphy.max_lanes = ep.bus.mipi_csi2.num_data_lanes; in cfe_register_async_nf()
2247 cfe->csi2.bus_flags = ep.bus.mipi_csi2.flags; in cfe_register_async_nf()
2296 cfe->csi2.base = devm_platform_ioremap_resource(pdev, 0); in cfe_probe()
2297 if (IS_ERR(cfe->csi2.base)) { in cfe_probe()
2299 ret = PTR_ERR(cfe->csi2.base); in cfe_probe()
2303 cfe->csi2.dphy.base = devm_platform_ioremap_resource(pdev, 1); in cfe_probe()
2304 if (IS_ERR(cfe->csi2.dphy.base)) { in cfe_probe()
2306 ret = PTR_ERR(cfe->csi2.dphy.base); in cfe_probe()
2385 cfe->csi2.v4l2_dev = &cfe->v4l2_dev; in cfe_probe()
2386 ret = csi2_init(&cfe->csi2, cfe->debugfs); in cfe_probe()
2388 cfe_err(cfe, "Failed to init csi2 (%d)\n", ret); in cfe_probe()
2421 csi2_uninit(&cfe->csi2); in cfe_probe()
2447 csi2_uninit(&cfe->csi2); in cfe_remove()