[PATCH v3 00/31] media: add imx93 mipi/controller csi support

Frank Li posted 31 patches 1 month, 1 week ago
.../bindings/media/snps,dw-mipi-csi2-v150.yaml     |  151 +++
MAINTAINERS                                        |    1 +
drivers/media/platform/synopsys/Kconfig            |   20 +
drivers/media/platform/synopsys/Makefile           |    3 +
drivers/media/platform/synopsys/mipi-csi2-simple.c |   75 ++
drivers/media/platform/synopsys/mipi-csi2.c        | 1260 ++++++++++++++++++++
drivers/media/v4l2-core/v4l2-common.c              |  149 +++
drivers/staging/media/imx/Kconfig                  |    1 +
drivers/staging/media/imx/Makefile                 |    2 +-
drivers/staging/media/imx/imx6-csi2.c              |  181 +++
drivers/staging/media/imx/imx6-mipi-csi2.c         |  846 -------------
include/media/dw-mipi-csi2.h                       |  120 ++
include/media/mipi-csi2.h                          |   30 +
include/media/v4l2-common.h                        |   30 +
14 files changed, 2022 insertions(+), 847 deletions(-)
[PATCH v3 00/31] media: add imx93 mipi/controller csi support
Posted by Frank Li 1 month, 1 week ago
Totally rewrite CSI part driver compared to V1.

This only includes CSI related patches.

DTS part: see https://lore.kernel.org/imx/20250701-95_cam-v1-6-c5172bab387b@nxp.com/
PHY part: see https://lore.kernel.org/imx/20250701-95_cam-v1-4-c5172bab387b@nxp.com/
AP1302 part: see https://lore.kernel.org/imx/20250701-95_cam-v1-7-c5172bab387b@nxp.com/
	upstream: https://lore.kernel.org/imx/20250623-ap1302-v3-0-c9ca5b791494@nxp.com/

First 3 patches add some common helper function to simple code and remove
duplicated code in difference CSI2 drivers.

Clean up stage imx6 old version csi2 driver, and prepare create common
dw csi2 library for difference IP version.

Move stage driver under driver/media/synosis.

Create simple platform driver for common dw csi2 use case.

TODO:
	1. create bus, to probe phy driver under "test_if" interface for
specific phys under CSI2.
	2. support to combine phy, (which connect to both dw CSI and DSI's
test_if). Need use DSI's test_if to config combo phy to switch to RX mode.
and also need config RX part's phy register by use CSI's testif.
	3. move other vendor's csi driver to use this common DWC CSI
library.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
Changes in v3:
- update binding doc
- combine two add helper function's patch to one. and use media_bus_fmt_info
data structure.
- Link to v2: https://lore.kernel.org/r/20250808-95_cam-v2-0-4b29fa6919a7@nxp.com

Changes in v2:
- totally rewrite, see above section
- Link to v1: https://lore.kernel.org/r/20250701-95_cam-v1-0-c5172bab387b@nxp.com

---
Eugen Hristev (1):
      dt-bindings: media: add DW MIPI CSI-2 Host support

