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