mbox series

[v8,00/14] drm: bridge: Add Samsung MIPI DSIM bridge

Message ID 20221110183853.3678209-1-jagan@amarulasolutions.com
Headers show
Series drm: bridge: Add Samsung MIPI DSIM bridge | expand

Message

Jagan Teki Nov. 10, 2022, 6:38 p.m. UTC
This series supports common bridge support for Samsung MIPI DSIM
which is used in Exynos and i.MX8MM SoC's.

The final bridge supports both the Exynos and i.MX8M Mini/Nano/Plus.

Changes for v8:
* fixed comment lines
* fixed commit messages
* fixed video mode bits
* collect Marek Ack
* fixed video mode bit names
* update input formats logic
* added imx8mplus support

Changes for v7:
* fix the drm bridge attach chain for exynos drm dsi driver
* fix the hw_type checking logic

Changes for v6:
* handle previous bridge for exynos dsi while attaching bridge 

Changes for v5:
* bridge changes to support multi-arch
* updated and clear commit messages
* add hw_type via plat data
* removed unneeded quirk
* rebased on linux-next

Changes for v4:
* include Inki Dae in MAINTAINERS
* remove dsi_driver probe in exynos_drm_drv to support multi-arch build
* update init handling to ensure host init done on first cmd transfer

Changes for v3:
* fix the mult-arch build
* fix dsi host init
* updated commit messages

Changes for v2:
* fix bridge handling
* fix dsi host init
* correct the commit messages

Patch 0001:	Fix MIPI_DSI*_NO_* mode bits

Patch 0002:	Properly name HSA/HBP/HFP/HSE bits

Patch 0003: 	Samsung DSIM bridge

Patch 0004:	PHY optional

Patch 0005:	OF-graph or Child node lookup

Patch 0006: 	DSI host initialization 

Patch 0007:	atomic check

Patch 0008:	PMS_P offset via plat data

Patch 0009:	atomic_get_input_bus_fmts

Patch 0010:	input_bus_flags

Patch 0011:	document fsl,imx8mm-mipi-dsim

Patch 0012:	add i.MX8M Mini/Nano DSIM support

Patch 0013:	document fsl,imx8mp-mipi-dsim

Patch 0014:	add i.MX8M Plus DSIM support

Tested in Engicam i.Core MX8M Mini SoM.

Repo:
https://gitlab.com/openedev/kernel/-/commits/imx8mm-dsi-v8

Any inputs?
Jagan.

Jagan Teki (13):
  drm: exynos: dsi: Fix MIPI_DSI*_NO_* mode flags
  drm: exynos: dsi: Properly name HSA/HBP/HFP/HSE bits
  drm: bridge: Generalize Exynos-DSI driver into a Samsung DSIM bridge
  drm: bridge: samsung-dsim: Lookup OF-graph or Child node devices
  drm: bridge: samsung-dsim: Mark PHY as optional
  drm: bridge: samsung-dsim: Handle proper DSI host initialization
  drm: bridge: samsung-dsim: Add atomic_check
  drm: bridge: samsung-dsim: Add platform PLL_P (PMS_P) offset
  drm: bridge: samsung-dsim: Add atomic_get_input_bus_fmts
  drm: bridge: samsung-dsim: Add input_bus_flags
  dt-bindings: display: exynos: dsim: Add NXP i.MX8M Mini/Nano support
  drm: bridge: samsung-dsim: Add i.MX8M Mini/Nano support
  dt-bindings: display: exynos: dsim: Add NXP i.MX8M Plus support

Marek Vasut (1):
  drm: bridge: samsung-dsim: Add i.MX8M Plus support

 .../bindings/display/exynos/exynos_dsim.txt   |    2 +
 MAINTAINERS                                   |    9 +
 drivers/gpu/drm/bridge/Kconfig                |   12 +
 drivers/gpu/drm/bridge/Makefile               |    1 +
 drivers/gpu/drm/bridge/samsung-dsim.c         | 1908 +++++++++++++++++
 drivers/gpu/drm/exynos/Kconfig                |    1 +
 drivers/gpu/drm/exynos/exynos_drm_dsi.c       | 1766 +--------------
 include/drm/bridge/samsung-dsim.h             |  116 +
 8 files changed, 2162 insertions(+), 1653 deletions(-)
 create mode 100644 drivers/gpu/drm/bridge/samsung-dsim.c
 create mode 100644 include/drm/bridge/samsung-dsim.h

Comments

Frieder Schrempf Nov. 14, 2022, 8:41 a.m. UTC | #1
Hi Jagan,

On 10.11.22 19:38, Jagan Teki wrote:
> This series supports common bridge support for Samsung MIPI DSIM
> which is used in Exynos and i.MX8MM SoC's.
> 
> The final bridge supports both the Exynos and i.MX8M Mini/Nano/Plus.
> 
> Changes for v8:
> * fixed comment lines
> * fixed commit messages
> * fixed video mode bits
> * collect Marek Ack
> * fixed video mode bit names
> * update input formats logic
> * added imx8mplus support

Did you miss to collect all the Tested-by tags from v7, or did you drop
them deliberately?

Best regards
Frieder
Jagan Teki Nov. 14, 2022, 8:47 a.m. UTC | #2
Hi Frieder,

