mbox series

[v4,00/11] media: rkisp1: Add support for i.MX8MP

Message ID 20231129092759.242641-1-paul.elder@ideasonboard.com (mailing list archive)
Headers show
Series media: rkisp1: Add support for i.MX8MP | expand

Message

Paul Elder Nov. 29, 2023, 9:27 a.m. UTC
This series extends the rkisp1 driver to support the ISP found in the
NXP i.MX8MP SoC.

The ISP IP cores in the Rockchip RK3399 (known as the "Rockchip ISP1")
and in the NXP i.MX8MP have the same origin, and have slightly diverged
over time as they are now independently developed (afaik) by Rockchip
and VeriSilicon. The latter is marketed under the name "ISP8000Nano",
and is close enough to the RK3399 ISP that it can easily be supported by
the same driver.

The last two patches add support for UYVY output format, which can be
implemented on the ISP version in the i.MX8MP but not in the one in the
RK3399.

This version of the series specifically has been tested on a Polyhex
Debix model A with an imx219 (Raspberry Pi cam v2).

Laurent Pinchart (2):
  media: rkisp1: Add and use rkisp1_has_feature() macro
  media: rkisp1: Configure gasket on i.MX8MP

Paul Elder (9):
  media: rkisp1: Support setting memory stride for main path
  media: rkisp1: Support devices lacking self path
  media: rkisp1: Support devices lacking dual crop
  media: rkisp1: Fix RSZ_CTRL bits for i.MX8MP
  dt-bindings: media: rkisp1: Add i.MX8MP ISP to compatible
  media: rkisp1: Add match data for i.MX8MP ISP
  media: rkisp1: Shift DMA buffer addresses on i.MX8MP
  media: rkisp1: Add YC swap capability
  media: rkisp1: Add UYVY as an output format

 .../bindings/media/rockchip-isp1.yaml         |  37 ++++-
 .../platform/rockchip/rkisp1/rkisp1-capture.c | 128 ++++++++++++-----
 .../platform/rockchip/rkisp1/rkisp1-common.h  |  35 ++++-
 .../platform/rockchip/rkisp1/rkisp1-dev.c     |  66 +++++++--
 .../platform/rockchip/rkisp1/rkisp1-isp.c     | 131 +++++++++++++++++-
 .../platform/rockchip/rkisp1/rkisp1-regs.h    |  32 +++++
 .../platform/rockchip/rkisp1/rkisp1-resizer.c |  27 ++--
 include/uapi/linux/rkisp1-config.h            |   2 +
 8 files changed, 398 insertions(+), 60 deletions(-)

Comments

Alexander Stein Nov. 29, 2023, 10:58 a.m. UTC | #1
Hi Paul,

thanks for the series.

Am Mittwoch, 29. November 2023, 10:27:48 CET schrieb Paul Elder:
> This series extends the rkisp1 driver to support the ISP found in the
> NXP i.MX8MP SoC.
> 
> The ISP IP cores in the Rockchip RK3399 (known as the "Rockchip ISP1")
> and in the NXP i.MX8MP have the same origin, and have slightly diverged
> over time as they are now independently developed (afaik) by Rockchip
> and VeriSilicon. The latter is marketed under the name "ISP8000Nano",
> and is close enough to the RK3399 ISP that it can easily be supported by
> the same driver.
> 
> The last two patches add support for UYVY output format, which can be
> implemented on the ISP version in the i.MX8MP but not in the one in the
> RK3399.
> 
> This version of the series specifically has been tested on a Polyhex
> Debix model A with an imx219 (Raspberry Pi cam v2).

I've created a setup on TQMa8MPxL/MBa8MPxL and a Sony IMX327 sensor for a 
while now. I can stream 1080p video at 45 FPS to HDMI output without any 
special configuration.

Tested-by: Alexander Stein <alexander.stein@ew.tq-group.com>

