From nobody Sun May 24 20:37:41 2026 Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5459D368D50 for ; Thu, 21 May 2026 14:46:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374813; cv=none; b=UQaj1puEukSTVFnfkJ29RE0kpWPQqALs3kMb2gICpAeg/olCLAmymIRyeTNFdLDpNQ4CYlK85YaO+cxqkIYdugXn2tmfAADrOxuf2tK+8yoTZIZv4RpkEFAm4MlMO17Cfa+tWkolPIYyRIAJQgGru6xuN7hLdXjNjbuLVbRLPHk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374813; c=relaxed/simple; bh=aKBFRzOSRxcJ4Txy7/kSLmugaeZPSeJFq/bdVBQc+E4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bujqjNShLKmMtolj1e2eo3jjb87xRFCEZGy8oakZUYXi+/w+QzQcNRqMfogpUGJtsXq9WwFdTdcukig85aLH+P8uwEJSCxapT/2G7jAY+8oeDRU0ZUxeeKDzff6bRJsskkcyide69yjp8HxxcUGnCT2Q3mxxYBkoM5/5TWdCk6Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=M2jQ2JLg; arc=none smtp.client-ip=209.85.216.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="M2jQ2JLg" Received: by mail-pj1-f42.google.com with SMTP id 98e67ed59e1d1-3665a90bcd3so6633240a91.1 for ; Thu, 21 May 2026 07:46:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779374811; x=1779979611; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Asp0zRkS+UgWcG9vl0amstXfnHnSp8pf6SKHURGIe3E=; b=M2jQ2JLgIIi+bV8NTdN+BeOMkr70sAAVgTdYIxD8Z1XbuzbdvGwQHDw4Nd147g+qoi 8r+gGEABUYJsQEXudbZNXdYLJjVVglUZSxedmEyq19zkLQSW/YHCmRoqomWDrFdsqaif BzKNnmu8u6cfcif+JtZsC6itU0K2N7zWjfk6s/k04t8lIoNHE84mw3VzAENlMTg6rvK9 2EK0C8gRSnInnBm2+2YDx7d8S23/zaFDEpP3hcs5HZ1Z6XZzHVaVM+UCDgqIv+MksgAB mvny8KjPhKfuvgDkkqleU+RO46a8hRZwOP/ERjA3wCJz8n95box1BPIgYenu4KXpNaFW wklg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779374811; x=1779979611; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Asp0zRkS+UgWcG9vl0amstXfnHnSp8pf6SKHURGIe3E=; b=ZcE3l6zKf6ZOhq8nA/IEKuLHlYGODoIPcjMNXZ4kG5ArA5QbG8dCmdQVO2IFVHj5vc OjNQHwgq0P4pS6EXaMgEP7AyIJKT8ScPxydSwm7RUZVzUrN/KgOGGsf66iNOECgQUKXS E1KZgQtF9+TvlyIhOrq3fQU1Dx6s6VuZyU1Og0jYJJ+wLdlRZ8e1e3AbcfZzu3w8VKRE vxLFuVGhxzS+KYH2KobrvNr8DecHf+r/6+JNURJO+fJvsiivQPWEfCUWve1cNpDkhDF3 miOF+9eggpwMPSQ94FfObIlVbJPQPqT0xisGYpzQoAnw7LPJ3ORr2HSA3in5pVJzNz1F qdkg== X-Forwarded-Encrypted: i=1; AFNElJ/2oeysSLg5XEwsP9IF6k9mVPj1ziSytVSDjTYrl9J/+X1Wn73Q8G0GhXdetN6mN3jIJjY9L2D6o1eVAew=@vger.kernel.org X-Gm-Message-State: AOJu0YzI/vKF9Rfz7v2WAzudlX9oT21eijqm6xLhC7rMmv/ygZstfi2P fxCGM9n9g05KKxQJP49po/J38zWLjQT3fuvoWQB38k1zN4qd2Rm2YtYn2rKPeBd3SZw= X-Gm-Gg: Acq92OF/CWkDV9uTws/J6h+TiQGdH2v51El1SuqO/sIBmbuinjIkZfiXa04jNkZdtgD uwGXIDZr39f/3T+kjXW4IuxrVuheDixYuc01M2ZV0ubvpfqsWe9v1dZi9SCPkmlaDSNjXSBqFet njvpqApVk04yVu4kCOn97r/WezywRW8PE7KOFLlikr7EWDpSokBCSS8DqbUfzAL/MjpHna6K/fz V5guEXfI+qvN//JCpmqiCt22bq4jwD1YflGQrFxtuADD7fzX/BZ62mCNv2qe8vR7zjZ5gnjI45V u6m8bj8MB3JebuuKkf4TkO1MXeSkBTjijK3fs7kc5rTrrxC9ccirOARhDBCtX/g+wH6dyPEnL81 O9gKU9F9nw09mxLDaD1Bz7kfvRHlQRcWkj7JmqVlj6YXWDoNCoY316noEfbC4BWr4cFDC6g== X-Received: by 2002:a17:90b:4d90:b0:369:a359:b192 with SMTP id 98e67ed59e1d1-36a45182255mr3160061a91.10.1779374811479; Thu, 21 May 2026 07:46:51 -0700 (PDT) Received: from [127.0.1.1] ([2a11:3:200::109e]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36a5bff3ef3sm476527a91.4.2026.05.21.07.46.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2026 07:46:51 -0700 (PDT) From: Jun Nie Date: Thu, 21 May 2026 22:46:03 +0800 Subject: [PATCH v4 1/5] drm/msm/dsi: support DSC configurations with slice_per_pkt > 1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260521-sm8650-7-1-bonded-dsi-v4-1-a4dd5e0850f1@linaro.org> References: <20260521-sm8650-7-1-bonded-dsi-v4-0-a4dd5e0850f1@linaro.org> In-Reply-To: <20260521-sm8650-7-1-bonded-dsi-v4-0-a4dd5e0850f1@linaro.org> To: Rob Clark , Dmitry Baryshkov , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Neil Armstrong , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Jun Nie , Jonathan Marek X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779374785; l=3578; i=jun.nie@linaro.org; s=20240403; h=from:subject:message-id; bh=aKBFRzOSRxcJ4Txy7/kSLmugaeZPSeJFq/bdVBQc+E4=; b=Wb/XYoQvQLih10uVNXcXtJ4LZNf+eFEbM7cw4pN8fli1pFCMy5LBN6yWHkEoV97Q5lKtduYI9 X6o8VEoodRuCd5YUgeeZytLQm70SuYHzEPnrd/eeA/zt2jfLHQfajIa X-Developer-Key: i=jun.nie@linaro.org; a=ed25519; pk=MNiBt/faLPvo+iJoP1hodyY2x6ozVXL8QMptmsKg3cc= Some panels require multiple slice to be sent in a single DSC packet. And this feature is a must for specific panels, such as Sharp ls026b3sa06. Add a dsc_slice_per_pkt member into struct drm_dsc_config and support the feature in msm mdss driver. Co-developed-by: Jonathan Marek Signed-off-by: Jonathan Marek Signed-off-by: Jun Nie --- drivers/gpu/drm/msm/dsi/dsi_host.c | 23 ++++++++--------------- include/drm/display/drm_dsc.h | 7 +++++++ 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/d= si_host.c index 53ff23f4f68ab..d14b6e41dcd90 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_host.c +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c @@ -166,6 +166,7 @@ struct msm_dsi_host { =20 struct drm_display_mode *mode; struct drm_dsc_config *dsc; + unsigned int dsc_slice_per_pkt; =20 /* connected device info */ unsigned int channel; @@ -938,17 +939,10 @@ static void dsi_update_dsc_timing(struct msm_dsi_host= *msm_host, bool is_cmd_mod slice_per_intf =3D dsc->slice_count; =20 total_bytes_per_intf =3D dsc->slice_chunk_size * slice_per_intf; - bytes_per_pkt =3D dsc->slice_chunk_size; /* * slice_per_pkt; */ + bytes_per_pkt =3D dsc->slice_chunk_size * msm_host->dsc_slice_per_pkt; =20 eol_byte_num =3D total_bytes_per_intf % 3; - - /* - * Typically, pkt_per_line =3D slice_per_intf * slice_per_pkt. - * - * Since the current driver only supports slice_per_pkt =3D 1, - * pkt_per_line will be equal to slice per intf for now. - */ - pkt_per_line =3D slice_per_intf; + pkt_per_line =3D slice_per_intf / msm_host->dsc_slice_per_pkt; =20 if (is_cmd_mode) /* packet data type */ reg =3D DSI_COMMAND_COMPRESSION_MODE_CTRL_STREAM0_DATATYPE(MIPI_DSI_DCS_= LONG_WRITE); @@ -1104,12 +1098,8 @@ static void dsi_timing_setup(struct msm_dsi_host *ms= m_host, bool is_bonded_dsi) else /* * When DSC is enabled, WC =3D slice_chunk_size * slice_per_pkt + 1. - * Currently, the driver only supports default value of slice_per_pkt = =3D 1 - * - * TODO: Expand mipi_dsi_device struct to hold slice_per_pkt info - * and adjust DSC math to account for slice_per_pkt. */ - wc =3D msm_host->dsc->slice_chunk_size + 1; + wc =3D msm_host->dsc->slice_chunk_size * msm_host->dsc_slice_per_pkt + = 1; =20 dsi_write(msm_host, REG_DSI_CMD_MDP_STREAM0_CTRL, DSI_CMD_MDP_STREAM0_CTRL_WORD_COUNT(wc) | @@ -1719,8 +1709,11 @@ static int dsi_host_attach(struct mipi_dsi_host *hos= t, msm_host->lanes =3D dsi->lanes; msm_host->format =3D dsi->format; msm_host->mode_flags =3D dsi->mode_flags; - if (dsi->dsc) + if (dsi->dsc) { msm_host->dsc =3D dsi->dsc; + /* for backwards compatibility, assume 1 if not set */ + msm_host->dsc_slice_per_pkt =3D dsi->dsc->dsc_slice_per_pkt ?: 1; + } =20 if (msm_host->format =3D=3D MIPI_DSI_FMT_RGB101010) { if (!msm_dsi_host_version_geq(msm_host, MSM_DSI_VER_MAJOR_6G, diff --git a/include/drm/display/drm_dsc.h b/include/drm/display/drm_dsc.h index bbbe7438473d3..c522ab3d71853 100644 --- a/include/drm/display/drm_dsc.h +++ b/include/drm/display/drm_dsc.h @@ -267,6 +267,13 @@ struct drm_dsc_config { * Offset adjustment for second line in Native 4:2:0 mode */ u16 second_line_offset_adj; + + /** + * @dsc_slice_per_pkt: + * Number of DSC slices to be sent in a single packet. This is not + * part of DSC standard, and only used in some DSI panels so far. + */ + unsigned int dsc_slice_per_pkt; }; =20 /** --=20 2.43.0 From nobody Sun May 24 20:37:41 2026 Received: from mail-pj1-f48.google.com (mail-pj1-f48.google.com [209.85.216.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5FD4C369D6E for ; Thu, 21 May 2026 14:47:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374825; cv=none; b=fORIhq6OzWsHbO19nntxj4kwLHE367DCR5sYqMIyCJNAyF5tDmkNoxOnwdntdoUnrf2d/3YAoHbtINxFL1oKDLiJylOnxDlwPadllK5fe/w1yphMtxzx3jUdD5eFk8HCWEWBfcks2kTIEPmz55NCGJ15WXj6ICQfWK21P+KwCzQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374825; c=relaxed/simple; bh=mkr0K1mBT5RxN/+YTqKfY48rfoOCEL8C2meJua6xkiM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aEG6siW+HUR9nsdY7CSHsfB3q2l7oNBAe4hs6AUqF171GfZtPxT8I9WnS4/TS6Nq8dtAcPYzNCvoO9mxrDzallX4qDFhTbFsZE/d+IRbn44/mghFP6TrW+zSlTo5EhPhGCRwrGODGyqdwI3yJnwB9O/wPkf4byvarMD3DYLEgmM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=IsCNdlw0; arc=none smtp.client-ip=209.85.216.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="IsCNdlw0" Received: by mail-pj1-f48.google.com with SMTP id 98e67ed59e1d1-3664df32e91so6692717a91.3 for ; Thu, 21 May 2026 07:47:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779374824; x=1779979624; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=B2YtFavMCVSChLdyN1Eu3nk01mQaCAGqqLzhDnGc7Wo=; b=IsCNdlw0YkwyEwEkCwNGSjCvqKHpESTdJGuWuHA2j9/9cJlnCQU7HGh6Z2jOhasCb7 yieom6BxuTFZIBC+VLhVU0OhsUkXK0hSs7n4AyfeEHwq4wXrfcaYK+IxP1OUCMIPhbs5 0MOu2QJPC0Ys1FjTg9Wh1DtgdiFmoZGmFJ4iRlYNR4ERMOBvOdPBri2Hrhf45IXobDDJ pahlkwiK5Mvey+ZWBZ46fFzI599CoHMfiixWMW+fSk+L8oIe123j0G8miciDm1Lks41Z DO2CT7Zzc/Cnlb/EjfYJz/dY6GgYk68jpXsddF7XpjgnL7SNsaTF7jXFiSHfIhmYWFeI KkXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779374824; x=1779979624; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=B2YtFavMCVSChLdyN1Eu3nk01mQaCAGqqLzhDnGc7Wo=; b=jan51KmhRy+hIz5bywr+Q421kmruxJ+e74lTijcn2QPhPQcrAAfAJtDQM/uphx/a0N BTjTnIdprzlym+CrlTnRNTbMon5UF+eE7sXn4uBJ5LS9tYD2paEhPjVrH1bMmi2F5blZ auh1VzYML8n0XeG/287Bx7hLOV+iFDeL0ipaqjS6E64oGQXaUfw6IzIOerC3KGu211Ae T1xYyeceuhatHrfTi9NyeGpoRl812dq7ZgNwUx+c+14yWVssgRRnwRZ4z8YHb1lk/poF 74B38duDJOLfzLlghF6DuQ0O9rS8Ogs6NSMQN8LpCCxcu8tjK9bpFSa5lujujLB9E3Uq SkRw== X-Forwarded-Encrypted: i=1; AFNElJ9bh13EWJynwEWIjiEkVs/3gv9QdRy47IXO/J/0+PQ4l91edt+aaAu1aaN5Ez4+lg0qPbAlRYTCVZBT5XE=@vger.kernel.org X-Gm-Message-State: AOJu0YxgmORYj5rK67cQpOyP89qlTTR+gKLwyRakGHauJqfZiuqzsfOc 1zBQvw1/LSJcCnCvoQCxa+tCStoNMig7Yaoq56DWi8TmwDUu+AP2Tk7ApvIbKiuYgLI= X-Gm-Gg: Acq92OGzWu1W0IdpsfWfwhXcTZNrVDE6x976VajUX4yYXR0AmfUBWtyQzu1hQqCbWlv /2WuSiiChPL1FZ2v+SRzaeesA8bSsrRTQA1tOjR0g2QQco5Pe0xaItjbjLZ+mfrGxfmju4QJp4l HZnPCe6HK8eUvF095wBVyjMQbY/fvaWhieNWQv+KmA9OsPUk9busy8dXrJb0iBLLo50bQG27qRg 1fx62NvcQ8et0ZdsYXP2/d2Gox1/xcNXSSOxY/xFjgRi8CzzQbtOmYJlx1jdrbOHDkrLRcfJ91G +Y34WGLRDR+IyI/9lTcSGh429AGsOocY//pUF/wnGQM8COzxQroJaPla7JM5cRNxunXcPs22gTL 0QqbQqgOvStnr0p3bZq201+XbTs6Efy70p7VeQ933SHGq6jBbTTiWjY6SVFne6xxTJfjh8ADhGw EnHvWJ X-Received: by 2002:a17:90b:2e4d:b0:368:b176:c5a8 with SMTP id 98e67ed59e1d1-36a4560d3femr3288287a91.15.1779374823731; Thu, 21 May 2026 07:47:03 -0700 (PDT) Received: from [127.0.1.1] ([2a11:3:200::109e]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36a5bff3ef3sm476527a91.4.2026.05.21.07.46.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2026 07:47:03 -0700 (PDT) From: Jun Nie Date: Thu, 21 May 2026 22:46:04 +0800 Subject: [PATCH v4 2/5] drm/mipi-dsi: Add flag to support dual-panel configurations Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260521-sm8650-7-1-bonded-dsi-v4-2-a4dd5e0850f1@linaro.org> References: <20260521-sm8650-7-1-bonded-dsi-v4-0-a4dd5e0850f1@linaro.org> In-Reply-To: <20260521-sm8650-7-1-bonded-dsi-v4-0-a4dd5e0850f1@linaro.org> To: Rob Clark , Dmitry Baryshkov , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Neil Armstrong , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Jun Nie X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779374785; l=1347; i=jun.nie@linaro.org; s=20240403; h=from:subject:message-id; bh=mkr0K1mBT5RxN/+YTqKfY48rfoOCEL8C2meJua6xkiM=; b=5+BFUHgumhowsBls/J2rN2yIsZQXpzOQS6/+y+2Qz3iGix/P7ZytH3k3y+Mg9h5wKQaqlauaP LhU3lmKnCkmDIsEMKF+cgBAlPUlB8yMWgxQTqBhhZg4H5n/7FtZgOGS X-Developer-Key: i=jun.nie@linaro.org; a=ed25519; pk=MNiBt/faLPvo+iJoP1hodyY2x6ozVXL8QMptmsKg3cc= Some devices treat two independent physical DSI panels as a single logical panel from the CRTC's perspective. However, two separate DSI hosts are still required to drive the panels individually. Introduce a `dual_panel` flag to the `mipi_dsi_device` struct. This allows a panel driver to inform the DSI host that it is part of a dual-panel setup, enabling the host to coordinate both physical displays as one. Signed-off-by: Jun Nie --- include/drm/drm_mipi_dsi.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h index 2ab651a36115d..889ef1421207a 100644 --- a/include/drm/drm_mipi_dsi.h +++ b/include/drm/drm_mipi_dsi.h @@ -169,6 +169,7 @@ struct mipi_dsi_device_info { * @host: DSI host for this peripheral * @dev: driver model device node for this peripheral * @attached: the DSI device has been successfully attached + * @dual_panel: the DSI device is one instance of dual panel * @name: DSI peripheral chip type * @channel: virtual channel assigned to the peripheral * @format: pixel format for video mode @@ -186,6 +187,7 @@ struct mipi_dsi_device { struct mipi_dsi_host *host; struct device dev; bool attached; + bool dual_panel; =20 char name[DSI_DEV_NAME_SIZE]; unsigned int channel; --=20 2.43.0 From nobody Sun May 24 20:37:41 2026 Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E74C736C0C3 for ; Thu, 21 May 2026 14:47:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374838; cv=none; b=e5f0ayfapAnXG84SRPgVamh8hvNoBbPcN6imZGzILNraxSFDjXylLgnfoPTJJpjX7lv6HLm2SEcHUhiVewr4rNGkh31djTshdNZRMdpuiAn4DWWh0LeUoBgjiq/puNxN3ZSMR5qyyXhuWU5Y+y61//yg2EIf2dTWzrxY80oKx/U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374838; c=relaxed/simple; bh=KnQNWhFGZp33dCjq6OXiRZfhx2zq6YDbC/BM4AvYDFo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aaPpGLam/nF2efaZWOu/Hyvm5sRwlxaPM+JlWg1xjzjR6dlOXfeBkgph5rmjr/ZD5S1S1YGKpCQ+nJ0Xr7nQ8AzIoeprKogqGLc1bR7/MK1ctBCfdmiwpC/EZsMTnzdvmUY48S4sk8utqvKMcrIdYLrilccHhLY+sCgQxQZQtCU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=yR0kjbpl; arc=none smtp.client-ip=209.85.216.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="yR0kjbpl" Received: by mail-pj1-f44.google.com with SMTP id 98e67ed59e1d1-36974221f93so3403018a91.2 for ; Thu, 21 May 2026 07:47:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779374836; x=1779979636; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=n9BURsh5NYMbwKkwuyMPazevtClBiueqRU9O2y7rbG4=; b=yR0kjbplKJPCSv98BAtKLEoBQXMUdukcIRjDsnTSYtMfZl2AiG4AbjRU6OBwT78iid 8j4b4SzwvJJFca+jeTKJsUil1lHrfo+GXwo0YXxKg9pLQalmksNF8CfQjzAh5jrhmMiV LEhT7XfB+sDiTNb8E+/ntpeXcOZoFXNXh642jDvKxC+7mN/YMR0l0acHfQX2k2jnOzFe ZAkHUIautgfut9tOuvLIy4YZu0LImytii0pqeLz6+/lDFa3sVa2olcexpzYE+n9grBZu CUWwn1mGi1/zHXvQ+BBJuchWB5XHnlqnsZure2R5bhEmcWKy6S9K8LykP1RLguiuRKXq 5r6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779374836; x=1779979636; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=n9BURsh5NYMbwKkwuyMPazevtClBiueqRU9O2y7rbG4=; b=fI2ThsBKdkkIr+SGdWVGxTBoM4kSGX1ujBNZpbZnrBorcDhX+v/synk8I0VJqLc5b1 V0Q+m5R49HmLThcI0rbPO8zDqqiItvCaY4nr0cR6PhLrUZSVSqfMIJ3x7Bf8UhLtQONK ZNLwdtyDnpGApOSbF+4pVFKnsRrFcconoHuUJcIJ9bneWOdct2LL0iBe36kwMDn5e/R9 Yuv7XIoFk4R5QHxCvbUu/WsHW85ruq/Sd5IZDpsaZHR/3AvnSM4flolO28OsWwAZGNdo 3a7TKJ6rMLu5e2L3dQd43R58lp4l5vwE2sxZjlpdaeBtf8yxO++y4YUZSCzhExfr+UeD 3CbA== X-Forwarded-Encrypted: i=1; AFNElJ/sBZTZkOEkCeGSHbNMFOBmy9UX96oFwZCO4LCqaxl2Sroo3mZMfbPGuXxQ6AqMTznvOQeDPUV6EISZ5wM=@vger.kernel.org X-Gm-Message-State: AOJu0YwLaIiw+nDY6YTRONnd5EghvrwN9GjOIgsCsvAIou6XASCyXOCs JZEd16s46hXZWH9dz0hhpwltJvCfveajXP21M9ubGg2T5ap9i39dkzeCYG75fUges9Q= X-Gm-Gg: Acq92OFc0d1Dt8QnZ+MHDg8lgCSs1xFZeAEAuLT8TvzRbT72vbGGlfNflXDpcl1Zp5S LHz1pMd0xGFJxGPqseMt2ULE1GSes5se0P8twSvZUNUXueC6XpIjXwTTra/Jq+1eOV4YfhlRRwT RvNBn7+GqpowBfxy3+37TD3+G77MX85WMoINotDQgBCsRZAvSOAgSlVeVEYTgQtyTaWeXrPVVFN MujhuXIrCtiCgnE1U0MtJF/UHBEoGq8EVL/n8mFU4SKaY2dj6fa0JcAmEKx8/twmTn0v5PNlyrP ekyjntKVkqPDgRkGcpGNGJ+hjgrpVKDiSnKe/OtkeT1jNSj44hFVtN+5mwEJ+hdQrLXDFUkzAyI Fbc0Xli6NOoJ8fN8UVsc5tBuJfU2apnff55oBnZJ1X24N4W1QyIQrBDAe6RS2aYpRjEr5EatpOb K2wpSg X-Received: by 2002:a17:90b:3d4e:b0:35f:b7f5:9cd with SMTP id 98e67ed59e1d1-36a4563db18mr3294883a91.20.1779374836085; Thu, 21 May 2026 07:47:16 -0700 (PDT) Received: from [127.0.1.1] ([2a11:3:200::109e]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36a5bff3ef3sm476527a91.4.2026.05.21.07.47.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2026 07:47:15 -0700 (PDT) From: Jun Nie Date: Thu, 21 May 2026 22:46:05 +0800 Subject: [PATCH v4 3/5] drm/msm/dsi: Support dual panel use case with single CRTC Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260521-sm8650-7-1-bonded-dsi-v4-3-a4dd5e0850f1@linaro.org> References: <20260521-sm8650-7-1-bonded-dsi-v4-0-a4dd5e0850f1@linaro.org> In-Reply-To: <20260521-sm8650-7-1-bonded-dsi-v4-0-a4dd5e0850f1@linaro.org> To: Rob Clark , Dmitry Baryshkov , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Neil Armstrong , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Jun Nie X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779374785; l=3355; i=jun.nie@linaro.org; s=20240403; h=from:subject:message-id; bh=KnQNWhFGZp33dCjq6OXiRZfhx2zq6YDbC/BM4AvYDFo=; b=nMdcNoK7/z8Uvsq3qZxzJYj4k6T+yPZNRjhZ4FVWWK4hodIv7ywVAZaXqYzqN6eh4rNaL0DUK 4O0zFdXVKxcDx+0rHZUOJMKzSINWRX6pZDrVJ97WSdEdwIz1gI2bbTY X-Developer-Key: i=jun.nie@linaro.org; a=ed25519; pk=MNiBt/faLPvo+iJoP1hodyY2x6ozVXL8QMptmsKg3cc= Support a hardware configuration where two independent DSI panels are driven by a single, synchronous CRTC. This configuration uses a bonded DSI link to provide a unified vblank for both displays. This allows application software to treat the two displays as a single, wide framebuffer with a synchronized refresh cycle, simplifying rendering logic for side-by-side panel arrangements. At the DSI host level, the frame width for each link must be that of an individual panel. The driver therefore halves the CRTC's horizontal resolution before configuring the DSI host and any DSC encoders, ensuring each panel receives the correct half of the framebuffer. While the DSI panel driver should manage two panels togehter. 1. During probe, the driver finds the sibling dsi host via device tree phandle and register the 2nd panel to get another mipi_dsi_device. 2. Set dual_panel flag on both mipi_dsi_device. 3. Prepare DSC data per requirement from single panel. 4. All DSI commands should be send on every DSI link. 5. Handle power supply for 2 panels in one shot, the same is true to brightness. 6. From the CRTC's perspective, the two panels appear as one wide display. The driver exposes a DRM mode where the horizontal timings (hdisplay, hsync_start, etc.) are doubled, while the vertical timings remain those of a single panel. Because 2 panels are expected to be mounted in left/right position. To maintain synchronization, both DSI links are configured to share a single clock source, with the DSI1 controller using the clock provided to DSI0 as below. &mdss_dsi1 { assigned-clocks =3D <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>; assigned-clock-parents =3D <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>; } Signed-off-by: Jun Nie --- drivers/gpu/drm/msm/dsi/dsi_host.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/d= si_host.c index d14b6e41dcd90..4d7ac01aa393d 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_host.c +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c @@ -186,6 +186,7 @@ struct msm_dsi_host { bool registered; bool power_on; bool enabled; + bool is_dual_panel; int irq; }; =20 @@ -1024,7 +1025,10 @@ static void dsi_timing_setup(struct msm_dsi_host *ms= m_host, bool is_bonded_dsi) return; } =20 - dsc->pic_width =3D mode->hdisplay; + if (msm_host->is_dual_panel) + dsc->pic_width =3D hdisplay; + else + dsc->pic_width =3D mode->hdisplay; dsc->pic_height =3D mode->vdisplay; DBG("Mode %dx%d\n", dsc->pic_width, dsc->pic_height); =20 @@ -1705,6 +1709,7 @@ static int dsi_host_attach(struct mipi_dsi_host *host, if (dsi->lanes > msm_host->num_data_lanes) return -EINVAL; =20 + msm_host->is_dual_panel =3D dsi->dual_panel; msm_host->channel =3D dsi->channel; msm_host->lanes =3D dsi->lanes; msm_host->format =3D dsi->format; @@ -2596,6 +2601,9 @@ enum drm_mode_status msm_dsi_host_check_dsc(struct mi= pi_dsi_host *host, if (!msm_host->dsc) return MODE_OK; =20 + if (msm_host->is_dual_panel) + pic_width =3D mode->hdisplay / 2; + if (pic_width % dsc->slice_width) { pr_err("DSI: pic_width %d has to be multiple of slice %d\n", pic_width, dsc->slice_width); --=20 2.43.0 From nobody Sun May 24 20:37:41 2026 Received: from mail-pj1-f51.google.com (mail-pj1-f51.google.com [209.85.216.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2E4A923372C for ; Thu, 21 May 2026 14:47:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374851; cv=none; b=lwmpsNI2SNd5/HwwTMlgtQNDBAAVTnq4QITQCOk7eBNJaTi1Aelc87//g3ZEsyULKPuK69K7koWpeOML8xo2nnt2LNZbue39yCsbpt9KrTf4D7GHYcDKmgZYlkNIY/XGkNz1xnyAxTQ1xJjWtNHgscMdgomVyeN+zwBKCi/QC4M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374851; c=relaxed/simple; bh=hIuDotw+GX5XbmOdxDTJx395z7b2RsR58qNFPRHASYc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=I6HV2HIlU5d1px93Zzl3IKN0YmxtKY/oxgz88Wpac3/NdaB6cG3uHVUFu3r3sTN+90E9ZXGnxwznSpQ7IAq1LgO5jqDkwM+rwgMTzbkNQj3BCbDr5HmspwB5kzMA/3aYrPI80ZeRwevd6rBxCvhTXhpvY8Wo8lISKe7zYDqPQ0E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=AELYmUs/; arc=none smtp.client-ip=209.85.216.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="AELYmUs/" Received: by mail-pj1-f51.google.com with SMTP id 98e67ed59e1d1-369576666d5so2903629a91.0 for ; Thu, 21 May 2026 07:47:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779374848; x=1779979648; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=MPjL0X/X6YgpMCLcCHGKLym9NxiiWm8gzz8E+L90JHc=; b=AELYmUs/ZemBUXg68MEWPRrYx+bI8TUwC5AZzc8E5SQJJfS1G9IlUKucYDPh99f9Co eBn1JE/N3CI3FgXbsnPDr+iVYnDTn/eUQr2OGBXxUNHIXn/pPyHcmRAsRjCCMm9aEx48 l3Tq+/iSMau0/7maik3yEGhs6B6+Tsutif3lJZK7ZyX1KATX644T//l6IR4okC08dykc jBmCh28bMsIzzyBiATmq0rDVsOId/NGvjjeY6dZff/sowJR/9ZwKpogWlCJO8ta7641v 0YTLbKeh5zb85SgWk8xLvYG3rYZ03ml0yNF5EsbUUfQ2Vjzq00JVF/xCOtK5NEgc0hW3 m6mQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779374848; x=1779979648; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=MPjL0X/X6YgpMCLcCHGKLym9NxiiWm8gzz8E+L90JHc=; b=UWIC58B7ihxpQAoZdCjhL+xjIfGf9xeF7nF3Bzfp+caodFsKzJz/GlMfPWCFmKf76G yvujQ+K1ug55sGIVLV+fr0RJ178hkbRjSaPkMrNJX5vzpgjPyfE696G7KLTYllk6h+w7 noCb1G1ib20z695D+MLTurlk7UOSwQjojah0BcTrSmEVO3VITpM0oE6qmmznHGJEXx8j zRkmnq8hr6raov3Q01Ab4h07bsLpRJWUuzs29lfJSfuzuNVl9/HZyE5lH4x44b+b18bl 8CRm3Rk3pCSk/2fXVZfJaSnMIq5V8MqvcRrkPp6ysV6OmyFSFc5etkatusTQ2/CDmHzw RFgQ== X-Forwarded-Encrypted: i=1; AFNElJ+4ysOUbn8rAy+WxtxNaCZld7GM9q93G3TXAfUJg3xfazhtJMBqyq2KgTnJlO3PFgjXWXFuLbxk0FQaujE=@vger.kernel.org X-Gm-Message-State: AOJu0Yy1Rf92xRihtKqJFhmERY2k2e5rPVtYj4SvHIUkLHghOqO9jJ9z DDVX/qETpr4o4F8f60xDgI0jmjeWAmlk0pKrijKp4rnEZeckbjJEAweljoGhtyExcMM= X-Gm-Gg: Acq92OGSH4NGHpNAa2t+EU/TyThDueT89MOVRvsiC3IRA+ZlSnjQKiEalXHKucEN7S/ iRlOWEmXersE3u7/UynOIa7GGM1eGuqRa1RKllJL6SBmheWv2RceFv9m79ZPTC6tDeyk88/axIM ogW1IqJEwBVGPNtU+EQPVh9D0YgIbZwTMwtgZs70GKkgFpUpwa0zFGiF8/+m2hMRlOvmx2Lh/xz mFZi/pHlcsMfNDpGvnQxZefdIZUOd0/HgrKohxb8Et1UI2zceGsELhTv3e91P+d2VoPZ/6faNbx VHr2WbAmA0NsQrNJCdVDeqjX9yiwxKd1Zzt7VGfbaKLYUrF82790zVwpBJdQU2LLfmfpQYQlmBw OWUytYBTGDo3pcAXGJmwo47PmwyEUoiCitShE5+eZqObJ2h9wg7eoSJxDaIsBzK0kp75G8g== X-Received: by 2002:a17:90b:3d47:b0:362:e826:cefe with SMTP id 98e67ed59e1d1-36a457566acmr3539155a91.23.1779374848359; Thu, 21 May 2026 07:47:28 -0700 (PDT) Received: from [127.0.1.1] ([2a11:3:200::109e]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36a5bff3ef3sm476527a91.4.2026.05.21.07.47.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2026 07:47:27 -0700 (PDT) From: Jun Nie Date: Thu, 21 May 2026 22:46:06 +0800 Subject: [PATCH v4 4/5] dt-bindings: display: Add Synaptics R63455 panel support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260521-sm8650-7-1-bonded-dsi-v4-4-a4dd5e0850f1@linaro.org> References: <20260521-sm8650-7-1-bonded-dsi-v4-0-a4dd5e0850f1@linaro.org> In-Reply-To: <20260521-sm8650-7-1-bonded-dsi-v4-0-a4dd5e0850f1@linaro.org> To: Rob Clark , Dmitry Baryshkov , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Neil Armstrong , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Jun Nie X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779374785; l=4249; i=jun.nie@linaro.org; s=20240403; h=from:subject:message-id; bh=hIuDotw+GX5XbmOdxDTJx395z7b2RsR58qNFPRHASYc=; b=mGMAqj08bFdadIsaW7gwyfQxIqW2VhchrrwDKjJ7yi/lAwPWhQ9H5h5lXi2nTdUAqCK+wS9pG ya6svtBUFxCBqLgW95ChM2ub19tnbouMniUCfgpzNM1EF0HycM6c+R+ X-Developer-Key: i=jun.nie@linaro.org; a=ed25519; pk=MNiBt/faLPvo+iJoP1hodyY2x6ozVXL8QMptmsKg3cc= Add support for the dual-panel system found in the virtual reality device. This system consists of two physical 2160x2160 panels, each connected via a MIPI DSI interface. The backlight is managed through DSI link. Signed-off-by: Jun Nie --- .../bindings/display/panel/synaptics,r63455.yaml | 125 +++++++++++++++++= ++++ 1 file changed, 125 insertions(+) diff --git a/Documentation/devicetree/bindings/display/panel/synaptics,r634= 55.yaml b/Documentation/devicetree/bindings/display/panel/synaptics,r63455.= yaml new file mode 100644 index 0000000000000..a94b355ed9557 --- /dev/null +++ b/Documentation/devicetree/bindings/display/panel/synaptics,r63455.yaml @@ -0,0 +1,125 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/panel/synaptics,r63455.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Synaptics R63455 based dual 2160x2160 MIPI-DSI Panel + +maintainers: + - Jun Nie + +description: + Synaptics R63455 is a Virtual Reality Display Driver and VR Bridge, used= in + pair in Headset devices. The Virtual Reality Display complex is composed= of + two strictly identical display panels, each driven by its own DSI interf= ace + but forms a single virtual display for the human eye perception and thus + requires a strict synchronization of the two display panel content updat= e. + +allOf: + - $ref: panel-common.yaml# + +properties: + compatible: + items: + - enum: + - sharp,ls026b3sa06 + - boe,vs026c4m-n52-6000 + - const: synaptics,r63455 + + reset-gpios: + maxItems: 2 + description: 2 reset pins for 2 physical panels + + left-pos-supply: + description: Positive 5.7V supply for left panel + + right-pos-supply: + description: Positive 5.7V supply for right panel + + left-neg-supply: + description: Negative 5.7V supply for left panel + + right-neg-supply: + description: Negative 5.7V supply for right panel + + left-backlight-supply: + description: Backlight 21V supply for left panel + + right-backlight-supply: + description: Backlight 21V supply for right panel + + vdda-supply: + description: core 1.8V supply for panels + + ports: $ref: /schemas/graph.yaml#/properties/ports + +required: + - compatible + - reset-gpios + - left-pos-supply + - left-neg-supply + - right-pos-supply + - right-neg-supply + - left-backlight-supply + - right-backlight-supply + - vdda-supply + +additionalProperties: false + +examples: + - | + #include + + &mdss_dsi0 { + vdda-supply =3D <&vreg_l3i_1p2>; + status =3D "okay"; + + qcom,dual-dsi-mode; + qcom,master-dsi; + + panel: panel@0 { + compatible =3D "sharp,ls026b3sa06", "synaptics,r63455"; + reg =3D <0>; + + reset-gpios =3D <&pm8550_gpios 3 GPIO_ACTIVE_HIGH>, + <&pm8550_gpios 11 GPIO_ACTIVE_HIGH>; + + left-pos-supply =3D <&vpos_left>; + left-neg-supply =3D <&vneg_left>; + right-pos-supply =3D <&vpos_right>; + right-neg-supply =3D <&vneg_right>; + left-backlight-supply =3D <&backlight_left>; + right-backlight-supply =3D <&backlight_right>; + + vdda-supply =3D <&vreg_l12b_1p8>; + + ports { + #address-cells =3D <1>; + #size-cells =3D <0>; + port@0 { + reg =3D <0>; + panel0_in: endpoint { + remote-endpoint =3D <&mdss_dsi0_out>; + }; + }; + + port@1 { + reg =3D <1>; + panel1_in: endpoint { + remote-endpoint =3D <&mdss_dsi1_out>; + }; + }; + }; + }; + + &mdss_dsi0_out { + remote-endpoint =3D <&panel0_in>; + data-lanes =3D <0 1 2>; + }; + + &mdss_dsi1_out { + remote-endpoint =3D <&panel1_in>; + data-lanes =3D <0 1 2>; + }; +... --=20 2.43.0 From nobody Sun May 24 20:37:41 2026 Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DAA2127AC31 for ; Thu, 21 May 2026 14:47:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374863; cv=none; b=RS2nvLsQBUTZp0/I0VLUgSlEs58fQDXr6nQ1IzXzNklCCGdjaUz5eMCyzpStSItpZ0D8tfoQULJBZB2goYTjwo1wgFEpO/6whw4otT+bVAUqIMnuaXlY04G1tmSNxX3UoSAtBMwfuDa4W8eo1rw0ZT/dW88FdoZbxQupBGtw9GU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779374863; c=relaxed/simple; bh=bLOSNqbzfuOgrd1FnCtq0Eh2B0RG45bLlGBeWk9o/9o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=h2vPW88Yw9yiNmt7EAT0In6V+lotFKvNxe1k9dngj2GL8qIgBIhrG/Vf5kJcsBj1h8Xtd4y/f5ijQpfT/QQrS4AOrocEBbH9M9DHUkrizD8wpprH3uvC0MnRJ+N7qAv+grv02xGr0HXgM8/Kr9rZN8IcSCo32sKhwktkaHbvUeI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=K6HsLMaF; arc=none smtp.client-ip=209.85.216.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="K6HsLMaF" Received: by mail-pj1-f41.google.com with SMTP id 98e67ed59e1d1-369576666d5so2903930a91.0 for ; Thu, 21 May 2026 07:47:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1779374861; x=1779979661; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=EYjNxNVO+/q5b5BSMglVEnw6f3LJbKc4jq3m67yWYB0=; b=K6HsLMaFNea2gaC4/qy4Di+dZChs2jA/1+XYim9vWRbaf+XW+MlDNSfWwCZOwmR5Yh KxKVBzP6qOcb/7GmERSrnP/fkWmT2IAzD55XUHajpK51W7gsJCWHj4zMRRYWEDDBKkQT /0mvXdzlWDpS+yOe1qpMCkz0YLP/fKYeHIZKjlJK5fDitjpJNAPjLD9I34WF5T/fPPQg NH5xU7xUadf+ziyoACno0KcbXGI3YDP4Vfm7iaZ4+L9K3F8hK3xT6HiexMzMMvMGI1n1 NlSVZhNgRP2X+JVXJQo56aJNt25lFRMuRPfRb6TKqDxSiEJJtryV6aeUSIGNHDgNKB92 /ylQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779374861; x=1779979661; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=EYjNxNVO+/q5b5BSMglVEnw6f3LJbKc4jq3m67yWYB0=; b=cEhPdsRMHXKxU208sFoLDbZ4b3ZeqWvcYlQxPt9LuTJK/n+9YT/mkSSDfV9V1pgFU6 oQfQw18MvPyushEqqtBORmaaffkhP7M7fTl+LFVLNEudcYaqbrwWauJS3CbGm4OZdnOR p1nxMipFTlKeF9cCz6mmwPK5zi+6HQmHMlGhgjM+JxKFy8lJBd3EuwyTfGRqTsUXRpu8 63/FsjbdL8iWdmFKIlzuAtjHJmKZ+IfIkLbDu/nhKufMKXJCZ7j+PO5iA7sbuK5VpCBO a7dPxfMQzi2Gn+kVZq5WYU5Ml3kuJ6KiSLtEC7Y+bCTbZMmn+FvMPPVWdEFUhLOVk9g/ 4kbQ== X-Forwarded-Encrypted: i=1; AFNElJ9YcPwM3ASwfoVYIOLN2cYSOPUmNzTsKWj7W/OhYXgo88zrS0NipApkHfydWdW6enLDDIkDpKJZxjphz6s=@vger.kernel.org X-Gm-Message-State: AOJu0YzMcXhRjwOTv+duUu2YeGVzUBVOB/3ieE132Kh76IK19zGEc/kC /elG80xs+EyKgqbstDbh4CYq3pwH6FemdIWxTTKIvc8Xb/qsPJd00idjE/h6ytxjfXY= X-Gm-Gg: Acq92OHtgp3GM6LKzN1bwifK7ioa1Xkvbl1ibGCKmAu3ZAO9j/voR/G5QO16FugU+52 hyhtN7dhicM5GwyAXt4UgmWczoX/yQvsRuLG3dwMWX7X+uODjww3+h6Ql9Oxsy8TEm8Zapwoj5s ouSrjMTliPMwIiQmBNvX67jN0CD4xU883Vlzl77VvooWUSxVSyd1y3r007jf2tA+0QmIpVyo+Dh 6ML9QDOUuh2lzf6487mNOh68f9z6qDEJSyIChW+wnMPJTOWnFWdy1sCpRB+BjfS5bnLtXltUuks FMTjSbckqOuFlERcoY2DByTlwvDC4powrTtgRid8GiEPQYe76oPujGhUIV9gnRkViMfEyHqOXj3 24VAzUzbWvVA3arvZ+VWorELXsqnikaTLCtZhVZwveCksUSoyxH2DUQ38rAjOx1JuX47bjg== X-Received: by 2002:a17:90b:514b:b0:367:b819:2214 with SMTP id 98e67ed59e1d1-36a4561b382mr3274090a91.13.1779374860838; Thu, 21 May 2026 07:47:40 -0700 (PDT) Received: from [127.0.1.1] ([2a11:3:200::109e]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-36a5bff3ef3sm476527a91.4.2026.05.21.07.47.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2026 07:47:40 -0700 (PDT) From: Jun Nie Date: Thu, 21 May 2026 22:46:07 +0800 Subject: [PATCH v4 5/5] drm/panel: Add driver for Synaptics R63455 DSI panel Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260521-sm8650-7-1-bonded-dsi-v4-5-a4dd5e0850f1@linaro.org> References: <20260521-sm8650-7-1-bonded-dsi-v4-0-a4dd5e0850f1@linaro.org> In-Reply-To: <20260521-sm8650-7-1-bonded-dsi-v4-0-a4dd5e0850f1@linaro.org> To: Rob Clark , Dmitry Baryshkov , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Neil Armstrong , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Jun Nie X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1779374785; l=22158; i=jun.nie@linaro.org; s=20240403; h=from:subject:message-id; bh=bLOSNqbzfuOgrd1FnCtq0Eh2B0RG45bLlGBeWk9o/9o=; b=BfZ7+vfzhsxFeBxLMYY87l7rtZtTFofeRwDyOdlorQQy+WNEPyUGHrMaxlLpuERd0Qpu6Z8uX 9YIGuOaCyCLBdszIfRSsO+6m8JDkeYPRx4qSi7QkREpOqRu79jwi0dm X-Developer-Key: i=jun.nie@linaro.org; a=ed25519; pk=MNiBt/faLPvo+iJoP1hodyY2x6ozVXL8QMptmsKg3cc= Add support for the DSI panels used in the virtual reality device. The device features two physical panels, each providing a MIPI DSI interface and a built-in LED backlight and expose a single logical panel to the DRM framework. Signed-off-by: Jun Nie --- drivers/gpu/drm/panel/Kconfig | 9 + drivers/gpu/drm/panel/Makefile | 1 + drivers/gpu/drm/panel/panel-synaptics-r63455.c | 631 +++++++++++++++++++++= ++++ 3 files changed, 641 insertions(+) diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig index 7c2d9feb4064e..1ef3f51ec6593 100644 --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig @@ -1227,6 +1227,15 @@ config DRM_PANEL_SYNAPTICS_TDDI namesake, with varying resolutions and data lanes. They also have a built-in LED backlight and a touch controller. =20 +config DRM_PANEL_SYNAPTICS_R63455 + tristate "Synaptics R63455-based panels" + depends on OF + depends on DRM_MIPI_DSI + depends on BACKLIGHT_CLASS_DEVICE + help + Say Y if you want to enable support for panels based on the + Synaptics R63455 controller. + config DRM_PANEL_TDO_TL070WSH30 tristate "TDO TL070WSH30 DSI panel" depends on OF diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile index dc8a05f2c34d9..ee6b41151804c 100644 --- a/drivers/gpu/drm/panel/Makefile +++ b/drivers/gpu/drm/panel/Makefile @@ -115,6 +115,7 @@ obj-$(CONFIG_DRM_PANEL_SITRONIX_ST7789V) +=3D panel-sit= ronix-st7789v.o obj-$(CONFIG_DRM_PANEL_SUMMIT) +=3D panel-summit.o obj-$(CONFIG_DRM_PANEL_SYNAPTICS_R63353) +=3D panel-synaptics-r63353.o obj-$(CONFIG_DRM_PANEL_SYNAPTICS_TDDI) +=3D panel-synaptics-tddi.o +obj-$(CONFIG_DRM_PANEL_SYNAPTICS_R63455) +=3D panel-synaptics-r63455.o obj-$(CONFIG_DRM_PANEL_SONY_ACX565AKM) +=3D panel-sony-acx565akm.o obj-$(CONFIG_DRM_PANEL_SONY_TD4353_JDI) +=3D panel-sony-td4353-jdi.o obj-$(CONFIG_DRM_PANEL_SONY_TULIP_TRULY_NT35521) +=3D panel-sony-tulip-tru= ly-nt35521.o diff --git a/drivers/gpu/drm/panel/panel-synaptics-r63455.c b/drivers/gpu/d= rm/panel/panel-synaptics-r63455.c new file mode 100644 index 0000000000000..e429c28c7efc9 --- /dev/null +++ b/drivers/gpu/drm/panel/panel-synaptics-r63455.c @@ -0,0 +1,631 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2026, Linaro Ltd. All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include