Message ID | 20220630230713.10580-49-laurent.pinchart@ideasonboard.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | media: rkisp1: Cleanups and add support for i.MX8MP | expand |
On Thu, Jun 30, 2022 at 6:27 PM Laurent Pinchart <laurent.pinchart@ideasonboard.com> wrote: > > From: Paul Elder <paul.elder@ideasonboard.com> > > Add match data to the rkisp1 driver to match the i.MX8MP ISP. > I am testing this series on an i.MX8MP with two Sony IMX219 cameras in 4-lane mode. From what I can tell, the ISP_1 doesn't enumerate if ISP_0 is already enumerated. My guess is that the name of the ISP is hard-coded so the second instance isn't able to load because the names conflict. I don't see any errors, so it's just a guess. > Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> > --- > .../platform/rockchip/rkisp1/rkisp1-dev.c | 22 +++++++++++++++++++ > include/uapi/linux/rkisp1-config.h | 3 +++ > 2 files changed, 25 insertions(+) > > diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c > index f2475c6235ea..a41f89807dd7 100644 > --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c > +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c > @@ -496,6 +496,24 @@ static const struct rkisp1_info rk3399_isp_info = { > .features = RKISP1_FEATURE_MIPI_CSI2, > }; > > +static const char * const imx8mp_isp_clks[] = { > + "isp", > + "hclk", > + "aclk", > +}; > + > +static const struct rkisp1_isr_data imx8mp_isp_isrs[] = { > + { NULL, rkisp1_isr }, > +}; > + > +static const struct rkisp1_info imx8mp_isp_info = { > + .clks = imx8mp_isp_clks, > + .clk_size = ARRAY_SIZE(imx8mp_isp_clks), > + .isrs = imx8mp_isp_isrs, > + .isr_size = ARRAY_SIZE(imx8mp_isp_isrs), > + .isp_ver = IMX8MP_V10, > +}; > + > static const struct of_device_id rkisp1_of_match[] = { > { > .compatible = "rockchip,px30-cif-isp", > @@ -505,6 +523,10 @@ static const struct of_device_id rkisp1_of_match[] = { > .compatible = "rockchip,rk3399-cif-isp", > .data = &rk3399_isp_info, > }, > + { > + .compatible = "fsl,imx8mp-isp", > + .data = &imx8mp_isp_info, > + }, > {}, > }; > MODULE_DEVICE_TABLE(of, rkisp1_of_match); > diff --git a/include/uapi/linux/rkisp1-config.h b/include/uapi/linux/rkisp1-config.h > index 583ca0d9a79d..40677d47825c 100644 > --- a/include/uapi/linux/rkisp1-config.h > +++ b/include/uapi/linux/rkisp1-config.h > @@ -140,12 +140,15 @@ > * @RKISP1_V11: declared in the original vendor code, but not used > * @RKISP1_V12: used at least in rk3326 and px30 > * @RKISP1_V13: used at least in rk1808 > + * @IMX8MP_V10: used in at least imx8mp > */ > enum rkisp1_cif_isp_version { > RKISP1_V10 = 10, > RKISP1_V11, > RKISP1_V12, > RKISP1_V13, > + /* TODO Choose a better version for this */ > + IMX8MP_V10, > }; > > enum rkisp1_cif_isp_histogram_mode { > -- > Regards, > > Laurent Pinchart >
Hi Adam, On Fri, Jul 15, 2022 at 06:56:57AM -0500, Adam Ford wrote: > On Thu, Jun 30, 2022 at 6:27 PM Laurent Pinchart > <laurent.pinchart@ideasonboard.com> wrote: > > > > From: Paul Elder <paul.elder@ideasonboard.com> > > > > Add match data to the rkisp1 driver to match the i.MX8MP ISP. > > I am testing this series on an i.MX8MP with two Sony IMX219 cameras in > 4-lane mode. > From what I can tell, the ISP_1 doesn't enumerate if ISP_0 is already > enumerated. My guess is that the name of the ISP is hard-coded so the > second instance isn't able to load because the names conflict. I > don't see any errors, so it's just a guess. I'll have a look. > > Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> > > --- > > .../platform/rockchip/rkisp1/rkisp1-dev.c | 22 +++++++++++++++++++ > > include/uapi/linux/rkisp1-config.h | 3 +++ > > 2 files changed, 25 insertions(+) > > > > diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c > > index f2475c6235ea..a41f89807dd7 100644 > > --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c > > +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c > > @@ -496,6 +496,24 @@ static const struct rkisp1_info rk3399_isp_info = { > > .features = RKISP1_FEATURE_MIPI_CSI2, > > }; > > > > +static const char * const imx8mp_isp_clks[] = { > > + "isp", > > + "hclk", > > + "aclk", > > +}; > > + > > +static const struct rkisp1_isr_data imx8mp_isp_isrs[] = { > > + { NULL, rkisp1_isr }, > > +}; > > + > > +static const struct rkisp1_info imx8mp_isp_info = { > > + .clks = imx8mp_isp_clks, > > + .clk_size = ARRAY_SIZE(imx8mp_isp_clks), > > + .isrs = imx8mp_isp_isrs, > > + .isr_size = ARRAY_SIZE(imx8mp_isp_isrs), > > + .isp_ver = IMX8MP_V10, > > +}; > > + > > static const struct of_device_id rkisp1_of_match[] = { > > { > > .compatible = "rockchip,px30-cif-isp", > > @@ -505,6 +523,10 @@ static const struct of_device_id rkisp1_of_match[] = { > > .compatible = "rockchip,rk3399-cif-isp", > > .data = &rk3399_isp_info, > > }, > > + { > > + .compatible = "fsl,imx8mp-isp", > > + .data = &imx8mp_isp_info, > > + }, > > {}, > > }; > > MODULE_DEVICE_TABLE(of, rkisp1_of_match); > > diff --git a/include/uapi/linux/rkisp1-config.h b/include/uapi/linux/rkisp1-config.h > > index 583ca0d9a79d..40677d47825c 100644 > > --- a/include/uapi/linux/rkisp1-config.h > > +++ b/include/uapi/linux/rkisp1-config.h > > @@ -140,12 +140,15 @@ > > * @RKISP1_V11: declared in the original vendor code, but not used > > * @RKISP1_V12: used at least in rk3326 and px30 > > * @RKISP1_V13: used at least in rk1808 > > + * @IMX8MP_V10: used in at least imx8mp > > */ > > enum rkisp1_cif_isp_version { > > RKISP1_V10 = 10, > > RKISP1_V11, > > RKISP1_V12, > > RKISP1_V13, > > + /* TODO Choose a better version for this */ > > + IMX8MP_V10, > > }; > > > > enum rkisp1_cif_isp_histogram_mode {
Hi Adam, On Sun, Jul 17, 2022 at 05:56:56PM +0300, Laurent Pinchart wrote: > On Fri, Jul 15, 2022 at 06:56:57AM -0500, Adam Ford wrote: > > On Thu, Jun 30, 2022 at 6:27 PM Laurent Pinchart wrote: > > > > > > From: Paul Elder <paul.elder@ideasonboard.com> > > > > > > Add match data to the rkisp1 driver to match the i.MX8MP ISP. > > > > I am testing this series on an i.MX8MP with two Sony IMX219 cameras in > > 4-lane mode. > > From what I can tell, the ISP_1 doesn't enumerate if ISP_0 is already > > enumerated. My guess is that the name of the ISP is hard-coded so the > > second instance isn't able to load because the names conflict. I > > don't see any errors, so it's just a guess. > > I'll have a look. Both ISP instances probe successfully for me, with two different sensors though (IMX327 and IMX296). Can you share more information about your issue ? > > > Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> > > > --- > > > .../platform/rockchip/rkisp1/rkisp1-dev.c | 22 +++++++++++++++++++ > > > include/uapi/linux/rkisp1-config.h | 3 +++ > > > 2 files changed, 25 insertions(+) > > > > > > diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c > > > index f2475c6235ea..a41f89807dd7 100644 > > > --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c > > > +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c > > > @@ -496,6 +496,24 @@ static const struct rkisp1_info rk3399_isp_info = { > > > .features = RKISP1_FEATURE_MIPI_CSI2, > > > }; > > > > > > +static const char * const imx8mp_isp_clks[] = { > > > + "isp", > > > + "hclk", > > > + "aclk", > > > +}; > > > + > > > +static const struct rkisp1_isr_data imx8mp_isp_isrs[] = { > > > + { NULL, rkisp1_isr }, > > > +}; > > > + > > > +static const struct rkisp1_info imx8mp_isp_info = { > > > + .clks = imx8mp_isp_clks, > > > + .clk_size = ARRAY_SIZE(imx8mp_isp_clks), > > > + .isrs = imx8mp_isp_isrs, > > > + .isr_size = ARRAY_SIZE(imx8mp_isp_isrs), > > > + .isp_ver = IMX8MP_V10, > > > +}; > > > + > > > static const struct of_device_id rkisp1_of_match[] = { > > > { > > > .compatible = "rockchip,px30-cif-isp", > > > @@ -505,6 +523,10 @@ static const struct of_device_id rkisp1_of_match[] = { > > > .compatible = "rockchip,rk3399-cif-isp", > > > .data = &rk3399_isp_info, > > > }, > > > + { > > > + .compatible = "fsl,imx8mp-isp", > > > + .data = &imx8mp_isp_info, > > > + }, > > > {}, > > > }; > > > MODULE_DEVICE_TABLE(of, rkisp1_of_match); > > > diff --git a/include/uapi/linux/rkisp1-config.h b/include/uapi/linux/rkisp1-config.h > > > index 583ca0d9a79d..40677d47825c 100644 > > > --- a/include/uapi/linux/rkisp1-config.h > > > +++ b/include/uapi/linux/rkisp1-config.h > > > @@ -140,12 +140,15 @@ > > > * @RKISP1_V11: declared in the original vendor code, but not used > > > * @RKISP1_V12: used at least in rk3326 and px30 > > > * @RKISP1_V13: used at least in rk1808 > > > + * @IMX8MP_V10: used in at least imx8mp > > > */ > > > enum rkisp1_cif_isp_version { > > > RKISP1_V10 = 10, > > > RKISP1_V11, > > > RKISP1_V12, > > > RKISP1_V13, > > > + /* TODO Choose a better version for this */ > > > + IMX8MP_V10, > > > }; > > > > > > enum rkisp1_cif_isp_histogram_mode {
On Sun, Jul 17, 2022 at 10:23 AM Laurent Pinchart <laurent.pinchart@ideasonboard.com> wrote: > > Hi Adam, > > On Sun, Jul 17, 2022 at 05:56:56PM +0300, Laurent Pinchart wrote: > > On Fri, Jul 15, 2022 at 06:56:57AM -0500, Adam Ford wrote: > > > On Thu, Jun 30, 2022 at 6:27 PM Laurent Pinchart wrote: > > > > > > > > From: Paul Elder <paul.elder@ideasonboard.com> > > > > > > > > Add match data to the rkisp1 driver to match the i.MX8MP ISP. > > > > > > I am testing this series on an i.MX8MP with two Sony IMX219 cameras in > > > 4-lane mode. > > > From what I can tell, the ISP_1 doesn't enumerate if ISP_0 is already > > > enumerated. My guess is that the name of the ISP is hard-coded so the > > > second instance isn't able to load because the names conflict. I > > > don't see any errors, so it's just a guess. > > > > I'll have a look. Thanks! > > Both ISP instances probe successfully for me, with two different sensors > though (IMX327 and IMX296). Can you share more information about your > issue ? I'll double check the repo I am using as my starting base when I get back into the office tomorrow. I'll rebase my device tree changes if I don't have the latest and let you know what I am seeing. adam > > > > > Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> > > > > --- > > > > .../platform/rockchip/rkisp1/rkisp1-dev.c | 22 +++++++++++++++++++ > > > > include/uapi/linux/rkisp1-config.h | 3 +++ > > > > 2 files changed, 25 insertions(+) > > > > > > > > diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c > > > > index f2475c6235ea..a41f89807dd7 100644 > > > > --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c > > > > +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c > > > > @@ -496,6 +496,24 @@ static const struct rkisp1_info rk3399_isp_info = { > > > > .features = RKISP1_FEATURE_MIPI_CSI2, > > > > }; > > > > > > > > +static const char * const imx8mp_isp_clks[] = { > > > > + "isp", > > > > + "hclk", > > > > + "aclk", > > > > +}; > > > > + > > > > +static const struct rkisp1_isr_data imx8mp_isp_isrs[] = { > > > > + { NULL, rkisp1_isr }, > > > > +}; > > > > + > > > > +static const struct rkisp1_info imx8mp_isp_info = { > > > > + .clks = imx8mp_isp_clks, > > > > + .clk_size = ARRAY_SIZE(imx8mp_isp_clks), > > > > + .isrs = imx8mp_isp_isrs, > > > > + .isr_size = ARRAY_SIZE(imx8mp_isp_isrs), > > > > + .isp_ver = IMX8MP_V10, > > > > +}; > > > > + > > > > static const struct of_device_id rkisp1_of_match[] = { > > > > { > > > > .compatible = "rockchip,px30-cif-isp", > > > > @@ -505,6 +523,10 @@ static const struct of_device_id rkisp1_of_match[] = { > > > > .compatible = "rockchip,rk3399-cif-isp", > > > > .data = &rk3399_isp_info, > > > > }, > > > > + { > > > > + .compatible = "fsl,imx8mp-isp", > > > > + .data = &imx8mp_isp_info, > > > > + }, > > > > {}, > > > > }; > > > > MODULE_DEVICE_TABLE(of, rkisp1_of_match); > > > > diff --git a/include/uapi/linux/rkisp1-config.h b/include/uapi/linux/rkisp1-config.h > > > > index 583ca0d9a79d..40677d47825c 100644 > > > > --- a/include/uapi/linux/rkisp1-config.h > > > > +++ b/include/uapi/linux/rkisp1-config.h > > > > @@ -140,12 +140,15 @@ > > > > * @RKISP1_V11: declared in the original vendor code, but not used > > > > * @RKISP1_V12: used at least in rk3326 and px30 > > > > * @RKISP1_V13: used at least in rk1808 > > > > + * @IMX8MP_V10: used in at least imx8mp > > > > */ > > > > enum rkisp1_cif_isp_version { > > > > RKISP1_V10 = 10, > > > > RKISP1_V11, > > > > RKISP1_V12, > > > > RKISP1_V13, > > > > + /* TODO Choose a better version for this */ > > > > + IMX8MP_V10, > > > > }; > > > > > > > > enum rkisp1_cif_isp_histogram_mode { > > -- > Regards, > > Laurent Pinchart
diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c index f2475c6235ea..a41f89807dd7 100644 --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c @@ -496,6 +496,24 @@ static const struct rkisp1_info rk3399_isp_info = { .features = RKISP1_FEATURE_MIPI_CSI2, }; +static const char * const imx8mp_isp_clks[] = { + "isp", + "hclk", + "aclk", +}; + +static const struct rkisp1_isr_data imx8mp_isp_isrs[] = { + { NULL, rkisp1_isr }, +}; + +static const struct rkisp1_info imx8mp_isp_info = { + .clks = imx8mp_isp_clks, + .clk_size = ARRAY_SIZE(imx8mp_isp_clks), + .isrs = imx8mp_isp_isrs, + .isr_size = ARRAY_SIZE(imx8mp_isp_isrs), + .isp_ver = IMX8MP_V10, +}; + static const struct of_device_id rkisp1_of_match[] = { { .compatible = "rockchip,px30-cif-isp", @@ -505,6 +523,10 @@ static const struct of_device_id rkisp1_of_match[] = { .compatible = "rockchip,rk3399-cif-isp", .data = &rk3399_isp_info, }, + { + .compatible = "fsl,imx8mp-isp", + .data = &imx8mp_isp_info, + }, {}, }; MODULE_DEVICE_TABLE(of, rkisp1_of_match); diff --git a/include/uapi/linux/rkisp1-config.h b/include/uapi/linux/rkisp1-config.h index 583ca0d9a79d..40677d47825c 100644 --- a/include/uapi/linux/rkisp1-config.h +++ b/include/uapi/linux/rkisp1-config.h @@ -140,12 +140,15 @@ * @RKISP1_V11: declared in the original vendor code, but not used * @RKISP1_V12: used at least in rk3326 and px30 * @RKISP1_V13: used at least in rk1808 + * @IMX8MP_V10: used in at least imx8mp */ enum rkisp1_cif_isp_version { RKISP1_V10 = 10, RKISP1_V11, RKISP1_V12, RKISP1_V13, + /* TODO Choose a better version for this */ + IMX8MP_V10, }; enum rkisp1_cif_isp_histogram_mode {