> Laurent Pinchart (2):
>   media: rkisp1: Add and use rkisp1_has_feature() macro
>   media: rkisp1: Configure gasket on i.MX8MP
> 
> Paul Elder (9):
>   media: rkisp1: Support setting memory stride for main path
>   media: rkisp1: Support devices lacking self path
>   media: rkisp1: Support devices lacking dual crop
>   media: rkisp1: Fix RSZ_CTRL bits for i.MX8MP
>   dt-bindings: media: rkisp1: Add i.MX8MP ISP to compatible
>   media: rkisp1: Add match data for i.MX8MP ISP
>   media: rkisp1: Shift DMA buffer addresses on i.MX8MP
>   media: rkisp1: Add YC swap capability
>   media: rkisp1: Add UYVY as an output format
> 
>  .../bindings/media/rockchip-isp1.yaml         |  37 ++++-
>  .../platform/rockchip/rkisp1/rkisp1-capture.c | 128 ++++++++++++-----
>  .../platform/rockchip/rkisp1/rkisp1-common.h  |  35 ++++-
>  .../platform/rockchip/rkisp1/rkisp1-dev.c     |  66 +++++++--
>  .../platform/rockchip/rkisp1/rkisp1-isp.c     | 131 +++++++++++++++++-
>  .../platform/rockchip/rkisp1/rkisp1-regs.h    |  32 +++++
>  .../platform/rockchip/rkisp1/rkisp1-resizer.c |  27 ++--
>  include/uapi/linux/rkisp1-config.h            |   2 +
>  8 files changed, 398 insertions(+), 60 deletions(-)
Adam Ford Nov. 29, 2023, 11:36 a.m. UTC | #2
On Wed, Nov 29, 2023 at 3:28 AM Paul Elder <paul.elder@ideasonboard.com> wrote:
>
> This series extends the rkisp1 driver to support the ISP found in the
> NXP i.MX8MP SoC.
>
> The ISP IP cores in the Rockchip RK3399 (known as the "Rockchip ISP1")
> and in the NXP i.MX8MP have the same origin, and have slightly diverged
> over time as they are now independently developed (afaik) by Rockchip
> and VeriSilicon. The latter is marketed under the name "ISP8000Nano",
> and is close enough to the RK3399 ISP that it can easily be supported by
> the same driver.
>
> The last two patches add support for UYVY output format, which can be
> implemented on the ISP version in the i.MX8MP but not in the one in the
> RK3399.
>
> This version of the series specifically has been tested on a Polyhex
> Debix model A with an imx219 (Raspberry Pi cam v2).

I have tested previous versions with a imx219 camera running in 4-lane
mode with great success.  Should I apply this series against
linux-next, or do I need to apply it against something in the media
tree to test?  I hope to test it tonight or tomorrow.

adam
>
> Laurent Pinchart (2):
>   media: rkisp1: Add and use rkisp1_has_feature() macro
>   media: rkisp1: Configure gasket on i.MX8MP
>
> Paul Elder (9):
>   media: rkisp1: Support setting memory stride for main path
>   media: rkisp1: Support devices lacking self path
>   media: rkisp1: Support devices lacking dual crop
>   media: rkisp1: Fix RSZ_CTRL bits for i.MX8MP
>   dt-bindings: media: rkisp1: Add i.MX8MP ISP to compatible
>   media: rkisp1: Add match data for i.MX8MP ISP
>   media: rkisp1: Shift DMA buffer addresses on i.MX8MP
>   media: rkisp1: Add YC swap capability
>   media: rkisp1: Add UYVY as an output format
>
>  .../bindings/media/rockchip-isp1.yaml         |  37 ++++-
>  .../platform/rockchip/rkisp1/rkisp1-capture.c | 128 ++++++++++++-----
>  .../platform/rockchip/rkisp1/rkisp1-common.h  |  35 ++++-
>  .../platform/rockchip/rkisp1/rkisp1-dev.c     |  66 +++++++--
>  .../platform/rockchip/rkisp1/rkisp1-isp.c     | 131 +++++++++++++++++-
>  .../platform/rockchip/rkisp1/rkisp1-regs.h    |  32 +++++
>  .../platform/rockchip/rkisp1/rkisp1-resizer.c |  27 ++--
>  include/uapi/linux/rkisp1-config.h            |   2 +
>  8 files changed, 398 insertions(+), 60 deletions(-)
>
> --
> 2.39.2
>
Paul Elder Nov. 30, 2023, 9:45 a.m. UTC | #3
On Wed, Nov 29, 2023 at 05:36:25AM -0600, Adam Ford wrote:
> On Wed, Nov 29, 2023 at 3:28 AM Paul Elder <paul.elder@ideasonboard.com> wrote:
> >
> > This series extends the rkisp1 driver to support the ISP found in the
> > NXP i.MX8MP SoC.
> >
> > The ISP IP cores in the Rockchip RK3399 (known as the "Rockchip ISP1")
> > and in the NXP i.MX8MP have the same origin, and have slightly diverged
> > over time as they are now independently developed (afaik) by Rockchip
> > and VeriSilicon. The latter is marketed under the name "ISP8000Nano",
> > and is close enough to the RK3399 ISP that it can easily be supported by
> > the same driver.
> >
> > The last two patches add support for UYVY output format, which can be
> > implemented on the ISP version in the i.MX8MP but not in the one in the
> > RK3399.
> >
> > This version of the series specifically has been tested on a Polyhex
> > Debix model A with an imx219 (Raspberry Pi cam v2).
> 
> I have tested previous versions with a imx219 camera running in 4-lane
> mode with great success.  Should I apply this series against
> linux-next, or do I need to apply it against something in the media
> tree to test?  I hope to test it tonight or tomorrow.

