All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v10 00/18] drm: Add Samsung MIPI DSIM bridge
@ 2022-12-16 13:25 ` Alexander Stein
  0 siblings, 0 replies; 81+ messages in thread
From: Alexander Stein @ 2022-12-16 13:25 UTC (permalink / raw)
  To: Andrzej Hajda, Inki Dae, Marek Szyprowski, Joonyoung Shim,
	Seung-Woo Kim, Kyungmin Park, Frieder Schrempf, Fancy Fang,
	Tim Harvey, Michael Nazzareno Trimarchi, Adam Ford,
	Neil Armstrong, Robert Foss, Laurent Pinchart, Tommaso Merciai,
	dri-devel, Marek Vasut
  Cc: linux-samsung-soc, Matteo Lisi, NXP Linux Team, linux-amarula,
	linux-arm-kernel, Jagan Teki

Hi Marek,

Am Freitag, 16. Dezember 2022, 13:58:13 CET schrieb Marek Vasut:
> On 12/16/22 13:41, Alexander Stein wrote:
> > Hi,
> 
> Hi,
> 
> > thanks for the new update.
> > 
> > Am Mittwoch, 14. Dezember 2022, 13:58:49 CET schrieb Jagan Teki:
> >> 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.
> >> 
> >> Patch 0001 - 0004: adding devm_drm_of_dsi_get_bridge
> >> 
> >> Patch 0005 - 0006: optional PHY, PMS_P offset
> >> 
> >> Patch 0007       : introduce hw_type
> >> 
> >> Patch 0008	 : fixing host init
> >> 
> >> Patch 0009	 : atomic_check
> >> 
> >> Patch 0010	 : input_bus_flags
> >> 
> >> Patch 0011	 : atomic_get_input_bus_fmts
> >> 
> >> Patch 0012 - 0013: component vs bridge
> >> 
> >> Patch 0014	 : DSIM bridge
> >> 
> >> Patch 0015 - 0016: i.MX8M Mini/Nano
> >> 
> >> Patch 0017 - 0018: i.MX8M Plus
> > 
> > Tested using LVDS bridges and works on:
> > * imx8mp-tqma8mpql-mba8mpxl (i.MX8M Plus)
> > * imx8mm-tqma8mqml-mba8mx (i.MX8M Mini)
> > * imx8mn-tqma8mqnl-mba8mx (i.MX8M Nano)
> > 
> > But I noticed that tqma8mqml and tqma8mqnl only have a stable output if I
> > specify 'data-lanes = <0 1 2>' (not <0 1 2 3>!) on the DSI-LVDS-Bridge (TI
> > SN65DSI83) input endpoint, e.g.
> > 
> > dsi_lvds_bridge: bridge@2d {
> > 
> > 	compatible = "ti,sn65dsi83";
> > 	reg = <0x2d>;
> > 	enable-gpios = <&gpio_delays 0 130000 0>;
> > 	vcc-supply = <&reg_sn65dsi83_1v8>;
> > 	status = "okay";
> > 	ports {
> > 	
> > 		#address-cells = <1>;
> > 		#size-cells = <0>;
> > 		port@0 {
> > 		
> > 			reg = <0>;
> > 			lvds_bridge_in: endpoint {
> > 			
> > 				data-lanes = <0 1 2>;
> > 				remote-endpoint = <&mipi_dsi_out>;
> > 			
> > 			};
> > 		
> > 		};
> > 		port@2 {
> > 		
> > 			reg = <2>;
> > 			lvds_bridge_out: endpoint {
> > 			
> > 				remote-endpoint = <&panel_in_lvds0>;
> > 			
> > 			};
> > 		
> > 		};
> > 	
> > 	};
> > 
> > };
> > 
> > I have no idea if this is on the DSIM side or the DSI-LVDS bridge side.
> > Register 0xe5 on sn65dsi83 shows that CHA_LPP_ERR and CHA_SOT_BIT_ERR
> > error
> > bits are set, indicating there are low level protocol and SoT leader
> > sequence bit errors. I can't find any significant difference in sn65dsi83
> > driver compared to downstream-kernel, so I would assume something in DSIM
> > driver is different.
> 
> Make sure the HS clock rate expected by the DSI83 bridge chip and the
> one generated by the DSIM bridge from PMS PLL match. There is currently
> no negotiation of this frequency and both sides divine it on their own.
> 
> See sn65dsi83_get_dsi_range() and samsung_dsim_set_pll().

Oh, nice, thanks for the pointer. When setting
> samsung,burst-clock-frequency = <668250000>;
in imx8mm.dtsi
I get a non-flickering display using 4 lanes. Although admittedly this is just 
random guessing. I'm not sure which clock exactly has to be in the range 
CHA_DSI_CLK_RANGE is configured to. With 4 lanes SN65DSI84 is configured for 
205-210 MHz (0x29), while I get these PLL PMS settings on DSIM:
> samsung-dsim 32e10000.dsi: PLL freq 668250000, (p 4, m 99, s 0)
> samsung-dsim 32e10000.dsi: hs_clk = 668250000, byte_clk = 83531250, esc_clk 
= 16706250

AFAICS DSIM bridge is configurung hs_clk, byte_clk and esc_clk just from DT 
properties, while SN65DSI84 is using display mode and number of lanes.

Is it expected that the DSIM PLL frequencies are set in DT for a specific 
bridge/display setup?

Best regards,
Alexander


^ permalink raw reply	[flat|nested] 81+ messages in thread
* [PATCH v10 00/18] drm: Add Samsung MIPI DSIM bridge
@ 2022-12-16 12:41 ` Alexander Stein
  0 siblings, 0 replies; 81+ messages in thread