Frank Li (30):
      media: v4l2-common: Add helper function v4l_get_required_align_by_bpp()
      media: v4l2-common: Add helper function media_bus_fmt_to_csi2_(bpp|dt)()
      media: staging: media: imx6-mipi-csi2: replace space with tab for alignment
      media: staging: media: imx6-mipi-csi2: use devm_add_action_or_reset() to simplify code
      media: staging: media: imx6-mipi-csi2: use devm_clk_bulk_get_all() to fetch clocks
      media: staging: media: imx6-mipi-csi2: use devm_mutex_init() to simplify code
      media: staging: media: imx6-mipi-csi2: use guard() to simplify code
      media: staging: media: imx6-mipi-csi2: use register structure to match hardware
      media: staging: media: imx6-mipi-csi2: use devm_platform_ioremap_resource() simplify code
      media: staging: media: imx6-mipi-csi2: move probe part to imx6-csi2.c
      media: staging: media: imx6-mipi-csi2: move sd imx6's specific initialization into imx6-sci2.c
      media: staging: media: imx6-mipi-csi2: move csi2ipu_gasket_init() to imx6-csi2.c
      media: staging: media: imx6-mipi-csi2: move number pad macro define into imx6-csi2.c
      media: staging: media: imx6-mipi-csi2: move dphy init part to imx6-csi2.c
      media: staging: media: imx6-mipi-csi2: use runtime_pm frame to control clks
      media: synopsys: move imx6-mipi-csi2.c to synopsys/mipi-csi2.c
      media: synopsys: csi2: Remove deprecated s_stream and use v4l2_subdev_pad_ops
      media: synopsys: csi2: Add phy interface support
      media: synopsys: csi2: Add basic v150* version register
      media: synopsys: csi2: Add irq support to record error count
      media: synopsys: csi2: Handle alignment requirement for width
      media: synopsys: csi2: Add register prefix to register field definitions
      media: synopsys: csi2: Add need_dphy_reset in config
      media: synopsys: csi2: Add default simple dw_csi2_subdev_init_state
      media: synopsys: csi2: Add v150 lane stop state register bit define
      media: synopsys: csi2: use standard v4l2_subdev_get_fmt() function
      media: synopsys: csi2: Add customize get_frame_desc() callback
      media: synopsys: csi2: Add Image Pixel Interface (IPI) support for v150
      media: synopsys: csi2: Remove source pad connected check at dw_csi2_enable_streams()
      media: synopsys: csi2: Add simple synopsys platform driver

 .../bindings/media/snps,dw-mipi-csi2-v150.yaml     |  151 +++
 MAINTAINERS                                        |    1 +
 drivers/media/platform/synopsys/Kconfig            |   20 +
 drivers/media/platform/synopsys/Makefile           |    3 +
 drivers/media/platform/synopsys/mipi-csi2-simple.c |   75 ++
 drivers/media/platform/synopsys/mipi-csi2.c        | 1260 ++++++++++++++++++++
 drivers/media/v4l2-core/v4l2-common.c              |  149 +++
 drivers/staging/media/imx/Kconfig                  |    1 +
 drivers/staging/media/imx/Makefile                 |    2 +-
 drivers/staging/media/imx/imx6-csi2.c              |  181 +++
 drivers/staging/media/imx/imx6-mipi-csi2.c         |  846 -------------
 include/media/dw-mipi-csi2.h                       |  120 ++
 include/media/mipi-csi2.h                          |   30 +
 include/media/v4l2-common.h                        |   30 +
 14 files changed, 2022 insertions(+), 847 deletions(-)
---
base-commit: ad0a162e543964443feec3a6a9395a64fe6c35c9
change-id: 20250606-95_cam-b74c094ad1fb

Best regards,
--
Frank Li <Frank.Li@nxp.com>
Re: [PATCH v3 00/31] media: add imx93 mipi/controller csi support
Posted by Frank Li 3 weeks, 1 day ago
On Thu, Aug 21, 2025 at 04:15:35PM -0400, Frank Li wrote:
> Totally rewrite CSI part driver compared to V1.

Laurent Pinchart:

	can you help review these patches? especial first two patches

media: v4l2-common: Add helper function v4l_get_required_align_by_bpp()
media: v4l2-common: Add helper function media_bus_fmt_to_csi2_(bpp|dt)()

After that, I can start do more code clean up work.

	all of "media: staging: media: imx6-mipi-csi2 *" are trivial cleanup
patches.

Frank

