From nobody Thu Dec 18 13:42:31 2025 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) (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 E0D011EF0B4 for ; Thu, 20 Feb 2025 10:08:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740046099; cv=none; b=TM/x1+DfK6WahHprNtXEsAWywk1nevWQaZ2q0T9y7lnG0c0txDh25teMLWkCvr/y6dre0Ifz9xsKRDmTliilDLHJ1Dyek8ErtTgSJ8xBSYOzEs2CKmfkN+HqPG+1t7Ocv5n5+puvy547Q5GtS//Pd5O7a6LlbgqIdaTYrgwmK2g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740046099; c=relaxed/simple; bh=lyKLAJr554JAOHjjCnxBQz5CBxEAxvVfUFObcdY1ag4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tD295zg02JFDddkDaMeH6/hUc2itcpTHflGZEcxbImnLPO2vac72FIqp+tAwWnHAsjSoq8g4IGkxJglTcy9GRwUtgYLOoI5qHzsX0jCqc1gTDByKlGK3QSLHOIRUntHtOP/6uTi7SIztT+4X9E3+xMKM15nm6b4nnK++wPVegDM= 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=pMN66nek; arc=none smtp.client-ip=209.85.216.46 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="pMN66nek" Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-2fc1f410186so3192473a91.0 for ; Thu, 20 Feb 2025 02:08:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1740046097; x=1740650897; 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=K2bbvpaMxnQ9ItTta/5Hoc0GpndlEEH7ZCqt3McNEd4=; b=pMN66nekuLFBz4im6BfMjGPPlebDjrLzCFvhrRIRXrD6ZtDYlwp+qUbwiwX5Jc2Qv5 bje0EmL34ZoRpJPgi+CrlWQ95kyPPX1WxJAhecZTWP2hV349c0cD+RdUU18rK1A4kFI8 o2CcveKuw6Fdste+s/0v6EyXlr1rmXOWMUJDQ28N5tVzXT0VX0WU+Tg3BXoXlNOQV3Fu iVy3VEelOhkcOD+tpxc1afrdyS0UkpDKMDFr192a/1WtLuCIx1sSvv9etKQmNafk/E/A uyBc9cyMJoIXqKUghPbWxBoPiBWhZ2uc9vQVnH0dV/HyttFTu1fnrGB8OR+4J6o5SVGE OsBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740046097; x=1740650897; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=K2bbvpaMxnQ9ItTta/5Hoc0GpndlEEH7ZCqt3McNEd4=; b=oT9fpQWqrhKMwlw75geZfE2gguglqvyAeSfo9dOVzosC1LSxeot2vPSgo7hSXIq7g2 C8REIBF6MSgmEzCZRKU1dTIP/BoNXjo7yz3Ts9OqFav6B7SgYCVQU5MUqNgGvij0XErh d7OCBT2gbRDnIFDP4FkagQ1XtHMdzpJqjUQWU2QHo+sQ9WfwdkX7K9ClsF2jJHV/R1OL +MtG8wvMq9qQzQ2lBSEKhoAtfr7BybJteoCqd4sWpyyGe3KklC++tk0PlpUTL2NTG5SL VMV1DiHx4mGtvxvcrNn1tDZQ/TVBbc4JcoSFIpFUf2SlzUGtO01qR/FNQcTL0XrvCLsG /T/A== X-Forwarded-Encrypted: i=1; AJvYcCXf7o9GKM3lUG0h2jL8Tqtg9t7e+7UNp9wuswPr5BYU4ZV2lWXKvfmqUo+RH1rrYaecVVVRSUg4ixaX/aM=@vger.kernel.org X-Gm-Message-State: AOJu0YxD4y8LSi4pCjUOB7aXAkFCmA+CuKty0QeHoYvzwB7jn3SiKuvy O+IMAtBFByYb1Z+mVp9rWRayWXF6bpP7PoqnB35Zqb+Yjdd8k5E0akxWQFdCWu4= X-Gm-Gg: ASbGncvPI66bggvrE+Db9Yyqn1kGfCwfqMRFlCyoAnvbGstHOHc8q0mK9HyOhyKHHhP OcIdYnSWrtFxAq70ztY1DZhz78Ww55rdR6+vgEEyBwDP5S24tLmIim7ULU+/lGQDAm11PFpLu9/ L5miYO+UPJ0EF6Uz/WIBFIWO6dPKYt9FnB0LHh2yhjx/Hgz4lKXSPgy/kG00XQHgsAEOUU+pBwp 7FJ15f1gfI4iKnmhbPYFjbz+X36T2K5gNm6+MfdtXlbi06obUZrkNKMe3+CEI3zbofElLzHZhpq OnN40XGg7y/g X-Google-Smtp-Source: AGHT+IHCE4RtRNEXKZoOaSDN6mdrpoY8L7CkHQP/kzENk3sqFeSHV34QzJKi6JsrMhW9w9ua07iDCQ== X-Received: by 2002:a17:90a:d445:b0:2fa:21d3:4332 with SMTP id 98e67ed59e1d1-2fccc97dfe7mr4597618a91.12.1740046097223; Thu, 20 Feb 2025 02:08:17 -0800 (PST) Received: from [127.0.1.1] ([112.65.12.217]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fbf98b3305sm15304645a91.6.2025.02.20.02.08.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Feb 2025 02:08:16 -0800 (PST) From: Jun Nie Date: Thu, 20 Feb 2025 18:07:52 +0800 Subject: [PATCH v2 1/5] drm/msm/dsi: add support VBIF_CTRL_PRIORITY to v2.8.0 controller 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: <20250220-dual-dsi-v2-1-6c0038d5a2ef@linaro.org> References: <20250220-dual-dsi-v2-0-6c0038d5a2ef@linaro.org> In-Reply-To: <20250220-dual-dsi-v2-0-6c0038d5a2ef@linaro.org> To: Rob Clark , Abhinav Kumar , Jessica Zhang , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Krishna Manikandan 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.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1740046076; l=1578; i=jun.nie@linaro.org; s=20240403; h=from:subject:message-id; bh=lyKLAJr554JAOHjjCnxBQz5CBxEAxvVfUFObcdY1ag4=; b=m9wZrPVBSR+QFJ2DUz/SNoHz3xMrc85nVdPM1VuwlkkM2KmcuqsZt4IzPpcd3vqZEPukV8UFz Q1wZLZvkNnCDMVDPFv4QVErnUTSQ+9VvDwTKh1lvQQdWOSoY1Qs3jj7 X-Developer-Key: i=jun.nie@linaro.org; a=ed25519; pk=MNiBt/faLPvo+iJoP1hodyY2x6ozVXL8QMptmsKg3cc= This change originates from the Qualcomm Android Linux driver. It is essential to support a dual-DSI configuration with two panels in some circumstances per testing. As the name suggests, this modification may enhance the bandwidth robustness of a bus. Co-developed-by: Jonathan Marek Signed-off-by: Jonathan Marek Signed-off-by: Jun Nie --- drivers/gpu/drm/msm/dsi/dsi_host.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/d= si_host.c index 42e100a8adca09d7b55afce0e2553e76d898744f..f59c4cd6bc8cdb31c1302f8e3ff= 395486c0b4898 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_host.c +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c @@ -2238,13 +2238,23 @@ int msm_dsi_host_cmd_rx(struct mipi_dsi_host *host, return ret; } =20 +#define DSI_VBIF_CTRL (0x01CC - 4) +#define DSI_VBIF_CTRL_PRIORITY 0x07 + void msm_dsi_host_cmd_xfer_commit(struct mipi_dsi_host *host, u32 dma_base, u32 len) { struct msm_dsi_host *msm_host =3D to_msm_dsi_host(host); + const struct msm_dsi_cfg_handler *cfg_hnd =3D msm_host->cfg_hnd; + u32 reg; =20 dsi_write(msm_host, REG_DSI_DMA_BASE, dma_base); dsi_write(msm_host, REG_DSI_DMA_LEN, len); + if (cfg_hnd->minor >=3D MSM_DSI_6G_VER_MINOR_V2_8_0) { + reg =3D dsi_read(msm_host, DSI_VBIF_CTRL); + reg |=3D (DSI_VBIF_CTRL_PRIORITY & 0x7); + dsi_write(msm_host, DSI_VBIF_CTRL, reg); + } dsi_write(msm_host, REG_DSI_TRIG_DMA, 1); =20 /* Make sure trigger happens */ --=20 2.34.1 From nobody Thu Dec 18 13:42:31 2025 Received: from mail-pj1-f52.google.com (mail-pj1-f52.google.com [209.85.216.52]) (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 863151EF0B4 for ; Thu, 20 Feb 2025 10:08:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740046108; cv=none; b=kr88RMRLHF3mf9P1pMN825+T9ctL4bOgzYDOjT9Rv4KcX56QdUGC2PDI6Vd3/lPSYVIHQC3tMKCgb7sKpHjwYtpCCdzNPU87r2l9SvkZD9/F6qv36fYS/y74wDcs8uBK/bYyOVPPrfNupwCxeDEApiB8n9wcW9yXXK5cxKBeFsg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740046108; c=relaxed/simple; bh=hKjATXyKQvv1McdvtRyxOrJ1QBY9gQvAVDuJEgo+cmU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=p3a37kLubYPZnQ26+nhL6mbNPhPo4zHU1EDbotI0Lw3XvwYS/k+mADib76cXLGnfHWcO4EHoemryoYYKVMTqTTny4W5uzflD1y2Bus15U5CAKuYOfaF3sqE4pzL+mwrvbTlZD2ugguUMIxSwI66zB+Y3TYWTe5f73JmLPFKlcm0= 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=FwPxPics; arc=none smtp.client-ip=209.85.216.52 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="FwPxPics" Received: by mail-pj1-f52.google.com with SMTP id 98e67ed59e1d1-2f83a8afcbbso1271779a91.1 for ; Thu, 20 Feb 2025 02:08:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1740046106; x=1740650906; 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=/VlfjNAVucjRp1bpDBN6LbVxMwNg8iNsPGxdLh6LJhU=; b=FwPxPicsK0e5wdFXt7Gc2eOR5j/mkhJdJFNPBEC3Vl/MnoWBZTytHVif3R0oEw/asu JsNT6SX1rtVAv9FYuXLcOCzJMX3Fl/YBtaYomJww9N4F4jlHEst2lrk3nDPJIv1IxU8f ES3DUU4P1YgxBwJLAhi5bdl4uYw8nkJhDMM6rsm1a+HAiDI7x0d9qBSzlmiVX0gvSe4f 4a6/cHW5sic8hIeDjgYIDwVKXtQPISioagxzG6ZvhASjpAIklIK57DZNveW0RqKN0IO9 EB71ES48k/DYKz0P/nnMdJfjN2UoZv35OIojT/+qb0Z9Y6hNTg7bA+xRm/3JxrLcIkOp RH3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740046106; x=1740650906; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/VlfjNAVucjRp1bpDBN6LbVxMwNg8iNsPGxdLh6LJhU=; b=OvDHu2Dwg3d+QImhz5eJta9G1riVbeC7m86zJg8Nv7ZCXvVNWS2aML8YyhnrFteaHS CeBcWoSo/7VGGnYZfuzPNnZSR3i4EukeNLBJQjonzBCRoo+UEkwxGkwhJIpvENBpfN+T XEYNEJBnFM7Ufg3uQ/AbfcD66CAUlmpxGvImr51aAhmiojw0+zC/D8CsMBErRXdHclPU /gExUP07jxhlNbr+4nhistJBxpN/e2vuCeTIt38ELE0slAVG0lkdLs3MiopisUyVDCb9 EuZPKqvtZVSOIRiyvCkayQeRUl6+yIfxFbInFKvL+R9Zrap+LYdcyB/+7TPtaDSneHya zzIA== X-Forwarded-Encrypted: i=1; AJvYcCUuoiGU5ZDSjz450Torj5Atgn8L22SeJjFW8sfJYe5by2T8pVWwaz/aKNYORl9G5jQO54CBjeGvY6lCcFs=@vger.kernel.org X-Gm-Message-State: AOJu0YwReCMyaTxK88js+477bwlqFamkN8UKmXwZ1BSYdm6/I/7Kvq4F DIf9PHXuv+zUe8ZQZQBtupH3xGbmYNY/DVV75jFCMJER9r4gkxMxIMYsGTeEOYY= X-Gm-Gg: ASbGncsD3QhE1G/f1VJ6ZduTMcIbjL2KQ/mahnHh7OmWa4YgCJe7SfeYqHET38aAxOK TBQIS0OnrxEzStXvlU11pIrMyT+4WFtBHm8UfE7tPVkZp/Z1SWE9HFALOh8KeALMzBqWYWD4I+N 49rpSzeBLucvQDrERVwbTB2FlaS1NQmSFdmgSx7xwAmlcDELEojyTBK8U8KakGPQ8spMSbg9cVQ 21iL6Xj9eFyzhHX9fKmSMYH8QvirCgsuJvEtc1nXaoauvdriUX3Bn3tTQPEA1a35KVyjVy6Kobd JJrAFCW+0i4S X-Google-Smtp-Source: AGHT+IFLxCMRudIcVvWorr4RKj/8cYBxLwu8tZJdzz6fVcUHM0ZcwncySmXk/oO/UFw1vBTAIhvBXQ== X-Received: by 2002:a17:90b:3dc3:b0:2fa:1d9f:c80 with SMTP id 98e67ed59e1d1-2fcccc92715mr4602368a91.17.1740046106054; Thu, 20 Feb 2025 02:08:26 -0800 (PST) Received: from [127.0.1.1] ([112.65.12.217]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fbf98b3305sm15304645a91.6.2025.02.20.02.08.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Feb 2025 02:08:25 -0800 (PST) From: Jun Nie Date: Thu, 20 Feb 2025 18:07:53 +0800 Subject: [PATCH v2 2/5] drm/msm/dsi: check DSC width for the bonded DSI case 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: <20250220-dual-dsi-v2-2-6c0038d5a2ef@linaro.org> References: <20250220-dual-dsi-v2-0-6c0038d5a2ef@linaro.org> In-Reply-To: <20250220-dual-dsi-v2-0-6c0038d5a2ef@linaro.org> To: Rob Clark , Abhinav Kumar , Jessica Zhang , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Krishna Manikandan 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.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1740046076; l=3234; i=jun.nie@linaro.org; s=20240403; h=from:subject:message-id; bh=hKjATXyKQvv1McdvtRyxOrJ1QBY9gQvAVDuJEgo+cmU=; b=17pUwBv+mzfkMK56B94QuKGJ5abm9UfGVZw6OxOxzVqtsJOc1Qzti6XjMCs6YMZ6yjKN42pT3 fcq4CIFTnJvCLNjFsk1NSHXjb+L9HGGWs7B7Fnq3c6PVYwCgXOTrJQV X-Developer-Key: i=jun.nie@linaro.org; a=ed25519; pk=MNiBt/faLPvo+iJoP1hodyY2x6ozVXL8QMptmsKg3cc= The frame width is validated to ensure it is a multiple of the DSC slice. In the case of bonded DSI, the frame is divided horizontally in half for compression and is delivered through two DSI interfaces. Therefore, the width for each DSI interface should also be a multiple of the slice. Currently, the implementation only validates this requirement against the entire frame width. Use half of the frame width for validation. Co-developed-by: Jonathan Marek Signed-off-by: Jonathan Marek Signed-off-by: Jun Nie --- drivers/gpu/drm/msm/dsi/dsi.h | 3 ++- drivers/gpu/drm/msm/dsi/dsi_host.c | 6 +++++- drivers/gpu/drm/msm/dsi/dsi_manager.c | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/dsi.h b/drivers/gpu/drm/msm/dsi/dsi.h index 87496db203d6c7582eadcb74e94eb56a219df292..35b90c462f637111159b204269c= e908614a21586 100644 --- a/drivers/gpu/drm/msm/dsi/dsi.h +++ b/drivers/gpu/drm/msm/dsi/dsi.h @@ -79,7 +79,8 @@ int msm_dsi_host_power_off(struct mipi_dsi_host *host); int msm_dsi_host_set_display_mode(struct mipi_dsi_host *host, const struct drm_display_mode *mode); enum drm_mode_status msm_dsi_host_check_dsc(struct mipi_dsi_host *host, - const struct drm_display_mode *mode); + const struct drm_display_mode *mode, + bool is_bonded_dsi); unsigned long msm_dsi_host_get_mode_flags(struct mipi_dsi_host *host); int msm_dsi_host_register(struct mipi_dsi_host *host); void msm_dsi_host_unregister(struct mipi_dsi_host *host); diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/d= si_host.c index f59c4cd6bc8cdb31c1302f8e3ff395486c0b4898..908f5f1649d650f1cf152fc0b26= 3541dc566ac68 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_host.c +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c @@ -2489,7 +2489,8 @@ int msm_dsi_host_set_display_mode(struct mipi_dsi_hos= t *host, } =20 enum drm_mode_status msm_dsi_host_check_dsc(struct mipi_dsi_host *host, - const struct drm_display_mode *mode) + const struct drm_display_mode *mode, + bool is_bonded_dsi) { struct msm_dsi_host *msm_host =3D to_msm_dsi_host(host); struct drm_dsc_config *dsc =3D msm_host->dsc; @@ -2499,6 +2500,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 (is_bonded_dsi) + 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); diff --git a/drivers/gpu/drm/msm/dsi/dsi_manager.c b/drivers/gpu/drm/msm/ds= i/dsi_manager.c index b93205c034e4acc73d536deeddce6ebd694b4a80..be13bf682a9601484c9c14e8419= 563f37c2281ee 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_manager.c +++ b/drivers/gpu/drm/msm/dsi/dsi_manager.c @@ -428,7 +428,7 @@ static enum drm_mode_status dsi_mgr_bridge_mode_valid(s= truct drm_bridge *bridge, return MODE_ERROR; } =20 - return msm_dsi_host_check_dsc(host, mode); + return msm_dsi_host_check_dsc(host, mode, IS_BONDED_DSI()); } =20 static int dsi_mgr_bridge_attach(struct drm_bridge *bridge, --=20 2.34.1 From nobody Thu Dec 18 13:42:31 2025 Received: from mail-pj1-f52.google.com (mail-pj1-f52.google.com [209.85.216.52]) (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 401051EE007 for ; Thu, 20 Feb 2025 10:08:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740046118; cv=none; b=PtcHCZEuZUpb+aP8NsTn2NMT/AepUMehoOhaq4rIFKpnx8Rl7S+hEEjhcQDuMQLabGcaCA+bO4f0BbTfIQi5UATU3UfUu+R4gHk5mXcMSoJGsIkwVACKOsbz2oOSreIv+I1TFTX9puzUbaoXtRpmOr8KFULiHPbSixbBEz9xGBo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740046118; c=relaxed/simple; bh=y1LcRbi9IxHrfqru+iB9M02tuGxZS/RP9o/BqRSO94c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hmnAQMj2expncJ35MxDDXO4qI2kYmSCF+F7LpVW9yJ92Ma9Z6NnSALtXhz2Tav/5hbE9+sXCfbm4aAJoiyLSeDuSzbkjfcUsjBzetlUK/NkmQGJzmb6yHZB68l3dlEccd7PqOUzqyD6eGLY0jUJeOYOEzh1j1ZsjwWnojVNouyc= 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=k045eu8B; arc=none smtp.client-ip=209.85.216.52 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="k045eu8B" Received: by mail-pj1-f52.google.com with SMTP id 98e67ed59e1d1-2f9b9c0088fso1306135a91.0 for ; Thu, 20 Feb 2025 02:08:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1740046116; x=1740650916; 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=kSkCVd5LUxAUyX9NrstLbvjZXotPNfmdtqi1iMTXbDI=; b=k045eu8B0TaKk9Yfs7uGbKxMCmY9cuxYL1T9ivJ8lpTJLtRbqXM4rB3g1034hljOA2 7bISprDyeCz7EyR3sp0nGHdXMpj9yr/8mWG+NaB64U9HQUfOe6vmb+o/LP4XK7G0xesX yTMgtULpQmo2d5tuw+W/eyHUyMvUZFdIeuxlPw2GGmPzBuNzFpsXItTq1RR50Ne3SyjR 80yskdW6rGxU8KsfsOVPm7c7jqvnMtkzl9o+g7Not5pb0/GXbHC3Efkcdh2URHW5iXQ+ B+dwlwZVPQE/rG5ZL5fa8O7eOW1w7dhSt0UK1H5+emk5TDPEJDcTYDoQRCSLlKDlFtfj 2y4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740046116; x=1740650916; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kSkCVd5LUxAUyX9NrstLbvjZXotPNfmdtqi1iMTXbDI=; b=DM0dRJjN5x7umLDLxP19AXYskMpCWk5BTWo05X/AAkLppYCzXvGwhCk5q9CCzS3kkm IvUoTNDDZOVO+tHNLrsp/tqFL5TA1UYXCZXnZQT0sGfcP9r63vdyI2NpkXUqas847J4K Bb6N/ZpUheYykMM2pJ68D960S9yPjz/HXOR3c4Cexphsbv2d7J/JBsjnCgk0vy73QZdV nutG6xLcEPQFoSwf0OIBgZcKV18M0XEiYi17UgK5VqFeezAutWmswq1v8lFgzQb9AhX2 CpfmPDmdeLzXPSiirB6DgcC7KByadMKsmy5QMy5kSxlPeCoarqX9errZTysT6LRDX64j WKiQ== X-Forwarded-Encrypted: i=1; AJvYcCUWRsjgBdsRyqJZ/HCewWaF4nux7FrEa+5FMs9uoMw9jSdy6L129HYFk0COXMVGMaCmduA+4672nqLcKqk=@vger.kernel.org X-Gm-Message-State: AOJu0YxHkp0y62AxovaymE5OsDWUVfN3DdUIjB6B9JQJMPYl134nprG/ vomjcKDFh5Qy51q3V6/prQZqzGWWiI9afyarWPYXGVZI952vq/ImB1v6i09X1z0= X-Gm-Gg: ASbGncsfOowNH1xgWtv2C3V0PaOLn2/OHWAuK9z+FJKzbRqy82viWvprj1CpjmxCMug 6vz1nYeS1Tp6nKwGq9mOFFEWGgOHwJKbysS6l1ORc1sVyOv/13Mv1ckxNSSnUdAawYCeUQSPdLN zbfm8+6jZJL7mqDuW6xHivfrd55DbchYG+egMJ9vg+asUdd8gFposqfE2vxhjv7DD6Bstqk3viO IOxaJUnOm7SihBMptTpi/B75zScVrPTVHv9FXkPhDbU3/BpLsXkfI8kgORTj/9PUuJNcR6CMxee QYPGR8rmKJIJ X-Google-Smtp-Source: AGHT+IFzj/xwznLXRFqC+C83ybLhwwV/mxtSKzwSxHqW0v9brMeQgIoHXZpn1wk268OK+8d2OehMSQ== X-Received: by 2002:a17:90b:53c3:b0:2fa:176e:9705 with SMTP id 98e67ed59e1d1-2fccc15a991mr4563107a91.10.1740046116545; Thu, 20 Feb 2025 02:08:36 -0800 (PST) Received: from [127.0.1.1] ([112.65.12.217]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fbf98b3305sm15304645a91.6.2025.02.20.02.08.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Feb 2025 02:08:36 -0800 (PST) From: Jun Nie Date: Thu, 20 Feb 2025 18:07:54 +0800 Subject: [PATCH v2 3/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: <20250220-dual-dsi-v2-3-6c0038d5a2ef@linaro.org> References: <20250220-dual-dsi-v2-0-6c0038d5a2ef@linaro.org> In-Reply-To: <20250220-dual-dsi-v2-0-6c0038d5a2ef@linaro.org> To: Rob Clark , Abhinav Kumar , Jessica Zhang , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Krishna Manikandan 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.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1740046076; l=3811; i=jun.nie@linaro.org; s=20240403; h=from:subject:message-id; bh=y1LcRbi9IxHrfqru+iB9M02tuGxZS/RP9o/BqRSO94c=; b=TVJ9dgwDkjUei05ilR8Ttmo9k48qbl/iKLv9heTWcvdJszQRCDBhXNhMOY0Rso7yLwJ9duJDH 6SBsBVj86DqBMWnnRbNoG0v/GSpzE6JXH7I+dJT2rlUh04eyxEXvZxK X-Developer-Key: i=jun.nie@linaro.org; a=ed25519; pk=MNiBt/faLPvo+iJoP1hodyY2x6ozVXL8QMptmsKg3cc= Some panels support multiple slice to be sent in a single DSC packet. And this feature is a must for specific panels, such as JDI LPM026M648C. Add a dsc_slice_per_pkt member into struct mipi_dsi_device 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 | 25 ++++++++++--------------- include/drm/drm_mipi_dsi.h | 2 ++ 2 files changed, 12 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 908f5f1649d650f1cf152fc0b263541dc566ac68..976c5d82a2efa0fc51657b85346= 75890be7c33a6 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_host.c +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c @@ -157,6 +157,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; @@ -861,17 +862,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); @@ -1020,12 +1014,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) | @@ -1630,8 +1620,13 @@ 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; + msm_host->dsc_slice_per_pkt =3D dsi->dsc_slice_per_pkt; + /* for backwards compatibility, assume 1 if not set */ + if (!msm_host->dsc_slice_per_pkt) + msm_host->dsc_slice_per_pkt =3D 1; + } =20 ret =3D dsi_dev_attach(msm_host->pdev); if (ret) diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h index 94400a78031f1b5f515c4a1519f604c0df7f3e0c..f13ed73b54b0af6d93456f4b8c8= 257c4f8419023 100644 --- a/include/drm/drm_mipi_dsi.h +++ b/include/drm/drm_mipi_dsi.h @@ -182,6 +182,7 @@ struct mipi_dsi_device_info { * be set to the real limits of the hardware, zero is only accepted for * legacy drivers * @dsc: panel/bridge DSC pps payload to be sent + * @dsc_slice_per_pkt: number of DSC slices to be sent as in a single pack= et */ struct mipi_dsi_device { struct mipi_dsi_host *host; @@ -196,6 +197,7 @@ struct mipi_dsi_device { unsigned long hs_rate; unsigned long lp_rate; struct drm_dsc_config *dsc; + unsigned int dsc_slice_per_pkt; }; =20 /** --=20 2.34.1 From nobody Thu Dec 18 13:42:31 2025 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) (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 EA6D51F1302 for ; Thu, 20 Feb 2025 10:08:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740046129; cv=none; b=jz5uP1oJlOENR0iijT35KNGk1gLYon/ZxXnXRkmW5VZFGG0UWzrLBspGRlbP+bKljhlNkpkiDgMsQtuj3Bzj7/5kEzhqR/4h/XzwsuFYM3f/O1IUkQwpcW4XCJctsqlzov6afdA/nasE9xAwpc6zXxgkVPSyD3sKJZjMRANO6GY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740046129; c=relaxed/simple; bh=FgJVBSjYusgZgNG2tQQqs/1on/o8VH1/MQqBVN+UdAQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KYxaItyjSIkY40hnOCzoxYqQWGh9+conVYboQfPlbGvZ8G30VX6AZsZLq63qMw9y4QximTOFOeuldUokfwKcvHSA9cq6Xx8dQHBN1RP1Mi/39Ul6uUOaaXecjacwCTk/lwJo2XnW0VpFDmBSNd4qX9Ioj2JHYwJvBU9FyKham+g= 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=XKIjMOwq; arc=none smtp.client-ip=209.85.214.182 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="XKIjMOwq" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-22104c4de96so10429355ad.3 for ; Thu, 20 Feb 2025 02:08:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1740046127; x=1740650927; 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=meTtqveZhiyJw9ezonjEpVoABcseZWYpFPvHUuAWv9M=; b=XKIjMOwqqPHLUlzVmfabnjG/y9G6wrDOnymNeaMNeNcCKdQ2HRLGVOV+RqSLJ1vupU Sr2DIg+L5yO7JvzqMB0oSdQbz50EEWqu7Y+VvAieeI7s5FDjWIuuSHphYzMgMRwTebbz PtArFsW7juJbbWExLE16zgXDy6WpkC3zsDiLwHuh25Dq5Sb1T9ACmabWaonZgWEh7myv 1xrEY/4KuqDSZtoHNn3WKatRev10B/PtbcjK8MfTNx79DQCrvqywFnx9rVi8xbEK6axS QN+E89VEEdguQ41LPXNHFrChGjiVtniHNJu9vSbn5K0CXHmQT1nBQJ4IIWr3xmf801s8 qw5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740046127; x=1740650927; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=meTtqveZhiyJw9ezonjEpVoABcseZWYpFPvHUuAWv9M=; b=ClQ6/snXTtPGHLAgRqO5XQNwEcIB23oCUpItj1TXWoANlszvF+gwSzJa+kMscTyGHj YNBetAZOnzqWRdJsR7kD/QPeNXxVpLVDayz1tqs0MeD0SA3JXSl+LAhiId6rfKDluCDq S46gFFr7ebjj8vgoh6Dn3aE6IQDUpVDAnH0RVbrUJhXAh7BdtPoLv1CM15qH1vGhZIFr Vne/+SHBaY8C+8lIKDtiGRCJPUyeXlmXZWWIp0mqq9NP65BjHsjub6c6sLx7MyksEk9v 8aPF59TRqNOuxNej05hRRSB5257cO7OfjQm/fNZK0afdjr28lNr0iUt32eCrdOoq8wyK Hx8A== X-Forwarded-Encrypted: i=1; AJvYcCXoX6GZWtHyllscBewbAHJgakqXNOeElh4GB93mcVudEYJ9FOlFEqiWrWgGSmznmSdpL1NGETkAvaGAclI=@vger.kernel.org X-Gm-Message-State: AOJu0YxFkF5NDVOnvVaGtdoSdYtUBAGPh+7vGGEUBdt97dJl7h0sBnkT vqh6fyh4f2Ppjo0Mk6l73Ip0IvmCItDbn5Yllb+H0J2PP0rjLihc+dVZtYGqtK8= X-Gm-Gg: ASbGncugV4KDdDFkZFRVFKDIKJ15/ApQoJo6XpvZTyVC1r6VtwT7pP6J6/fwtHtp+XN o7lFR2F+A3bIiQzEHBY3PGrEgCNpyx8EhwL5qioiI5FIS9cDdzjynk91au3rcfPdDlq5g7tK85/ VsV1qcDBmmVN/0fXosGHHFbJ8P++58Ks+4L8SbG8xca1V8xx3sZnVrjjM79iMYui5TVZ82+WAdp DRx7NfKhPEMcduNC5CGFgU+ImBXwaXhb9rxCv4V7KJJ3Cfk6skMPL9p9DDkC2tYPG1ISFTgzA7E fsduS4LyjDMD X-Google-Smtp-Source: AGHT+IGD8wqaCpXBwdzW85qDe+j1va1f9U+T7g4YEj1TqycqH9bnYqKAjfpfwmdIfdAez2gbLo1Zwg== X-Received: by 2002:a17:90b:3b83:b0:2f9:9ddd:689b with SMTP id 98e67ed59e1d1-2fc410493acmr28089738a91.22.1740046127187; Thu, 20 Feb 2025 02:08:47 -0800 (PST) Received: from [127.0.1.1] ([112.65.12.217]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fbf98b3305sm15304645a91.6.2025.02.20.02.08.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Feb 2025 02:08:46 -0800 (PST) From: Jun Nie Date: Thu, 20 Feb 2025 18:07:55 +0800 Subject: [PATCH v2 4/5] dt-bindings: display/msm: dsi-controller-main: Document dual panel property 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: <20250220-dual-dsi-v2-4-6c0038d5a2ef@linaro.org> References: <20250220-dual-dsi-v2-0-6c0038d5a2ef@linaro.org> In-Reply-To: <20250220-dual-dsi-v2-0-6c0038d5a2ef@linaro.org> To: Rob Clark , Abhinav Kumar , Jessica Zhang , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Krishna Manikandan 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.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1740046076; l=1495; i=jun.nie@linaro.org; s=20240403; h=from:subject:message-id; bh=FgJVBSjYusgZgNG2tQQqs/1on/o8VH1/MQqBVN+UdAQ=; b=oaEXnf20Cz3Ju+1zO2v+vtkcbrG+X7KDJR0PpZRcUkf0QC2Lo0cvU97aOJrdgq8tfBzlaNeD0 vvilHqVr9BpDIW2cesJxDngRIMCexsZ2QgBOnuum6tB6wsLrIJuhgMm X-Developer-Key: i=jun.nie@linaro.org; a=ed25519; pk=MNiBt/faLPvo+iJoP1hodyY2x6ozVXL8QMptmsKg3cc= The DSI interface can be connected to a panel that has a dual DSI channel, or to two separate panels, each equipped with a single DSI channel. To prevent the DSC configuration for the dual panel setup from disrupting the current configuration of a single panel with a dual DSI channel, add a dual panel property to support the use of two panels. Signed-off-by: Jun Nie --- .../devicetree/bindings/display/msm/dsi-controller-main.yaml | 8 ++++= +++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/display/msm/dsi-controller-m= ain.yaml b/Documentation/devicetree/bindings/display/msm/dsi-controller-mai= n.yaml index ffbd1dc9470e2091b477b0c88392d81802119f48..e3f2eabde27609a66d6d81fafcb= 14e1bc014613c 100644 --- a/Documentation/devicetree/bindings/display/msm/dsi-controller-main.yaml +++ b/Documentation/devicetree/bindings/display/msm/dsi-controller-main.yaml @@ -88,9 +88,15 @@ properties: qcom,dual-dsi-mode: type: boolean description: | - Indicates if the DSI controller is driving a panel which needs + Indicates if the DSI controller is driving display device which needs 2 DSI links. =20 + qcom,dual-panel: + type: boolean + description: | + Indicates if the DSI controller is driving display device that compo= sed + with 2 independent panels and needs 2 DSI links. + qcom,master-dsi: type: boolean description: | --=20 2.34.1 From nobody Thu Dec 18 13:42:31 2025 Received: from mail-pj1-f47.google.com (mail-pj1-f47.google.com [209.85.216.47]) (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 028D51E5B6F for ; Thu, 20 Feb 2025 10:08:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740046139; cv=none; b=qKPRHYnxUqKlQ6U9yrm4gwL41L39LtyIVJOpI4rOhoOjVw/vQFYAe4+bSX3bqZ4RZyPXSEOTl06WP13X7wQnXWXmrng0yOG6uMlPW7MmHlOKDp9HMU5arz58y2O7Icble8aqvyOWkrrojs/MxM7q/85+7dKxTpLntPTRizsdiHQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740046139; c=relaxed/simple; bh=UmAueoCoAiEP6+F0V8D3CfDL3EJR/catd+q6wTXt9m8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kzpCktV+0nCpD0yYeDWWwUN+vR0WLALKgUpSJJ//dn8QvZ4Psgo0G4Y9QXSNY/sBMx7Unos7qRGQtyyr13g3SIWQBLhkpaOSyBG6jQNhzSAgT6xXakrznGLciAL2zb5GkTuCg1eebdjeKpRSZwS+br3E+Dy8jmgi/phggoaQYY8= 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=lNFnMr0F; arc=none smtp.client-ip=209.85.216.47 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="lNFnMr0F" Received: by mail-pj1-f47.google.com with SMTP id 98e67ed59e1d1-2fa5af6d743so1142466a91.3 for ; Thu, 20 Feb 2025 02:08:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1740046137; x=1740650937; 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=8+OUzS6eo8FVNCvAvfNYtKkGJynjAEILZy6jM+oJy/s=; b=lNFnMr0F2M62GSC4XD45jQ9U2KuWZG2AxE4qhmN4/MNQxPK3Z1UC2wL0VlBx2rhrjU 05bJyf1B4ZBCKZQjQ9mUcBJ2yYgtXxc5CwaNMsxnqdq61g9egM7dlvd9QWT4qx3J+x5V qNPRedkuOqpBWDTQKh93nGaXhFWDGn4ovvuqO8HXX52OWcBiohBXRETnss+pTzgR5U0K qhwaIH/vZftioLt4vYDdEya/shOkVw20ufAN8UwB4+K2u2ehLT+HA6tm5khWrTVPKU85 CmsqIOeufGE8K+B/YikTzQeIRTdrcOZcyVcS3hjujmz4cHNrFwyOs5Im9RK1BWev4b2S QJ1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740046137; x=1740650937; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8+OUzS6eo8FVNCvAvfNYtKkGJynjAEILZy6jM+oJy/s=; b=gL49+JNpIIf/0Z5oAt18/xlWxKYT6kK3TpnU9O8c3d3WsismFTCoAC8aek14JUmUhY JJxyIBo0LUR8nMNDfVRuSbu+g4EBQlT5W0aiTBab7dKM5XtCzWZj5baHIRBoydqzyrXp podfZto1NDw0vuSnfsMKGiIk7D982ovq8uO9Ez6E6tl4X2AutvAtcmStVc3ZTbRZTMkC eFctcJV/budImX7mQi1ZUU0Pk1SWKTZkB7hkdyV128eoXVtJFT8inG9RYR6xZmuTNF/e K4C8ubIfO2c3hESmVD7Z7/ZkdW5shP21PdcFyb/KC8axTLgXeFd6m2Cu9jHF8W3EmBUr EE9Q== X-Forwarded-Encrypted: i=1; AJvYcCXERpNpMrINUYZEWPGQ1jeBaf3Ib6sfWQ76SfsWpUJCItg9HzQyVPpDwN4agxyXZB+q6cT4DJ8ohZbnNqY=@vger.kernel.org X-Gm-Message-State: AOJu0YzJb3HKE/2kUgO3f0t57bCvQD2gO+UKgxeeLFu+9aWMQ7ng7hKM X+bIGOAEZEMu10za0AYcNan65xouWZ0+63CNwijOA/LZWaguTMSnhfCi7+/woyE= X-Gm-Gg: ASbGncu6yJeI4jr2PV01cNWZUSW+X+VhiQeNJFekwUA5Y0PABJnV+kxZynLr7nXK2wd /ATEZxyFisVsmTIDQ1hbw9Ggi53hpK8HFtk9x425XLyjjA+fxgaJ0oV0xrZYhsjr/bt3WneECSQ rBmN/nj6ofXQO7JLAGz+1Qc8buhbJ2JZGQthtPBpY4hosBdGgOXuO0Xp0zccHKoPVGc8j1vEe3I DHOmWp/D4vina1TR3AJJxPTX6Guo37nqQFOCsEBTnxhcvQEYU7PVoZ4rJWdLogxGmSuc36Yq5VE QUjZqNaplAnB X-Google-Smtp-Source: AGHT+IHDtFghikb0IsdCfqFtYMffpKN5+PJogSYWwgbB8ovOAObhOmSVEFhYr1RpSHSfSypZl/GVTw== X-Received: by 2002:a17:90b:3d86:b0:2f4:4500:bb4d with SMTP id 98e67ed59e1d1-2fc40f233f9mr32996102a91.20.1740046137364; Thu, 20 Feb 2025 02:08:57 -0800 (PST) Received: from [127.0.1.1] ([112.65.12.217]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fbf98b3305sm15304645a91.6.2025.02.20.02.08.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Feb 2025 02:08:57 -0800 (PST) From: Jun Nie Date: Thu, 20 Feb 2025 18:07:56 +0800 Subject: [PATCH v2 5/5] drm/msm/dsi: Support DSC for dual panel case 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: <20250220-dual-dsi-v2-5-6c0038d5a2ef@linaro.org> References: <20250220-dual-dsi-v2-0-6c0038d5a2ef@linaro.org> In-Reply-To: <20250220-dual-dsi-v2-0-6c0038d5a2ef@linaro.org> To: Rob Clark , Abhinav Kumar , Jessica Zhang , Dmitry Baryshkov , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Krishna Manikandan 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.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1740046076; l=5455; i=jun.nie@linaro.org; s=20240403; h=from:subject:message-id; bh=UmAueoCoAiEP6+F0V8D3CfDL3EJR/catd+q6wTXt9m8=; b=6BwqEYg6DasxH9/TNbFINX8D5ATykKXwrq7MbDqfVfVuPFJ845uD3DPApUtH07rTfNUFTW/dz GczxnFvXZZ+AWEfDhMOKDN5XUwWsjxgrouT47tVNv40LQ4kUUbFO0uQ X-Developer-Key: i=jun.nie@linaro.org; a=ed25519; pk=MNiBt/faLPvo+iJoP1hodyY2x6ozVXL8QMptmsKg3cc= There is dual DSI case that every DSI link is connected to an independent panel. In this dual panel case, the frame width for DSC on each link should be halved to support the usage case. Signed-off-by: Jun Nie --- drivers/gpu/drm/msm/dsi/dsi.h | 3 ++- drivers/gpu/drm/msm/dsi/dsi_host.c | 13 +++++++++---- drivers/gpu/drm/msm/dsi/dsi_manager.c | 10 ++++++++-- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/dsi.h b/drivers/gpu/drm/msm/dsi/dsi.h index 35b90c462f637111159b204269ce908614a21586..5a8978bed9f4ca897b418ced601= 94042d9dd8d05 100644 --- a/drivers/gpu/drm/msm/dsi/dsi.h +++ b/drivers/gpu/drm/msm/dsi/dsi.h @@ -74,7 +74,8 @@ void msm_dsi_host_enable_irq(struct mipi_dsi_host *host); void msm_dsi_host_disable_irq(struct mipi_dsi_host *host); int msm_dsi_host_power_on(struct mipi_dsi_host *host, struct msm_dsi_phy_shared_timings *phy_shared_timings, - bool is_bonded_dsi, struct msm_dsi_phy *phy); + bool is_bonded_dsi, bool is_dual_panel, + struct msm_dsi_phy *phy); int msm_dsi_host_power_off(struct mipi_dsi_host *host); int msm_dsi_host_set_display_mode(struct mipi_dsi_host *host, const struct drm_display_mode *mode); diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/d= si_host.c index 976c5d82a2efa0fc51657b8534675890be7c33a6..752a97f7181c30dade0a7745492= bf16649b3197b 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_host.c +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c @@ -902,7 +902,8 @@ static void dsi_update_dsc_timing(struct msm_dsi_host *= msm_host, bool is_cmd_mod } } =20 -static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded= _dsi) +static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded= _dsi, + bool is_dual_panel) { struct drm_display_mode *mode =3D msm_host->mode; u32 hs_start =3D 0, vs_start =3D 0; /* take sync start as 0 */ @@ -947,7 +948,10 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_= host, bool is_bonded_dsi) return; } =20 - dsc->pic_width =3D mode->hdisplay; + if (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 @@ -2369,7 +2373,8 @@ static void msm_dsi_sfpb_config(struct msm_dsi_host *= msm_host, bool enable) =20 int msm_dsi_host_power_on(struct mipi_dsi_host *host, struct msm_dsi_phy_shared_timings *phy_shared_timings, - bool is_bonded_dsi, struct msm_dsi_phy *phy) + bool is_bonded_dsi, bool is_dual_panel, + struct msm_dsi_phy *phy) { struct msm_dsi_host *msm_host =3D to_msm_dsi_host(host); const struct msm_dsi_cfg_handler *cfg_hnd =3D msm_host->cfg_hnd; @@ -2412,7 +2417,7 @@ int msm_dsi_host_power_on(struct mipi_dsi_host *host, goto fail_disable_clk; } =20 - dsi_timing_setup(msm_host, is_bonded_dsi); + dsi_timing_setup(msm_host, is_bonded_dsi, is_dual_panel); dsi_sw_reset(msm_host); dsi_ctrl_enable(msm_host, phy_shared_timings, phy); =20 diff --git a/drivers/gpu/drm/msm/dsi/dsi_manager.c b/drivers/gpu/drm/msm/ds= i/dsi_manager.c index be13bf682a9601484c9c14e8419563f37c2281ee..158b6cc907cb39cc3b182d3088b= 793d322a3527c 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_manager.c +++ b/drivers/gpu/drm/msm/dsi/dsi_manager.c @@ -24,6 +24,7 @@ struct msm_dsi_manager { struct msm_dsi *dsi[DSI_MAX]; =20 bool is_bonded_dsi; + bool is_dual_panel; bool is_sync_needed; int master_dsi_link_id; }; @@ -31,6 +32,7 @@ struct msm_dsi_manager { static struct msm_dsi_manager msm_dsim_glb; =20 #define IS_BONDED_DSI() (msm_dsim_glb.is_bonded_dsi) +#define IS_DUAL_PANEL() (msm_dsim_glb.is_dual_panel) #define IS_SYNC_NEEDED() (msm_dsim_glb.is_sync_needed) #define IS_MASTER_DSI_LINK(id) (msm_dsim_glb.master_dsi_link_id =3D=3D id) =20 @@ -55,6 +57,7 @@ static int dsi_mgr_parse_of(struct device_node *np, int i= d) msm_dsim->is_bonded_dsi =3D of_property_read_bool(np, "qcom,dual-dsi-mod= e"); =20 if (msm_dsim->is_bonded_dsi) { + msm_dsim->is_dual_panel =3D of_property_read_bool(np, "qcom,dual-panel"); if (of_property_read_bool(np, "qcom,master-dsi")) msm_dsim->master_dsi_link_id =3D id; if (!msm_dsim->is_sync_needed) @@ -214,6 +217,7 @@ static int dsi_mgr_bridge_power_on(struct drm_bridge *b= ridge) struct mipi_dsi_host *host =3D msm_dsi->host; struct msm_dsi_phy_shared_timings phy_shared_timings[DSI_MAX]; bool is_bonded_dsi =3D IS_BONDED_DSI(); + bool is_dual_panel =3D IS_DUAL_PANEL(); int ret; =20 DBG("id=3D%d", id); @@ -222,7 +226,8 @@ static int dsi_mgr_bridge_power_on(struct drm_bridge *b= ridge) if (ret) goto phy_en_fail; =20 - ret =3D msm_dsi_host_power_on(host, &phy_shared_timings[id], is_bonded_ds= i, msm_dsi->phy); + ret =3D msm_dsi_host_power_on(host, &phy_shared_timings[id], + is_bonded_dsi, is_dual_panel, msm_dsi->phy); if (ret) { pr_err("%s: power on host %d failed, %d\n", __func__, id, ret); goto host_on_fail; @@ -230,7 +235,8 @@ static int dsi_mgr_bridge_power_on(struct drm_bridge *b= ridge) =20 if (is_bonded_dsi && msm_dsi1) { ret =3D msm_dsi_host_power_on(msm_dsi1->host, - &phy_shared_timings[DSI_1], is_bonded_dsi, msm_dsi1->phy); + &phy_shared_timings[DSI_1], is_bonded_dsi, + is_dual_panel, msm_dsi1->phy); if (ret) { pr_err("%s: power on host1 failed, %d\n", __func__, ret); --=20 2.34.1