From: Alexander Stein @ 2022-12-16 12:41 UTC (permalink / raw)
  To: Andrzej Hajda, Inki Dae, Marek Szyprowski, Joonyoung Shim,
	Seung-Woo Kim, Kyungmin Park, Frieder Schrempf, Fancy Fang,
	Tim Harvey, Michael Nazzareno Trimarchi, Adam Ford,
	Neil Armstrong, Robert Foss, Laurent Pinchart, Tommaso Merciai,
	Marek Vasut, dri-devel
  Cc: linux-samsung-soc, Matteo Lisi, dri-devel, NXP Linux Team,
	linux-amarula, linux-arm-kernel, Jagan Teki, Jagan Teki

Hi,

thanks for the new update.

Am Mittwoch, 14. Dezember 2022, 13:58:49 CET schrieb Jagan Teki:
> 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.
> 
> Patch 0001 - 0004: adding devm_drm_of_dsi_get_bridge
> 
> Patch 0005 - 0006: optional PHY, PMS_P offset
> 
> Patch 0007       : introduce hw_type
> 
> Patch 0008	 : fixing host init
> 
> Patch 0009	 : atomic_check
> 
> Patch 0010	 : input_bus_flags
> 
> Patch 0011	 : atomic_get_input_bus_fmts
> 
> Patch 0012 - 0013: component vs bridge
> 
> Patch 0014	 : DSIM bridge
> 
> Patch 0015 - 0016: i.MX8M Mini/Nano
> 
> Patch 0017 - 0018: i.MX8M Plus

Tested using LVDS bridges and works on:
* imx8mp-tqma8mpql-mba8mpxl (i.MX8M Plus)
* imx8mm-tqma8mqml-mba8mx (i.MX8M Mini)
* imx8mn-tqma8mqnl-mba8mx (i.MX8M Nano)

But I noticed that tqma8mqml and tqma8mqnl only have a stable output if I 
specify 'data-lanes = <0 1 2>' (not <0 1 2 3>!) on the DSI-LVDS-Bridge (TI 
SN65DSI83) input endpoint, e.g. 

dsi_lvds_bridge: bridge@2d {
	compatible = "ti,sn65dsi83";
	reg = <0x2d>;
	enable-gpios = <&gpio_delays 0 130000 0>;
	vcc-supply = <&reg_sn65dsi83_1v8>;
	status = "okay";
	ports {
		#address-cells = <1>;
		#size-cells = <0>;
		port@0 {
			reg = <0>;
			lvds_bridge_in: endpoint {
				data-lanes = <0 1 2>;
				remote-endpoint = <&mipi_dsi_out>;
			};
		};
		port@2 {
			reg = <2>;
			lvds_bridge_out: endpoint {
				remote-endpoint = <&panel_in_lvds0>;
			};
		};
	};
};