On Mon, Nov 14, 2022 at 2:12 PM Frieder Schrempf
<frieder.schrempf@kontron.de> wrote:
>
> Hi Jagan,
>
> On 10.11.22 19:38, Jagan Teki wrote:
> > This series supports common bridge support for Samsung MIPI DSIM
> > which is used in Exynos and i.MX8MM SoC's.
> >
> > The final bridge supports both the Exynos and i.MX8M Mini/Nano/Plus.
> >
> > Changes for v8:
> > * fixed comment lines
> > * fixed commit messages
> > * fixed video mode bits
> > * collect Marek Ack
> > * fixed video mode bit names
> > * update input formats logic
> > * added imx8mplus support
>
> Did you miss to collect all the Tested-by tags from v7, or did you drop
> them deliberately?

Few changes in v8 compared to v7, so I've not picked these tags as code changes.

Jagan.
Marek Vasut Nov. 17, 2022, 5:01 a.m. UTC | #3
On 11/10/22 19:38, Jagan Teki wrote:

[...]

> +static int samsung_dsim_wait_for_hdr_fifo(struct samsung_dsim *dsi)
> +{
> +	int timeout = 2000;
> +
> +	do {
> +		u32 reg = samsung_dsim_read(dsi, DSIM_FIFOCTRL_REG);
> +
> +		if (!(reg & DSIM_SFR_HEADER_FULL))

Seems that unless I wait for DSIM_SFR_HEADER_EMPTY here, there may be 
some command transfer corruption if very short commands are transferred 
in rapid succession. This can be triggered with icn6211 driver for example.

> +			return 0;
> +
> +		if (!cond_resched())
> +			usleep_range(950, 1050);
> +	} while (--timeout);
> +
> +	return -ETIMEDOUT;
> +}

[...]
Jagan Teki Nov. 18, 2022, 6:40 a.m. UTC | #4
On Thu, Nov 17, 2022 at 10:31 AM Marek Vasut <marex@denx.de> wrote:
>
> On 11/10/22 19:38, Jagan Teki wrote:
>
> [...]
>
> > +static int samsung_dsim_wait_for_hdr_fifo(struct samsung_dsim *dsi)
> > +{
> > +     int timeout = 2000;
> > +
> > +     do {
> > +             u32 reg = samsung_dsim_read(dsi, DSIM_FIFOCTRL_REG);
> > +
> > +             if (!(reg & DSIM_SFR_HEADER_FULL))
>
> Seems that unless I wait for DSIM_SFR_HEADER_EMPTY here, there may be
> some command transfer corruption if very short commands are transferred
> in rapid succession. This can be triggered with icn6211 driver for example.

Not aware of this test, maybe adjusting or fixing the wait code on top
of this initial support later make sense.

Thanks,
Jagan.
Frieder Schrempf Dec. 5, 2022, 1:22 p.m. UTC | #5
On 10.11.22 19:38, Jagan Teki wrote:
> This series supports common bridge support for Samsung MIPI DSIM
> which is used in Exynos and i.MX8MM SoC's.
> 
> The final bridge supports both the Exynos and i.MX8M Mini/Nano/Plus.
> 
> Changes for v8:
> * fixed comment lines
> * fixed commit messages
> * fixed video mode bits
> * collect Marek Ack
> * fixed video mode bit names
> * update input formats logic
> * added imx8mplus support
> 
> Changes for v7:
> * fix the drm bridge attach chain for exynos drm dsi driver
> * fix the hw_type checking logic
> 
> Changes for v6:
> * handle previous bridge for exynos dsi while attaching bridge 
> 
> Changes for v5:
> * bridge changes to support multi-arch
> * updated and clear commit messages
> * add hw_type via plat data
> * removed unneeded quirk
> * rebased on linux-next
> 
> Changes for v4:
> * include Inki Dae in MAINTAINERS
> * remove dsi_driver probe in exynos_drm_drv to support multi-arch build
> * update init handling to ensure host init done on first cmd transfer
> 
> Changes for v3:
> * fix the mult-arch build
> * fix dsi host init
> * updated commit messages
> 
> Changes for v2:
> * fix bridge handling
> * fix dsi host init
> * correct the commit messages
> 
> Patch 0001:	Fix MIPI_DSI*_NO_* mode bits
> 
> Patch 0002:	Properly name HSA/HBP/HFP/HSE bits
> 
> Patch 0003: 	Samsung DSIM bridge
> 
> Patch 0004:	PHY optional
> 
> Patch 0005:	OF-graph or Child node lookup
> 
> Patch 0006: 	DSI host initialization 
> 
> Patch 0007:	atomic check
> 
> Patch 0008:	PMS_P offset via plat data
> 
> Patch 0009:	atomic_get_input_bus_fmts
> 
> Patch 0010:	input_bus_flags
> 
> Patch 0011:	document fsl,imx8mm-mipi-dsim
> 
> Patch 0012:	add i.MX8M Mini/Nano DSIM support
> 
> Patch 0013:	document fsl,imx8mp-mipi-dsim
> 
> Patch 0014:	add i.MX8M Plus DSIM support
> 
> Tested in Engicam i.Core MX8M Mini SoM.
> 
> Repo:
> https://gitlab.com/openedev/kernel/-/commits/imx8mm-dsi-v8
> 
> Any inputs?
> Jagan.

I tested this on the Kontron DL i.MX8MM which uses a TI SN65DSI84 bridge
and a Jenson 7" LVDS Display.

Tested-by: Frieder Schrempf <frieder.schrempf@kontron.de> # Kontron DL
i.MX8MM