Lines Matching defs:xcsi2rxss

271 static inline u32 xcsi2rxss_read(struct xcsi2rxss_state *xcsi2rxss, u32 addr)
273 return ioread32(xcsi2rxss->iomem + addr);
276 static inline void xcsi2rxss_write(struct xcsi2rxss_state *xcsi2rxss, u32 addr,
279 iowrite32(value, xcsi2rxss->iomem + addr);
282 static inline void xcsi2rxss_clr(struct xcsi2rxss_state *xcsi2rxss, u32 addr,
285 xcsi2rxss_write(xcsi2rxss, addr,
286 xcsi2rxss_read(xcsi2rxss, addr) & ~clr);
289 static inline void xcsi2rxss_set(struct xcsi2rxss_state *xcsi2rxss, u32 addr,
292 xcsi2rxss_write(xcsi2rxss, addr, xcsi2rxss_read(xcsi2rxss, addr) | set);
414 struct xcsi2rxss_state *xcsi2rxss = to_xcsi2rxssstate(sd);
415 struct device *dev = xcsi2rxss->dev;
419 mutex_lock(&xcsi2rxss->lock);
421 xcsi2rxss_log_counters(xcsi2rxss);
424 data = xcsi2rxss_read(xcsi2rxss, XCSI_CSR_OFFSET);
436 data = xcsi2rxss_read(xcsi2rxss, XCSI_CLKINFR_OFFSET);
444 data = xcsi2rxss_read(xcsi2rxss, reg);
457 if (xcsi2rxss->en_vcx)
467 data = xcsi2rxss_read(xcsi2rxss, reg);
474 data = xcsi2rxss_read(xcsi2rxss, reg);
484 mutex_unlock(&xcsi2rxss->lock);
661 struct xcsi2rxss_state *xcsi2rxss = to_xcsi2rxssstate(sd);
664 mutex_lock(&xcsi2rxss->lock);
666 if (enable == xcsi2rxss->streaming)
670 xcsi2rxss_reset_event_counters(xcsi2rxss);
671 ret = xcsi2rxss_start_stream(xcsi2rxss);
673 xcsi2rxss_stop_stream(xcsi2rxss);
674 xcsi2rxss_hard_reset(xcsi2rxss);
678 mutex_unlock(&xcsi2rxss->lock);
683 __xcsi2rxss_get_pad_format(struct xcsi2rxss_state *xcsi2rxss,
689 return v4l2_subdev_get_try_format(&xcsi2rxss->subdev, cfg, pad);
691 return &xcsi2rxss->format;
710 struct xcsi2rxss_state *xcsi2rxss = to_xcsi2rxssstate(sd);
714 mutex_lock(&xcsi2rxss->lock);
717 *format = xcsi2rxss->default_format;
719 mutex_unlock(&xcsi2rxss->lock);
738 struct xcsi2rxss_state *xcsi2rxss = to_xcsi2rxssstate(sd);
740 mutex_lock(&xcsi2rxss->lock);
741 fmt->format = *__xcsi2rxss_get_pad_format(xcsi2rxss, cfg, fmt->pad,
743 mutex_unlock(&xcsi2rxss->lock);
765 struct xcsi2rxss_state *xcsi2rxss = to_xcsi2rxssstate(sd);
769 mutex_lock(&xcsi2rxss->lock);
776 __format = __xcsi2rxss_get_pad_format(xcsi2rxss, cfg,
782 mutex_unlock(&xcsi2rxss->lock);
792 if (dt != xcsi2rxss->datatype && dt != XCSI_DT_RAW8) {
793 dev_dbg(xcsi2rxss->dev, "Unsupported media bus format");
795 fmt->format.code = xcsi2rxss_get_nth_mbus(xcsi2rxss->datatype,
800 mutex_unlock(&xcsi2rxss->lock);
869 static int xcsi2rxss_parse_of(struct xcsi2rxss_state *xcsi2rxss)
871 struct device *dev = xcsi2rxss->dev;
883 xcsi2rxss->en_vcx = of_property_read_bool(node, "xlnx,en-vcx");
885 xcsi2rxss->enable_active_lanes =
889 &xcsi2rxss->datatype);
895 switch (xcsi2rxss->datatype) {
949 xcsi2rxss->max_num_lanes = vep.bus.mipi_csi2.num_data_lanes;
962 xcsi2rxss->en_vcx ? "enabled" : "disabled",
963 xcsi2rxss->max_num_lanes,
964 xcsi2rxss->enable_active_lanes ? "dynamic" : "static",
965 xcsi2rxss->datatype);
973 struct xcsi2rxss_state *xcsi2rxss;
978 xcsi2rxss = devm_kzalloc(dev, sizeof(*xcsi2rxss), GFP_KERNEL);
979 if (!xcsi2rxss)
982 xcsi2rxss->dev = dev;
984 xcsi2rxss->clks = devm_kmemdup(dev, xcsi2rxss_clks,
986 if (!xcsi2rxss->clks)
990 xcsi2rxss->rst_gpio = devm_gpiod_get_optional(dev, "video-reset",
992 if (IS_ERR(xcsi2rxss->rst_gpio)) {
993 if (PTR_ERR(xcsi2rxss->rst_gpio) != -EPROBE_DEFER)
995 return PTR_ERR(xcsi2rxss->rst_gpio);
998 ret = xcsi2rxss_parse_of(xcsi2rxss);
1002 xcsi2rxss->iomem = devm_platform_ioremap_resource(pdev, 0);
1003 if (IS_ERR(xcsi2rxss->iomem))
1004 return PTR_ERR(xcsi2rxss->iomem);
1012 dev_name(dev), xcsi2rxss);
1018 ret = clk_bulk_get(dev, num_clks, xcsi2rxss->clks);
1023 ret = clk_bulk_prepare_enable(num_clks, xcsi2rxss->clks);
1027 mutex_init(&xcsi2rxss->lock);
1029 xcsi2rxss_hard_reset(xcsi2rxss);
1030 xcsi2rxss_soft_reset(xcsi2rxss);
1033 xcsi2rxss->pads[XVIP_PAD_SINK].flags = MEDIA_PAD_FL_SINK;
1034 xcsi2rxss->pads[XVIP_PAD_SOURCE].flags = MEDIA_PAD_FL_SOURCE;
1037 xcsi2rxss->default_format.code =
1038 xcsi2rxss_get_nth_mbus(xcsi2rxss->datatype, 0);
1039 xcsi2rxss->default_format.field = V4L2_FIELD_NONE;
1040 xcsi2rxss->default_format.colorspace = V4L2_COLORSPACE_SRGB;
1041 xcsi2rxss->default_format.width = XCSI_DEFAULT_WIDTH;
1042 xcsi2rxss->default_format.height = XCSI_DEFAULT_HEIGHT;
1043 xcsi2rxss->format = xcsi2rxss->default_format;
1046 subdev = &xcsi2rxss->subdev;
1052 v4l2_set_subdevdata(subdev, xcsi2rxss);
1055 xcsi2rxss->pads);
1059 platform_set_drvdata(pdev, xcsi2rxss);
1070 mutex_destroy(&xcsi2rxss->lock);
1071 clk_bulk_disable_unprepare(num_clks, xcsi2rxss->clks);
1073 clk_bulk_put(num_clks, xcsi2rxss->clks);
1079 struct xcsi2rxss_state *xcsi2rxss = platform_get_drvdata(pdev);
1080 struct v4l2_subdev *subdev = &xcsi2rxss->subdev;
1085 mutex_destroy(&xcsi2rxss->lock);
1086 clk_bulk_disable_unprepare(num_clks, xcsi2rxss->clks);
1087 clk_bulk_put(num_clks, xcsi2rxss->clks);