I have no idea if this is on the DSIM side or the DSI-LVDS bridge side. 
Register 0xe5 on sn65dsi83 shows that CHA_LPP_ERR and CHA_SOT_BIT_ERR error 
bits are set, indicating there are low level protocol and SoT leader sequence 
bit errors. I can't find any significant difference in sn65dsi83 driver 
compared to downstream-kernel, so I would assume something in DSIM driver is 
different.

Best regards,
Alexander

> Changes for v10:
> - rebase on drm-misc-next
> - add drm_of_dsi_find_panel_or_bridge
> - add devm_drm_of_dsi_get_bridge
> - fix host initialization (Thanks to Marek Szyprowski)
> - rearrange the tiny patches for easy to review
> - update simple names for enum hw_type
> - add is_hw_exynos macro
> - rework on commit messages
> 
> Changes for v9:
> - rebase on drm-misc-next
> - drop drm bridge attach fix for Exynos
> - added prepare_prev_first flag
> - added pre_enable_prev_first flag
> - fix bridge chain order for exynos
> - added fix for Exynos host init for first DSI transfer
> - added MEDIA_BUS_FMT_FIXED
> - return MEDIA_BUS_FMT_RGB888_1X24 output_fmt if supported output_fmt
>   list is unsupported.
> - added MEDIA_BUS_FMT_YUYV10_1X20
> - added MEDIA_BUS_FMT_YUYV12_1X24
> 
> 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
> 
> Tested in Engicam i.Core MX8M Mini SoM.
> 
> Repo:
> https://gitlab.com/openedev/kernel/-/commits/imx8mm-dsi-v10
> 
> v9:
> https://lore.kernel.org/all/20221209152343.180139-1-jagan@amarulasolutions.c
> om/
> 
> Any inputs?
> Jagan.
> 
> Jagan Teki (16):
>   drm: of: Lookup if child node has DSI panel or bridge
>   drm: bridge: panel: Add devm_drm_of_dsi_get_bridge helper
>   drm: exynos: dsi: Drop explicit call to bridge detach
>   drm: exynos: dsi: Switch to devm_drm_of_dsi_get_bridge
>   drm: exynos: dsi: Mark PHY as optional
>   drm: exynos: dsi: Add platform PLL_P (PMS_P) offset
>   drm: exynos: dsi: Introduce hw_type platform data
>   drm: exynos: dsi: Add atomic check
>   drm: exynos: dsi: Add input_bus_flags
>   drm: exynos: dsi: Add atomic_get_input_bus_fmts
>   drm: exynos: dsi: Consolidate component and bridge
>   drm: exynos: dsi: Add Exynos based host irq hooks
>   drm: bridge: Generalize Exynos-DSI driver into a Samsung DSIM bridge
>   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 Szyprowski (1):
>   drm: exynos: dsi: Handle proper host initialization
> 
> 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/panel.c                |   34 +
>  drivers/gpu/drm/bridge/samsung-dsim.c         | 1883 +++++++++++++++++
>  drivers/gpu/drm/drm_of.c                      |  113 +-
>  drivers/gpu/drm/exynos/Kconfig                |    1 +
>  drivers/gpu/drm/exynos/exynos_drm_dsi.c       | 1793 +---------------
>  include/drm/bridge/samsung-dsim.h             |  119 ++
>  include/drm/drm_bridge.h                      |    2 +
>  include/drm/drm_of.h                          |   12 +
>  12 files changed, 2285 insertions(+), 1696 deletions(-)
>  create mode 100644 drivers/gpu/drm/bridge/samsung-dsim.c
>  create mode 100644 include/drm/bridge/samsung-dsim.h