I have it applied on 6.7-rc1.


Thanks,

Paul

> >
> > Laurent Pinchart (2):
> >   media: rkisp1: Add and use rkisp1_has_feature() macro
> >   media: rkisp1: Configure gasket on i.MX8MP
> >
> > Paul Elder (9):
> >   media: rkisp1: Support setting memory stride for main path
> >   media: rkisp1: Support devices lacking self path
> >   media: rkisp1: Support devices lacking dual crop
> >   media: rkisp1: Fix RSZ_CTRL bits for i.MX8MP
> >   dt-bindings: media: rkisp1: Add i.MX8MP ISP to compatible
> >   media: rkisp1: Add match data for i.MX8MP ISP
> >   media: rkisp1: Shift DMA buffer addresses on i.MX8MP
> >   media: rkisp1: Add YC swap capability
> >   media: rkisp1: Add UYVY as an output format
> >
> >  .../bindings/media/rockchip-isp1.yaml         |  37 ++++-
> >  .../platform/rockchip/rkisp1/rkisp1-capture.c | 128 ++++++++++++-----
> >  .../platform/rockchip/rkisp1/rkisp1-common.h  |  35 ++++-
> >  .../platform/rockchip/rkisp1/rkisp1-dev.c     |  66 +++++++--
> >  .../platform/rockchip/rkisp1/rkisp1-isp.c     | 131 +++++++++++++++++-
> >  .../platform/rockchip/rkisp1/rkisp1-regs.h    |  32 +++++
> >  .../platform/rockchip/rkisp1/rkisp1-resizer.c |  27 ++--
> >  include/uapi/linux/rkisp1-config.h            |   2 +
> >  8 files changed, 398 insertions(+), 60 deletions(-)
> >
> > --
> > 2.39.2
> >
Adam Ford Dec. 9, 2023, 11:59 p.m. UTC | #4
On Thu, Nov 30, 2023 at 3:45 AM Paul Elder <paul.elder@ideasonboard.com> wrote:
>
> On Wed, Nov 29, 2023 at 05:36:25AM -0600, Adam Ford wrote:
> > On Wed, Nov 29, 2023 at 3:28 AM Paul Elder <paul.elder@ideasonboard.com> wrote:
> > >
> > > This series extends the rkisp1 driver to support the ISP found in the
> > > NXP i.MX8MP SoC.
> > >
> > > The ISP IP cores in the Rockchip RK3399 (known as the "Rockchip ISP1")
> > > and in the NXP i.MX8MP have the same origin, and have slightly diverged
> > > over time as they are now independently developed (afaik) by Rockchip
> > > and VeriSilicon. The latter is marketed under the name "ISP8000Nano",
> > > and is close enough to the RK3399 ISP that it can easily be supported by
> > > the same driver.
> > >
> > > The last two patches add support for UYVY output format, which can be
> > > implemented on the ISP version in the i.MX8MP but not in the one in the
> > > RK3399.
> > >
> > > This version of the series specifically has been tested on a Polyhex
> > > Debix model A with an imx219 (Raspberry Pi cam v2).
> >
> > I have tested previous versions with a imx219 camera running in 4-lane
> > mode with great success.  Should I apply this series against
> > linux-next, or do I need to apply it against something in the media
> > tree to test?  I hope to test it tonight or tomorrow.
>
> I have it applied on 6.7-rc1.
>

For the series,

Tested-by:  Adam Ford <aford173@gmail.com> #imx8mp-beacon

