@@ -431,6 +431,42 @@ static int video_mcux_csi_set_signal(const struct device *dev, enum video_endpoi
431431}
432432#endif
433433
434+ static int video_mcux_csi_set_frmival (const struct device * dev , enum video_endpoint_id ep ,
435+ struct video_frmival * frmival )
436+ {
437+ const struct video_mcux_csi_config * config = dev -> config ;
438+
439+ return video_set_frmival (config -> source_dev , ep , frmival );
440+ }
441+
442+ static int video_mcux_csi_get_frmival (const struct device * dev , enum video_endpoint_id ep ,
443+ struct video_frmival * frmival )
444+ {
445+ const struct video_mcux_csi_config * config = dev -> config ;
446+
447+ return video_get_frmival (config -> source_dev , ep , frmival );
448+ }
449+
450+ static int video_mcux_csi_enum_frmival (const struct device * dev , enum video_endpoint_id ep ,
451+ struct video_frmival_enum * fie )
452+ {
453+ const struct video_mcux_csi_config * config = dev -> config ;
454+ const struct video_format * fie_fmt = fie -> format ;
455+ int ret ;
456+
457+ #if defined(CONFIG_VIDEO_MCUX_MIPI_CSI2RX )
458+ struct video_format converted_fmt = * fie -> format ;
459+
460+ video_pix_fmt_convert (& converted_fmt , false);
461+ fie -> format = & converted_fmt ;
462+ #endif
463+
464+ ret = video_enum_frmival (config -> source_dev , ep , fie );
465+ fie -> format = fie_fmt ;
466+
467+ return ret ;
468+ }
469+
434470static const struct video_driver_api video_mcux_csi_driver_api = {
435471 .set_format = video_mcux_csi_set_fmt ,
436472 .get_format = video_mcux_csi_get_fmt ,
@@ -442,6 +478,9 @@ static const struct video_driver_api video_mcux_csi_driver_api = {
442478 .set_ctrl = video_mcux_csi_set_ctrl ,
443479 .get_ctrl = video_mcux_csi_get_ctrl ,
444480 .get_caps = video_mcux_csi_get_caps ,
481+ .set_frmival = video_mcux_csi_set_frmival ,
482+ .get_frmival = video_mcux_csi_get_frmival ,
483+ .enum_frmival = video_mcux_csi_enum_frmival ,
445484#ifdef CONFIG_POLL
446485 .set_signal = video_mcux_csi_set_signal ,
447486#endif
0 commit comments