>
> This only includes CSI related patches.
>
> DTS part: see https://lore.kernel.org/imx/20250701-95_cam-v1-6-c5172bab387b@nxp.com/
> PHY part: see https://lore.kernel.org/imx/20250701-95_cam-v1-4-c5172bab387b@nxp.com/
> AP1302 part: see https://lore.kernel.org/imx/20250701-95_cam-v1-7-c5172bab387b@nxp.com/
> 	upstream: https://lore.kernel.org/imx/20250623-ap1302-v3-0-c9ca5b791494@nxp.com/
>
> First 3 patches add some common helper function to simple code and remove
> duplicated code in difference CSI2 drivers.
>
> Clean up stage imx6 old version csi2 driver, and prepare create common
> dw csi2 library for difference IP version.
>
> Move stage driver under driver/media/synosis.
>
> Create simple platform driver for common dw csi2 use case.
>
> TODO:
> 	1. create bus, to probe phy driver under "test_if" interface for
> specific phys under CSI2.
> 	2. support to combine phy, (which connect to both dw CSI and DSI's
> test_if). Need use DSI's test_if to config combo phy to switch to RX mode.
> and also need config RX part's phy register by use CSI's testif.
> 	3. move other vendor's csi driver to use this common DWC CSI
> library.
>
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
> Changes in v3:
> - update binding doc
> - combine two add helper function's patch to one. and use media_bus_fmt_info
> data structure.
> - Link to v2: https://lore.kernel.org/r/20250808-95_cam-v2-0-4b29fa6919a7@nxp.com
>
> Changes in v2:
> - totally rewrite, see above section
> - Link to v1: https://lore.kernel.org/r/20250701-95_cam-v1-0-c5172bab387b@nxp.com
>
> ---
> Eugen Hristev (1):
>       dt-bindings: media: add DW MIPI CSI-2 Host support
>
> Frank Li (30):
>       media: v4l2-common: Add helper function v4l_get_required_align_by_bpp()
>       media: v4l2-common: Add helper function media_bus_fmt_to_csi2_(bpp|dt)()
>       media: staging: media: imx6-mipi-csi2: replace space with tab for alignment
>       media: staging: media: imx6-mipi-csi2: use devm_add_action_or_reset() to simplify code
>       media: staging: media: imx6-mipi-csi2: use devm_clk_bulk_get_all() to fetch clocks
>       media: staging: media: imx6-mipi-csi2: use devm_mutex_init() to simplify code
>       media: staging: media: imx6-mipi-csi2: use guard() to simplify code
>       media: staging: media: imx6-mipi-csi2: use register structure to match hardware
>       media: staging: media: imx6-mipi-csi2: use devm_platform_ioremap_resource() simplify code
>       media: staging: media: imx6-mipi-csi2: move probe part to imx6-csi2.c
>       media: staging: media: imx6-mipi-csi2: move sd imx6's specific initialization into imx6-sci2.c
>       media: staging: media: imx6-mipi-csi2: move csi2ipu_gasket_init() to imx6-csi2.c
>       media: staging: media: imx6-mipi-csi2: move number pad macro define into imx6-csi2.c
>       media: staging: media: imx6-mipi-csi2: move dphy init part to imx6-csi2.c
>       media: staging: media: imx6-mipi-csi2: use runtime_pm frame to control clks
>       media: synopsys: move imx6-mipi-csi2.c to synopsys/mipi-csi2.c
>       media: synopsys: csi2: Remove deprecated s_stream and use v4l2_subdev_pad_ops
>       media: synopsys: csi2: Add phy interface support
>       media: synopsys: csi2: Add basic v150* version register
>       media: synopsys: csi2: Add irq support to record error count
>       media: synopsys: csi2: Handle alignment requirement for width
>       media: synopsys: csi2: Add register prefix to register field definitions
>       media: synopsys: csi2: Add need_dphy_reset in config
>       media: synopsys: csi2: Add default simple dw_csi2_subdev_init_state
>       media: synopsys: csi2: Add v150 lane stop state register bit define
>       media: synopsys: csi2: use standard v4l2_subdev_get_fmt() function
>       media: synopsys: csi2: Add customize get_frame_desc() callback
>       media: synopsys: csi2: Add Image Pixel Interface (IPI) support for v150
>       media: synopsys: csi2: Remove source pad connected check at dw_csi2_enable_streams()
>       media: synopsys: csi2: Add simple synopsys platform driver
>
>  .../bindings/media/snps,dw-mipi-csi2-v150.yaml     |  151 +++
>  MAINTAINERS                                        |    1 +
>  drivers/media/platform/synopsys/Kconfig            |   20 +
>  drivers/media/platform/synopsys/Makefile           |    3 +
>  drivers/media/platform/synopsys/mipi-csi2-simple.c |   75 ++
>  drivers/media/platform/synopsys/mipi-csi2.c        | 1260 ++++++++++++++++++++
>  drivers/media/v4l2-core/v4l2-common.c              |  149 +++
>  drivers/staging/media/imx/Kconfig                  |    1 +
>  drivers/staging/media/imx/Makefile                 |    2 +-
>  drivers/staging/media/imx/imx6-csi2.c              |  181 +++
>  drivers/staging/media/imx/imx6-mipi-csi2.c         |  846 -------------
>  include/media/dw-mipi-csi2.h                       |  120 ++
>  include/media/mipi-csi2.h                          |   30 +
>  include/media/v4l2-common.h                        |   30 +
>  14 files changed, 2022 insertions(+), 847 deletions(-)
> ---
> base-commit: ad0a162e543964443feec3a6a9395a64fe6c35c9
> change-id: 20250606-95_cam-b74c094ad1fb
>
> Best regards,
> --
> Frank Li <Frank.Li@nxp.com>
>
Re: [PATCH v3 00/31] media: add imx93 mipi/controller csi support
Posted by Frank Li 1 week, 1 day ago
On Thu, Sep 11, 2025 at 11:49:25AM -0400, Frank Li wrote:
> On Thu, Aug 21, 2025 at 04:15:35PM -0400, Frank Li wrote:
> > Totally rewrite CSI part driver compared to V1.
>
> Laurent Pinchart:
>
> 	can you help review these patches? especial first two patches
>
> media: v4l2-common: Add helper function v4l_get_required_align_by_bpp()
> media: v4l2-common: Add helper function media_bus_fmt_to_csi2_(bpp|dt)()
>
> After that, I can start do more code clean up work.
>
> 	all of "media: staging: media: imx6-mipi-csi2 *" are trivial cleanup
> patches.

