Lines Matching full:isp
3 * Rockchip ISP1 Driver - ISP Subdevice
27 * This is because ISP Subdev describes not only ISP submodule (input size,
37 * Cropping regions of ISP
65 static void rkisp1_config_ism(struct rkisp1_isp *isp, in rkisp1_config_ism() argument
71 struct rkisp1_device *rkisp1 = isp->rkisp1; in rkisp1_config_ism()
91 * configure ISP blocks with input format, size......
93 static int rkisp1_config_isp(struct rkisp1_isp *isp, in rkisp1_config_isp() argument
97 struct rkisp1_device *rkisp1 = isp->rkisp1; in rkisp1_config_isp()
189 /* ISP Out Area */ in rkisp1_config_isp()
211 isp->sink_fmt = sink_fmt; in rkisp1_config_isp()
217 static void rkisp1_config_path(struct rkisp1_isp *isp, in rkisp1_config_path() argument
220 struct rkisp1_device *rkisp1 = isp->rkisp1; in rkisp1_config_path()
232 static int rkisp1_config_cif(struct rkisp1_isp *isp, in rkisp1_config_cif() argument
238 ret = rkisp1_config_isp(isp, sd_state, mbus_type, mbus_flags); in rkisp1_config_cif()
242 rkisp1_config_path(isp, mbus_type); in rkisp1_config_cif()
243 rkisp1_config_ism(isp, sd_state); in rkisp1_config_cif()
248 static void rkisp1_isp_stop(struct rkisp1_isp *isp) in rkisp1_isp_stop() argument
250 struct rkisp1_device *rkisp1 = isp->rkisp1; in rkisp1_isp_stop()
254 * ISP(mi) stop in mi frame end -> Stop ISP(mipi) -> in rkisp1_isp_stop()
255 * Stop ISP(isp) ->wait for ISP isp off in rkisp1_isp_stop()
258 /* Mask MI and ISP interrupts */ in rkisp1_isp_stop()
267 * even after this, but it will return immediately as the MI and ISP in rkisp1_isp_stop()
274 /* Clear MI and ISP interrupt status */ in rkisp1_isp_stop()
278 /* stop ISP */ in rkisp1_isp_stop()
296 static void rkisp1_config_clk(struct rkisp1_isp *isp) in rkisp1_config_clk() argument
298 struct rkisp1_device *rkisp1 = isp->rkisp1; in rkisp1_config_clk()
318 static void rkisp1_isp_start(struct rkisp1_isp *isp, in rkisp1_isp_start() argument
321 struct rkisp1_device *rkisp1 = isp->rkisp1; in rkisp1_isp_start()
326 rkisp1_config_clk(isp); in rkisp1_isp_start()
328 /* Activate ISP */ in rkisp1_isp_start()
478 static void rkisp1_isp_set_src_fmt(struct rkisp1_isp *isp, in rkisp1_isp_set_src_fmt() argument
497 * Media bus code. The ISP can operate in pass-through mode (Bayer in, in rkisp1_isp_set_src_fmt()
541 * ISP is bypassed in that case and passes YUV data through without in rkisp1_isp_set_src_fmt()
546 * hardware blocks are conveyed through the ISP parameters buffer, as in rkisp1_isp_set_src_fmt()
579 static void rkisp1_isp_set_src_crop(struct rkisp1_isp *isp, in rkisp1_isp_set_src_crop() argument
603 rkisp1_isp_set_src_fmt(isp, sd_state, src_fmt); in rkisp1_isp_set_src_crop()
606 static void rkisp1_isp_set_sink_crop(struct rkisp1_isp *isp, in rkisp1_isp_set_sink_crop() argument
629 rkisp1_isp_set_src_crop(isp, sd_state, src_crop); in rkisp1_isp_set_sink_crop()
632 static void rkisp1_isp_set_sink_fmt(struct rkisp1_isp *isp, in rkisp1_isp_set_sink_fmt() argument
692 rkisp1_isp_set_sink_crop(isp, sd_state, sink_crop); in rkisp1_isp_set_sink_fmt()
699 struct rkisp1_isp *isp = to_rkisp1_isp(sd); in rkisp1_isp_set_fmt() local
702 rkisp1_isp_set_sink_fmt(isp, sd_state, &fmt->format); in rkisp1_isp_set_fmt()
704 rkisp1_isp_set_src_fmt(isp, sd_state, &fmt->format); in rkisp1_isp_set_fmt()
754 struct rkisp1_isp *isp = to_rkisp1_isp(sd); in rkisp1_isp_set_selection() local
760 dev_dbg(isp->rkisp1->dev, "%s: pad: %d sel(%d,%d)/%dx%d\n", __func__, in rkisp1_isp_set_selection()
764 rkisp1_isp_set_sink_crop(isp, sd_state, &sel->r); in rkisp1_isp_set_selection()
766 rkisp1_isp_set_src_crop(isp, sd_state, &sel->r); in rkisp1_isp_set_selection()
797 struct rkisp1_isp *isp = to_rkisp1_isp(sd); in rkisp1_isp_s_stream() local
798 struct rkisp1_device *rkisp1 = isp->rkisp1; in rkisp1_isp_s_stream()
808 rkisp1_isp_stop(isp); in rkisp1_isp_s_stream()
812 sink_pad = &isp->pads[RKISP1_ISP_PAD_SINK_VIDEO]; in rkisp1_isp_s_stream()
815 dev_dbg(rkisp1->dev, "Failed to get source for ISP: %ld\n", in rkisp1_isp_s_stream()
843 isp->frame_sequence = -1; in rkisp1_isp_s_stream()
847 ret = rkisp1_config_cif(isp, sd_state, mbus_type, mbus_flags); in rkisp1_isp_s_stream()
851 rkisp1_isp_start(isp, sd_state); in rkisp1_isp_s_stream()
855 rkisp1_isp_stop(isp); in rkisp1_isp_s_stream()
902 struct rkisp1_isp *isp = &rkisp1->isp; in rkisp1_isp_register() local
903 struct media_pad *pads = isp->pads; in rkisp1_isp_register()
904 struct v4l2_subdev *sd = &isp->sd; in rkisp1_isp_register()
907 isp->rkisp1 = rkisp1; in rkisp1_isp_register()
933 dev_err(rkisp1->dev, "Failed to register isp subdev\n"); in rkisp1_isp_register()
943 isp->sd.v4l2_dev = NULL; in rkisp1_isp_register()
949 struct rkisp1_isp *isp = &rkisp1->isp; in rkisp1_isp_unregister() local
951 if (!isp->sd.v4l2_dev) in rkisp1_isp_unregister()
954 v4l2_device_unregister_subdev(&isp->sd); in rkisp1_isp_unregister()
955 v4l2_subdev_cleanup(&isp->sd); in rkisp1_isp_unregister()
956 media_entity_cleanup(&isp->sd.entity); in rkisp1_isp_unregister()
963 static void rkisp1_isp_queue_event_sof(struct rkisp1_isp *isp) in rkisp1_isp_queue_event_sof() argument
969 event.u.frame_sync.frame_sequence = isp->frame_sequence; in rkisp1_isp_queue_event_sof()
970 v4l2_event_queue(isp->sd.devnode, &event); in rkisp1_isp_queue_event_sof()
990 rkisp1->isp.frame_sequence++; in rkisp1_isp_isr()
991 rkisp1_isp_queue_event_sof(&rkisp1->isp); in rkisp1_isp_isr()