diff mbox series

[v7,08/10] drm: bridge: samsung-dsim: Add input_bus_flags

Message ID 20221005151309.7278-9-jagan@amarulasolutions.com (mailing list archive)
State Not Applicable
Headers show
Series drm: bridge: Add Samsung MIPI DSIM bridge | expand

Commit Message

Jagan Teki Oct. 5, 2022, 3:13 p.m. UTC
eLCDIF is expecting to have input_bus_flags as DE_LOW in order to
set active low during valid data transfer on each horizontal line.

Add DE_LOW flag via drm bridge timings.

v7, v6:
* none

v5:
* rebased based on updated bridge changes

v4, v3, v2, v1:
* none

Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
---
 drivers/gpu/drm/bridge/samsung-dsim.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Marek Vasut Oct. 15, 2022, 9:37 p.m. UTC | #1
On 10/5/22 17:13, Jagan Teki wrote:

[...]

> diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge/samsung-dsim.c
> index f714e49c1eab..f5cd80641cea 100644
> --- a/drivers/gpu/drm/bridge/samsung-dsim.c
> +++ b/drivers/gpu/drm/bridge/samsung-dsim.c
> @@ -1601,6 +1601,10 @@ static const struct samsung_dsim_host_ops samsung_dsim_generic_host_ops = {
>   	.unregister_host = samsung_dsim_unregister_host,
>   };
>   
> +static const struct drm_bridge_timings samsung_dsim_bridge_timings = {
> +	.input_bus_flags = DRM_BUS_FLAG_DE_LOW,
> +};
> +
>   int samsung_dsim_probe(struct platform_device *pdev)
>   {
>   	struct device *dev = &pdev->dev;
> @@ -1681,6 +1685,7 @@ int samsung_dsim_probe(struct platform_device *pdev)
>   
>   	dsi->bridge.funcs = &samsung_dsim_bridge_funcs;
>   	dsi->bridge.of_node = dev->of_node;
> +	dsi->bridge.timings = &samsung_dsim_bridge_timings;

Is this really valid on Exynos too ?

My impression is that the DE_LOW requirement is only needed for MX8MM/MN 
where the LCDIF-DSIM glue logic inverts the HS/VS/DE signals, while on 
all other platforms (at least MX8MP) the inversion does not take place, 
so DE is really active HIGH there.
diff mbox series

Patch

diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge/samsung-dsim.c
index f714e49c1eab..f5cd80641cea 100644
--- a/drivers/gpu/drm/bridge/samsung-dsim.c
+++ b/drivers/gpu/drm/bridge/samsung-dsim.c
@@ -1601,6 +1601,10 @@  static const struct samsung_dsim_host_ops samsung_dsim_generic_host_ops = {
 	.unregister_host = samsung_dsim_unregister_host,
 };
 
+static const struct drm_bridge_timings samsung_dsim_bridge_timings = {
+	.input_bus_flags = DRM_BUS_FLAG_DE_LOW,
+};
+
 int samsung_dsim_probe(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
@@ -1681,6 +1685,7 @@  int samsung_dsim_probe(struct platform_device *pdev)
 
 	dsi->bridge.funcs = &samsung_dsim_bridge_funcs;
 	dsi->bridge.of_node = dev->of_node;
+	dsi->bridge.timings = &samsung_dsim_bridge_timings;
 	dsi->bridge.type = DRM_MODE_CONNECTOR_DSI;
 
 	if (dsi->plat_data->host_ops && dsi->plat_data->host_ops->register_host)