>
> Thanks,
>
> Paul
>
> > >
> > > Laurent Pinchart (2):
> > >   media: rkisp1: Add and use rkisp1_has_feature() macro
> > >   media: rkisp1: Configure gasket on i.MX8MP
> > >
> > > Paul Elder (9):
> > >   media: rkisp1: Support setting memory stride for main path
> > >   media: rkisp1: Support devices lacking self path
> > >   media: rkisp1: Support devices lacking dual crop
> > >   media: rkisp1: Fix RSZ_CTRL bits for i.MX8MP
> > >   dt-bindings: media: rkisp1: Add i.MX8MP ISP to compatible
> > >   media: rkisp1: Add match data for i.MX8MP ISP
> > >   media: rkisp1: Shift DMA buffer addresses on i.MX8MP
> > >   media: rkisp1: Add YC swap capability
> > >   media: rkisp1: Add UYVY as an output format
> > >
> > >  .../bindings/media/rockchip-isp1.yaml         |  37 ++++-
> > >  .../platform/rockchip/rkisp1/rkisp1-capture.c | 128 ++++++++++++-----
> > >  .../platform/rockchip/rkisp1/rkisp1-common.h  |  35 ++++-
> > >  .../platform/rockchip/rkisp1/rkisp1-dev.c     |  66 +++++++--
> > >  .../platform/rockchip/rkisp1/rkisp1-isp.c     | 131 +++++++++++++++++-
> > >  .../platform/rockchip/rkisp1/rkisp1-regs.h    |  32 +++++
> > >  .../platform/rockchip/rkisp1/rkisp1-resizer.c |  27 ++--
> > >  include/uapi/linux/rkisp1-config.h            |   2 +
> > >  8 files changed, 398 insertions(+), 60 deletions(-)
> > >
> > > --
> > > 2.39.2
> > >
Alexander Stein Dec. 11, 2023, 7:49 a.m. UTC | #5
Hi,

Am Mittwoch, 29. November 2023, 11:58:39 CET schrieb Alexander Stein:
> Hi Paul,
> 
> thanks for the series.
> 
> Am Mittwoch, 29. November 2023, 10:27:48 CET schrieb Paul Elder:
> > This series extends the rkisp1 driver to support the ISP found in the
> > NXP i.MX8MP SoC.
> > 
> > The ISP IP cores in the Rockchip RK3399 (known as the "Rockchip ISP1")
> > and in the NXP i.MX8MP have the same origin, and have slightly diverged
> > over time as they are now independently developed (afaik) by Rockchip
> > and VeriSilicon. The latter is marketed under the name "ISP8000Nano",
> > and is close enough to the RK3399 ISP that it can easily be supported by
> > the same driver.
> > 
> > The last two patches add support for UYVY output format, which can be
> > implemented on the ISP version in the i.MX8MP but not in the one in the
> > RK3399.
> > 
> > This version of the series specifically has been tested on a Polyhex
> > Debix model A with an imx219 (Raspberry Pi cam v2).
> 
> I've created a setup on TQMa8MPxL/MBa8MPxL and a Sony IMX327 sensor for a
> while now. I can stream 1080p video at 45 FPS to HDMI output without any
> special configuration.

Just for the records. the 45 FPS limit is introduced by (HDMI) output. Using a 
gstreamer testsink "outpu", I can run at 60 FPS.

Best regards,
Alexander

> Tested-by: Alexander Stein <alexander.stein@ew.tq-group.com>
> 
> > Laurent Pinchart (2):
> >   media: rkisp1: Add and use rkisp1_has_feature() macro
> >   media: rkisp1: Configure gasket on i.MX8MP
> > 
> > Paul Elder (9):
> >   media: rkisp1: Support setting memory stride for main path
> >   media: rkisp1: Support devices lacking self path
> >   media: rkisp1: Support devices lacking dual crop
> >   media: rkisp1: Fix RSZ_CTRL bits for i.MX8MP
> >   dt-bindings: media: rkisp1: Add i.MX8MP ISP to compatible
> >   media: rkisp1: Add match data for i.MX8MP ISP
> >   media: rkisp1: Shift DMA buffer addresses on i.MX8MP
> >   media: rkisp1: Add YC swap capability
> >   media: rkisp1: Add UYVY as an output format
> >  
> >  .../bindings/media/rockchip-isp1.yaml         |  37 ++++-
> >  .../platform/rockchip/rkisp1/rkisp1-capture.c | 128 ++++++++++++-----
> >  .../platform/rockchip/rkisp1/rkisp1-common.h  |  35 ++++-
> >  .../platform/rockchip/rkisp1/rkisp1-dev.c     |  66 +++++++--
> >  .../platform/rockchip/rkisp1/rkisp1-isp.c     | 131 +++++++++++++++++-
> >  .../platform/rockchip/rkisp1/rkisp1-regs.h    |  32 +++++
> >  .../platform/rockchip/rkisp1/rkisp1-resizer.c |  27 ++--
> >  include/uapi/linux/rkisp1-config.h            |   2 +
> >  8 files changed, 398 insertions(+), 60 deletions(-)