diff mbox series

media: rkisp1: Allow higher input resolution

Message ID 20240217185202.1754750-1-megi@xff.cz
State New
Headers show
Series media: rkisp1: Allow higher input resolution | expand

Commit Message

Ondřej Jirman Feb. 17, 2024, 6:51 p.m. UTC
From: Ondrej Jirman <megi@xff.cz>

In BSP driver, it is allowed, and it works in practice. Tested on
Pinephone Pro/RK3399 with IMX258 at full res.

Signed-off-by: Ondrej Jirman <megi@xff.cz>
---
 drivers/media/platform/rockchip/rkisp1/rkisp1-common.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Ondřej Jirman Feb. 18, 2024, 9:01 p.m. UTC | #1
On Sun, Feb 18, 2024 at 10:59:08PM +0200, Laurent Pinchart wrote:
> Hi Ondrej,
> 
> (CC'ing Paul and Umang)
> 
> Thank you for the patch.
> 
> On Sat, Feb 17, 2024 at 07:51:58PM +0100, Ondřej Jirman wrote:
> > From: Ondrej Jirman <megi@xff.cz>
> > 
> > In BSP driver, it is allowed, and it works in practice. Tested on
> > Pinephone Pro/RK3399 with IMX258 at full res.
> 
> Paul, Umang, do I recall correctly that you have a similar change ?
> Could you review and test this (especially on the i.MX8MP) ?

It's also a limit from the datasheet, so the change should not be that
controversial:

  https://megous.com/dl/tmp/d2b333043ecebaf3.png

(so that it doesn't sound like I just copied the BSP values)

regards,
	o.

> > Signed-off-by: Ondrej Jirman <megi@xff.cz>
> > ---
> >  drivers/media/platform/rockchip/rkisp1/rkisp1-common.h | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
> > index 4b6b28c05b89..74098ddbeeb3 100644
> > --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
> > +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
> > @@ -33,8 +33,8 @@ struct dentry;
> >  #define RKISP1_ISP_SD_SINK			BIT(1)
> >  
> >  /* min and max values for the widths and heights of the entities */
> > -#define RKISP1_ISP_MAX_WIDTH			4032
> > -#define RKISP1_ISP_MAX_HEIGHT			3024
> > +#define RKISP1_ISP_MAX_WIDTH			4416
> > +#define RKISP1_ISP_MAX_HEIGHT			3312
> >  #define RKISP1_ISP_MIN_WIDTH			32
> >  #define RKISP1_ISP_MIN_HEIGHT			32
> >  
> 
> -- 
> Regards,
> 
> Laurent Pinchart
Laurent Pinchart Feb. 19, 2024, 11:54 a.m. UTC | #2
On Mon, Feb 19, 2024 at 07:11:20PM +0900, Paul Elder wrote:
> On Mon, Feb 19, 2024 at 02:33:21PM +0530, Umang Jain wrote:
> > On 19/02/24 7:39 am, Adam Ford wrote:
> > > On Sun, Feb 18, 2024 at 3:02 PM Ondřej Jirman <megi@xff.cz> wrote:
> > > > On Sun, Feb 18, 2024 at 10:59:08PM +0200, Laurent Pinchart wrote:
> > > > > On Sat, Feb 17, 2024 at 07:51:58PM +0100, Ondřej Jirman wrote:
> > > > > > From: Ondrej Jirman <megi@xff.cz>
> > > > > > 
> > > > > > In BSP driver, it is allowed, and it works in practice. Tested on
> > > > > > Pinephone Pro/RK3399 with IMX258 at full res.
> > > > >
> > > > > Paul, Umang, do I recall correctly that you have a similar change ?
> > > > > Could you review and test this (especially on the i.MX8MP) ?
> > > >
> > > > It's also a limit from the datasheet, so the change should not be that
> > > > controversial:
> > > > 
> > > >    https://megous.com/dl/tmp/d2b333043ecebaf3.png
> > > > 
> > > > (so that it doesn't sound like I just copied the BSP values)
> > > > 
> > >  From what I see in the i.MX8M Plus reference manual, it has a max
> > > resolution of 4096x3072, so it might be necessary to move this off
> > 
> > This is what I (and I assume Paul too) have been working with on i.MX8M
> > Plus. So it's the known and tested value of max ISP input from out side.
> >
> > > from a #define into a structure that varies by product family.
> 
> Yes, this is what needs to be done. Here's what I have in my notes:
> 
> - The RK3399 TRM says 4416x3312 max input and output on main path, with
>   1920x1080 max output on self path.
> - The PX30 datasheet [1] says 3264x2448 max input and output on main
>   path, with 1920x1080 max output on self path.
> - The RK3288 documentation [2] (under "Camera Interface and Image
>   Processor") says 4416x3312 max input and output on main path, with
>   1920x1080 max output on self path.
> - The i.MX8MP reference manual (the open one) [3] (in table 13-1) says
>   4096x3072 max resolution in single ISP mode
> 
> The i.MX8M Plus seems to indeed be limited to 4096x3072, but the TPG is
> capable of generating 4416x3312, and the ISP works fine in bypass (and
> therefore raw) mode, so technically it has different maximum sizes
> depending on the format which makes this more exciting.
> 
> In any case, the PX30 (assuming the datasheet is correct) only supports
> up to 3264x2448, so the existing #define is incorrect anyway.
> 
> I don't have a PX30 nor an RK3288 so I can't test those, and I haven't
> set up my OV64A40 yet which (I've heard) can be used to test even bigger
> resolutions.

Thanks for the summary Paul.

Ondřej, would you be interested in implementing this ?

> [1] https://opensource.rock-chips.com/images/8/87/Rockchip_PX30_Datasheet_V1.4-20191227.pdf
> [2] https://opensource.rock-chips.com/images/4/49/Rockchip_RK3288_Datasheet_V2.7-20191227.pdf
> [3] (requires login) https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-8-applications-processors/i-mx-8m-plus-arm-cortex-a53-machine-learning-vision-multimedia-and-industrial-iot:IMX8MPLUS
> 
> > > > > > Signed-off-by: Ondrej Jirman <megi@xff.cz>
> > > > > > ---
> > > > > >   drivers/media/platform/rockchip/rkisp1/rkisp1-common.h | 4 ++--
> > > > > >   1 file changed, 2 insertions(+), 2 deletions(-)
> > > > > > 
> > > > > > diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
> > > > > > index 4b6b28c05b89..74098ddbeeb3 100644
> > > > > > --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
> > > > > > +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
> > > > > > @@ -33,8 +33,8 @@ struct dentry;
> > > > > >   #define RKISP1_ISP_SD_SINK                 BIT(1)
> > > > > > 
> > > > > >   /* min and max values for the widths and heights of the entities */
> > > > > > -#define RKISP1_ISP_MAX_WIDTH                       4032
> > > > > > -#define RKISP1_ISP_MAX_HEIGHT                      3024
> > > > > > +#define RKISP1_ISP_MAX_WIDTH                       4416
> > > > > > +#define RKISP1_ISP_MAX_HEIGHT                      3312
> > > > > >   #define RKISP1_ISP_MIN_WIDTH                       32
> > > > > >   #define RKISP1_ISP_MIN_HEIGHT                      32
> > > > > >
Ondřej Jirman Feb. 20, 2024, 11:56 p.m. UTC | #3
On Mon, Feb 19, 2024 at 07:11:20PM +0900, Paul Elder wrote:
> On Mon, Feb 19, 2024 at 02:33:21PM +0530, Umang Jain wrote:
> > Hi All,
> > 
> > On 19/02/24 7:39 am, Adam Ford wrote:
> > > On Sun, Feb 18, 2024 at 3:02 PM Ondřej Jirman <megi@xff.cz> wrote:
> > > > On Sun, Feb 18, 2024 at 10:59:08PM +0200, Laurent Pinchart wrote:
> > > > > Hi Ondrej,
> > > > > 
> > > > > (CC'ing Paul and Umang)
> > > > > 
> > > > > Thank you for the patch.
> > > > > 
> > > > > On Sat, Feb 17, 2024 at 07:51:58PM +0100, Ondřej Jirman wrote:
> > > > > > From: Ondrej Jirman <megi@xff.cz>
> > > > > > 
> > > > > > In BSP driver, it is allowed, and it works in practice. Tested on
> > > > > > Pinephone Pro/RK3399 with IMX258 at full res.
> > > > > Paul, Umang, do I recall correctly that you have a similar change ?
> > > > > Could you review and test this (especially on the i.MX8MP) ?
> > > > It's also a limit from the datasheet, so the change should not be that
> > > > controversial:
> > > > 
> > > >    https://megous.com/dl/tmp/d2b333043ecebaf3.png
> > > > 
> > > > (so that it doesn't sound like I just copied the BSP values)
> > > > 
> > >  From what I see in the i.MX8M Plus reference manual, it has a max
> > > resolution of 4096x3072, so it might be necessary to move this off
> > 
> > This is what I (and I assume Paul too) have been working with on i.MX8M
> > Plus. So it's the known and tested value of max ISP input from out side.
> > > from a #define into a structure that varies by product family.
> 
> Yes, this is what needs to be done. Here's what I have in my notes:
> 
> - The RK3399 TRM says 4416x3312 max input and output on main path, with
>   1920x1080 max output on self path.
> - The PX30 datasheet [1] says 3264x2448 max input and output on main
>   path, with 1920x1080 max output on self path.
> - The RK3288 documentation [2] (under "Camera Interface and Image
>   Processor") says 4416x3312 max input and output on main path, with
>   1920x1080 max output on self path.
> - The i.MX8MP reference manual (the open one) [3] (in table 13-1) says
>   4096x3072 max resolution in single ISP mode

Yeah, RKISP1_RSZ_SP_SRC_MAX_HEIGHT in the driver also seems weird in
this respect:

  #define RKISP1_RSZ_SP_SRC_MAX_WIDTH             1920
  #define RKISP1_RSZ_SP_SRC_MAX_HEIGHT            1920

regards,
	o.

> The i.MX8M Plus seems to indeed be limited to 4096x3072, but the TPG is
> capable of generating 4416x3312, and the ISP works fine in bypass (and
> therefore raw) mode, so technically it has different maximum sizes
> depending on the format which makes this more exciting.
> 
> In any case, the PX30 (assuming the datasheet is correct) only supports
> up to 3264x2448, so the existing #define is incorrect anyway.
> 
> I don't have a PX30 nor an RK3288 so I can't test those, and I haven't
> set up my OV64A40 yet which (I've heard) can be used to test even bigger
> resolutions.
> 
> 
> Paul
> 
> [1] https://opensource.rock-chips.com/images/8/87/Rockchip_PX30_Datasheet_V1.4-20191227.pdf
> [2] https://opensource.rock-chips.com/images/4/49/Rockchip_RK3288_Datasheet_V2.7-20191227.pdf
> [3] (requires login) https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-8-applications-processors/i-mx-8m-plus-arm-cortex-a53-machine-learning-vision-multimedia-and-industrial-iot:IMX8MPLUS
> 
> 
> > 
> > Yeah!
> > > 
> > > adam
> > > > regards,
> > > >          o.
> > > > 
> > > > > > Signed-off-by: Ondrej Jirman <megi@xff.cz>
> > > > > > ---
> > > > > >   drivers/media/platform/rockchip/rkisp1/rkisp1-common.h | 4 ++--
> > > > > >   1 file changed, 2 insertions(+), 2 deletions(-)
> > > > > > 
> > > > > > diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
> > > > > > index 4b6b28c05b89..74098ddbeeb3 100644
> > > > > > --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
> > > > > > +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
> > > > > > @@ -33,8 +33,8 @@ struct dentry;
> > > > > >   #define RKISP1_ISP_SD_SINK                 BIT(1)
> > > > > > 
> > > > > >   /* min and max values for the widths and heights of the entities */
> > > > > > -#define RKISP1_ISP_MAX_WIDTH                       4032
> > > > > > -#define RKISP1_ISP_MAX_HEIGHT                      3024
> > > > > > +#define RKISP1_ISP_MAX_WIDTH                       4416
> > > > > > +#define RKISP1_ISP_MAX_HEIGHT                      3312
> > > > > >   #define RKISP1_ISP_MIN_WIDTH                       32
> > > > > >   #define RKISP1_ISP_MIN_HEIGHT                      32
> > > > > > 
> > > > > --
> > > > > Regards,
> > > > > 
> > > > > Laurent Pinchart
> >
Ondřej Jirman Feb. 20, 2024, 11:59 p.m. UTC | #4
Hello Laurent,

On Mon, Feb 19, 2024 at 01:54:30PM +0200, Laurent Pinchart wrote:
> On Mon, Feb 19, 2024 at 07:11:20PM +0900, Paul Elder wrote:
> > On Mon, Feb 19, 2024 at 02:33:21PM +0530, Umang Jain wrote:
> > > On 19/02/24 7:39 am, Adam Ford wrote:
> > > > On Sun, Feb 18, 2024 at 3:02 PM Ondřej Jirman <megi@xff.cz> wrote:
> > > > > On Sun, Feb 18, 2024 at 10:59:08PM +0200, Laurent Pinchart wrote:
> > > > > > On Sat, Feb 17, 2024 at 07:51:58PM +0100, Ondřej Jirman wrote:
> > > > > > > From: Ondrej Jirman <megi@xff.cz>
> > > > > > > 
> > > > > > > In BSP driver, it is allowed, and it works in practice. Tested on
> > > > > > > Pinephone Pro/RK3399 with IMX258 at full res.
> > > > > >
> > > > > > Paul, Umang, do I recall correctly that you have a similar change ?
> > > > > > Could you review and test this (especially on the i.MX8MP) ?
> > > > >
> > > > > It's also a limit from the datasheet, so the change should not be that
> > > > > controversial:
> > > > > 
> > > > >    https://megous.com/dl/tmp/d2b333043ecebaf3.png
> > > > > 
> > > > > (so that it doesn't sound like I just copied the BSP values)
> > > > > 
> > > >  From what I see in the i.MX8M Plus reference manual, it has a max
> > > > resolution of 4096x3072, so it might be necessary to move this off
> > > 
> > > This is what I (and I assume Paul too) have been working with on i.MX8M
> > > Plus. So it's the known and tested value of max ISP input from out side.
> > >
> > > > from a #define into a structure that varies by product family.
> > 
> > Yes, this is what needs to be done. Here's what I have in my notes:
> > 
> > - The RK3399 TRM says 4416x3312 max input and output on main path, with
> >   1920x1080 max output on self path.
> > - The PX30 datasheet [1] says 3264x2448 max input and output on main
> >   path, with 1920x1080 max output on self path.
> > - The RK3288 documentation [2] (under "Camera Interface and Image
> >   Processor") says 4416x3312 max input and output on main path, with
> >   1920x1080 max output on self path.
> > - The i.MX8MP reference manual (the open one) [3] (in table 13-1) says
> >   4096x3072 max resolution in single ISP mode
> > 
> > The i.MX8M Plus seems to indeed be limited to 4096x3072, but the TPG is
> > capable of generating 4416x3312, and the ISP works fine in bypass (and
> > therefore raw) mode, so technically it has different maximum sizes
> > depending on the format which makes this more exciting.
> > 
> > In any case, the PX30 (assuming the datasheet is correct) only supports
> > up to 3264x2448, so the existing #define is incorrect anyway.
> > 
> > I don't have a PX30 nor an RK3288 so I can't test those, and I haven't
> > set up my OV64A40 yet which (I've heard) can be used to test even bigger
> > resolutions.
> 
> Thanks for the summary Paul.
> 
> Ondřej, would you be interested in implementing this ?

Something like this?

https://lore.kernel.org/lkml/20240220235720.3010608-1-megi@xff.cz/T/#u

Only the first two SoCs are supported by rkisp1 driver upstream, yet. So I
only have to deal with input and mainpath maximum ATM. So the patch is rather
simple.

kind regards,
	o.

> > [1] https://opensource.rock-chips.com/images/8/87/Rockchip_PX30_Datasheet_V1.4-20191227.pdf
> > [2] https://opensource.rock-chips.com/images/4/49/Rockchip_RK3288_Datasheet_V2.7-20191227.pdf
> > [3] (requires login) https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-8-applications-processors/i-mx-8m-plus-arm-cortex-a53-machine-learning-vision-multimedia-and-industrial-iot:IMX8MPLUS
> > 
> > > > > > > Signed-off-by: Ondrej Jirman <megi@xff.cz>
> > > > > > > ---
> > > > > > >   drivers/media/platform/rockchip/rkisp1/rkisp1-common.h | 4 ++--
> > > > > > >   1 file changed, 2 insertions(+), 2 deletions(-)
> > > > > > > 
> > > > > > > diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
> > > > > > > index 4b6b28c05b89..74098ddbeeb3 100644
> > > > > > > --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
> > > > > > > +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
> > > > > > > @@ -33,8 +33,8 @@ struct dentry;
> > > > > > >   #define RKISP1_ISP_SD_SINK                 BIT(1)
> > > > > > > 
> > > > > > >   /* min and max values for the widths and heights of the entities */
> > > > > > > -#define RKISP1_ISP_MAX_WIDTH                       4032
> > > > > > > -#define RKISP1_ISP_MAX_HEIGHT                      3024
> > > > > > > +#define RKISP1_ISP_MAX_WIDTH                       4416
> > > > > > > +#define RKISP1_ISP_MAX_HEIGHT                      3312
> > > > > > >   #define RKISP1_ISP_MIN_WIDTH                       32
> > > > > > >   #define RKISP1_ISP_MIN_HEIGHT                      32
> > > > > > > 
> 
> -- 
> Regards,
> 
> Laurent Pinchart
diff mbox series

Patch

diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
index 4b6b28c05b89..74098ddbeeb3 100644
--- a/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
+++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-common.h
@@ -33,8 +33,8 @@  struct dentry;
 #define RKISP1_ISP_SD_SINK			BIT(1)
 
 /* min and max values for the widths and heights of the entities */
-#define RKISP1_ISP_MAX_WIDTH			4032
-#define RKISP1_ISP_MAX_HEIGHT			3024
+#define RKISP1_ISP_MAX_WIDTH			4416
+#define RKISP1_ISP_MAX_HEIGHT			3312
 #define RKISP1_ISP_MIN_WIDTH			32
 #define RKISP1_ISP_MIN_HEIGHT			32