From patchwork Wed Dec 14 12:58:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jagan Teki X-Patchwork-Id: 2560 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id D36743F0FB for ; Wed, 14 Dec 2022 14:00:39 +0100 (CET) Received: by mail-pj1-f70.google.com with SMTP id v16-20020a17090a899000b00219b1f0ddebsf4892854pjn.5 for ; Wed, 14 Dec 2022 05:00:39 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1671022838; cv=pass; d=google.com; s=arc-20160816; b=EWH2Dvk36Ynf6tMyAdjwFdJEkz4veCploklFpI3MlgA5R7YEbEorX4Cwq2O6u/gRjP LN1S5be119inpDc5oHqvx8EiwMbF6F++B/u4PkG1234o4RrIgb+eoE8mQyD5Fx1F0sBQ 2DL6tfEg2S12q98SFE43LUN27/L7szIOhzGIa2TZwmLceQwGgVGbd5joY911t3His8eK Goa22xH2BcaIbuFKvRneashKBydN7lPHmiooPAJCVe7hYXGHtTmWslkS5riEzbdBBmzc p4UOYy6Ni2heOXzAa9VtitE4GNByxGZj/GEPwl/AL0gp6FBkMLM9suzFa9/cTvbrZOHw 8I0Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=SDFWS4rl/1xImis3pDalZgS40SZzms+9mvcQHnYkqsE=; b=fb0r9CLLXjXSLId6OT23GZb+dcgAfJJKLqVVDkDAE92ZThsjdY3zqdmcNhejgx9S+S eSfi/yjdS1a1LDvdfQ8GZ/d+jmRMJsQUQhwWI99j7Rwe2hY4iRqCKg5TR1owoR0qRPqh 7mrhtUbdSruMf/d2vZkScOcrluV6OetTsvLsTCs4C4U/U5MjEoS94jcPKODT5PeK7uG+ Q/vmzlZO+nxASP7vFmZxXsJl9y0VF/glMP3qzm437UGGaEIcxG9WdxpMZPAP/p3nH9FW MpO5Q2ilBaACnQHwX72VKO6jKK5aoo9PgtaNHRDz2cUJaJ6xzSO02uqVsSuGuFsfnGZZ zqQg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=O2SkxtZj; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=SDFWS4rl/1xImis3pDalZgS40SZzms+9mvcQHnYkqsE=; b=GS86w0sZzDqQmGaYzvUVvdFI1VH3+vz0N5Ma+EDQE2Wwt7B2Clw+9EBA56EeF57XiP kT9Dpy7x5+HHeua7SdB1HEysT+lytxJgXKAFRrsaE1xdNz1czJrZEtxuuhZpRj0pkdGR xMlVPorWAwFvSuT1laqAZWH9RNIvhUpu/9eqY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=list-unsubscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=SDFWS4rl/1xImis3pDalZgS40SZzms+9mvcQHnYkqsE=; b=iyJ0q6Q9hEM4ZzC5MF5l4AdWt8GrXurRnPWXtvtpFugP+gqoUDHMLfWJ+pEE/13ERn izYvkPm42rpZak1pZoZoQ5FpCiqq8OdwqCbKFnvIxwPagcCGx9pG/RGoTpX9njqVfCsk 38APApyLXPsQE1Fwp7eW+LyPi3OmIBMk81MbND/B/DE6oY5dc/iIcnWWFlXaIEGBCIaB Gx0CrcrPaVyVHtiiyAB5VrJkiloIFxZfLYkQBvTRyvrh7xqQPQTisoHuG4PDKNpNZdVc B8IbHyMbF9QOx8VjZwRRMRDzAX1tKXBQFPUrcOf0mGnxcMS3xvrduFbQGqNLasTGMop8 rTpQ== X-Gm-Message-State: AFqh2krZ/akc7tHRGNR86wsi2ECeU75RxDTPB/QTvndPtbUJmKI/P2bn YKo9A2yZXNKn3uKO/bftpi+pRB+u X-Google-Smtp-Source: AMrXdXvOMSr/9llSRPsYh3woSQ4yh45Jx0HkUj0tCbYSbd3pbZ7ImAkiIjluetRIwfT49gL/xpqxJA== X-Received: by 2002:a17:90a:4581:b0:223:376b:f678 with SMTP id v1-20020a17090a458100b00223376bf678mr253482pjg.242.1671022838527; Wed, 14 Dec 2022 05:00:38 -0800 (PST) X-BeenThere: linux-amarula@amarulasolutions.com Received: by 2002:a17:902:ed49:b0:178:3881:c7e3 with SMTP id y9-20020a170902ed4900b001783881c7e3ls22226096plb.11.-pod-prod-gmail; Wed, 14 Dec 2022 05:00:37 -0800 (PST) X-Received: by 2002:a17:902:9b96:b0:189:5a49:36b7 with SMTP id y22-20020a1709029b9600b001895a4936b7mr25409578plp.33.1671022836919; Wed, 14 Dec 2022 05:00:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671022836; cv=none; d=google.com; s=arc-20160816; b=VjGTkiyQBF2iJrYhY88shyQngWf3Wec47XSojlZ+GqVUtxsmYpimTnEOkbnIlDbAC7 R94MRqatHfO7HB17ixT05IDCb9zhCxtTzSCe90SjcE+2+InnxcBYU7ouyCg6ZQJQBkB7 0ou5qyhI8kajccpUtYlSS7A5nwT3QYkBdKTNqQUhjwygR7OrLZ+9lej4Y1/AFEX4MnWM NUAggAoLazlskI4cJI3U9XJ7M4u+9OkV0cQGmMhtUH7HeTeaEEcew2mRFCanRCPj1raR bax0ig9HPn/UZTsOST3Q3i19QUnRHZhl21G/k+gWkEO0evlE3Qs6eoD7890LWGomo1U0 E2wA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=Z01OaA7zrA2+KfvvrlxHXzqsMcnora6T9Om/qcw6zXw=; b=GltDX26PfnRU3za1exZQGqzrWP7Lp/bNMdx60hpVeTiLwTKp6aV2/QNjbrqO44b3uj pT0yd3jJs44DGAp1h3SA2nmwqcwnyi4566nWldfLLAHIzCFgHy16hklcaBTAp0wAE73C h16wnx94MVuHQvkoJICsmt1Z3wI6xcoKTywm/YeWluuG/T6YTbvsfDa6/hzL2C8KNueI mFUsP0AiDS+BtaM89QINwX8Tkx/60uWoXeQkzwoaecV/MJwTe4b5lgWgV0YI9oEwEGdY DaihDLmJfWYFHWwswg5MZi/E78b568rxH6rV09EDF6pwmd86dtey/CeuqbqGKueV+hLp 8kUw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=O2SkxtZj; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) by mx.google.com with SMTPS id t15-20020a17090340cf00b0018980f60677sor1576427pld.23.2022.12.14.05.00.36 for (Google Transport Security); Wed, 14 Dec 2022 05:00:36 -0800 (PST) Received-SPF: pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41; X-Received: by 2002:a17:903:330d:b0:18f:9b13:5fc2 with SMTP id jk13-20020a170903330d00b0018f9b135fc2mr13047280plb.52.1671022836497; Wed, 14 Dec 2022 05:00:36 -0800 (PST) Received: from localhost.localdomain ([2405:201:c00a:a809:5e03:faf:846e:352d]) by smtp.gmail.com with ESMTPSA id ix17-20020a170902f81100b001895f7c8a71sm1838651plb.97.2022.12.14.05.00.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Dec 2022 05:00:35 -0800 (PST) From: Jagan Teki 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@lists.freedesktop.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, NXP Linux Team , linux-amarula , Jagan Teki Subject: [PATCH v10 09/18] drm: exynos: dsi: Add atomic check Date: Wed, 14 Dec 2022 18:28:58 +0530 Message-Id: <20221214125907.376148-10-jagan@amarulasolutions.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221214125907.376148-1-jagan@amarulasolutions.com> References: <20221214125907.376148-1-jagan@amarulasolutions.com> MIME-Version: 1.0 X-Original-Sender: jagan@amarulasolutions.com X-Original-Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=O2SkxtZj; spf=pass (google.com: domain of jagan@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=jagan@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com Content-Type: text/plain; charset="UTF-8" Precedence: list Mailing-list: list linux-amarula@amarulasolutions.com; contact linux-amarula+owners@amarulasolutions.com List-ID: X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com X-Google-Group-Id: 476853432473 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , Look like an explicit fixing up of mode_flags is required for DSIM IP present in i.MX8M Mini/Nano SoCs. At least the LCDIF + DSIM needs active low sync polarities in order to correlate the correct sync flags of the surrounding components in the chain to make sure the whole pipeline can work properly. On the other hand the i.MX 8M Mini Applications Processor Reference Manual, Rev. 3, 11/2020 says. "13.6.3.5.2 RGB interface Vsync, Hsync, and VDEN are active high signals." i.MX 8M Mini Applications Processor Reference Manual Rev. 3, 11/2020 3.6.3.5.2 RGB interface i.MX 8M Nano Applications Processor Reference Manual Rev. 2, 07/2022 13.6.2.7.2 RGB interface both claim "Vsync, Hsync, and VDEN are active high signals.", the LCDIF must generate inverted HS/VS/DE signals, i.e. active LOW. No clear evidence about whether it can be documentation issues or something, so added a comment FIXME for this and updated the active low sync polarities using SAMSUNG_DSIM_TYPE_IMX8MM hw_type. Comments are suggested by Marek Vasut. Signed-off-by: Jagan Teki Reviewed-by: Frieder Schrempf --- Changes for v10, v9: - none Changes for v8: - update the comments about sync signals polarities - added clear commit message by including i.MX8M Nano details Changes for v7: - fix the hw_type checking logic Changes for v6: - none Changes for v5: - rebase based new bridge changes [mszyprow] - remove DSIM_QUIRK_FIXUP_SYNC_POL - add hw_type check for sync polarities change. Changes for v4: - none Changes for v3: - add DSIM_QUIRK_FIXUP_SYNC_POL to handle mode_flasg fixup Changes for v2: - none Changes for v1: - fix mode flags in atomic_check instead of mode_fixup drivers/gpu/drm/exynos/exynos_drm_dsi.c | 28 +++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index 5792f9883cee..12a40576f937 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -263,6 +263,7 @@ enum exynos_dsi_type { DSIM_TYPE_EXYNOS5410, DSIM_TYPE_EXYNOS5422, DSIM_TYPE_EXYNOS5433, + DSIM_TYPE_IMX8MM, DSIM_TYPE_COUNT, }; @@ -1466,6 +1467,32 @@ static void exynos_dsi_atomic_post_disable(struct drm_bridge *bridge, pm_runtime_put_sync(dsi->dev); } +static int exynos_dsi_atomic_check(struct drm_bridge *bridge, + struct drm_bridge_state *bridge_state, + struct drm_crtc_state *crtc_state, + struct drm_connector_state *conn_state) +{ + struct exynos_dsi *dsi = bridge_to_dsi(bridge); + struct drm_display_mode *adjusted_mode = &crtc_state->adjusted_mode; + + /* + * The i.MX8M Mini/Nano glue logic between LCDIF and DSIM + * inverts HS/VS/DE sync signals polarity, therefore, while + * i.MX 8M Mini Applications Processor Reference Manual Rev. 3, 11/2020 + * 13.6.3.5.2 RGB interface + * i.MX 8M Nano Applications Processor Reference Manual Rev. 2, 07/2022 + * 13.6.2.7.2 RGB interface + * both claim "Vsync, Hsync, and VDEN are active high signals.", the + * LCDIF must generate inverted HS/VS/DE signals, i.e. active LOW. + */ + if (dsi->plat_data->hw_type == DSIM_TYPE_IMX8MM) { + adjusted_mode->flags |= (DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC); + adjusted_mode->flags &= ~(DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC); + } + + return 0; +} + static void exynos_dsi_mode_set(struct drm_bridge *bridge, const struct drm_display_mode *mode, const struct drm_display_mode *adjusted_mode) @@ -1488,6 +1515,7 @@ static const struct drm_bridge_funcs exynos_dsi_bridge_funcs = { .atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state, .atomic_destroy_state = drm_atomic_helper_bridge_destroy_state, .atomic_reset = drm_atomic_helper_bridge_reset, + .atomic_check = exynos_dsi_atomic_check, .atomic_pre_enable = exynos_dsi_atomic_pre_enable, .atomic_enable = exynos_dsi_atomic_enable, .atomic_disable = exynos_dsi_atomic_disable,