^ permalink raw reply	[flat|nested] 81+ messages in thread
* [PATCH v10 00/18] drm: Add Samsung MIPI DSIM bridge
@ 2022-12-14 12:58 ` Jagan Teki
  0 siblings, 0 replies; 81+ messages in thread
From: Jagan Teki @ 2022-12-14 12:58 UTC (permalink / raw)
  To: Andrzej Hajda, Inki Dae, Marek Szyprowski, Joonyoung Shim,
	Seung-Woo Kim, Kyungmin Park, Frieder Schrempf, Fancy Fang,
	Tim Harvey, Michael Nazzareno Trimarchi, Adam Ford,
	Neil Armstrong, Robert Foss, Laurent Pinchart, Tommaso Merciai,
	Marek Vasut
  Cc: Matteo Lisi, dri-devel, linux-samsung-soc, linux-arm-kernel,
	NXP Linux Team, linux-amarula, Jagan Teki

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.

Patch 0001 - 0004: adding devm_drm_of_dsi_get_bridge

Patch 0005 - 0006: optional PHY, PMS_P offset

Patch 0007       : introduce hw_type

Patch 0008	 : fixing host init

Patch 0009	 : atomic_check

Patch 0010	 : input_bus_flags

Patch 0011	 : atomic_get_input_bus_fmts

Patch 0012 - 0013: component vs bridge

Patch 0014	 : DSIM bridge

Patch 0015 - 0016: i.MX8M Mini/Nano

Patch 0017 - 0018: i.MX8M Plus

Changes for v10:
- rebase on drm-misc-next
- add drm_of_dsi_find_panel_or_bridge
- add devm_drm_of_dsi_get_bridge
- fix host initialization (Thanks to Marek Szyprowski)
- rearrange the tiny patches for easy to review
- update simple names for enum hw_type
- add is_hw_exynos macro
- rework on commit messages

Changes for v9:
- rebase on drm-misc-next
- drop drm bridge attach fix for Exynos
- added prepare_prev_first flag
- added pre_enable_prev_first flag
- fix bridge chain order for exynos
- added fix for Exynos host init for first DSI transfer
- added MEDIA_BUS_FMT_FIXED
- return MEDIA_BUS_FMT_RGB888_1X24 output_fmt if supported output_fmt
  list is unsupported.
- added MEDIA_BUS_FMT_YUYV10_1X20
- added MEDIA_BUS_FMT_YUYV12_1X24

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

Tested in Engicam i.Core MX8M Mini SoM.

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

v9:
https://lore.kernel.org/all/20221209152343.180139-1-jagan@amarulasolutions.com/

Any inputs?
Jagan.

Jagan Teki (16):
  drm: of: Lookup if child node has DSI panel or bridge
  drm: bridge: panel: Add devm_drm_of_dsi_get_bridge helper
  drm: exynos: dsi: Drop explicit call to bridge detach
  drm: exynos: dsi: Switch to devm_drm_of_dsi_get_bridge
  drm: exynos: dsi: Mark PHY as optional
  drm: exynos: dsi: Add platform PLL_P (PMS_P) offset
  drm: exynos: dsi: Introduce hw_type platform data
  drm: exynos: dsi: Add atomic check
  drm: exynos: dsi: Add input_bus_flags
  drm: exynos: dsi: Add atomic_get_input_bus_fmts
  drm: exynos: dsi: Consolidate component and bridge
  drm: exynos: dsi: Add Exynos based host irq hooks
  drm: bridge: Generalize Exynos-DSI driver into a Samsung DSIM bridge
  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 Szyprowski (1):
  drm: exynos: dsi: Handle proper host initialization

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/panel.c                |   34 +
 drivers/gpu/drm/bridge/samsung-dsim.c         | 1883 +++++++++++++++++
 drivers/gpu/drm/drm_of.c                      |  113 +-
 drivers/gpu/drm/exynos/Kconfig                |    1 +
 drivers/gpu/drm/exynos/exynos_drm_dsi.c       | 1793 +---------------
 include/drm/bridge/samsung-dsim.h             |  119 ++
 include/drm/drm_bridge.h                      |    2 +
 include/drm/drm_of.h                          |   12 +
 12 files changed, 2285 insertions(+), 1696 deletions(-)
 create mode 100644 drivers/gpu/drm/bridge/samsung-dsim.c
 create mode 100644 include/drm/bridge/samsung-dsim.h

-- 
2.25.1


^ permalink raw reply	[flat|nested] 81+ messages in thread

end of thread, other threads:[~2023-01-23 16:04 UTC | newest]

Thread overview: 81+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-16 13:25 [PATCH v10 00/18] drm: Add Samsung MIPI DSIM bridge Alexander Stein
2022-12-16 13:25 ` Alexander Stein
2022-12-16 13:25 ` Alexander Stein
2022-12-17 23:55 ` Marek Vasut
2022-12-17 23:55   ` Marek Vasut
2022-12-17 23:55   ` Marek Vasut
2022-12-18  4:23   ` Adam Ford
2022-12-18  4:23     ` Adam Ford
2022-12-18  4:23     ` Adam Ford
2022-12-18  4:33     ` Marek Vasut
2022-12-18  4:33       ` Marek Vasut
2022-12-18  4:33       ` Marek Vasut
2022-12-18 22:24       ` Adam Ford
2022-12-18 22:24         ` Adam Ford
2022-12-18 22:24         ` Adam Ford
2022-12-18 22:28         ` Marek Vasut
2022-12-18 22:28           ` Marek Vasut
2022-12-18 22:28           ` Marek Vasut
2023-01-03 10:59           ` Alexander Stein
2023-01-03 10:59             ` Alexander Stein
2023-01-03 10:59             ` Alexander Stein
2023-01-04 15:08             ` Marek Vasut
2023-01-04 15:08               ` Marek Vasut
2023-01-04 15:08               ` Marek Vasut
2023-01-20 19:10               ` Maxime Ripard
2023-01-20 19:10                 ` Maxime Ripard
2023-01-20 19:10                 ` Maxime Ripard
2023-01-03  9:51   ` Alexander Stein
2023-01-03  9:51     ` Alexander Stein
2023-01-03  9:51     ` Alexander Stein
2023-01-04 15:07     ` Marek Vasut
2023-01-04 15:07       ` Marek Vasut
2023-01-04 15:07       ` Marek Vasut
  -- strict thread matches above, loose matches on Subject: below --
2022-12-16 12:41 Alexander Stein
2022-12-16 12:41 ` Alexander Stein
2022-12-16 12:41 ` Alexander Stein
2022-12-16 12:58 ` Marek Vasut
2022-12-16 12:58   ` Marek Vasut
2022-12-16 12:58   ` Marek Vasut
2022-12-14 12:58 Jagan Teki
2022-12-14 12:58 ` Jagan Teki
2022-12-14 12:58 ` Jagan Teki
2023-01-05 10:24 ` Jagan Teki
2023-01-05 10:24   ` Jagan Teki
2023-01-05 10:24   ` Jagan Teki
2023-01-06 14:34   ` Adam Ford
2023-01-06 14:34     ` Adam Ford
2023-01-06 14:34     ` Adam Ford
2023-01-06 14:42     ` Fabio Estevam
2023-01-06 14:42       ` Fabio Estevam
2023-01-06 14:42       ` Fabio Estevam
2023-01-19 17:27   ` Fabio Estevam
2023-01-19 17:27     ` Fabio Estevam
2023-01-19 17:27     ` Fabio Estevam
2023-01-19 17:58     ` Jagan Teki
2023-01-19 17:58       ` Jagan Teki
2023-01-19 17:58       ` Jagan Teki
2023-01-20 12:06       ` Fabio Estevam
2023-01-20 12:06         ` Fabio Estevam
2023-01-20 12:06         ` Fabio Estevam
2023-01-20 14:41         ` Jagan Teki
2023-01-20 14:41           ` Jagan Teki
2023-01-20 14:41           ` Jagan Teki
2023-01-20 15:06           ` Marek Vasut
2023-01-20 15:06             ` Marek Vasut
2023-01-20 15:06             ` Marek Vasut
2023-01-20 18:54             ` Jagan Teki
2023-01-20 18:54               ` Jagan Teki
2023-01-20 18:54               ` Jagan Teki
2023-01-20 19:08               ` Marek Vasut
2023-01-20 19:08                 ` Marek Vasut
2023-01-20 19:08                 ` Marek Vasut
2023-01-20 18:59             ` Dave Stevenson
2023-01-20 18:59               ` Dave Stevenson
2023-01-20 18:59               ` Dave Stevenson
2023-01-23 12:22               ` Jagan Teki
2023-01-23 12:22                 ` Jagan Teki
2023-01-23 12:22                 ` Jagan Teki
2023-01-23 15:48             ` Jagan Teki
2023-01-23 15:48               ` Jagan Teki
2023-01-23 15:48               ` Jagan Teki

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.