I wasn't able to get this patch to apply. I tried applying the patch mentioned in the cover letter first but it didn't help... It's not your fault, but it made reviewing the rest hard so I might have made some mistakes. On Wed, Mar 06, 2024 at 01:33:32AM -0800, Changhuang Liang wrote: > Add raw video device to capture raw data from ISP. > > Signed-off-by: Changhuang Liang <changhuang.liang@xxxxxxxxxxxxxxxx> > --- > .../staging/media/starfive/camss/stf-camss.c | 19 ++++++ > .../media/starfive/camss/stf-capture.c | 58 ++++++++++++++++++- > .../staging/media/starfive/camss/stf-video.h | 1 + > 3 files changed, 77 insertions(+), 1 deletion(-) > > diff --git a/drivers/staging/media/starfive/camss/stf-camss.c b/drivers/staging/media/starfive/camss/stf-camss.c > index 81fc39f20615..90ac8b67c76e 100644 > --- a/drivers/staging/media/starfive/camss/stf-camss.c > +++ b/drivers/staging/media/starfive/camss/stf-camss.c > @@ -126,6 +126,7 @@ static int stfcamss_of_parse_ports(struct stfcamss *stfcamss) > static int stfcamss_register_devs(struct stfcamss *stfcamss) > { > struct stf_capture *cap_yuv = &stfcamss->captures[STF_CAPTURE_YUV]; > + struct stf_capture *cap_raw = &stfcamss->captures[STF_CAPTURE_RAW]; > struct stf_isp_dev *isp_dev = &stfcamss->isp_dev; > int ret; > > @@ -150,8 +151,18 @@ static int stfcamss_register_devs(struct stfcamss *stfcamss) > > cap_yuv->video.source_subdev = &isp_dev->subdev; > > + ret = media_create_pad_link(&isp_dev->subdev.entity, STF_ISP_PAD_SRC_RAW, > + &cap_raw->video.vdev.entity, 0, 0); > + if (ret) > + goto err_rm_links0; > + > + cap_raw->video.source_subdev = &isp_dev->subdev; > + > return ret; > > +err_rm_links0: > + media_entity_remove_links(&isp_dev->subdev.entity); I don't think this line is correct. I think we only need to remove &cap_yuv->video.vdev.entity. > + media_entity_remove_links(&cap_yuv->video.vdev.entity); > err_cap_unregister: > stf_capture_unregister(stfcamss); > err_isp_unregister: > @@ -162,6 +173,14 @@ static int stfcamss_register_devs(struct stfcamss *stfcamss) > > static void stfcamss_unregister_devs(struct stfcamss *stfcamss) > { > + struct stf_capture *cap_yuv = &stfcamss->captures[STF_CAPTURE_YUV]; > + struct stf_capture *cap_raw = &stfcamss->captures[STF_CAPTURE_RAW]; > + struct stf_isp_dev *isp_dev = &stfcamss->isp_dev; > + > + media_entity_remove_links(&isp_dev->subdev.entity); I think this line should be deleted. > + media_entity_remove_links(&cap_raw->video.vdev.entity); > + media_entity_remove_links(&cap_yuv->video.vdev.entity); I think this "&cap_yuv" should be submitted by itself as a bugfix patch. > + > stf_isp_unregister(&stfcamss->isp_dev); > stf_capture_unregister(stfcamss); > } regards, dan carpenter