From patchwork Tue Mar 11 19:01:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krzysztof Kozlowski X-Patchwork-Id: 872537 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.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 B2495264A83 for ; Tue, 11 Mar 2025 19:02:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741719745; cv=none; b=TeB1cf7LN2JmBMEMlLZmYP8Pu3mGAd6NGOZnBr/OgBBDUy5wyuGRQfOttGDvSCOPFIVMU/gaZhIe2n1jm51cM14OimpFIZDXkUC97fZqKofhnSfYLw2Nibq8sJXjcqh/M1NXlu9zQQ5eelDwT2gjGnfzKhOmywplx4dtBMBi8ww= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741719745; c=relaxed/simple; bh=sQUir1TiVRbtsw+Rrr4J2GdnerWUccENvKyAuylyDIY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=f4m5A9OLXC+WgVhbWczgY83vFa/MkudBYuC9IIKolb91+5EmWQjX3xPfa9npivNukgzXfLXDbKMCC6S3mQtNbdByhjfeF8+NdjC31AHPAqyL+bogS3cOOfd9i2GPSsxnOAqcMJ/VSn7rSJyNtKXdaW3Sx+XZYppMYaYmjlo+r00= 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=EWFD8h9T; arc=none smtp.client-ip=209.85.221.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="EWFD8h9T" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-391324ef4a0so300691f8f.2 for ; Tue, 11 Mar 2025 12:02:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1741719742; x=1742324542; 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=ysi0JDUh4a5HDZVHMcgvLzjscdPZigz8vY2N2CGO+pI=; b=EWFD8h9TPSjt3MufMLawY/vWQXSzDurhU6kjHoO7rDyOoClW4DrIAD96YYBCX8vS0C UvlPRY51dzRF6O5z7IM6rCnxBu+x/4XsZpoRVXz8pm0EVm75Fa8QgqDYS4gmCoAMHVfU RoeFhsS/yPhP+zfBOrjpC5eC0krmDkX5cerdFYiFatKTEzyw8xrwsz9+G1SBY10PsLIY ALYtjmdnmnDrybKuMkTqqClICrvHUv2V6tUhqs7jULceL2Th2K78UOplc/6cezAC8/MA +EeDBNVr+5X1iomE+9NFx5huRDC57ZUTXAhBe3WmMoBl4JXyqi1jAItpLv4LkV5gOXTb nDgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741719742; x=1742324542; 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=ysi0JDUh4a5HDZVHMcgvLzjscdPZigz8vY2N2CGO+pI=; b=fZRe7E1mUH/C1fxGFwz2A7pnrxjmIAY74lBV8R3DDmNFrrhNz6mQsS+f8tnYhgUhp2 QD0pVQj5QU0tP823J5+DGxjJaTxinx7++1VTQ72tlCR1PtyX4IMxbA+l7XaT8ylVqTnv DrebggGpS3rLl5aGmzjcCQYrmChmebg1BWV/yMVgaMbcfAQ36NQ7ONWdlzhYrw4JhDRb 055LkLHgQGVEosgymg4PanuEFdl3moV2KxsbNqHrJk34EhY9WEI2sBBEse+1ndZnDUQQ 9hCOz7ZaF/xhbqcknrixyAftxkAURySppbmCbzQDW3jXpnM6WJIdaGfhxQ36gpGofI8d qWig== X-Gm-Message-State: AOJu0Yz893UZpO1qt7SsBlB9jIa5XMcqLntYNEbB1rzKQLPbd0psK4AA OAVc2ldSfbGDMoltYJh1KGdLPxddDppJNvkLEO8/I3PBdTxo3JNQy1GlnFI4JGI= X-Gm-Gg: ASbGncvfJgsayKiG7TbF2KtcbvuP7R+ODhwdb593yRPsfy1dje8s3KZ5UbzQOdeQ9o2 htanziGLNaSwcrJKdwD9oKe3EgNFpYr8yNqqGCT32UNsai5WnYj9xz1Yjfp6WDwJICpHgFCHLyI L7TRYaePMRA+D5JOLOtZjHuv19QUsV+be+GT799iNiYW50EXh5z9ACqQIl7HYt7WrJfZCGpJsnT 76WDhCB18M9IH6E0zPxWyco7vhts7VIiEvLErr0VcyrB67dxIutpF8pr7hnbnFzgY5o8zj7+wyw aXgq5rCSpSrE7eduNG8Hzl9gbskGKKrSGk3ldMKsEp0/WWuJ5ls6XTDeu0A= X-Google-Smtp-Source: AGHT+IF417WVwkhv/4kEj5mDmA48euPvIfgAetNKZ077oeDcX29A47ICgyJbHG2WlP6N8LBlrOLfhg== X-Received: by 2002:a5d:598d:0:b0:38f:2833:2c87 with SMTP id ffacd0b85a97d-3913bbd0d34mr4867195f8f.11.1741719741888; Tue, 11 Mar 2025 12:02:21 -0700 (PDT) Received: from [127.0.1.1] ([178.197.198.86]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43ce70d13b4sm127681155e9.38.2025.03.11.12.02.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 12:02:21 -0700 (PDT) From: Krzysztof Kozlowski Date: Tue, 11 Mar 2025 20:01:52 +0100 Subject: [PATCH v4 02/19] dt-bindings: display/msm: dsi-controller-main: Add SM8750 Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250311-b4-sm8750-display-v4-2-da6b3e959c76@linaro.org> References: <20250311-b4-sm8750-display-v4-0-da6b3e959c76@linaro.org> In-Reply-To: <20250311-b4-sm8750-display-v4-0-da6b3e959c76@linaro.org> To: Abhinav Kumar , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Krishna Manikandan , Jonathan Marek , Kuogee Hsieh , Neil Armstrong , Dmitry Baryshkov , Rob Clark Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , Srini Kandagatla , Rob Clark X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4373; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=sQUir1TiVRbtsw+Rrr4J2GdnerWUccENvKyAuylyDIY=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBn0Iim/DeJggisQZOiWbGTSOucZf+5Z6lD9UY2b NR1mQALSr2JAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ9CIpgAKCRDBN2bmhouD 12NOD/0eVzZaD4fQjBBYiBAOPxLRo/Sm7deaZtAXBdyL9/HYJb8xLV4oZoAja8KYgQOXorIMPoj bX9BybGjnXaJgxcDLXaEu9BL+IZMMEHqhtb54jnFzyK/p4CWCEgCUgSC0UFsKZjEXpeBmOZkJFc 6vk6IRa6wj9LedgNYdo6qWNZyfnAs8COTojDU7wDE5YkD+76CDVjSfbOmXaA3k+gEdNfFl/DED5 ukw3aVk91nRCYY+iETIqzuCbRDy9OO9Xp/VaTM3Aa17PCluZD7UtAnlPqwjt6wNG2l9Oi0iYSlW FqcqPf3T1Qzl8IBUe+n3AJV81TIykkQh8pYa+iLvlcsiIP8C1NxV6lVZMvmFNT/5Y9kS5G7Nqbb EOdxKVbmwxIpXb7xlvmnXcN+eP0NeKg4R1zgjeQkrwaEu6M1JpujbWQ8Qxhk1iyIxz5XJSwDR5C BR6S1SlWFxYzP80fGuT4EBTXCV/K4f2fc1ri3xKR+rn2xrij3zfwjFSQeI7YFodC/AQgmQtSVhR wm4lYoOFWMACJPDy/tgpZbnlDeKz03cK3t5efJVsRJFXkjA+czVHYiDWtU+WmcroMFJmZU1h+yr aZWAXQEfgC+hr9ySFX/xx4Y5YDh3diWXwfX1c81a7vYzhilb8V8kfvgVlAIQ41ZRia9mVMc6VX/ y36CkiidRFk69Hw== X-Developer-Key: i=krzysztof.kozlowski@linaro.org; a=openpgp; fpr=9BD07E0E0C51F8D59677B7541B93437D3B41629B Add DSI controller for Qualcomm SM8750 SoC which is quite different from previous (SM8650) generation. It does not allow the display clock controller clocks like "byte" and "pixel" to be reparented to DSI PHY PLLs while the DSI PHY PLL is not configured (not prepared, rate not set). Therefore assigned-clock-parents are not working here and driver is responsible for reparenting clocks with proper procedure. These clocks are now inputs to the DSI controller device. Except that SM8750 DSI comes with several differences, new blocks and changes in registers, making it incompatible with SM8650. Reviewed-by: Rob Herring (Arm) Signed-off-by: Krzysztof Kozlowski --- .../bindings/display/msm/dsi-controller-main.yaml | 54 ++++++++++++++++++++-- 1 file changed, 49 insertions(+), 5 deletions(-) diff --git a/Documentation/devicetree/bindings/display/msm/dsi-controller-main.yaml b/Documentation/devicetree/bindings/display/msm/dsi-controller-main.yaml index 2aab33cd0017cd4a0c915b7297bb3952e62561fa..8ecb2d8e296edf555df7380eac284b41a3f000a5 100644 --- a/Documentation/devicetree/bindings/display/msm/dsi-controller-main.yaml +++ b/Documentation/devicetree/bindings/display/msm/dsi-controller-main.yaml @@ -40,6 +40,7 @@ properties: - qcom,sm8450-dsi-ctrl - qcom,sm8550-dsi-ctrl - qcom,sm8650-dsi-ctrl + - qcom,sm8750-dsi-ctrl - const: qcom,mdss-dsi-ctrl - enum: - qcom,dsi-ctrl-6g-qcm2290 @@ -68,11 +69,11 @@ properties: - mnoc:: MNOC clock - pixel:: Display pixel clock. minItems: 3 - maxItems: 9 + maxItems: 12 clock-names: minItems: 3 - maxItems: 9 + maxItems: 12 phys: maxItems: 1 @@ -107,7 +108,8 @@ properties: minItems: 2 maxItems: 4 description: | - Parents of "byte" and "pixel" for the given platform. + For DSI on SM8650 and older: parents of "byte" and "pixel" for the given + platform. For DSIv2 platforms this should contain "byte", "esc", "src" and "pixel_src" clocks. @@ -216,8 +218,6 @@ required: - clocks - clock-names - phys - - assigned-clocks - - assigned-clock-parents - ports allOf: @@ -242,6 +242,9 @@ allOf: - const: byte - const: pixel - const: core + required: + - assigned-clocks + - assigned-clock-parents - if: properties: @@ -264,6 +267,9 @@ allOf: - const: byte - const: pixel - const: core + required: + - assigned-clocks + - assigned-clock-parents - if: properties: @@ -286,6 +292,9 @@ allOf: - const: pixel - const: core - const: core_mmss + required: + - assigned-clocks + - assigned-clock-parents - if: properties: @@ -307,6 +316,9 @@ allOf: - const: core_mmss - const: pixel - const: core + required: + - assigned-clocks + - assigned-clock-parents - if: properties: @@ -342,6 +354,35 @@ allOf: - const: core - const: iface - const: bus + required: + - assigned-clocks + - assigned-clock-parents + + - if: + properties: + compatible: + contains: + enum: + - qcom,sm8750-dsi-ctrl + then: + properties: + clocks: + minItems: 12 + maxItems: 12 + clock-names: + items: + - const: byte + - const: byte_intf + - const: pixel + - const: core + - const: iface + - const: bus + - const: dsi_pll_pixel + - const: dsi_pll_byte + - const: esync + - const: osc + - const: byte_src + - const: pixel_src - if: properties: @@ -365,6 +406,9 @@ allOf: - const: core_mmss - const: pixel - const: core + required: + - assigned-clocks + - assigned-clock-parents unevaluatedProperties: false From patchwork Tue Mar 11 19:01:54 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krzysztof Kozlowski X-Patchwork-Id: 872536 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.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 C201D265609 for ; Tue, 11 Mar 2025 19:02:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741719750; cv=none; b=g7bu8xL+rlXG3xxeme7TIbCI6cPV/IFdwGXqInb8IlxbbtUaeYPCjlhZaRASNFS84h/YUOeidd3ESHIeX/MkIR3U7NuurC55GMieTzlqWPNctFBpLhQzsttsIvEEdgIzy28A7CFXZyqfiCoEZlo5Ddfm5O/sXET4MrygKumOo84= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741719750; c=relaxed/simple; bh=vM/Rhh3m/LDu1luem1JmpPvieCwNMZVHKpBxAm5wGsQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YB99yRg8Oof52m0+eTmCNgD2TDzGvMP5AjZVRMwG1FK9lbpmjWtDEw9Ss/ZPbfMR3u5Igtm3p/WCoHk/Mr8iL8Z9T2kONTmW32O+ALf6xSmoOTP/MGbxPOav9hzOQ7s2hbYHyVKkINAeAzmYHYVyl+2zn5CLftGkS8TdrnIOlO0= 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=aefXyNMT; arc=none smtp.client-ip=209.85.221.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="aefXyNMT" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-391295490c8so351696f8f.3 for ; Tue, 11 Mar 2025 12:02:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1741719747; x=1742324547; 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=FX08Ji8HI3+KbtFLo37LoGENRgVWTP1rrMFXfNP52RU=; b=aefXyNMT+u4eoQZ/rFXa1KyuQZKuYpvoLRsy6tUEFyFTwZuzsqp4j6bqT8l2a2RqsF zS5LjcPKxHrAWlOcpEHYnZa/brQalweeqHRVBDTWzmlVToo2YFAEKhUa1m3fYAVBUq+a XaAilJl4JhazhCMnXY91FAl4JM2Ka2SyzSHxIyw2RaYw9lrLsmp2haT1STJ7PgJeVprf xSgCP8yFhv1OshASX1wXfuJ7lxanU/EcU7s4S4qWr80VIKCBJcmxMC5+qWO3bFJEHov0 +LqVsgipla7NSp3zsexNBx4KxrfclV0OPPO70KHIcbhJ5otNQMK8Z1WQ+zWvHB6MBx/z AeRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741719747; x=1742324547; 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=FX08Ji8HI3+KbtFLo37LoGENRgVWTP1rrMFXfNP52RU=; b=pl1VdSHC1aoTeG82sLWS5AZJnU+zjXpoivViAVqhv0zVTuIKXAd46l7U/q1yfHHiaT LUq8CtGEiTVik0KvzwnDWEJBSycl2019cu97RCpA/mLFcqOh0ux8tSLNMnWoAAQZc4jO YDFa4q6U/YpBFJGs4cJi0RaSmVfDog+IsLCcyNZgVwXswrtGTiP5GHCamZNN8pROuU8M oonBQVpzBv1ydr/dikL2BzUHoX6pZQQ8pgZOA6G1Un0n5WqBzL/mNQXgyHylYWr4IJ63 CKT40iaPVyLQHbAxFEpcaD0ZsdmKgCQsNLvPxQ4cVKIzyfR6LGQtTGZElfLN22a+uJ3d UZNQ== X-Gm-Message-State: AOJu0YwQJ0XHMTu8gkAvb+e+A4jB9Y+/QfAeKUZ3Sk5yO+EtSX9sOZbx uI2U09By+pSJmVqmWMqonuJBlTR/Aa9H3q8yJ7f44ulSxx2dN71CjDvpy6qE9iU= X-Gm-Gg: ASbGncsQKNUxv5xy4qEWFtM6abp1Q6Z+03RxpyHORYgmjHyzwTtYJHVSueZAvTyBaLe fQm3qzFtoBDhetHS2U0nDAzC+ER+80zz5yiKIiYNWIETtLCV86SJZdFimlomX3oS+bKfIBGfBiO tNZla5FiaBJ/+dZcTQWOdVZAJwWqTfIz9PMnx5HsE5JdBzeaQD4tOo2E8xVzzt2Y6Z6yJFahAkK hKEnFt41n4pP9vS35AS6dYrKvpJdPWmwIPrRKqdec7znDTU7mjF4XNbi9FdD1FmqN0GL2lo71lI TTzjJH184P4kLiJB23RRfY+ynLcDAPopuc0vJMcBWDuSI8n5tXWTJQgr4PM= X-Google-Smtp-Source: AGHT+IE2n0MfJYoUab/sCdFT6aJjrI3Uvq0aDb8rnqdRJQHOYDQUaJhfbkTymsdz/VIXrXgdwkFI5A== X-Received: by 2002:a05:600c:1992:b0:439:9b3f:2dd9 with SMTP id 5b1f17b1804b1-43d01c305cfmr25909345e9.7.1741719746990; Tue, 11 Mar 2025 12:02:26 -0700 (PDT) Received: from [127.0.1.1] ([178.197.198.86]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43ce70d13b4sm127681155e9.38.2025.03.11.12.02.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 12:02:26 -0700 (PDT) From: Krzysztof Kozlowski Date: Tue, 11 Mar 2025 20:01:54 +0100 Subject: [PATCH v4 04/19] dt-bindings: display/msm: qcom,sm8650-dpu: Add SM8750 Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250311-b4-sm8750-display-v4-4-da6b3e959c76@linaro.org> References: <20250311-b4-sm8750-display-v4-0-da6b3e959c76@linaro.org> In-Reply-To: <20250311-b4-sm8750-display-v4-0-da6b3e959c76@linaro.org> To: Abhinav Kumar , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Krishna Manikandan , Jonathan Marek , Kuogee Hsieh , Neil Armstrong , Dmitry Baryshkov , Rob Clark Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , Srini Kandagatla , Rob Clark X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=943; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=vM/Rhh3m/LDu1luem1JmpPvieCwNMZVHKpBxAm5wGsQ=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBn0IiocmK7G66FTqUKGat1Pcxqrslw0gSJB99AE o+CCOeaee+JAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ9CIqAAKCRDBN2bmhouD 12fHD/4rXszGtQ6+BkcqOFgb6A3GryEXr2IaxtUfqKrWkKyjYlq6wvQ9318mCdgZrm/DHBVqdsv G4JWx+ued+V+4MctrGrkeeITliPnnPVgI4BkWhbQa6gRo5dFGsVVbKZwcltpk7gwrB58tm/JYzx L+ED/1OP+uGKSfM+rJfQgnnppTAn7JBefwB9maqx0dyXfT0eW0AIhEVZ0omaz+/fVZFKGaM8Ylw JXK6UPuVxjF8LVr2wxXYt4efqgWX2vvhllxTuq6xZZdTtYjDPUVQDHYWoxkv1raZyDuBstdG30k oJelobea91F8Vo6W2q+PvKNCXz1msLvAMT8nkfPXxUEtORLp+2Mc+dZm1HB0K85ZDrH6pcJydLs 99GEHJBeOOACp0gJU1GUfobaMGDmEpSMdGZMhsaH/njw11yvmOgh6rT451cXUhm3+MomAwV7FBw 8anWN/cwJB3/XDiohxwhhtC6JsK+ep7FuwAT4XRx6uFBTvtiKvZglVEvhu5lKIXZuK/k674D62e kwxHPFO51rJrApDv3bh2nT8GUwYnFcyrT9nsMi0svF0N6ufaEvducVNJIk03srOfdmeSoAKtiYQ FhbFbElPjWiu+9yp59id6Zxx9lbs6tAkto7btoGFtAzKPiHqgbRd7zeI3+vkadvc+rhln9vBFnj NUBdxpqFxUTm+iw== X-Developer-Key: i=krzysztof.kozlowski@linaro.org; a=openpgp; fpr=9BD07E0E0C51F8D59677B7541B93437D3B41629B Add DPU for Qualcomm SM8750 SoC which has several differences, new blocks and changes in registers, making it incompatible with SM8650. Acked-by: Rob Herring (Arm) Signed-off-by: Krzysztof Kozlowski --- Documentation/devicetree/bindings/display/msm/qcom,sm8650-dpu.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/display/msm/qcom,sm8650-dpu.yaml b/Documentation/devicetree/bindings/display/msm/qcom,sm8650-dpu.yaml index 01cf79bd754b491349c52c5aef49ba06e835d0bf..0a46120dd8680371ed031f7773859716f49c3aa1 100644 --- a/Documentation/devicetree/bindings/display/msm/qcom,sm8650-dpu.yaml +++ b/Documentation/devicetree/bindings/display/msm/qcom,sm8650-dpu.yaml @@ -16,6 +16,7 @@ properties: enum: - qcom,sa8775p-dpu - qcom,sm8650-dpu + - qcom,sm8750-dpu - qcom,x1e80100-dpu reg: From patchwork Tue Mar 11 19:01:56 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krzysztof Kozlowski X-Patchwork-Id: 872535 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.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 1C047265CD6 for ; Tue, 11 Mar 2025 19:02:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741719755; cv=none; b=GRTn2FM1CKOrm9P+/UApX54s63MD8Ca3/HB+V7SyWVexIr3NX331JAHZ1et4Si66+3RfhrNnNgzi6oH32/COjjMqYg21x9l56KE/2qEyUOibo27p70la5dcaZxYhn7vDb4zFAglk+mIxoyWKNRTMJRvH0eismvBk2+qdlPHl5vA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741719755; c=relaxed/simple; bh=ydQVVgPonZ6qPuLltGk9wSNaGdVcoqspWvQbVsOodfM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oIG27YG3xh6tXkuUaHR9SYX6m/sH6vK6i8pkkhnfKk+2xJwN7TMM+mfaLtMz/YcY/sv0xN5Sq9RyNq9kOkkbn418tj0mwiY8/HFSDbYyrcLZOEOD17xTM2wtBuL1lFGsqmS/SM1hHqcB/WBCWhBjgrq5/MxIdb85VZ4S/+zo8FM= 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=ahfQ7mK0; arc=none smtp.client-ip=209.85.221.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="ahfQ7mK0" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-391295490c8so351712f8f.3 for ; Tue, 11 Mar 2025 12:02:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1741719751; x=1742324551; 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=SYVsKKZXPbcsvKhlX6Fd5jgnf07udLWPUc7NV4+Tv/w=; b=ahfQ7mK0+AKrb5ZBnFzfKMVBogo30Vk6792RH7PjdRMLGwIITcKSJ5m/KcMuFJcUl2 b6mv2F6ruvk0gF/LFPfp3q7m9zgEWvbQc22ls8/UdTzC4r9miE3nCV92U4Fl2SptUt8u zSNs94nZb0DA0ZkMuwqRy5DkfrQq/PM2iOfS8HLrfi57k6T2AV5XuCxWTCRwsbpIOPyX rBLnPLaaATj+Anwl0BhheXQUuhDfM+unuvlH4zGPABjCnzWewVL+fnbQI7rHTCoBuugC IpCpunW5Yc74bTjIciiT2XGcHVhhbmdxqyuJfGpF5jOc+XM/E8LqfwNcDWowXFwe4ULZ WrRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741719751; x=1742324551; 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=SYVsKKZXPbcsvKhlX6Fd5jgnf07udLWPUc7NV4+Tv/w=; b=qiOfWSzjurowsN9v0i4Nkdyc1nvjKOEhJQ/CI9GoW3dIHfhtS/IYnCbyiJxVeX87Bb 7KG6dffk1Frm/fAC52RGrOGPUbPASAfyJjb0BWXK/HFkz1++B3uJg42I6TucCbF9Fmae jhs5MUtdPgWkLInQnXuEd6bTnI2beRlj83JQpZQU7GyAcTE+1TyE+/Sb9ulWYl2ma9iW d8bd2qLHfv8BqWTHTHnFSi0TeJZ2ERGl071BaD0l+W8+As0MYD4G29nT1TJtP4SaZXe8 Z4ax9a3KCp7B3hSqIxBdMtMSiyZ4t9tfJN6on1E2aC2adSDqy89VYzNZIuiu0NwZNnTI gnZg== X-Gm-Message-State: AOJu0YwrB8hdPHKS3PQrUhE+UnM45cVs5pVA/q1axBaOLcmUK1wRB22f d8bcAvBcnUUfSel5El6p/jbfgaukYYwcPqcaZsojl0Z3UUMWRZUdfDNNCfUV1K0= X-Gm-Gg: ASbGncteHWukeJLlx8Qtygd6XFg9IhzyDQSYKQLnQdik2h5g5A6aRjPPFnC72zHoNpv 8WruMgCCzBtejXVEBBMHePYD5AF3BV2DQ9uU8KQb3/cSWpm+rAJ4cSJxAvI0Hq3splodAVcuM/N xEsZGHlreehI7r/NTmBSkI5TlIfd6WspZSi7osXpuUP5FKgVjJE3FGq4wNJCa+vy/TLcVOIiCr0 v51g4KHfAXsDpW6J7wqPtv1jKKo4dPPRQDO9Oly/JEf6AmI1mai9f7IItqbHU7dqhLl9dApauRC wlOE19ldOMqTWnJONRuFxOv9jJkcDGazwyFeDqisJHU+c6xvkei8Flsrrv0= X-Google-Smtp-Source: AGHT+IFeAj+5/SP+w+sioHObmuTMmOAxjZrAJ1qq2pGl7Cp+Hhprgf1sKwAtJrii7xugoWDGpTYx/g== X-Received: by 2002:a5d:648a:0:b0:391:c42:dae with SMTP id ffacd0b85a97d-39263edca4emr2158682f8f.4.1741719751259; Tue, 11 Mar 2025 12:02:31 -0700 (PDT) Received: from [127.0.1.1] ([178.197.198.86]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43ce70d13b4sm127681155e9.38.2025.03.11.12.02.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 12:02:30 -0700 (PDT) From: Krzysztof Kozlowski Date: Tue, 11 Mar 2025 20:01:56 +0100 Subject: [PATCH v4 06/19] drm/msm/dpu: Add missing "fetch" name to set_active_pipes() Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250311-b4-sm8750-display-v4-6-da6b3e959c76@linaro.org> References: <20250311-b4-sm8750-display-v4-0-da6b3e959c76@linaro.org> In-Reply-To: <20250311-b4-sm8750-display-v4-0-da6b3e959c76@linaro.org> To: Abhinav Kumar , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Krishna Manikandan , Jonathan Marek , Kuogee Hsieh , Neil Armstrong , Dmitry Baryshkov , Rob Clark Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , Srini Kandagatla , Rob Clark , Jessica Zhang , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4099; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=ydQVVgPonZ6qPuLltGk9wSNaGdVcoqspWvQbVsOodfM=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBn0IiqfzAgIoP9umfZorOErCkdQm4O0c00MtUUw PWEMw/1mDmJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ9CIqgAKCRDBN2bmhouD 10XwD/44cSmku2CjH8R6xEDkxg919YvbUcx9L4KjIhmXMt2VP2vGrRTr890lvff0+7KyBpaLMzz jmARiJu0porgJeiUrLpGBOi8Iv9LQzXW45mzD143grC/CXBpFnwsTxo3BBSYF6/GqmJKq3kvrEE Ur0nkhgBdc2cwdVWGm9AgRZaLuh9S1KZzvLe5xg1FgZ7DPsOE2qiYYMPaDJnmRxke/6NICRo/1y 7sS20wyuzpoRCLT0jMg6WC4cCOt+36g7CAJ1zWZ1joLa+JJFMTOqJta1E5ZaSMg7PQV1BXNDrM8 TjleUcmurjihWBkFEVl2KFRk+bpbl79tVM+fGzk9e1U29Pz0aiFx5qRejVUmlkGBmoP3qU2UWks zMfpZD+v/f6A7s9sBVzqjGCYl6MlgrAqcXY/qmRBIGIEhy1fFUfYv9D78HYU0rMIPMu+Lek6kIS Ddp69/dpbCdD5aRYNP1YEku3B65ykmTEc2/Q/tYMlRVBSJJmy0GrZ1jOXoirwTp0atdw6hdn3c4 C/j2sPRo/+8XT2lyZ1bCpNf5xY0ENRqFW4rg7FuJuI4eVpZaNxOQSXnPECyJaxUSGjZ3b2S6+sg UTzPnIaMNz0ni+dtgVDDkP8hkExPCDm59aHosoi7c0YAg/ftlMsD1VHmZStmk7SsXqSKjf2cwnk ubNuPzr5ItQt0nw== X-Developer-Key: i=krzysztof.kozlowski@linaro.org; a=openpgp; fpr=9BD07E0E0C51F8D59677B7541B93437D3B41629B The set_active_pipes() callback configures CTL_FETCH_PIPE_ACTIVE and newer DPU v12.0 comes with CTL_PIPE_ACTIVE, thus rename it to set_active_fetch_pipes() to better match the purpose. Reviewed-by: Dmitry Baryshkov Reviewed-by: Jessica Zhang Signed-off-by: Krzysztof Kozlowski --- Changes in v2: 1. New patch --- drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 12 ++++++------ drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c | 6 +++--- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c index 0714936d883523e5c53bfb42f932234db76c58db..2d7af6fff2708c12520a78cc6c979b9930dffc95 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c @@ -445,9 +445,9 @@ static void _dpu_crtc_blend_setup_mixer(struct drm_crtc *crtc, uint32_t lm_idx; bool bg_alpha_enable = false; - DECLARE_BITMAP(fetch_active, SSPP_MAX); + DECLARE_BITMAP(active_fetch, SSPP_MAX); - memset(fetch_active, 0, sizeof(fetch_active)); + memset(active_fetch, 0, sizeof(active_fetch)); drm_atomic_crtc_for_each_plane(plane, crtc) { state = plane->state; if (!state) @@ -464,7 +464,7 @@ static void _dpu_crtc_blend_setup_mixer(struct drm_crtc *crtc, if (pstate->stage == DPU_STAGE_BASE && format->alpha_enable) bg_alpha_enable = true; - set_bit(pstate->pipe.sspp->idx, fetch_active); + set_bit(pstate->pipe.sspp->idx, active_fetch); _dpu_crtc_blend_setup_pipe(crtc, plane, mixer, cstate->num_mixers, pstate->stage, @@ -472,7 +472,7 @@ static void _dpu_crtc_blend_setup_mixer(struct drm_crtc *crtc, &pstate->pipe, 0, stage_cfg); if (pstate->r_pipe.sspp) { - set_bit(pstate->r_pipe.sspp->idx, fetch_active); + set_bit(pstate->r_pipe.sspp->idx, active_fetch); _dpu_crtc_blend_setup_pipe(crtc, plane, mixer, cstate->num_mixers, pstate->stage, @@ -492,8 +492,8 @@ static void _dpu_crtc_blend_setup_mixer(struct drm_crtc *crtc, } } - if (ctl->ops.set_active_pipes) - ctl->ops.set_active_pipes(ctl, fetch_active); + if (ctl->ops.set_active_fetch_pipes) + ctl->ops.set_active_fetch_pipes(ctl, active_fetch); _dpu_crtc_program_lm_output_roi(crtc); } diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c index 216dfcabcb92d410ce185c0d34db69c99930d2b8..951d5dccab6faf34a519d06683514aea1ee6ef60 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c @@ -698,8 +698,8 @@ static void dpu_hw_ctl_reset_intf_cfg_v1(struct dpu_hw_ctl *ctx, } } -static void dpu_hw_ctl_set_fetch_pipe_active(struct dpu_hw_ctl *ctx, - unsigned long *fetch_active) +static void dpu_hw_ctl_set_active_fetch_pipes(struct dpu_hw_ctl *ctx, + unsigned long *fetch_active) { int i; u32 val = 0; @@ -787,7 +787,7 @@ struct dpu_hw_ctl *dpu_hw_ctl_init(struct drm_device *dev, c->ops.update_pending_flush_dspp = dpu_hw_ctl_update_pending_flush_dspp; if (mdss_ver->core_major_ver >= 7) - c->ops.set_active_pipes = dpu_hw_ctl_set_fetch_pipe_active; + c->ops.set_active_fetch_pipes = dpu_hw_ctl_set_active_fetch_pipes; c->idx = cfg->id; c->mixer_count = mixer_count; diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h index aa560df698ed4e57a25e4a893d7333e19b065fe8..1b40d8cc92865e31e5ac4a8c3ee8fac8c5499bbd 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h @@ -254,7 +254,7 @@ struct dpu_hw_ctl_ops { void (*setup_blendstage)(struct dpu_hw_ctl *ctx, enum dpu_lm lm, struct dpu_hw_stage_cfg *cfg); - void (*set_active_pipes)(struct dpu_hw_ctl *ctx, + void (*set_active_fetch_pipes)(struct dpu_hw_ctl *ctx, unsigned long *fetch_active); }; From patchwork Tue Mar 11 19:01:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krzysztof Kozlowski X-Patchwork-Id: 872534 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (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 D908C2661B7 for ; Tue, 11 Mar 2025 19:02:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741719760; cv=none; b=tV8ezTlG70cOdcj+Ne57dU+g4SjTQRheEooLysj5MIeYBRMcpZiMNsKwOol9YEmFDbxZvqhT24XzBVHWFWwoocU1Xalp7LLqrxhXGFGofKD1Rk9vuaeI3N0vkkgGUD4HZd04Z3vsihXInU1TrTYyUdadZAWBaK/bJIJ5laSUTcY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741719760; c=relaxed/simple; bh=y6bWRccagbxiPugi9lqg3LxI5q7Luq+aGXW341tS1oo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FDuE0dixswCKX5VlG85reLUY2oQ9nJLeTivRsgzcOhipWNYyEYTZKhYXXyXSLtZQ4G5z/3Axpcu35fV8qCdSwhGK0MA4O6+Y1z30Lny+ngaP2oyfxBSzwmLuImSgn2l8PpWYzlNaubemSSLLbcHzhbx1bLJ5506i/BrWPltQGW0= 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=ARFr6HzX; arc=none smtp.client-ip=209.85.128.45 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="ARFr6HzX" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-43cee550af2so2905115e9.1 for ; Tue, 11 Mar 2025 12:02:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1741719756; x=1742324556; 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=RcjB+241gLR6s1cCQ4uICqRoaXk8v/y0NqsWEvqWvyI=; b=ARFr6HzXsHCIcXWFRKSm8L9WA7Y1/gQeepLLeW3Ns5hUp289yI2ChlsKX6ZHKgIhUh E9xLpzD2364fNMAdIuVXCxUCjKeZpOT9ThxnNhj/3yafN977cBRuwJNoyceCEeHRzACx o9IEWZAYvOBJyQ99dsU2kaITh/rw5bFNQOKSfygK50FxiY9s1XgX3F0dFsNzbTiQPpME pN7BU9XZuKv8HJAZQfKeXXAFG05LUdjLieEeCKxb4+mcTq5CCs0R0RfjMPBdxO2VRqza U4fsYswhTh0vZsWhC/M8/tFnYrGEuw84AjW2TuaSL7N5g//z2bC6irtQNEbFn/Gbs402 JrCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741719756; x=1742324556; 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=RcjB+241gLR6s1cCQ4uICqRoaXk8v/y0NqsWEvqWvyI=; b=fqv/xC12A5N4l5EWLUeZV5HMriXnBAwT6aR10nfT4XDiWZfgCkTrUdh2I5cCdp6MWI ffyGhfYgeswpUDZweR7/TjCntybcYrvTj9/DyOlahfRi+u40x/788G28sWctiH+PnARK uKMKVIdFVDnKKIvhj+vX8kpwkcNnzoqXRY0LLDQv4aGquElh1fQckCua12BLNrBEn4hi 7dqbAj4FA+pC8m480HQVq2aKJH6sm8QSnPcu8d/suF59jU+C5v+nEuzhX5z/cv+1AH+K AniYI3HOTPskanxCqyQF5AW0nvnSp/VPMA9WCpP58ZOSE1DTd7IGoxf8pbcB6chnvSA7 8E6w== X-Gm-Message-State: AOJu0Yzrpq/lM8LLdBPV3wEFIZDyt+BqRWmfg8Nm1/F9ieebhRyFcswf e81gby2Y0jYqxr1XuOtnPR+kMnM6w3wsdbL7/MFdf1BMphhV3Ecvfl9Y6co740U= X-Gm-Gg: ASbGncuzuDrpyNvroCq7XK+UTVKNEVdT8mI5RNzFPQBk3Y89VeM9+AAdu227th6e3Iu r1ZsMscmUWBu0AXveD2UMFmR2AKru9weLwN8kRxMjjgWStsuQdHQda/i+XVztVmX1Ivbd9d5DUK DHp7YQSmHO95WvLaRgJHqhQGdlvc5ae4LYc/1OennEqqqP4Re4qPYk9XMAGRLQ2Gj9MF3XmAZt5 e+vLZ9tI5A69ZzIUN+PKNqbRqtF3LwxaG86cwXsw6RvxO41skUMSz00re9j8ogn8Wzp9gZzyiZ/ +TzZSI+R8AKV16w53d/o/tuioMHsxZq7+kEhtxxeD+LwRAUjb68BIKajC48= X-Google-Smtp-Source: AGHT+IHUI/GfBvqMOBGLfMGJ5oC3n7CH3DWUPWiGMnSbl7+9ajR5P08W9uLIpwe5ervzERP38Emslg== X-Received: by 2002:a05:600c:198e:b0:439:94f8:fc74 with SMTP id 5b1f17b1804b1-43d01b88b9amr24028355e9.0.1741719756112; Tue, 11 Mar 2025 12:02:36 -0700 (PDT) Received: from [127.0.1.1] ([178.197.198.86]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43ce70d13b4sm127681155e9.38.2025.03.11.12.02.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 12:02:35 -0700 (PDT) From: Krzysztof Kozlowski Date: Tue, 11 Mar 2025 20:01:58 +0100 Subject: [PATCH v4 08/19] drm/msm/dpu: Clear CTL_FETCH_PIPE_ACTIVE on ctl_path reset Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250311-b4-sm8750-display-v4-8-da6b3e959c76@linaro.org> References: <20250311-b4-sm8750-display-v4-0-da6b3e959c76@linaro.org> In-Reply-To: <20250311-b4-sm8750-display-v4-0-da6b3e959c76@linaro.org> To: Abhinav Kumar , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Krishna Manikandan , Jonathan Marek , Kuogee Hsieh , Neil Armstrong , Dmitry Baryshkov , Rob Clark Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , Srini Kandagatla , Rob Clark , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1115; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=y6bWRccagbxiPugi9lqg3LxI5q7Luq+aGXW341tS1oo=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBn0IirZiMlFxIwx/kR+5CN6LQ3oI+wkm7qHAayp hUmAyRP61CJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ9CIqwAKCRDBN2bmhouD 1wb3EACZNeztGLSxAB1Jrehurx9bUz7y7xVphpXYvou6pmU5jzCVchBQAyL8H06dHtkF/USEAME PjWBgSX+pMv+XgZPHpS5LMcwTMbqhq+Wqkr2kcDK6NlJmcs73zqBXrth372YEkRA8o5GCdw8FNC Y6sJ4dZlEQ9SsrCrSX2zkKZqtWigfDoA7xT/t5YV+1CBKG8Fl4wT/6PMVqIdxZuuedrh16802jU uKsFObCjV7DbADi4TGkM3VobbZ4JNyUC+A5h9cTICYDPo2TZF2RRCazQNXtUnDdy+kahUi6mrnY vKBDezawNLxOzN1L2D4YaDKxBjNvULH7GF0kdSe9F+Wnqu/r9GIh/q9aa+7hOwe5ZzjtQA9WOjE 8vgCEuSTwFpbBYOJoda2m+eLXLAXWyI+aCTnQm1LwFmfv6hoif5uOYEstvl8k/0U9itEvlKDtaB jhQBIEe7YH+FzNcofg1WXN14yOITrTbdj7Foz6axPodRVHweRunALci7Bn4pTogy5yOXoiiwrf9 2eKLxrVAGWwACGfqaePe85ONfxCaDB/aYSKZnu9OKHaOQ78OTswV6BagZKrQ8EE2/yoBgCcnwBi GLhNs1AQy9dconnR8Q+137TWMtS49s/SqCp9cPq8azzW002V6nKJS4E91m72uSWWuYevbwpWaeo iyggg/4Vc6qXoHg== X-Developer-Key: i=krzysztof.kozlowski@linaro.org; a=openpgp; fpr=9BD07E0E0C51F8D59677B7541B93437D3B41629B Resetting entire CTL path should also include resetting active fetch pipes. Fixes: e1a950eec256 ("drm/msm/dpu: add reset_intf_cfg operation for dpu_hw_ctl") Reviewed-by: Dmitry Baryshkov Signed-off-by: Krzysztof Kozlowski --- Changes in v3: 1. New patch, split from previous big DPU v12.0. --- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c index 951d5dccab6faf34a519d06683514aea1ee6ef60..2ce59ba50ffa0d14eaa07e993fadf0f218390ef1 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c @@ -667,6 +667,9 @@ static void dpu_hw_ctl_reset_intf_cfg_v1(struct dpu_hw_ctl *ctx, dpu_hw_ctl_clear_all_blendstages(ctx); + if (ctx->ops.set_active_fetch_pipes) + ctx->ops.set_active_fetch_pipes(ctx, NULL); + if (cfg->intf) { intf_active = DPU_REG_READ(c, CTL_INTF_ACTIVE); intf_active &= ~BIT(cfg->intf - INTF_0); From patchwork Tue Mar 11 19:02:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krzysztof Kozlowski X-Patchwork-Id: 872533 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.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 F260A266B61 for ; Tue, 11 Mar 2025 19:02:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741719765; cv=none; b=lyAmHKvSV3oG4xwegvZfbNsFd1+GNp7cxPgOZmD11G/ldTt4p3C+AF4tbHEjGtzlAKaqD6EGU7Qk2wDNYegs3i7HQL2+KQZhPVJOZAOg3lPU5LThOlsN377y/XD0+hSQtW1EHpZQXuQS34dSml9E1PG5ck+zqcwslAzrzwsITII= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741719765; c=relaxed/simple; bh=3xk0pyKS4szEe/9MhLY0udi1S0AkDYWMQ5qVNXd7KNA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dkhpo6qjKPMlri1kWKHSJXXAfCfDr2nKAbyj/zl2sQ0DF9Q4scqRDsjH9RlSvL2riJObD2yB2stv3y/ktF0+1DJi1uzeUcclZDscysV/0pBYX0MvUgjBolUOaa9yZPkGUXZa2Ygno98wcvQrwCiXfaY0E1beJI2bCvD9jjf/mkQ= 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=o0FPoqb8; arc=none smtp.client-ip=209.85.128.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="o0FPoqb8" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-4394944f161so6309835e9.3 for ; Tue, 11 Mar 2025 12:02:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1741719762; x=1742324562; 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=FoHt8+Qv2KBvycEBRbSOT+7Q4Tanwbir/+be358nDD8=; b=o0FPoqb8CGFAPN/T3m50tuCyT81T6oSpLPhVBdG3Z1wwjTtiBbgCgs7t9Bb5qHr1I6 r+K+u97mRlXv78ZMIZTu6cXeCAJZovcZDt20liOSRwsqBvHgMbQ6Y8U4cN10ZfkfwRLl OLSut5hmJBeZXEM9bc05J2iEfvNz8ItAC7jUa22/c8vzMwibhGfo96oklNctKjMP6qiN cR6lql6vQeBAndOTAApeAg4f0/4g6h4a5w0WyDp/H/iOtc+RAec9Ka03zrIUsEHAK5g7 /+KkWQAmYwXeSn+ugxJjVLR1GvgcxnjSLWVV4s6S4Xs0eu+u4Qh0ADxSUF7Zs+GlJFXY sVlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741719762; x=1742324562; 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=FoHt8+Qv2KBvycEBRbSOT+7Q4Tanwbir/+be358nDD8=; b=XYTNznNUXcEbzm8PVD2+rNxRUNxrgwErDy0z2oArLLbRktqk95RTtweKNeYYR3jCTL YJXrHRJzhbLQn9mUu9fKB302dbsvblCEGQe0biHt9f2PVH7PaBoBsgOm3a6DYOuuVWO9 r0QvrPOioaA0J+6zbEc03qJcDk04fDgXYGa6UgyxvYW1nl7Gj5+VKsweEMa1030yCeDL NEqwDQutyN2nDOe2LznhWclcdLLnERR4fR40/YSYfc3V6m4H08xR84qn4mk5/ObrfWYj 3unFwU344x3RyMtAWYmBS/yRLu3XkXbU80KT2koIC+LnqcH7Nmp5pU/uotjKxAwOM9Qs SLEg== X-Gm-Message-State: AOJu0YzBVio3dPKA/tbSXyq6aFZFDApD7xu38mBwPnTUuELgAsjQxVyF pxBsPECy0kYlAGWaq7DC9qs9POes9qL3ZcidFplL65vYeshUQEfbOkQtiKQ+gGs= X-Gm-Gg: ASbGnctJCOmeQjKrDtsydBqttcyAwOI8SgCQWTr9+llg0fwHOo8Y0/gIYDRG9HOCquS x9EA8JOK2X9JkpjyiwyZ8myjEYtletvIdHLu3r7z4wD24Rme/ghOVOtXADVRkwnWUZ4WSMOEBq6 BQg0Hqtqk3vAEScFa17gfxUtUBkcJhVh2F7BuadaAIuGS65ZKNZdogQjm6gIq6RQGdH30/yiW+V hsh+D2SEYI6O9MDh86sKfr83mekX6ELclSdXWaM+zWL9sQYqiSrHbUafhraF0EsJcKr+VBe/ZSE iOrZJRoppUDN1ewdr4Tjr25MkUDzePLRGJOzgiACjDEtIKVRqnAgAw3yQ+A= X-Google-Smtp-Source: AGHT+IGtubQYzLqe6qMHPh2YhYmcldjpGkwHVseYKBCi8jZBCwCNslEBMj62gHB7lTtanzJPhgFk1w== X-Received: by 2002:a05:600c:3113:b0:43b:d547:6336 with SMTP id 5b1f17b1804b1-43d01c3105dmr22168095e9.8.1741719762312; Tue, 11 Mar 2025 12:02:42 -0700 (PDT) Received: from [127.0.1.1] ([178.197.198.86]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43ce70d13b4sm127681155e9.38.2025.03.11.12.02.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 12:02:40 -0700 (PDT) From: Krzysztof Kozlowski Date: Tue, 11 Mar 2025 20:02:00 +0100 Subject: [PATCH v4 10/19] drm/msm/dpu: Drop useless comments Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250311-b4-sm8750-display-v4-10-da6b3e959c76@linaro.org> References: <20250311-b4-sm8750-display-v4-0-da6b3e959c76@linaro.org> In-Reply-To: <20250311-b4-sm8750-display-v4-0-da6b3e959c76@linaro.org> To: Abhinav Kumar , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Krishna Manikandan , Jonathan Marek , Kuogee Hsieh , Neil Armstrong , Dmitry Baryshkov , Rob Clark Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , Srini Kandagatla , Rob Clark , Jessica Zhang , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1894; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=3xk0pyKS4szEe/9MhLY0udi1S0AkDYWMQ5qVNXd7KNA=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBn0IitXyBOAqRPMp/KeWk+fUVdkX6Z9R8/hGg9S IEiI9aoyTiJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ9CIrQAKCRDBN2bmhouD 1/VkD/41O3QOWYZQCz/a0hGAcXFdCxiwdt52Ij6fy7kFN9HC8l+eoOd3C+t73FbxyP7vOOpTEB6 ldE1DezPsO3nMYCBNS6xWz2nfXKkZCPsD0yQFauOBzlr9DlY7vSj+be9QELlrCtQ9LCvGLL3ofC 9m4IenWnpfH0nCkPEPeB7A+BizuF9GFMTqLIIauaHYiGtkieTPZ0c5eSV7Cb9WeEbirH4+WqM6H huEJo6H6WJinBZ2KDBNyO9fGP+XgEpkZSHSvY3VLdsXiPO5pkxfKyM5C9c+iYuGUeJzmKjRB1vb qDcGUrLd4xCX7CaBXqX/92oeIGIcXOoAIY/KO4ScEcoIMoyvvAFYCZm/L43vJpST6F3Rq2hEKdP sTGrMWlRwfWPAbCx6ROKVSUDrSyCf/n+b1KWfU82+G8X5NSYC/YAiW/9s4gNXsU45AIC4ZHtCPz K2VH3kaOFUulwd+OVtqnvv29bFVuliq4DP8BGw/FnlYPpVokRPc5DjCbNYvxWzdXmS7Vf2wzW9d w++w+S9/b86Ls8p4vmJ+mwbXWy5ZYZJtld+2KOgAZ7ITmlyMVghTehYUGfC/hBz24V5L1F85fkn IjLcdFIxoIE+lfmrr86j0xbqzyPewR1QmPz7twsAfiQi+WdIINP/+wsn7V/JY5uy6Z+5fUzqY9O AOHbyo42s2JjvQQ== X-Developer-Key: i=krzysztof.kozlowski@linaro.org; a=openpgp; fpr=9BD07E0E0C51F8D59677B7541B93437D3B41629B Drop comments about SoC before each 'struct dpu_lm_sub_blks' for given SoC because it's duplicating the actual name of structure. Reviewed-by: Dmitry Baryshkov Reviewed-by: Jessica Zhang Signed-off-by: Krzysztof Kozlowski --- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c index 2db27c55787791309962acf796d5c49aaf018fc1..a310a5234e99ea4886e82ac2100c4099e6a1841e 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.c @@ -331,8 +331,6 @@ static const struct dpu_sspp_sub_blks dpu_dma_sblk = _DMA_SBLK(); * MIXER sub blocks config *************************************************************/ -/* MSM8998 */ - static const struct dpu_lm_sub_blks msm8998_lm_sblk = { .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .maxblendstages = 7, /* excluding base layer */ @@ -342,8 +340,6 @@ static const struct dpu_lm_sub_blks msm8998_lm_sblk = { }, }; -/* SDM845 */ - static const struct dpu_lm_sub_blks sdm845_lm_sblk = { .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .maxblendstages = 11, /* excluding base layer */ @@ -353,8 +349,6 @@ static const struct dpu_lm_sub_blks sdm845_lm_sblk = { }, }; -/* SC7180 */ - static const struct dpu_lm_sub_blks sc7180_lm_sblk = { .maxwidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH, .maxblendstages = 7, /* excluding base layer */ @@ -363,8 +357,6 @@ static const struct dpu_lm_sub_blks sc7180_lm_sblk = { }, }; -/* QCM2290 */ - static const struct dpu_lm_sub_blks qcm2290_lm_sblk = { .maxwidth = DEFAULT_DPU_LINE_WIDTH, .maxblendstages = 4, /* excluding base layer */ From patchwork Tue Mar 11 19:02:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krzysztof Kozlowski X-Patchwork-Id: 872532 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.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 C1F17266F1E for ; Tue, 11 Mar 2025 19:02:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741719771; cv=none; b=TthEAZIwzuShGt7Dnh3kXJfzP8GouSLYgx819Q9thATu/UovnmHqi7dp5Sj63S1FambQ2dpvrbj3k1IKQspypaXjBBkV7/Fn6y92kXncw9MDeOZf9o19wtZbz7N/OsLfz5NJwlgl5QStIiQvtqvwt1q5u+G/QvLleZNB2emg45U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741719771; c=relaxed/simple; bh=HpuEY64L0Fw1OnHLOTzTER9uuArLg4VhJ9JNiMiD75M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=f+hTFmOJVaY+TkKuvLuo0fJHRtLvbemPj4c5O7GKBciYARG3p+SUHCLfem5nsSWX3l+n48PbdrOGu5eEpysG93kqi+iovt5Gj91CHQQ0IKg20Gi0AuW2F/gRVm4DCHJ2+zIpFwf86B7k6R3WF0DhLcHKpIF1EZ8yMiye2scvbwM= 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=IDoLCSdQ; arc=none smtp.client-ip=209.85.221.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="IDoLCSdQ" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-39123ad8a9fso371418f8f.2 for ; Tue, 11 Mar 2025 12:02:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1741719768; x=1742324568; 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=Ix+uU1xNjgf6yeJ0CN+CN8S9z1FXI/b+G+I98D4ytEI=; b=IDoLCSdQ4IxneukgIYo4fGehii3hx5AkI4CB1DyM5HzwUX9pSPHJKhfEsgEzp7xXzI wYamM9FfW9A32Cfc/jFPIWiimvavYeW+QB75l26aocCkZ+gmYwMERA0IXZ6Xnru5SYD+ SWQwkHoQ/l2MA1tCGRqwhdlxAdyR1bYi+4MxPuLPv2tALo69ffdfZMEOCXlzZ8J5tUgd be3GFguGLTcN6+uY8nDJ6jzqBV2JW5Zc+PwY/Nw8wrIjZ86VCvhZIae6q+6TazqqlhC5 ZEYstBIC/rVFMt6DIwA3s+4JecXAUDI+j9BqVAhSEau5BUCy1mePHonRoVqoGgSjfD+o RnLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741719768; x=1742324568; 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=Ix+uU1xNjgf6yeJ0CN+CN8S9z1FXI/b+G+I98D4ytEI=; b=tak6jiQ3GWGbXWWc+VpWIQEEa6sy0++ZQNvtXCt36796w0rsNhPwyi0HWWFvj2fTQe sI7O16DGsI9SUGZCRE3U9R+hQPBwFtzNDypyv7RFRsH5NF8WtvpVU0S+Ab+6wnYlUB2f sh4D3ePLeLUZVLv5Ijd2c1pTC5MokmfnXJDWxwrCkqrAkijB34wxC8r2sY/3iBBYklXw gzG9LkCdaOhtTGyE9k1ueNBwWTCH9d83xE/t9poZteuUFTTEycenP5fbMih5I8KX9oxj GjBi737vwM2hpRmvSVm3pma0EmkracAF9Lm/dVQfPhoGY3ei6M1X4rFyuRi6Pmjo76g+ /uEw== X-Gm-Message-State: AOJu0YxMSRDU2x4Rq/vFPP8osl5QL/vjwBd2NjoQ1JmANsweIQIGZPxg 5D8Xsy3ch8qkBSb12MY9GVyJH4cVvVTxuBeCTkfwCe9R3PwZGV/3tcOfFq7ZG+g= X-Gm-Gg: ASbGnctvod8TyNiH+evn1lOCgbdGUkH/DWWeR0T+YzYYKYBtyLSo7LqjcOynASFzOyM igH/lrDCkXUB3gEczWNTNTX3KLdopuG55EDzZDLyGdsq5fkH+rNG8ds8aJ0LbqkSurL6nCwjzu7 vxGUXmKQ5LzmLduK/Lt7wbz4keksqs/C3BYW8IXsdviLhLrpgUlbI7iubTrbe1zUn/jyr5fTi8y mamb8iOzm1s4TzSLj7SW2KltBud7JVwi0Vn0xZNDYjtVvIXkV6wKTXOYPsN63oYTVV5Uq9cZ3s4 AhqTcdfYThDeCadPzMM3//HSF9xHD3r6yYSO3vrXn+YANFC9BxQQcOBIr0g= X-Google-Smtp-Source: AGHT+IFJ2OFI5YZhOfkvAINV6IYwYgC6p9uLZV8JfzIM0FiUVQywYJMpVIcHgAsz7JA/MhP+jO6cBA== X-Received: by 2002:a5d:64c9:0:b0:38d:c2f8:d914 with SMTP id ffacd0b85a97d-39263a0ad68mr1990391f8f.2.1741719767980; Tue, 11 Mar 2025 12:02:47 -0700 (PDT) Received: from [127.0.1.1] ([178.197.198.86]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43ce70d13b4sm127681155e9.38.2025.03.11.12.02.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 12:02:47 -0700 (PDT) From: Krzysztof Kozlowski Date: Tue, 11 Mar 2025 20:02:02 +0100 Subject: [PATCH v4 12/19] drm/msm/dpu: Add handling of LM_6 and LM_7 bits in pending flush mask Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250311-b4-sm8750-display-v4-12-da6b3e959c76@linaro.org> References: <20250311-b4-sm8750-display-v4-0-da6b3e959c76@linaro.org> In-Reply-To: <20250311-b4-sm8750-display-v4-0-da6b3e959c76@linaro.org> To: Abhinav Kumar , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Krishna Manikandan , Jonathan Marek , Kuogee Hsieh , Neil Armstrong , Dmitry Baryshkov , Rob Clark Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , Srini Kandagatla , Rob Clark , Jessica Zhang , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1020; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=HpuEY64L0Fw1OnHLOTzTER9uuArLg4VhJ9JNiMiD75M=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBn0IivLsaIHqQgiO6+2cMYQjRG97Ch6IzMUYSp5 tc7WaSfnJSJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ9CIrwAKCRDBN2bmhouD 1+ZfD/wOIimq9hDJoUuy2MEqzcNyzOAa7I26LtwvTc+khsLz+/gD5VNQWbz9LUMVfnHzTqooqMN pQCui0f0sngHA3D7tmbaqAyKIrfJWQra/RgtxJGsNSkddI6itGQBWylNUVmEjca9qy9odfWtbAY XNz+9CrB6jEl/qmAHo0EFlSzyXvuQmfxmO1nHXyowiP15owVnd9K4spxswS/M7faYeJiq88vJCl 9RDEx3q9s4DybG8/nMWQc6CxLszrvV+u6ym6341aZSvm9zunl9Utcf4foZCA4TFR6yC+k6ZKWcg 4ipfHUqO/PM3XBI/j8fuFqzEZILiad75PRTL3OfUMVbOU0k/leTF64vw0CxgiuGD0ll2qUk7Hw4 wt9lMEFlPvOGZmZXTY2W+3H5mumzdFUCS06KRJmMP9Xgx2d73q5l6R7ZQADmfTBqNaf/0IxjVdZ +lKIJHu2nnWJKN0CSPxkBxTSGZYuBW9fCIWlyhQRgWnXPvipZ//drvScYaPWvJo77aRFAogUEY0 p6+dIR932XvHuhRKQbeOFoQpj3LiUYGahMtIgLJVHbntzTLu0wk4jWE5AacGFQMt2cGr9Umla7A gRtpEtHafBJRUzbqx8KaZg3ZrecmFukKUGLXN9CQ3QrlcGuG1Q5XBHst4vIu8g3TqkIEY/Rxz0A x+w8nXg97bw44pg== X-Developer-Key: i=krzysztof.kozlowski@linaro.org; a=openpgp; fpr=9BD07E0E0C51F8D59677B7541B93437D3B41629B MDSS/MDP v12 comes with new bits in flush registers (e.g. MDP_CTL_0_FLUSH) for Layer Mixer 6 and 7. Reviewed-by: Dmitry Baryshkov Reviewed-by: Jessica Zhang Signed-off-by: Krzysztof Kozlowski --- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c index 2ce59ba50ffa0d14eaa07e993fadf0f218390ef1..3e5e1e09e9d00ade74371489b2b4e50e648e2d16 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c @@ -261,6 +261,12 @@ static void dpu_hw_ctl_update_pending_flush_mixer(struct dpu_hw_ctl *ctx, case LM_5: ctx->pending_flush_mask |= BIT(20); break; + case LM_6: + ctx->pending_flush_mask |= BIT(21); + break; + case LM_7: + ctx->pending_flush_mask |= BIT(27); + break; default: break; } From patchwork Tue Mar 11 19:02:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krzysztof Kozlowski X-Patchwork-Id: 872531 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.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 446DA2676E1 for ; Tue, 11 Mar 2025 19:02:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741719781; cv=none; b=duzEPNxFWAo0+ztYn3YCruyasraQfcTO2fg4JvsIn5s5IsJSVYSMW/IIS8UCqB89zdXIiuYnt9jfVAuhFEq7g/4g06mMPnyz9cPuPmlH2TAlVMq3lsP1epZpLue4iAFPeMUpSB9KBYjOFan0b+eNt9oAGoQbE5nYmGvyE1gN4ss= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741719781; c=relaxed/simple; bh=t8FvxqaJdihHwKxgh0Fs0c4phVeJBvGyAmt1zI323ns=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZyP91VbcB8fp5PIqEvLXq62itSD+7tjXulM7zeykoiAmPhxwGKclQjRJIVjITm6tADcaX1vCzWEPF7v5upa+sts/CzrsAqUvpQI+PLBcXy310Kss8xfm0IKUJS0ZG9Ftnhn7PU0Eci1xr2bCMee0wIb6l2ZxzMJBqmo3WNOPLt0= 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=WFHKFMld; arc=none smtp.client-ip=209.85.221.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="WFHKFMld" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-39123ad8a9fso371434f8f.2 for ; Tue, 11 Mar 2025 12:02:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1741719773; x=1742324573; 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=Zz5W4tPqOXg5ur6hXvNsKe6he2272z++grYgIPJznII=; b=WFHKFMldHXtRHlP7a2XAraSsXZlI4iqPl7ZTnW9weD7X/BTG51+ryzzMfBsMWJsPnk OcElVczIFtUe88pyRaAJuoJhroTJdSDb1YcbHHG+UmVdlWdubfhOGR3oyCzMUlMsgQbz rk0k4I5/6TIsPy+BTmLl8B/z6UBUb4S+Z6+TQ/5H6LNpdpQzyKv6cfGAXe/KbhvH+WBH j3y/HF99S+t895c8Srtw7qL9MfnEGzVPycd+ZNdpmuCLsDMxKxwJOkIhsj42h/CVoRda iB6vbyCZWAID5W8UXuzNFJ85dYn/sqG7nsx6c6RFpSA72adS7S4ZQTqsvJddcEyuNGap 6d/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741719773; x=1742324573; 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=Zz5W4tPqOXg5ur6hXvNsKe6he2272z++grYgIPJznII=; b=jsi1pqwJlRA4vJ6OsnZe50YSyqdQ9+Vuh1UcV86BZvxI3IWfH4WBSKyEkJnad1kzWo Z5tVh/uL6u/uKFfVra14uXfVTvVj10+7U4mimMl2rB2s3TSv7fjpLBUCWLMq9RxbVewF sM5DutosVvZAyeTqO/Tn/L//TCx7l2iKZImC7y6pYwDb8eby6niaiNLUFd/RAX4rNIhY 0cC1963/pDc6pY6MaQtKFO39Td3q+Weo2irxqbrsL720hNhfXmC1vMjzBdID5e50hcyR txrLBX7U9YsVSXThZpTsdeDtmTixGe6ZCCPPFfdFUQbIJwW1F+TvF6WsBZCTLwEHAneW /qUQ== X-Gm-Message-State: AOJu0YwuwveKJz+hkmuQ4l8Zuouhkq5aqgU/z1cun/xjzcJf3ABIrkxK TXlKIELEntmfg6S9+bFSuE9Ipjax+jaECdVSF0dmCdQBQNq5NWYeI0nqbNFVG68= X-Gm-Gg: ASbGncsC/qDIIBB6uPZMYbVsnMbdqKOHiGOPkvUQ/HxyQAqFElHQoh1jlWSP08bipag hNXT5Db/Tcbv3jeI0iTIztMfp5oVm+91WbAB4nqPLSwAs5AUZjBxXg+BCD649EVdzllDnD8ehvq /sE8lZA5hDI2bD1pYk2ffMldXN5o9b1zOGWpU6kyg0Xlox3lipZHN6JAKrIeJRlh4phZYl130UR W3MNFY9kj0vxmRF0dIO8kVSef/vkP5pFhi7pFAjyRSzyMU3T/qfkhJ7sBX+leEM7h0JtpoGFCfK AuhUDaTm0IJhqhGOmGEgbQGqF8CzA0AD93BDIKl75fscL9XL+I/o+6bIu74= X-Google-Smtp-Source: AGHT+IEYTOfAXHVaqG3d/rJObSxctWgIcna5lwKaQevwYo2r3BlABzF/kGHLFq/kKSeuYJyYKx73Tw== X-Received: by 2002:a05:600c:1992:b0:439:9b3f:2dd9 with SMTP id 5b1f17b1804b1-43d01c305cfmr25918045e9.7.1741719773452; Tue, 11 Mar 2025 12:02:53 -0700 (PDT) Received: from [127.0.1.1] ([178.197.198.86]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43ce70d13b4sm127681155e9.38.2025.03.11.12.02.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 12:02:52 -0700 (PDT) From: Krzysztof Kozlowski Date: Tue, 11 Mar 2025 20:02:04 +0100 Subject: [PATCH v4 14/19] drm/msm/dsi: Add support for SM8750 Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250311-b4-sm8750-display-v4-14-da6b3e959c76@linaro.org> References: <20250311-b4-sm8750-display-v4-0-da6b3e959c76@linaro.org> In-Reply-To: <20250311-b4-sm8750-display-v4-0-da6b3e959c76@linaro.org> To: Abhinav Kumar , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Krishna Manikandan , Jonathan Marek , Kuogee Hsieh , Neil Armstrong , Dmitry Baryshkov , Rob Clark Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , Srini Kandagatla , Rob Clark X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=7825; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=t8FvxqaJdihHwKxgh0Fs0c4phVeJBvGyAmt1zI323ns=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBn0Iixn7NwYmY3ZHqvyw5AtyrRe5qhJx/pPyQa8 W+AfV5Q15OJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ9CIsQAKCRDBN2bmhouD 1xdMD/0TvWZnAqPk3TLKjYBeKWDarZcJI9r5CvK1wzeyO87z5ePjxb83CsKckqpybOVNSqmVxYS w+x3Y6nerBHBulfMcq10yfP7BFSMzgzisswbdWqa1Y0N5LBcb/bpBVyoa+Z8mZpwOgJFIO3QuqG /ocuhlXXTJ5J2qoshLUGLZVJcukUkh7kXNQ7SIxHVf5MhIiLzCViFqQhuYZSRs90QCLsiEyDq9G 37HPVkt2jCfEzsmn2tjdd+A2eWwoB0NjtZE2LCXVYtuXMXVaRZC3joqD/mYOWckE/wE+ujAEFTR UXHP0VwW2iLxHT+qB1SsewrnDMJByaLfKdlOLSvFROUl6T3x+VP+QXGxevsnar61v51CPM+T5JC GZkfSO0UnzjuyIQ5duogostBm1n3Mswd+AIY3vXPmw2czwAJy49LaJxSIOxoMpc/nVoVs/ug2fL bZCufyJL/w1kKY/jw8RnTg/jBZDX68cA74/lo4F8mPMUCigwUIgyrOgG3Y9o5mAOJSfnT4rdZXy qh1l1tf3Ct/r+y40U3Im89J2gk+yDPNcgfOE9BIW3uOm1npd7DSieX4gRnHllCksEqWjBE9Vixk ZPJ0pgF+pY3Ulj9OLGx0VCxR7m+AG+rbO8xVQQZpj4KwMxwcR5EINxLobRWQP7cSyHWIRaDbqqY lGoc1ojDfoMoVgQ== X-Developer-Key: i=krzysztof.kozlowski@linaro.org; a=openpgp; fpr=9BD07E0E0C51F8D59677B7541B93437D3B41629B Add support for DSI on Qualcomm SM8750 SoC with notable difference: DSI PHY PLLs, the parents of pixel and byte clocks, cannot be used as parents before DSI PHY is configured and the PLLs are prepared with initial rate is set. Therefore assigned-clock-parents are not working here and driver is responsible for reparenting clocks with proper procedure: see dsi_clk_init_6g_v2_9(). Part of the change is exactly the same as CLK_OPS_PARENT_ENABLE, however CLK_OPS_PARENT_ENABLE won't work here because assigned-clock-parents are executed way too early - before DSI PHY is configured. Signed-off-by: Krzysztof Kozlowski --- Changes in v3: 1. Drop 'struct msm_dsi_config sm8750_dsi_cfg' and use sm8650 one. SM8750 DSI PHY also needs Dmitry's patch: https://patchwork.freedesktop.org/patch/542000/?series=119177&rev=1 (or some other way of correct early setting of the DSI PHY PLL rate) --- drivers/gpu/drm/msm/dsi/dsi.h | 2 + drivers/gpu/drm/msm/dsi/dsi_cfg.c | 14 +++++++ drivers/gpu/drm/msm/dsi/dsi_cfg.h | 1 + drivers/gpu/drm/msm/dsi/dsi_host.c | 80 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 97 insertions(+) diff --git a/drivers/gpu/drm/msm/dsi/dsi.h b/drivers/gpu/drm/msm/dsi/dsi.h index 87496db203d6c7582eadcb74e94eb56a219df292..93c028a122f3a59b1632da76472e0a3e781c6ae8 100644 --- a/drivers/gpu/drm/msm/dsi/dsi.h +++ b/drivers/gpu/drm/msm/dsi/dsi.h @@ -98,6 +98,7 @@ int msm_dsi_host_init(struct msm_dsi *msm_dsi); int msm_dsi_runtime_suspend(struct device *dev); int msm_dsi_runtime_resume(struct device *dev); int dsi_link_clk_set_rate_6g(struct msm_dsi_host *msm_host); +int dsi_link_clk_set_rate_6g_v2_9(struct msm_dsi_host *msm_host); int dsi_link_clk_set_rate_v2(struct msm_dsi_host *msm_host); int dsi_link_clk_enable_6g(struct msm_dsi_host *msm_host); int dsi_link_clk_enable_v2(struct msm_dsi_host *msm_host); @@ -115,6 +116,7 @@ int dsi_dma_base_get_6g(struct msm_dsi_host *msm_host, uint64_t *iova); int dsi_dma_base_get_v2(struct msm_dsi_host *msm_host, uint64_t *iova); int dsi_clk_init_v2(struct msm_dsi_host *msm_host); int dsi_clk_init_6g_v2(struct msm_dsi_host *msm_host); +int dsi_clk_init_6g_v2_9(struct msm_dsi_host *msm_host); int dsi_calc_clk_rate_v2(struct msm_dsi_host *msm_host, bool is_bonded_dsi); int dsi_calc_clk_rate_6g(struct msm_dsi_host *msm_host, bool is_bonded_dsi); void msm_dsi_host_snapshot(struct msm_disp_state *disp_state, struct mipi_dsi_host *host); diff --git a/drivers/gpu/drm/msm/dsi/dsi_cfg.c b/drivers/gpu/drm/msm/dsi/dsi_cfg.c index 7754dcec33d06e3d6eb8a9d55e53f24af073adb9..7f8a8de0897a579a525b466fd01bbcd95454c614 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_cfg.c +++ b/drivers/gpu/drm/msm/dsi/dsi_cfg.c @@ -257,6 +257,18 @@ static const struct msm_dsi_host_cfg_ops msm_dsi_6g_v2_host_ops = { .calc_clk_rate = dsi_calc_clk_rate_6g, }; +static const struct msm_dsi_host_cfg_ops msm_dsi_6g_v2_9_host_ops = { + .link_clk_set_rate = dsi_link_clk_set_rate_6g_v2_9, + .link_clk_enable = dsi_link_clk_enable_6g, + .link_clk_disable = dsi_link_clk_disable_6g, + .clk_init_ver = dsi_clk_init_6g_v2_9, + .tx_buf_alloc = dsi_tx_buf_alloc_6g, + .tx_buf_get = dsi_tx_buf_get_6g, + .tx_buf_put = dsi_tx_buf_put_6g, + .dma_base_get = dsi_dma_base_get_6g, + .calc_clk_rate = dsi_calc_clk_rate_6g, +}; + static const struct msm_dsi_cfg_handler dsi_cfg_handlers[] = { {MSM_DSI_VER_MAJOR_V2, MSM_DSI_V2_VER_MINOR_8064, &apq8064_dsi_cfg, &msm_dsi_v2_host_ops}, @@ -300,6 +312,8 @@ static const struct msm_dsi_cfg_handler dsi_cfg_handlers[] = { &sm8550_dsi_cfg, &msm_dsi_6g_v2_host_ops}, {MSM_DSI_VER_MAJOR_6G, MSM_DSI_6G_VER_MINOR_V2_8_0, &sm8650_dsi_cfg, &msm_dsi_6g_v2_host_ops}, + {MSM_DSI_VER_MAJOR_6G, MSM_DSI_6G_VER_MINOR_V2_9_0, + &sm8650_dsi_cfg, &msm_dsi_6g_v2_9_host_ops}, }; const struct msm_dsi_cfg_handler *msm_dsi_cfg_get(u32 major, u32 minor) diff --git a/drivers/gpu/drm/msm/dsi/dsi_cfg.h b/drivers/gpu/drm/msm/dsi/dsi_cfg.h index 120cb65164c1ba1deb9acb513e5f073bd560c496..859c279afbb0377d16f8406f3e6b083640aff5a1 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_cfg.h +++ b/drivers/gpu/drm/msm/dsi/dsi_cfg.h @@ -30,6 +30,7 @@ #define MSM_DSI_6G_VER_MINOR_V2_6_0 0x20060000 #define MSM_DSI_6G_VER_MINOR_V2_7_0 0x20070000 #define MSM_DSI_6G_VER_MINOR_V2_8_0 0x20080000 +#define MSM_DSI_6G_VER_MINOR_V2_9_0 0x20090000 #define MSM_DSI_V2_VER_MINOR_8064 0x0 diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c index 4d75529c0e858160761f5eb55db65e5d7565c27b..8ebcfd307779b8dfd35c64d3fea34123a5d0751b 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_host.c +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c @@ -119,6 +119,15 @@ struct msm_dsi_host { struct clk *pixel_clk; struct clk *byte_intf_clk; + /* + * Clocks which needs to be properly parented between DISPCC and DSI PHY + * PLL: + */ + struct clk *byte_src_clk; + struct clk *pixel_src_clk; + struct clk *dsi_pll_byte_clk; + struct clk *dsi_pll_pixel_clk; + unsigned long byte_clk_rate; unsigned long byte_intf_clk_rate; unsigned long pixel_clk_rate; @@ -269,6 +278,38 @@ int dsi_clk_init_6g_v2(struct msm_dsi_host *msm_host) return ret; } +int dsi_clk_init_6g_v2_9(struct msm_dsi_host *msm_host) +{ + struct device *dev = &msm_host->pdev->dev; + int ret; + + ret = dsi_clk_init_6g_v2(msm_host); + if (ret) + return ret; + + msm_host->byte_src_clk = devm_clk_get(dev, "byte_src"); + if (IS_ERR(msm_host->byte_src_clk)) + return dev_err_probe(dev, PTR_ERR(msm_host->byte_src_clk), + "can't get byte_src clock\n"); + + msm_host->dsi_pll_byte_clk = devm_clk_get(dev, "dsi_pll_byte"); + if (IS_ERR(msm_host->dsi_pll_byte_clk)) + return dev_err_probe(dev, PTR_ERR(msm_host->dsi_pll_byte_clk), + "can't get dsi_pll_byte clock\n"); + + msm_host->pixel_src_clk = devm_clk_get(dev, "pixel_src"); + if (IS_ERR(msm_host->pixel_src_clk)) + return dev_err_probe(dev, PTR_ERR(msm_host->pixel_src_clk), + "can't get pixel_src clock\n"); + + msm_host->dsi_pll_pixel_clk = devm_clk_get(dev, "dsi_pll_pixel"); + if (IS_ERR(msm_host->dsi_pll_pixel_clk)) + return dev_err_probe(dev, PTR_ERR(msm_host->dsi_pll_pixel_clk), + "can't get dsi_pll_pixel clock\n"); + + return 0; +} + static int dsi_clk_init(struct msm_dsi_host *msm_host) { struct platform_device *pdev = msm_host->pdev; @@ -370,6 +411,45 @@ int dsi_link_clk_set_rate_6g(struct msm_dsi_host *msm_host) return 0; } +int dsi_link_clk_set_rate_6g_v2_9(struct msm_dsi_host *msm_host) +{ + struct device *dev = &msm_host->pdev->dev; + int ret; + + /* + * DSI PHY PLLs have to be enabled to allow reparenting to them and + * setting the rates of pixel/byte clocks. + */ + ret = clk_prepare_enable(msm_host->dsi_pll_byte_clk); + if (ret) { + dev_err(dev, "Failed to enable dsi_pll_byte: %d\n", ret); + return ret; + } + + ret = clk_prepare_enable(msm_host->dsi_pll_pixel_clk); + if (ret) { + dev_err(dev, "Failed to enable dsi_pll_byte: %d\n", ret); + goto out_disable_byte_clk; + } + + ret = clk_set_parent(msm_host->byte_src_clk, msm_host->dsi_pll_byte_clk); + if (ret) + dev_err(dev, "Failed to parent byte_src -> dsi_pll_byte: %d\n", ret); + + ret = clk_set_parent(msm_host->pixel_src_clk, msm_host->dsi_pll_pixel_clk); + if (ret) + dev_err(dev, "Failed to parent pixel_src -> dsi_pll_pixel: %d\n", ret); + + ret = dsi_link_clk_set_rate_6g(msm_host); + + clk_disable_unprepare(msm_host->dsi_pll_pixel_clk); + +out_disable_byte_clk: + clk_disable_unprepare(msm_host->dsi_pll_byte_clk); + + return ret; +} + int dsi_link_clk_enable_6g(struct msm_dsi_host *msm_host) { int ret; From patchwork Tue Mar 11 19:02:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krzysztof Kozlowski X-Patchwork-Id: 872530 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.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 605E52676EB for ; Tue, 11 Mar 2025 19:03:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741719782; cv=none; b=DiwrOs+G/MPZQHbCwf7K+piPYSnot1I/CXoa7dfZ4KI5DWYUkzcUSeey2Pbq5gMPdcPxK8RhB/rTl/YrnMkRh+5bunca7uQWLpmo895nf8UhqlU/TykXyJ3+9Q1O4mNbUS1lvWaoXSFSvZ6rqfjjrHpSdh0+oAxZDD+nMhyfN0A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741719782; c=relaxed/simple; bh=UcKkS3k0jvSD/ddvvevhlsuwSmEdXbmmiDyEA0164wE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=un+P9OlWQVpyJOiVyU9m5ChkTckGZjdNn/RrJvt0ruffwddRbD6PZdlhkbVL6212agtqLh213WTJa5esN+joyXG9LDdKes35FNkLO4QMeABn8oiPm9qvK5Z/g1kvumwz1QrhJLf18ZWavExlS7MoByTg7ffzJ3kIFCCKnMfwnMs= 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=DuHJBTJm; arc=none smtp.client-ip=209.85.221.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="DuHJBTJm" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-391295490c8so351802f8f.3 for ; Tue, 11 Mar 2025 12:03:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1741719779; x=1742324579; 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=C+hRVJbIr8TPiCBY2fZdOw7v3FZEOYNL1tXsuzKYPNM=; b=DuHJBTJmDTLbWpuSZ8f3p4qyhON/E4M6YF4pxkoPOBmRf0pxO2KEbSLFzeGNsXuANs AuYTpxGq1OTQdg9cbX3EQH4M8fYdD4PPfAruzlv6G8CrBK7DulT0bG472wkGZ8vZKLm7 W8QuG5D1NG4N+j9tUkTWXhcvgzgUKZd4veuv2Zwx/l4Xg/utq5V6HfbApQTsi1hBg6Hs jg7rUVsYPZe9vsSjd2fDNP6PjaIAsbTnS8HwlsgtWw6pQuuWwrlIY/t+pD4LVVKvalyA eSsxeQwgDfrWkJ72nTZ48x8DlyQWBaI+IiZHZsZ4quukRXjew9FsUxdenBSLMWfUOjzd fT/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741719779; x=1742324579; 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=C+hRVJbIr8TPiCBY2fZdOw7v3FZEOYNL1tXsuzKYPNM=; b=dSQtKL9Zv4i0PXETqzuUKcSHMbtaJ0R1nUPTpiBeNrpIhoUHwcixz4wae8BnNzUBK1 lvhsV0bzzpit2QjMw4icGO2GjA3FqLa7h+YqFr2eQzdrRMQ/6xCO4L16hgEwfoSGFlqh 8omzZYDicYgGfYFP8BFCzM5+5HVTiFJbJgnBmfG06kzFTeFiGg9xxEUXcT4rIf3+Q5b6 BS6l+ZvFCbk8TgJBxkbMDbcEimLfbqmh5JoWeMJFQBsIYLATPGsDohwLYh2qXS2E2F75 HxwMx9AN2sP8MhJ86vXisxGUKOgy+rf/q8XA3YpbGxSCtLIrT4ki1oj2tAvgddOrbAEx Fx/A== X-Gm-Message-State: AOJu0YwbdMRP7HqLzUCIjROTzQjgTN7zUa0OIp6vSuThZkzOxreBVP7c 4HSpYcsXDpnfi3glDWAhptJzmvRxTS/SZIbXjJmQBa6uXVoZmQ+44Nh0Q37nyHvvkfv3m7zERiP G X-Gm-Gg: ASbGncvHBt8rzd7KdldaLgjl7RfH8WLFOfA3obTJh4Fiqf2KQeIKN78v5C1H2HM43zd jFgTecf4mnAdk+n3IgxqTR0kReK1/n5GKSvc3cs55EH0dM1w+ssHrEi8pphgmNrTlGkh64wknKM /EIOAc+NpYUh1erMY0reVZ1m0Zu5In8Ul3hu6LkTTrTuyps2ghodHqyLOTgUDINcOuVtR5QfMl4 g2wudRy9PsFMNInbd79gGweRZdJ3Vn/ExtBkBGAFDIt6U7tPjOkhJ9wOvAr1D7PoCBOdfb0wxmB EoJLUX6gyhXOHfmthrT1D97FTpgGdYTatK81xk9aIoDPgiF+iNeYJyjIjbiEkwGHlqCfnQ== X-Google-Smtp-Source: AGHT+IEkWpg1HaeDpZaYYUXbUvhlQ/Q197STG+56q4hfvBeFJYVihpapfAvsoij3kVZySLWxB6HaDA== X-Received: by 2002:a05:600c:1992:b0:439:9b3f:2dd9 with SMTP id 5b1f17b1804b1-43d01c305cfmr25919725e9.7.1741719778714; Tue, 11 Mar 2025 12:02:58 -0700 (PDT) Received: from [127.0.1.1] ([178.197.198.86]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43ce70d13b4sm127681155e9.38.2025.03.11.12.02.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 12:02:58 -0700 (PDT) From: Krzysztof Kozlowski Date: Tue, 11 Mar 2025 20:02:06 +0100 Subject: [PATCH v4 16/19] drm/msm/dpu: Implement 10-bit color alpha for v12.0 DPU Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250311-b4-sm8750-display-v4-16-da6b3e959c76@linaro.org> References: <20250311-b4-sm8750-display-v4-0-da6b3e959c76@linaro.org> In-Reply-To: <20250311-b4-sm8750-display-v4-0-da6b3e959c76@linaro.org> To: Abhinav Kumar , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Krishna Manikandan , Jonathan Marek , Kuogee Hsieh , Neil Armstrong , Dmitry Baryshkov , Rob Clark Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , Srini Kandagatla , Rob Clark X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=7581; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=UcKkS3k0jvSD/ddvvevhlsuwSmEdXbmmiDyEA0164wE=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBn0IizMrGmQ3fBIyUnEoidCzxF4Lu69NZ+BMWxH So3ippAHDGJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ9CIswAKCRDBN2bmhouD 1wPyD/sFIt/IFNTiwrzXycWl+SgUzHR9Lt+OtkLz76XBSUPh46Px1JUnqg/YwnIo+ObT+zCiep/ Z+AbpRsu64r42NiETP+TVlo7s/cQ+KSB7qX7iVQfF47VdvDgkIGkjuHWfCozduefbz8TdkzA+7e wvDAH2WI6BFrsrMz52NWeyBStWP2vVQQahorOUfnl88hpsQLWTU+4SW3dsKWpi5Ax15ctL6zd60 I7rNE2bXXubZI+sLpKSxs6SqwN9+wAoLwDfOTmNjdfm3VEWrbmTru7yLOwtfO990AKqJMfgy7P8 ykFmWl2omK0gk8d2yVYrd4/Zhzc0XbgrNGn08oJqmaa+MJryCvv39sz5uTpZCqCS6CIlzOaZF1q qMseZTx96pQRnx21wkxwCUV4Ms9oOA5rZ/Ph2ldWNi6ltSGLwvC16bPOWID4iLGFvMEAY428pKa 7OOwdkOvTbnpzSAY6v4Rib1GkW/pk+knIauRWgynNXv+2cL1PaM9m+OIDXCtVL4bXW5abWK1Aw0 0yaYHN21hfym8eTwGfhVpUPd0LMuRLLL5TYgHEP+Y57W2UGvWjkehC2T1Ey0s/VzH6ipFf5lDDc OCYTSOVOCLKMvObShD8NTobFnXlgFQqep0GJCT/7nfSyehgHoVXY7injpXifVigAGEbfANdVjUB VQJAQT5+jhs/RpQ== X-Developer-Key: i=krzysztof.kozlowski@linaro.org; a=openpgp; fpr=9BD07E0E0C51F8D59677B7541B93437D3B41629B v12.0 DPU on SM8750 comes with 10-bit color alpha. Add register differences and new implementations of setup_alpha_out, setup_border_color and so one for this. Signed-off-by: Krzysztof Kozlowski --- Changes in v4: 1. Lowercase hex, use spaces for define indentation 2. _dpu_crtc_setup_blend_cfg(): pass mdss_ver instead of ctl Changes in v3: 1. New patch, split from previous big DPU v12.0. --- drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 19 ++++--- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c | 84 +++++++++++++++++++++++++++++-- 2 files changed, 94 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c index a4b0fe0d9899b32141928f0b6a16503a49b3c27a..90f47fc15ee5708795701d78a1380f4ab01c1427 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c @@ -320,14 +320,20 @@ static bool dpu_crtc_get_scanout_position(struct drm_crtc *crtc, } static void _dpu_crtc_setup_blend_cfg(struct dpu_crtc_mixer *mixer, - struct dpu_plane_state *pstate, const struct msm_format *format) + struct dpu_plane_state *pstate, + const struct msm_format *format, + const struct dpu_mdss_version *mdss_ver) { struct dpu_hw_mixer *lm = mixer->hw_lm; uint32_t blend_op; - uint32_t fg_alpha, bg_alpha; + uint32_t fg_alpha, bg_alpha, max_alpha; fg_alpha = pstate->base.alpha >> 8; - bg_alpha = 0xff - fg_alpha; + if (mdss_ver->core_major_ver < 12) + max_alpha = 0xff; + else + max_alpha = 0x3ff; + bg_alpha = max_alpha - fg_alpha; /* default to opaque blending */ if (pstate->base.pixel_blend_mode == DRM_MODE_BLEND_PIXEL_NONE || @@ -337,7 +343,7 @@ static void _dpu_crtc_setup_blend_cfg(struct dpu_crtc_mixer *mixer, } else if (pstate->base.pixel_blend_mode == DRM_MODE_BLEND_PREMULTI) { blend_op = DPU_BLEND_FG_ALPHA_FG_CONST | DPU_BLEND_BG_ALPHA_FG_PIXEL; - if (fg_alpha != 0xff) { + if (fg_alpha != max_alpha) { bg_alpha = fg_alpha; blend_op |= DPU_BLEND_BG_MOD_ALPHA | DPU_BLEND_BG_INV_MOD_ALPHA; @@ -348,7 +354,7 @@ static void _dpu_crtc_setup_blend_cfg(struct dpu_crtc_mixer *mixer, /* coverage blending */ blend_op = DPU_BLEND_FG_ALPHA_FG_PIXEL | DPU_BLEND_BG_ALPHA_FG_PIXEL; - if (fg_alpha != 0xff) { + if (fg_alpha != max_alpha) { bg_alpha = fg_alpha; blend_op |= DPU_BLEND_FG_MOD_ALPHA | DPU_BLEND_FG_INV_MOD_ALPHA | @@ -482,7 +488,8 @@ static void _dpu_crtc_blend_setup_mixer(struct drm_crtc *crtc, /* blend config update */ for (lm_idx = 0; lm_idx < cstate->num_mixers; lm_idx++) { - _dpu_crtc_setup_blend_cfg(mixer + lm_idx, pstate, format); + _dpu_crtc_setup_blend_cfg(mixer + lm_idx, pstate, format, + ctl->mdss_ver); if (bg_alpha_enable && !format->alpha_enable) mixer[lm_idx].mixer_op_mode = 0; diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c index 3bfb61cb83672dca4236bdbbbfb1e442223576d2..f220a68e138cb9e7c88194e53e47391de7ed04f7 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c @@ -19,12 +19,20 @@ /* These register are offset to mixer base + stage base */ #define LM_BLEND0_OP 0x00 + +/* = v12 DPU */ +#define LM_BORDER_COLOR_0_V12 0x1c +#define LM_BORDER_COLOR_1_V12 0x20 + +/* >= v12 DPU with offset to mixer base + stage base */ +#define LM_BLEND0_CONST_ALPHA_V12 0x08 #define LM_BLEND0_FG_ALPHA 0x04 #define LM_BLEND0_BG_ALPHA 0x08 @@ -83,6 +91,22 @@ static void dpu_hw_lm_setup_border_color(struct dpu_hw_mixer *ctx, } } +static void dpu_hw_lm_setup_border_color_v12(struct dpu_hw_mixer *ctx, + struct dpu_mdss_color *color, + u8 border_en) +{ + struct dpu_hw_blk_reg_map *c = &ctx->hw; + + if (border_en) { + DPU_REG_WRITE(c, LM_BORDER_COLOR_0_V12, + (color->color_0 & 0x3ff) | + ((color->color_1 & 0x3ff) << 16)); + DPU_REG_WRITE(c, LM_BORDER_COLOR_1_V12, + (color->color_2 & 0x3ff) | + ((color->color_3 & 0x3ff) << 16)); + } +} + static void dpu_hw_lm_setup_misr(struct dpu_hw_mixer *ctx) { dpu_hw_setup_misr(&ctx->hw, LM_MISR_CTRL, 0x0); @@ -112,6 +136,27 @@ static void dpu_hw_lm_setup_blend_config_combined_alpha(struct dpu_hw_mixer *ctx DPU_REG_WRITE(c, LM_BLEND0_OP + stage_off, blend_op); } +static void +dpu_hw_lm_setup_blend_config_combined_alpha_v12(struct dpu_hw_mixer *ctx, + u32 stage, u32 fg_alpha, + u32 bg_alpha, u32 blend_op) +{ + struct dpu_hw_blk_reg_map *c = &ctx->hw; + int stage_off; + u32 const_alpha; + + if (stage == DPU_STAGE_BASE) + return; + + stage_off = _stage_offset(ctx, stage); + if (WARN_ON(stage_off < 0)) + return; + + const_alpha = (bg_alpha & 0x3ff) | ((fg_alpha & 0x3ff) << 16); + DPU_REG_WRITE(c, LM_BLEND0_CONST_ALPHA_V12 + stage_off, const_alpha); + DPU_REG_WRITE(c, LM_BLEND0_OP + stage_off, blend_op); +} + static void dpu_hw_lm_setup_blend_config(struct dpu_hw_mixer *ctx, u32 stage, u32 fg_alpha, u32 bg_alpha, u32 blend_op) { @@ -144,6 +189,32 @@ static void dpu_hw_lm_setup_color3(struct dpu_hw_mixer *ctx, DPU_REG_WRITE(c, LM_OP_MODE, op_mode); } +static void dpu_hw_lm_setup_color3_v12(struct dpu_hw_mixer *ctx, + uint32_t mixer_op_mode) +{ + struct dpu_hw_blk_reg_map *c = &ctx->hw; + int op_mode, stages, stage_off, i; + + stages = ctx->cap->sblk->maxblendstages; + if (stages <= 0) + return; + + for (i = DPU_STAGE_0; i <= stages; i++) { + stage_off = _stage_offset(ctx, i); + if (WARN_ON(stage_off < 0)) + return; + + /* set color_out3 bit in blend0_op when enabled in mixer_op_mode */ + op_mode = DPU_REG_READ(c, LM_BLEND0_OP + stage_off); + if (mixer_op_mode & BIT(i)) + op_mode |= BIT(30); + else + op_mode &= ~BIT(30); + + DPU_REG_WRITE(c, LM_BLEND0_OP + stage_off, op_mode); + } +} + /** * dpu_hw_lm_init() - Initializes the mixer hw driver object. * should be called once before accessing every mixer. @@ -175,12 +246,19 @@ struct dpu_hw_mixer *dpu_hw_lm_init(struct drm_device *dev, c->idx = cfg->id; c->cap = cfg; c->ops.setup_mixer_out = dpu_hw_lm_setup_out; - if (mdss_ver->core_major_ver >= 4) + if (mdss_ver->core_major_ver >= 12) + c->ops.setup_blend_config = dpu_hw_lm_setup_blend_config_combined_alpha_v12; + else if (mdss_ver->core_major_ver >= 4) c->ops.setup_blend_config = dpu_hw_lm_setup_blend_config_combined_alpha; else c->ops.setup_blend_config = dpu_hw_lm_setup_blend_config; - c->ops.setup_alpha_out = dpu_hw_lm_setup_color3; - c->ops.setup_border_color = dpu_hw_lm_setup_border_color; + if (mdss_ver->core_major_ver < 12) { + c->ops.setup_alpha_out = dpu_hw_lm_setup_color3; + c->ops.setup_border_color = dpu_hw_lm_setup_border_color; + } else { + c->ops.setup_alpha_out = dpu_hw_lm_setup_color3_v12; + c->ops.setup_border_color = dpu_hw_lm_setup_border_color_v12; + } c->ops.setup_misr = dpu_hw_lm_setup_misr; c->ops.collect_misr = dpu_hw_lm_collect_misr; From patchwork Tue Mar 11 19:02:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krzysztof Kozlowski X-Patchwork-Id: 872529 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (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 B891A264A73 for ; Tue, 11 Mar 2025 19:03:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741719797; cv=none; b=CwXDwdQonxvke6T+UVw4SR9ROvriddQNI1nBdFmV6nVmNEsiXcTroTWpnQiPLSk3+REiUOiy04sL4cND4ZUwfTSxyZBF+hCDLWsQTS2EJjjTubFn8+VFGoUkQRm/l0UpGOXLyzGlh30qLArllwaesd/EZSLKt+wnZ+G3pxwL9iA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741719797; c=relaxed/simple; bh=SD2JyE0QRUx56PslwbSvyQKB/RqZbFGZJKcI2I/13Sc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=u45eyDEYAPfMKBjli0rlm8bc0kyTN4/t3QMm8s0qQIVRQWoChZjlJvcF0+nTsv//B6oOQtOakJOIzcc1gGcgevoiIG2yHWDrlEcorC562LYsjIIgBOlHfAEB0+EXKQkrHB/fDtiiB8R5tg/3q41nt1m2hYNry8Mv+iVhPsTXJE0= 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=jgdWFZRF; arc=none smtp.client-ip=209.85.128.45 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="jgdWFZRF" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-43ba8bbeae2so7240725e9.0 for ; Tue, 11 Mar 2025 12:03:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1741719794; x=1742324594; 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=vGFulmWC8fTtVPrnGh1aVFk4wyMBXdizk3BseH19Ylw=; b=jgdWFZRFazTHj+qQOewDhQ3J7TWyJNPpkxNlFJllScbOUhYQvCWGPOWI03mXS8e6oM hmKtI2c+t2ap1sl+hKVIzhKxga7s1Af3J9O2wuNCFP9K//k7l3SItgZBv/O0hsL/Mgid yS2s/Szn++m93F4Lxc0Cw5LPP0D56a44kGwePjQjkIjpa2ADmLTNihpW0XeDY9KgiVbv 7WeUNJ1603Z25jTLFwTC6ycJKGFKM6TPVwRxojMMAwFlDWGKMj/fdxRUyV8jKBMH488s ac/mE5XV1lSSed7tGNveCKJWilWJhRnbGVY473zkEyyqV33xf4T2TUmrYo4r8lSVxSff yHfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741719794; x=1742324594; 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=vGFulmWC8fTtVPrnGh1aVFk4wyMBXdizk3BseH19Ylw=; b=vxgdJij1ac25KezfiUHnOit8aAmiBImxdhMTnmwrquX+VZ3DvwPcrlQtGFvXlRtLcb VE1fIT51XQfcgDVp7SYKl4/NMWW6cIIuCSRu6282+nO4/BRtFYg5vIiAjB2lje2g3FkT TxEgr1ZICMejXQsX1iogbqPWGdzbqjVei3U6xE8GtY0rDX4Mtin+Sno4V6aSq5x9WajN ObH53Z4IiYlXVpKleJpeKq3nnluFkGqNbPpO3eJBbOsWE6PkzODj9eBaWLzxN4a1i4JI xOVPfOYHrLUCJSR8KbYFLDO+3nDZQn3P0xlfJHMvcYzYxBql9g630AB3Sp2cSarUM8sx oHeA== X-Gm-Message-State: AOJu0YyyVmqEPdDiERCjLa70VYjS52LrgdR73HBfirMmJt3AMfXRE4AY tYfVrs1hZVASEds+oY7LgOIziiQsbiR8cgN8kD0XnCyyntusAFRn/cOsFTRMZ2E= X-Gm-Gg: ASbGnctu7cwexm7P6UU7jT/Fcz3bdalasq7vpBAOi5olGTixOvCioYr+nMdl3IDyGzc bdbZkpxbHTxR0pKskHNzYwCQ3ocCXobYP01KpclObbmBdTYP3A/2IOD0T7j7JP3kHVt160Tknqg bN/qNTC5q+7sMw3qb1kTgQBTE8hUhsgYjd/2PocmhdCwcVorQqHpmCXKnMEV43MXoTL21euWKth Z2ALay7kqPbQMDst/mWIugM6nlP4/O+iiQ177KkHBGJzci9tDsoBIi5r2SOKIXkLBEHe5zP+Raz 64f7MRb6/jbBSDYeVSgjyvQdzQw6YqyYlmT5GexNkLjfpTzPcuUH0YGAb2Y= X-Google-Smtp-Source: AGHT+IG2Htywwl1IJqee5vmqdJ0Dd1kgRrP4ZizmNtuaPlnzpjKD6NAHmd6fAnnPyQp6E5rHfJY4jA== X-Received: by 2002:a05:600c:1c9a:b0:43b:c228:1ee0 with SMTP id 5b1f17b1804b1-43d01c2abc9mr25983725e9.7.1741719794024; Tue, 11 Mar 2025 12:03:14 -0700 (PDT) Received: from [127.0.1.1] ([178.197.198.86]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43ce70d13b4sm127681155e9.38.2025.03.11.12.03.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Mar 2025 12:03:12 -0700 (PDT) From: Krzysztof Kozlowski Date: Tue, 11 Mar 2025 20:02:08 +0100 Subject: [PATCH v4 18/19] drm/msm/dpu: Implement LM crossbar for v12.0 DPU Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250311-b4-sm8750-display-v4-18-da6b3e959c76@linaro.org> References: <20250311-b4-sm8750-display-v4-0-da6b3e959c76@linaro.org> In-Reply-To: <20250311-b4-sm8750-display-v4-0-da6b3e959c76@linaro.org> To: Abhinav Kumar , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Krishna Manikandan , Jonathan Marek , Kuogee Hsieh , Neil Armstrong , Dmitry Baryshkov , Rob Clark Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Krzysztof Kozlowski , Srini Kandagatla , Rob Clark , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=12897; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=SD2JyE0QRUx56PslwbSvyQKB/RqZbFGZJKcI2I/13Sc=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBn0Ii0uxU8poYX7r0brj35bgBL8Bj0uNS3R3OGX eTAiQQpg1yJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCZ9CItAAKCRDBN2bmhouD 1+aRD/0SIaulGqCbiKdUMHfa52SjbkvR3EzuN9em+G/5n518MFOozgkeYPL/OqsPLRtt2yRRPlZ iSj03pP2fT24dq1fvxAheotvpu+dYrsaC/f6y/Gp+gkphDuDQh8nUjc3+xZ/Dvq0AWrGJdXIEYg QuVWTwp6JCABMChnplxg6n5UYdcMnVCkNkjvwPIOHLWGisVn1g4YUyjEkgDVm2vh5pD6vo9FuVg OhpDcubjVqn6IhNGzzvyJH59b0mXdFNrDImXJIAnlkiaY2YkovA3/5L6Q11oyCU01ZkM4QhvwK3 +W6lxPGwaz9rwCtNAbe6qxCxpA09Sw9+829JFGUo597MGcDwKc1GlokkTahQ0ListKIn8fCBg6n dF9ovkiUFPrOWGyAw7UltZGYXLA9YvsncOFjW8QJfV4nzLZuBKMecvHfgLueG1/M0cDDe4T1ovr z1CI4M/27G/pOxR/akOBH0w+3D94yGrVawyxfUrcrSpGL4SyhisPLR7Ht4olcKMUh8IhAv3H3xo kADcIovMugoXXESle0Yj6wk5kgh9T3a2nLXnS3QT++1M5TosJDI0/+VNRSnjptZ/bZccDVwBF83 na1OuAJYZah0Ik2WhM0RUbA7dcb5npXgBxeZkau6mBxLV7LvBS7Kjh2HgIAyLzDwyPNszuyLXnc gv5CsFZ/uKT/29A== X-Developer-Key: i=krzysztof.kozlowski@linaro.org; a=openpgp; fpr=9BD07E0E0C51F8D59677B7541B93437D3B41629B v12.0 DPU on SM8750 comes with new LM crossbar that requires each pipe rectangle to be programmed separately in blend stage. Implement support for this along with a new CTL_LAYER_ACTIVE register and setting the blend stage in layer mixer code. Reviewed-by: Dmitry Baryshkov Signed-off-by: Krzysztof Kozlowski --- Changes in v4: 1. Lowercase hex 2. Add Dmitry's tag Changes in v3: 1. New patch, split from previous big DPU v12.0. --- drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 18 +++- drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 6 ++ drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c | 27 +++++- drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h | 9 ++ drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c | 126 ++++++++++++++++++++++++++++ drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h | 18 ++++ 6 files changed, 201 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c index 3135e5ab9e8121f3dbd93dde9458f007ae45392a..bde87533b4b39ac99998740f7ec6cc59ea96e705 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c @@ -524,6 +524,7 @@ static void _dpu_crtc_blend_setup(struct drm_crtc *crtc) struct dpu_hw_ctl *ctl; struct dpu_hw_mixer *lm; struct dpu_hw_stage_cfg stage_cfg; + DECLARE_BITMAP(active_lms, LM_MAX); int i; DRM_DEBUG_ATOMIC("%s\n", dpu_crtc->name); @@ -537,10 +538,14 @@ static void _dpu_crtc_blend_setup(struct drm_crtc *crtc) mixer[i].lm_ctl->ops.set_active_fetch_pipes(mixer[i].lm_ctl, NULL); if (mixer[i].lm_ctl->ops.set_active_pipes) mixer[i].lm_ctl->ops.set_active_pipes(mixer[i].lm_ctl, NULL); + + if (mixer[i].hw_lm->ops.clear_all_blendstages) + mixer[i].hw_lm->ops.clear_all_blendstages(mixer[i].hw_lm); } /* initialize stage cfg */ memset(&stage_cfg, 0, sizeof(struct dpu_hw_stage_cfg)); + memset(active_lms, 0, sizeof(active_lms)); _dpu_crtc_blend_setup_mixer(crtc, dpu_crtc, mixer, &stage_cfg); @@ -554,13 +559,22 @@ static void _dpu_crtc_blend_setup(struct drm_crtc *crtc) ctl->ops.update_pending_flush_mixer(ctl, mixer[i].hw_lm->idx); + set_bit(lm->idx, active_lms); + if (ctl->ops.set_active_lms) + ctl->ops.set_active_lms(ctl, active_lms); + DRM_DEBUG_ATOMIC("lm %d, op_mode 0x%X, ctl %d\n", mixer[i].hw_lm->idx - LM_0, mixer[i].mixer_op_mode, ctl->idx - CTL_0); - ctl->ops.setup_blendstage(ctl, mixer[i].hw_lm->idx, - &stage_cfg); + if (ctl->ops.setup_blendstage) + ctl->ops.setup_blendstage(ctl, mixer[i].hw_lm->idx, + &stage_cfg); + + if (lm->ops.setup_blendstage) + lm->ops.setup_blendstage(lm, mixer[i].hw_lm->idx, + &stage_cfg); } } diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c index aec71a86f809afedc2660d66d2cbf4109c302067..b36b8d7d6cda53c31d3aafd5050c98b01b48f458 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c @@ -2189,6 +2189,12 @@ static void dpu_encoder_helper_reset_mixers(struct dpu_encoder_phys *phys_enc) if (ctl->ops.setup_blendstage) ctl->ops.setup_blendstage(ctl, hw_mixer[i]->idx, NULL); + if (hw_mixer[i]->ops.clear_all_blendstages) + hw_mixer[i]->ops.clear_all_blendstages(hw_mixer[i]); + + if (ctl->ops.set_active_lms) + ctl->ops.set_active_lms(ctl, NULL); + if (ctl->ops.set_active_fetch_pipes) ctl->ops.set_active_fetch_pipes(ctl, NULL); diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c index c9c65d5e9d36d3a4ce2aef9f57da631f2acd9123..2f9713227c287ffcfd6bedff7bad14cf8df6eb30 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c @@ -43,6 +43,7 @@ #define CTL_CDM_FLUSH 0x114 #define CTL_PERIPH_FLUSH 0x128 #define CTL_PIPE_ACTIVE 0x12c +#define CTL_LAYER_ACTIVE 0x130 #define CTL_INTF_MASTER 0x134 #define CTL_DSPP_n_FLUSH(n) ((0x13C) + ((n) * 4)) @@ -65,6 +66,8 @@ static const u32 fetch_tbl[SSPP_MAX] = {CTL_INVALID_BIT, 16, 17, 18, 19, CTL_INVALID_BIT, CTL_INVALID_BIT, CTL_INVALID_BIT, CTL_INVALID_BIT, 0, 1, 2, 3, 4, 5}; +static const u32 lm_tbl[LM_MAX] = {CTL_INVALID_BIT, 0, 1, 2, 3, 4, 5, 6, 7}; + static int _mixer_stages(const struct dpu_lm_cfg *mixer, int count, enum dpu_lm lm) { @@ -672,7 +675,11 @@ static void dpu_hw_ctl_reset_intf_cfg_v1(struct dpu_hw_ctl *ctx, merge3d_active); } - dpu_hw_ctl_clear_all_blendstages(ctx); + if (ctx->ops.clear_all_blendstages) + ctx->ops.clear_all_blendstages(ctx); + + if (ctx->ops.set_active_lms) + ctx->ops.set_active_lms(ctx, NULL); if (ctx->ops.set_active_fetch_pipes) ctx->ops.set_active_fetch_pipes(ctx, NULL); @@ -745,6 +752,23 @@ static void dpu_hw_ctl_set_active_pipes(struct dpu_hw_ctl *ctx, DPU_REG_WRITE(&ctx->hw, CTL_PIPE_ACTIVE, val); } +static void dpu_hw_ctl_set_active_lms(struct dpu_hw_ctl *ctx, + unsigned long *active_lms) +{ + int i; + u32 val = 0; + + if (active_lms) { + for (i = LM_0; i < LM_MAX; i++) { + if (test_bit(i, active_lms) && + lm_tbl[i] != CTL_INVALID_BIT) + val |= BIT(lm_tbl[i]); + } + } + + DPU_REG_WRITE(&ctx->hw, CTL_LAYER_ACTIVE, val); +} + /** * dpu_hw_ctl_init() - Initializes the ctl_path hw driver object. * Should be called before accessing any ctl_path register. @@ -812,6 +836,7 @@ struct dpu_hw_ctl *dpu_hw_ctl_init(struct drm_device *dev, c->ops.setup_blendstage = dpu_hw_ctl_setup_blendstage; } else { c->ops.set_active_pipes = dpu_hw_ctl_set_active_pipes; + c->ops.set_active_lms = dpu_hw_ctl_set_active_lms; } c->ops.update_pending_flush_sspp = dpu_hw_ctl_update_pending_flush_sspp; c->ops.update_pending_flush_mixer = dpu_hw_ctl_update_pending_flush_mixer; diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h index 186c467e1a64e71116b65b19dd8ecdbb09dac114..f9197d3f12a30d9ce2a4b3745353e35b645563c5 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h @@ -264,6 +264,15 @@ struct dpu_hw_ctl_ops { */ void (*set_active_pipes)(struct dpu_hw_ctl *ctx, unsigned long *active_pipes); + + /** + * Set active layer mixers attached to this CTL + * @ctx: ctl path ctx pointer + * @active_lms: bitmap of enum dpu_lm + */ + void (*set_active_lms)(struct dpu_hw_ctl *ctx, + unsigned long *active_lms); + }; /** diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c index f220a68e138cb9e7c88194e53e47391de7ed04f7..d5928c7cecc818d8d8f85c3cfff4d79794eab1d4 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.c @@ -28,11 +28,19 @@ #define LM_FG_COLOR_FILL_XY 0x14 /* >= v12 DPU */ +#define LM_BG_SRC_SEL_V12 0x14 +#define LM_BG_SRC_SEL_V12_RESET_VALUE 0x0000c0c0 #define LM_BORDER_COLOR_0_V12 0x1c #define LM_BORDER_COLOR_1_V12 0x20 /* >= v12 DPU with offset to mixer base + stage base */ +#define LM_BLEND0_FG_SRC_SEL_V12 0x04 #define LM_BLEND0_CONST_ALPHA_V12 0x08 +#define LM_FG_COLOR_FILL_COLOR_0_V12 0x0c +#define LM_FG_COLOR_FILL_COLOR_1_V12 0x10 +#define LM_FG_COLOR_FILL_SIZE_V12 0x14 +#define LM_FG_COLOR_FILL_XY_V12 0x18 + #define LM_BLEND0_FG_ALPHA 0x04 #define LM_BLEND0_BG_ALPHA 0x08 @@ -215,6 +223,122 @@ static void dpu_hw_lm_setup_color3_v12(struct dpu_hw_mixer *ctx, } } +static int _set_staged_sspp(u32 stage, struct dpu_hw_stage_cfg *stage_cfg, + int pipes_per_stage, u32 *value) +{ + int i; + u32 pipe_type = 0, pipe_id = 0, rec_id = 0; + u32 src_sel[PIPES_PER_STAGE]; + + *value = LM_BG_SRC_SEL_V12_RESET_VALUE; + if (!stage_cfg || !pipes_per_stage) + return 0; + + for (i = 0; i < pipes_per_stage; i++) { + enum dpu_sspp pipe = stage_cfg->stage[stage][i]; + enum dpu_sspp_multirect_index rect_index = stage_cfg->multirect_index[stage][i]; + + src_sel[i] = LM_BG_SRC_SEL_V12_RESET_VALUE; + + if (!pipe) + continue; + + /* translate pipe data to SWI pipe_type, pipe_id */ + if (pipe >= SSPP_DMA0 && pipe <= SSPP_DMA5) { + pipe_type = 0; + pipe_id = pipe - SSPP_DMA0; + } else if (pipe >= SSPP_VIG0 && pipe <= SSPP_VIG3) { + pipe_type = 1; + pipe_id = pipe - SSPP_VIG0; + } else { + DPU_ERROR("invalid rec-%d pipe:%d\n", i, pipe); + return -EINVAL; + } + + /* translate rec data to SWI rec_id */ + if (rect_index == DPU_SSPP_RECT_SOLO || rect_index == DPU_SSPP_RECT_0) { + rec_id = 0; + } else if (rect_index == DPU_SSPP_RECT_1) { + rec_id = 1; + } else { + DPU_ERROR("invalid rec-%d rect_index:%d\n", i, rect_index); + rec_id = 0; + } + + /* calculate SWI value for rec-0 and rec-1 and store it temporary buffer */ + src_sel[i] = (((pipe_type & 0x3) << 6) | ((rec_id & 0x3) << 4) | (pipe_id & 0xf)); + } + + /* calculate final SWI register value for rec-0 and rec-1 */ + *value = 0; + for (i = 0; i < pipes_per_stage; i++) + *value |= src_sel[i] << (i * 8); + + return 0; +} + +static int dpu_hw_lm_setup_blendstage(struct dpu_hw_mixer *ctx, enum dpu_lm lm, + struct dpu_hw_stage_cfg *stage_cfg) +{ + struct dpu_hw_blk_reg_map *c = &ctx->hw; + int i, ret, stages, stage_off, pipes_per_stage; + u32 value; + + stages = ctx->cap->sblk->maxblendstages; + if (stages <= 0) + return -EINVAL; + + if (ctx->cap->sourcesplit) + pipes_per_stage = PIPES_PER_STAGE; + else + pipes_per_stage = 1; + + /* + * When stage configuration is empty, we can enable the + * border color by setting the corresponding LAYER_ACTIVE bit + * and un-staging all the pipes from the layer mixer. + */ + if (!stage_cfg) + DPU_REG_WRITE(c, LM_BG_SRC_SEL_V12, LM_BG_SRC_SEL_V12_RESET_VALUE); + + for (i = DPU_STAGE_0; i <= stages; i++) { + stage_off = _stage_offset(ctx, i); + if (stage_off < 0) + return stage_off; + + ret = _set_staged_sspp(i, stage_cfg, pipes_per_stage, &value); + if (ret) + return ret; + + DPU_REG_WRITE(c, LM_BLEND0_FG_SRC_SEL_V12 + stage_off, value); + } + + return 0; +} + +static int dpu_hw_lm_clear_all_blendstages(struct dpu_hw_mixer *ctx) +{ + struct dpu_hw_blk_reg_map *c = &ctx->hw; + int i, stages, stage_off; + + stages = ctx->cap->sblk->maxblendstages; + if (stages <= 0) + return -EINVAL; + + DPU_REG_WRITE(c, LM_BG_SRC_SEL_V12, LM_BG_SRC_SEL_V12_RESET_VALUE); + + for (i = DPU_STAGE_0; i <= stages; i++) { + stage_off = _stage_offset(ctx, i); + if (stage_off < 0) + return stage_off; + + DPU_REG_WRITE(c, LM_BLEND0_FG_SRC_SEL_V12 + stage_off, + LM_BG_SRC_SEL_V12_RESET_VALUE); + } + + return 0; +} + /** * dpu_hw_lm_init() - Initializes the mixer hw driver object. * should be called once before accessing every mixer. @@ -257,6 +381,8 @@ struct dpu_hw_mixer *dpu_hw_lm_init(struct drm_device *dev, c->ops.setup_border_color = dpu_hw_lm_setup_border_color; } else { c->ops.setup_alpha_out = dpu_hw_lm_setup_color3_v12; + c->ops.setup_blendstage = dpu_hw_lm_setup_blendstage; + c->ops.clear_all_blendstages = dpu_hw_lm_clear_all_blendstages; c->ops.setup_border_color = dpu_hw_lm_setup_border_color_v12; } c->ops.setup_misr = dpu_hw_lm_setup_misr; diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h index fff1156add683fec8ce6785e7fe1d769d0de3fe0..1b9ecd082d7fd72b07008787e1caea968ed23376 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_lm.h @@ -11,6 +11,7 @@ #include "dpu_hw_util.h" struct dpu_hw_mixer; +struct dpu_hw_stage_cfg; struct dpu_hw_mixer_cfg { u32 out_width; @@ -48,6 +49,23 @@ struct dpu_hw_lm_ops { */ void (*setup_alpha_out)(struct dpu_hw_mixer *ctx, uint32_t mixer_op); + /** + * Clear layer mixer to pipe configuration + * @ctx : mixer ctx pointer + * Returns: 0 on success or -error + */ + int (*clear_all_blendstages)(struct dpu_hw_mixer *ctx); + + /** + * Configure layer mixer to pipe configuration + * @ctx : mixer ctx pointer + * @lm : layer mixer enumeration + * @stage_cfg : blend stage configuration + * Returns: 0 on success or -error + */ + int (*setup_blendstage)(struct dpu_hw_mixer *ctx, enum dpu_lm lm, + struct dpu_hw_stage_cfg *stage_cfg); + /** * setup_border_color : enable/disable border color */