Laurent Pinchart and Rui Miguel Silva

	Do you have chance check these? especially first two patches,

media: v4l2-common: Add helper function v4l_get_required_align_by_bpp()
media: v4l2-common: Add helper function media_bus_fmt_to_csi2_(bpp|dt)()

	After that, I can start do more code clean up work.

best regards
Frank Li

>
> Frank
>
> >
> > This only includes CSI related patches.
> >
> > DTS part: see https://lore.kernel.org/imx/20250701-95_cam-v1-6-c5172bab387b@nxp.com/
> > PHY part: see https://lore.kernel.org/imx/20250701-95_cam-v1-4-c5172bab387b@nxp.com/
> > AP1302 part: see https://lore.kernel.org/imx/20250701-95_cam-v1-7-c5172bab387b@nxp.com/
> > 	upstream: https://lore.kernel.org/imx/20250623-ap1302-v3-0-c9ca5b791494@nxp.com/
> >
> > First 3 patches add some common helper function to simple code and remove
> > duplicated code in difference CSI2 drivers.
> >
> > Clean up stage imx6 old version csi2 driver, and prepare create common
> > dw csi2 library for difference IP version.
> >
> > Move stage driver under driver/media/synosis.
> >
> > Create simple platform driver for common dw csi2 use case.
> >
> > TODO:
> > 	1. create bus, to probe phy driver under "test_if" interface for
> > specific phys under CSI2.
> > 	2. support to combine phy, (which connect to both dw CSI and DSI's
> > test_if). Need use DSI's test_if to config combo phy to switch to RX mode.
> > and also need config RX part's phy register by use CSI's testif.
> > 	3. move other vendor's csi driver to use this common DWC CSI
> > library.
> >
> > Signed-off-by: Frank Li <Frank.Li@nxp.com>
> > ---
> > Changes in v3:
> > - update binding doc
> > - combine two add helper function's patch to one. and use media_bus_fmt_info
> > data structure.
> > - Link to v2: https://lore.kernel.org/r/20250808-95_cam-v2-0-4b29fa6919a7@nxp.com
> >
> > Changes in v2:
> > - totally rewrite, see above section
> > - Link to v1: https://lore.kernel.org/r/20250701-95_cam-v1-0-c5172bab387b@nxp.com
> >
> > ---
> > Eugen Hristev (1):
> >       dt-bindings: media: add DW MIPI CSI-2 Host support
> >
> > Frank Li (30):
> >       media: v4l2-common: Add helper function v4l_get_required_align_by_bpp()
> >       media: v4l2-common: Add helper function media_bus_fmt_to_csi2_(bpp|dt)()
> >       media: staging: media: imx6-mipi-csi2: replace space with tab for alignment
> >       media: staging: media: imx6-mipi-csi2: use devm_add_action_or_reset() to simplify code
> >       media: staging: media: imx6-mipi-csi2: use devm_clk_bulk_get_all() to fetch clocks
> >       media: staging: media: imx6-mipi-csi2: use devm_mutex_init() to simplify code
> >       media: staging: media: imx6-mipi-csi2: use guard() to simplify code
> >       media: staging: media: imx6-mipi-csi2: use register structure to match hardware
> >       media: staging: media: imx6-mipi-csi2: use devm_platform_ioremap_resource() simplify code
> >       media: staging: media: imx6-mipi-csi2: move probe part to imx6-csi2.c
> >       media: staging: media: imx6-mipi-csi2: move sd imx6's specific initialization into imx6-sci2.c
> >       media: staging: media: imx6-mipi-csi2: move csi2ipu_gasket_init() to imx6-csi2.c
> >       media: staging: media: imx6-mipi-csi2: move number pad macro define into imx6-csi2.c
> >       media: staging: media: imx6-mipi-csi2: move dphy init part to imx6-csi2.c
> >       media: staging: media: imx6-mipi-csi2: use runtime_pm frame to control clks
> >       media: synopsys: move imx6-mipi-csi2.c to synopsys/mipi-csi2.c
> >       media: synopsys: csi2: Remove deprecated s_stream and use v4l2_subdev_pad_ops
> >       media: synopsys: csi2: Add phy interface support
> >       media: synopsys: csi2: Add basic v150* version register
> >       media: synopsys: csi2: Add irq support to record error count
> >       media: synopsys: csi2: Handle alignment requirement for width
> >       media: synopsys: csi2: Add register prefix to register field definitions
> >       media: synopsys: csi2: Add need_dphy_reset in config
> >       media: synopsys: csi2: Add default simple dw_csi2_subdev_init_state
> >       media: synopsys: csi2: Add v150 lane stop state register bit define
> >       media: synopsys: csi2: use standard v4l2_subdev_get_fmt() function
> >       media: synopsys: csi2: Add customize get_frame_desc() callback
> >       media: synopsys: csi2: Add Image Pixel Interface (IPI) support for v150
> >       media: synopsys: csi2: Remove source pad connected check at dw_csi2_enable_streams()
> >       media: synopsys: csi2: Add simple synopsys platform driver
> >
> >  .../bindings/media/snps,dw-mipi-csi2-v150.yaml     |  151 +++
> >  MAINTAINERS                                        |    1 +
> >  drivers/media/platform/synopsys/Kconfig            |   20 +
> >  drivers/media/platform/synopsys/Makefile           |    3 +
> >  drivers/media/platform/synopsys/mipi-csi2-simple.c |   75 ++
> >  drivers/media/platform/synopsys/mipi-csi2.c        | 1260 ++++++++++++++++++++
> >  drivers/media/v4l2-core/v4l2-common.c              |  149 +++
> >  drivers/staging/media/imx/Kconfig                  |    1 +
> >  drivers/staging/media/imx/Makefile                 |    2 +-
> >  drivers/staging/media/imx/imx6-csi2.c              |  181 +++
> >  drivers/staging/media/imx/imx6-mipi-csi2.c         |  846 -------------
> >  include/media/dw-mipi-csi2.h                       |  120 ++
> >  include/media/mipi-csi2.h                          |   30 +
> >  include/media/v4l2-common.h                        |   30 +
> >  14 files changed, 2022 insertions(+), 847 deletions(-)
> > ---
> > base-commit: ad0a162e543964443feec3a6a9395a64fe6c35c9
> > change-id: 20250606-95_cam-b74c094ad1fb
> >
> > Best regards,
> > --
> > Frank Li <Frank.Li@nxp.com>
> >