From nobody Sun Oct 5 12:23:01 2025 Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.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 2FFF22046A9 for ; Mon, 4 Aug 2025 13:37:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754314673; cv=none; b=qDdvb4QffSB54c7YlHausEq5R3C2CMtCBzEr2sbGyEUeMGqqClfI5QRWVFtbtn3s0moBXGsbShqYGuwtyD/gecCUSdFkkVGLdFiO+9wxwYjBJut+qAxix7Fx2wEpGGiVUg6hma0k6xDlpNEbJmN12Vq2BtNFhuzmYBYLivvu69s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754314673; c=relaxed/simple; bh=03EFWbjpjg66HUQuvdjKNzq7BijWLpJo3Z/rP3nASts=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gj6XkNH6LPr38JQ8MI0T6aHmxehm1b+xthHJw6sO/ICeAvPoH60jnhiBN2NdmAJ7uCKeBzlZ2FE9yb9lRVCoBdqXTrn6KLWBpi6E5v538XlFVRofqTKHst74oMMYRXheh61t/Grvq4TVB2QY6exeVQtHSZ4Usmm6xyJjRjpA2jg= 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=be678F4i; arc=none smtp.client-ip=209.85.218.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="be678F4i" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-af94440f4ecso42496766b.1 for ; Mon, 04 Aug 2025 06:37:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1754314670; x=1754919470; 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=vn6JCB3HTxusrlXxNaqDsM/0Lzi1CG25OTh9JwfYvGo=; b=be678F4imxgaJoEW9NsDgKIAO6/9yR/FqaDojqDzYhnEs1MKzLSCPTejk1j7d9WqRw J+z4/PQiU9gHvn8yxw2TrGnbMTjGeVJHvdP/bY6gtc1phqNmuHHCUghdK6NpQVulAjCk 6tKm7mvGSx6z1gsL1SDoInsul3Nu8SzMfxbw1MgEoS/wglq4sSlvCOQVoH4Q5FDnr0Ek sx7L7nXtO92+zcri9UyuNIsumQqsYoHIT2TC9FJvJuVnghP8WcWIUE19A2B6yME7sAkn 6srLWqq+7o05Kbqsqh0NoEzg21jF1sNKCqctS6e2zVuhjcbG1pVo739FzVH15gUQDC1p HNfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754314670; x=1754919470; 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=vn6JCB3HTxusrlXxNaqDsM/0Lzi1CG25OTh9JwfYvGo=; b=LG6VW/fCbTjfPD/DvZTvd3P1ooAbCcpqDiGXOSbMFJqC6Hgz3TXWIG/ZbSaVJUMMhg eEWTs8qULFKw5djsv8IPE8CO04rUMtnfXELvwXrre+gdAWbtWZAhRUZwZPnh/8tJfWdm gFZ50QqJ2VVgxpFAiEmUHYjMsEHPhixz9+oqtY1RKVuNcJmRNXJltvEl0u1tRKBJkdLk 3lbd04OGcLhpxsyoXcE/ZRZXMNxRLBwLvGOBYODetjCNuyzo6pgC6mzJKwxNTg+NA7va fjyb/rEWVQbbzkUN1TpYMGFk7Gu6mrcQMJoYB2lwfeD2OTFgFEQbfCnFN8YsSnjzDC6c W37Q== X-Forwarded-Encrypted: i=1; AJvYcCUdt87CsExAj+D9Ij29V8wWBdLFULFCa85Bvb/8tweDxwDSZAmgyGg/qP5A686ux014NWixiI4aY83zSHk=@vger.kernel.org X-Gm-Message-State: AOJu0YwbPiBquC/ZwiBOCrjgysPrUA0wPHKPAUewKQpF7RWm9ZY9fYx1 YKomFkpyS95HkgROE1PstBrfj5t4zgj1j02iumHQmxRVl9mQuR1J3k3AAxT0SwrYoTc= X-Gm-Gg: ASbGncv5HXw/WsIIs6WYutRn7QTTNf+OTCFcRcze9geOMmVjI/5vk8q7NK4F6bgPVbP OE1nDDPnO7d5LAuDYpFzZNWyxZ+it8LfJ4PZKEZjISoZ1BAXKJci0tbj2ohwpymNYZdcmd+qJAQ 1NmP5Ve0ZZ4U+clAmebp+ItsStqM7KW+7LrHIp7XrIymNuxO1VcEWorLQ/OMveLBHTjxpkNvOtk QpD0pT9x2DOv+7LAmC5gAahOnaWe9Mg/H5PiUZQduMcwUIToo6PlaegZb+Dw5cyC81tDZVi4c7h b2glctBVuiQwDgHPV605+QBETlf5T+pwiI7hJRshCMcgTP1GzVjBJ7ebvqaxoDtZyg7Rq93lnw8 v1MMzWdKpZti/oNpjHYha0RONDwRoklG5wbDbzNo= X-Google-Smtp-Source: AGHT+IFv2StHvTHYtD7YmYQdVcCrSMW9Cx5LOrD+lcjn+nZHjDAPZ6NTnt08Bq2CWeSkeaBTFXAmvA== X-Received: by 2002:a17:907:9691:b0:adb:2ce8:686a with SMTP id a640c23a62f3a-af94021d74bmr422522766b.12.1754314670469; Mon, 04 Aug 2025 06:37:50 -0700 (PDT) Received: from [127.0.1.1] ([178.197.218.223]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-af91a078cbasm741533166b.5.2025.08.04.06.37.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Aug 2025 06:37:49 -0700 (PDT) From: Krzysztof Kozlowski Date: Mon, 04 Aug 2025 15:37:38 +0200 Subject: [PATCH v2 1/3] media: dt-bindings: qcom,sm8550-iris: Add SM8750 video codec Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250804-sm8750-iris-v2-1-6d78407f8078@linaro.org> References: <20250804-sm8750-iris-v2-0-6d78407f8078@linaro.org> In-Reply-To: <20250804-sm8750-iris-v2-0-6d78407f8078@linaro.org> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel Cc: Krzysztof Kozlowski , linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6269; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=03EFWbjpjg66HUQuvdjKNzq7BijWLpJo3Z/rP3nASts=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBokLeovkLK5gfdw8hv7pgPaIQIDCZoH8A24Ibl5 jOK3Z0ym9SJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCaJC3qAAKCRDBN2bmhouD 17QGD/9zWZnOOBadHXa33BmtSQnuMq7/+Pv6rNK+eHNpxWoPtTugalRVqUi3XabwvMcVMZZ00+g fsEsC63kBdQf/Noc3zkDmdnLiAs1QuqijrcnYUTg4VZEQE9+qiqnxPnyujs4G0UYJEMFWJWaCCv XoRZDKpbgHgtOISTLVqTbqdSbq4mT3iHZTDn9QCn4a7SQ+e1VBazas1++b3SPGiFcX3ShkwIS5F GUcRhUD2TmXIaqnDoWNaeKyhCAEig95vT9GQs1Ob3S+9nB3fhtKruxpiFv5qdS+s/xtRhMJSVpy lJa1I1wsFZ6CSVmPPizuHew8/BIUeHq50aAFaZOvGnGE80W6p7yn9DkrKgZDWHgSUPQOcUBVlOP ZFqpQI2v6ZyC50pmLynoOTI6aixp7T+pM4gk0+ilJxiAreGMTqgfjJRtnSQGVtn/23gXqqkWbW0 ThcM1bFPuiAhDyzkWk6CkHafMKbr5KoLXXwdwrphjlULnnhfcL4j3Hdu7Jz3O6iLdz1ouk3nQrd 8PvoWDCAaDIoYqDkzFPGKsKyp5+jXat0DjGOVKsT+LnfFfSowfIyOvzJKHdbzV/GiPqpF6S36fU RMpa3qQOz5LvcOKSPrv3RvrZQ3jdXRiSQ0y58IE1px151sqe54H0ASFPewKc218vIctG/G6jV+6 obHE1A+Egr65sZA== X-Developer-Key: i=krzysztof.kozlowski@linaro.org; a=openpgp; fpr=9BD07E0E0C51F8D59677B7541B93437D3B41629B Add binding for Qualcom SM8750 Iris video codec, which comes with significantly different powering up sequence than previous SM8650, thus different clocks and resets. For consistency keep existing clock and clock-names naming, so the list shares common part. Reviewed-by: Rob Herring (Arm) Signed-off-by: Krzysztof Kozlowski --- .../bindings/media/qcom,sm8750-iris.yaml | 186 +++++++++++++++++= ++++ 1 file changed, 186 insertions(+) diff --git a/Documentation/devicetree/bindings/media/qcom,sm8750-iris.yaml = b/Documentation/devicetree/bindings/media/qcom,sm8750-iris.yaml new file mode 100644 index 0000000000000000000000000000000000000000..c9a0fcafe53fbda15f284828af6= b98a2ffc41e00 --- /dev/null +++ b/Documentation/devicetree/bindings/media/qcom,sm8750-iris.yaml @@ -0,0 +1,186 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/media/qcom,sm8750-iris.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Qualcomm SM8750 SoC Iris video encoder and decoder + +maintainers: + - Krzysztof Kozlowski + +description: + The Iris video processing unit on Qualcomm SM8750 SoC is a video encode = and + decode accelerator. + +properties: + compatible: + enum: + - qcom,sm8750-iris + + clocks: + maxItems: 6 + + clock-names: + items: + - const: iface # AXI0 + - const: core + - const: vcodec0_core + - const: iface1 # AXI1 + - const: core_freerun + - const: vcodec0_core_freerun + + dma-coherent: true + + interconnects: + maxItems: 2 + + interconnect-names: + items: + - const: cpu-cfg + - const: video-mem + + iommus: + maxItems: 2 + + operating-points-v2: true + opp-table: + type: object + + power-domains: + maxItems: 4 + + power-domain-names: + items: + - const: venus + - const: vcodec0 + - const: mxc + - const: mmcx + + resets: + maxItems: 4 + + reset-names: + items: + - const: bus0 + - const: bus1 + - const: core + - const: vcodec0_core + +required: + - compatible + - dma-coherent + - interconnects + - interconnect-names + - iommus + - power-domain-names + - resets + - reset-names + +allOf: + - $ref: qcom,venus-common.yaml# + +unevaluatedProperties: false + +examples: + - | + #include + #include + #include + #include + #include + #include + #include + + video-codec@aa00000 { + compatible =3D "qcom,sm8750-iris"; + reg =3D <0x0aa00000 0xf0000>; + + clocks =3D <&gcc GCC_VIDEO_AXI0_CLK>, + <&videocc_mvs0c_clk>, + <&videocc_mvs0_clk>, + <&gcc GCC_VIDEO_AXI1_CLK>, + <&videocc_mvs0c_freerun_clk>, + <&videocc_mvs0_freerun_clk>; + clock-names =3D "iface", + "core", + "vcodec0_core", + "iface1", + "core_freerun", + "vcodec0_core_freerun"; + + dma-coherent; + iommus =3D <&apps_smmu 0x1940 0>, + <&apps_smmu 0x1947 0>; + + interconnects =3D <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_= ONLY + &config_noc SLAVE_VENUS_CFG QCOM_ICC_TAG_ACTIVE_O= NLY>, + <&mmss_noc MASTER_VIDEO_MVP QCOM_ICC_TAG_ALWAYS + &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>; + interconnect-names =3D "cpu-cfg", + "video-mem"; + + interrupts =3D ; + + operating-points-v2 =3D <&iris_opp_table>; + + memory-region =3D <&video_mem>; + + power-domains =3D <&videocc_mvs0c_gdsc>, + <&videocc_mvs0_gdsc>, + <&rpmhpd RPMHPD_MXC>, + <&rpmhpd RPMHPD_MMCX>; + power-domain-names =3D "venus", + "vcodec0", + "mxc", + "mmcx"; + + resets =3D <&gcc GCC_VIDEO_AXI0_CLK_ARES>, + <&gcc GCC_VIDEO_AXI1_CLK_ARES>, + <&videocc_mvs0c_freerun_clk_ares>, + <&videocc_mvs0_freerun_clk_ares>; + reset-names =3D "bus0", + "bus1", + "core", + "vcodec0_core"; + + iris_opp_table: opp-table { + compatible =3D "operating-points-v2"; + + opp-240000000 { + opp-hz =3D /bits/ 64 <240000000>; + required-opps =3D <&rpmhpd_opp_low_svs_d1>, + <&rpmhpd_opp_low_svs_d1>; + }; + + opp-338000000 { + opp-hz =3D /bits/ 64 <338000000>; + required-opps =3D <&rpmhpd_opp_low_svs>, + <&rpmhpd_opp_low_svs>; + }; + + opp-420000000 { + opp-hz =3D /bits/ 64 <420000000>; + required-opps =3D <&rpmhpd_opp_svs>, + <&rpmhpd_opp_svs>; + }; + + opp-444000000 { + opp-hz =3D /bits/ 64 <444000000>; + required-opps =3D <&rpmhpd_opp_svs_l1>, + <&rpmhpd_opp_svs_l1>; + }; + + opp-533333334 { + opp-hz =3D /bits/ 64 <533333334>; + required-opps =3D <&rpmhpd_opp_nom>, + <&rpmhpd_opp_nom>; + }; + + opp-630000000 { + opp-hz =3D /bits/ 64 <630000000>; + required-opps =3D <&rpmhpd_opp_turbo>, + <&rpmhpd_opp_turbo>; + }; + }; + }; --=20 2.48.1 From nobody Sun Oct 5 12:23:01 2025 Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C4EA426C39E for ; Mon, 4 Aug 2025 13:37:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754314675; cv=none; b=N4K+VA6BNaMVyCfMcW254x2H+nPibSFTJeuJXtEBduQVZSmvRJjXodhIXDSpoyso5uEDy7A1TSP/tsjWGq3+uxpBAT5VDb91RNAgqmYK8t9H7qIXYgRS6XxZ3pbHaTkJomBNz1tXEfr6x0AJMUUVSq9EKksz8Uk9uKSvGRHUBo4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754314675; c=relaxed/simple; bh=A2MR5XCymdFdhBQ0wssTFQOzqHCcouyjjeJHUvvxDsA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sZtgXDtf5KU0ugLH+sXRLiOaWQVJuIFHnvwh8wpkcN/vt13Ob4xdVBKLjV8UHuKSHb/PeC/l9yU3Er5DM0K/BiuR+5I/WtZESxqbe72+FWO3r3/zH5KIHbu4swEL3vG/m77ScGAoFe1Mi6O+phrXVQplzqp9hZ/xqc59L9fXMo4= 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=rB7ttRBn; arc=none smtp.client-ip=209.85.218.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="rB7ttRBn" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-adb2bd27d8bso67090366b.1 for ; Mon, 04 Aug 2025 06:37:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1754314672; x=1754919472; 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=eh6d/IgXt2tPrt2Z4fiSLP3izgoSz3E8GH15HC3FcCw=; b=rB7ttRBnaQAExv4ORW+ZOK7kmUQ9ZRC2OpwyCgC0eC7FNOlf1FeDa8pgrg0KKUDUzv E+NqmLQJgcjsuC8bBeo/30nRX54iwW9l8iAEqca+RqFlcJm+9VKiDxBl8P6sbvYS4/Is wScfE+x9DOQXxCfXmeLOf/o9Brrn1owjTA1UrCw6YIzCHTl36DfFRfmyVce/W+DHSc3n ormWU7eBbgg9km4thGPGGjohft3a419DXKEsJ79NJ+IYR1e0/XbfiW4E1Tp1nOgKxpkS Fn6dFxqzQJN6Ee+5zP/F7cCV9hrSHiBjbAQigySYzYma3IIvRLPOhizFUQFCQzWskzRs RT0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754314672; x=1754919472; 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=eh6d/IgXt2tPrt2Z4fiSLP3izgoSz3E8GH15HC3FcCw=; b=TlJhuWrAyVRVG7PVnufBtwIm9uRMQNjkp2yEyDI9AXmtPF5dBPlYlo0jpEJiQYZzzl YilC6ELvLcN+HJszTVWyl86z8zuGQFD6HLIFeWDswxw+/ceiLnL0/csBApg52Fz29cV4 5It9mkogozDu4AxK+L6GHf42B0zT1N4KDSv+sCTaz/3Ip6ebP/sc3VgO1JkY5Il9Dy14 ySsaAuYHRstAji98bVVlyCEnQDXzX7zlOodh+CMpKVYlzIuQb5P3glO1zy4qxpPegGyI RZUMPdBohpEE/UBejhP9YNsFk2pCIPwg+oXYd8sI7gAXYsx6l6qg/hxfnY/ya2thto3z mgpg== X-Forwarded-Encrypted: i=1; AJvYcCWSldoFvuJUC+Uye/RP0F1KIiwt04ZIlklfo/YseKMmqbXpnRSEyWEH9wLCdEGTv5rV+DEUOewRNHHB0OE=@vger.kernel.org X-Gm-Message-State: AOJu0YxwK3eN6t20bQLJ121gA1B2fiBjtaOQ/PMUDLnjUHM2Mq0KD8Hd RPInBnTUKpi/V0dqm6gT/pczaVoIXz2VYtEQWIClM4LNwQ+wzW423qL8meVY2meq3Nw= X-Gm-Gg: ASbGncvzI1PwAjKrFQupBCC0JZ6C7Gk2tNa1+e7hmYaNDNluQP/8BeQjiMKYczH8kKc N1P9Z/2+4bAGLbnXCJXWOhorPVSbaIUMQiCy83RODB7XmoJQxMOtFNMieC7IWsYWMuLKFgvlN+K mGn+op89Y4u8gywxeyr2UzEQRrwMXqxU1rhCCEMT9i4qzOB9gbs3esBPaTHc5VPumLbBVOR/1fv sTMe0XlCCDNSxgGxZlvpnfYiua4p/d3FP3cQPDw1yRU7+fXsbWX088UUgOb47X01AItPsh3vc3u ujpvEM/o5QZfhhuux/DTPZZ/7bilXwDyoHgx22PssmtLJ6kJPJdOVdNTajSAy5/MM5R1xS1Ii0y 1rfBc4iM33KV8yPO9dw5rjDoEKenibmzw2JL4WtU= X-Google-Smtp-Source: AGHT+IG3n11Vbg+G3YNfeR4OEieN3b7+GBrJrvuEqvgh4Zw+agGi7OOk2lFiTXK2pqxicgNxUsyNhw== X-Received: by 2002:a17:907:9691:b0:ad8:8e05:e5e9 with SMTP id a640c23a62f3a-af93ffa406emr410130266b.2.1754314671971; Mon, 04 Aug 2025 06:37:51 -0700 (PDT) Received: from [127.0.1.1] ([178.197.218.223]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-af91a078cbasm741533166b.5.2025.08.04.06.37.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Aug 2025 06:37:51 -0700 (PDT) From: Krzysztof Kozlowski Date: Mon, 04 Aug 2025 15:37:39 +0200 Subject: [PATCH v2 2/3] media: iris: Split power on per variants Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250804-sm8750-iris-v2-2-6d78407f8078@linaro.org> References: <20250804-sm8750-iris-v2-0-6d78407f8078@linaro.org> In-Reply-To: <20250804-sm8750-iris-v2-0-6d78407f8078@linaro.org> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel Cc: Krzysztof Kozlowski , linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4799; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=A2MR5XCymdFdhBQ0wssTFQOzqHCcouyjjeJHUvvxDsA=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBokLepsWB3TcSnLLq5Yg/Y82VwfazwyqCMYMQbf gH0NTYVPhOJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCaJC3qQAKCRDBN2bmhouD 15IVD/wICWpGWzbrojI6/kY0FGVsONiRtqQBc++oD4PuOdFxElJg1ZrJn3LPzikGfDcQvETk0ea V3nGaody3nOA7ggCmrA7Dlr4LptmWpzWieMCySl2KTZEIu2pYF5WV3yozrW7T9od0MtzgLOuQ2t ifS+NxJTNoyLklfA4iJczCeqF7MC5R+J2367W6lFIdhNS0wvhqFNYyLe+onzRUqh5VAQTTbo+ov oEr/42vC8KeiYkkvbB6O7pyFu9L0pZO1vsxmeCf/J7QkTMT6DnKdmD5cM8wZdqzgPVAPmj+MIFD w59MdsJqBihVf7lbKeITSXftiPoSV01PJP1xnLQThWJrfmtVZWnt2kCDN5y4DYV+zKpQDXzvwaR Ay2QAs2rafGpgvy/hDD9+LjsqkNVy8Mb3nUCL2KhmrNQBrIUHpE+HSaRd0iHc+h9ZEOHOZCYF5n fT6XceLVDewz8VOMVn9NC7pSZHza4GSwLPNEzbU1M36ERjGtNH6qG/JyoVRjhZznQlbDlT7uigB LHVmGFZzP/niXO1FzNFTBZIUyPjltIysPL4eRe/jHSagnf6yOp0/a7iGHuQpnGVg6Dp12DmZfxn eaTVOqb8HP1dK9OeGIZW/3dwYNnhFMaxTMvZnBkKKdUeSX93UeG18HBx/UsuBL+JjAXO3FaPxqW 6Tnffh1HXNwH/XA== X-Developer-Key: i=krzysztof.kozlowski@linaro.org; a=openpgp; fpr=9BD07E0E0C51F8D59677B7541B93437D3B41629B Current devices use same power up sequence, but starting with Qualcomm SM8750 (VPU v3.5) the sequence will grow quite a bit, so allow customizing it. No functional change so far for existing devices. Signed-off-by: Krzysztof Kozlowski --- drivers/media/platform/qcom/iris/iris_vpu2.c | 2 ++ drivers/media/platform/qcom/iris/iris_vpu3x.c | 4 ++++ drivers/media/platform/qcom/iris/iris_vpu_common.c | 8 ++++---- drivers/media/platform/qcom/iris/iris_vpu_common.h | 4 ++++ 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_vpu2.c b/drivers/media/p= latform/qcom/iris/iris_vpu2.c index 7cf1bfc352d34b897451061b5c14fbe90276433d..de7d142316d2dc9ab0c4ad9cc81= 61c87ac949b4c 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu2.c +++ b/drivers/media/platform/qcom/iris/iris_vpu2.c @@ -34,6 +34,8 @@ static u64 iris_vpu2_calc_freq(struct iris_inst *inst, si= ze_t data_size) =20 const struct vpu_ops iris_vpu2_ops =3D { .power_off_hw =3D iris_vpu_power_off_hw, + .power_on_hw =3D iris_vpu_power_on_hw, .power_off_controller =3D iris_vpu_power_off_controller, + .power_on_controller =3D iris_vpu_power_on_controller, .calc_freq =3D iris_vpu2_calc_freq, }; diff --git a/drivers/media/platform/qcom/iris/iris_vpu3x.c b/drivers/media/= platform/qcom/iris/iris_vpu3x.c index 9b7c9a1495ee2f51c60b1142b2ed4680ff798f0a..c235112057aa7b7eab199573754= 1b7a8276ff18b 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu3x.c +++ b/drivers/media/platform/qcom/iris/iris_vpu3x.c @@ -264,12 +264,16 @@ static u64 iris_vpu3x_calculate_frequency(struct iris= _inst *inst, size_t data_si =20 const struct vpu_ops iris_vpu3_ops =3D { .power_off_hw =3D iris_vpu3_power_off_hardware, + .power_on_hw =3D iris_vpu_power_on_hw, .power_off_controller =3D iris_vpu_power_off_controller, + .power_on_controller =3D iris_vpu_power_on_controller, .calc_freq =3D iris_vpu3x_calculate_frequency, }; =20 const struct vpu_ops iris_vpu33_ops =3D { .power_off_hw =3D iris_vpu33_power_off_hardware, + .power_on_hw =3D iris_vpu_power_on_hw, .power_off_controller =3D iris_vpu33_power_off_controller, + .power_on_controller =3D iris_vpu_power_on_controller, .calc_freq =3D iris_vpu3x_calculate_frequency, }; diff --git a/drivers/media/platform/qcom/iris/iris_vpu_common.c b/drivers/m= edia/platform/qcom/iris/iris_vpu_common.c index 42a7c53ce48eb56a4210c7e25c707a1b0881a8ce..6c51002f72ab3d9e16d5a2a50ac= 712fac91ae25c 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_common.c +++ b/drivers/media/platform/qcom/iris/iris_vpu_common.c @@ -271,7 +271,7 @@ void iris_vpu_power_off(struct iris_core *core) disable_irq_nosync(core->irq); } =20 -static int iris_vpu_power_on_controller(struct iris_core *core) +int iris_vpu_power_on_controller(struct iris_core *core) { u32 rst_tbl_size =3D core->iris_platform_data->clk_rst_tbl_size; int ret; @@ -302,7 +302,7 @@ static int iris_vpu_power_on_controller(struct iris_cor= e *core) return ret; } =20 -static int iris_vpu_power_on_hw(struct iris_core *core) +int iris_vpu_power_on_hw(struct iris_core *core) { int ret; =20 @@ -337,11 +337,11 @@ int iris_vpu_power_on(struct iris_core *core) if (ret) goto err; =20 - ret =3D iris_vpu_power_on_controller(core); + ret =3D core->iris_platform_data->vpu_ops->power_on_controller(core); if (ret) goto err_unvote_icc; =20 - ret =3D iris_vpu_power_on_hw(core); + ret =3D core->iris_platform_data->vpu_ops->power_on_hw(core); if (ret) goto err_power_off_ctrl; =20 diff --git a/drivers/media/platform/qcom/iris/iris_vpu_common.h b/drivers/m= edia/platform/qcom/iris/iris_vpu_common.h index 93b7fa27be3bfa1cf6a3e83cc192cdb89d63575f..d95b305ca5a89ba8f08aefb6e6a= cd9ea4a721a8b 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_common.h +++ b/drivers/media/platform/qcom/iris/iris_vpu_common.h @@ -14,7 +14,9 @@ extern const struct vpu_ops iris_vpu33_ops; =20 struct vpu_ops { void (*power_off_hw)(struct iris_core *core); + int (*power_on_hw)(struct iris_core *core); int (*power_off_controller)(struct iris_core *core); + int (*power_on_controller)(struct iris_core *core); u64 (*calc_freq)(struct iris_inst *inst, size_t data_size); }; =20 @@ -23,6 +25,8 @@ void iris_vpu_raise_interrupt(struct iris_core *core); void iris_vpu_clear_interrupt(struct iris_core *core); int iris_vpu_watchdog(struct iris_core *core, u32 intr_status); int iris_vpu_prepare_pc(struct iris_core *core); +int iris_vpu_power_on_controller(struct iris_core *core); +int iris_vpu_power_on_hw(struct iris_core *core); int iris_vpu_power_on(struct iris_core *core); int iris_vpu_power_off_controller(struct iris_core *core); void iris_vpu_power_off_hw(struct iris_core *core); --=20 2.48.1 From nobody Sun Oct 5 12:23:01 2025 Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 48B0D26D4E7 for ; Mon, 4 Aug 2025 13:37:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754314678; cv=none; b=YlK2Ri0u7K1QSYrpaqzZ4eWhR/ZZkmthyJRKIr5WleB1j6nyvZ6HBB8KnJs5qI9aKrm9tKxbwLWB3Q5ZzcetFUpFyLK8CD1OQSXMhRnh9hpDedNlEMTWTcIpaE9bOHHNq5XKW5kEyBvJcA/208KaSVd7qxSnLyV2QZfL/Ta46uI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754314678; c=relaxed/simple; bh=OkkzwlTlIswOtIsVRUIyGeqkadjY3iO1UMpWmycrQ7I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YrZQc8tcO9GXAbfLW3Hn+g3kuJA2FL9ULogV2KRiS5qUF+j71I1f7KOaDrBo4jkvq+wKhnIrbUUQmhJHVQR8uUxjy1rDDfMaIiFiwZ8JqCflneTVPEsxr9A3ivU2zID4scc+mpVJci4r8Q425Poh4t3yAX91oTjOB3oQj+QjBLU= 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=a6+Njhnj; arc=none smtp.client-ip=209.85.218.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="a6+Njhnj" Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-adb2bd27d8bso67091366b.1 for ; Mon, 04 Aug 2025 06:37:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1754314674; x=1754919474; 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=DUssIjapGIx6gyV76Tc5i1eTr3ROiN2kUpMKAZhON7I=; b=a6+Njhnjzp9Oc7c1V/EYUd+To7f3UxSJVNiAL0YW3xh19V1fxpTiBns4hS4GqIqiDw 5b3hKNDyUMkXyVq8DcnqTfNGc/HGaiahV/blT/493Qoe/zhrLVq/20b08YPXmuxL6szu 1SAJlKXDLlVjtp9CqDQeYLEKfqBtLkJdDcY0Ha23aFYXfV9U3K7972cRTK3gVTqAp81t kT8wgCXds/eLenJ1QUoG/66sdEhUEztLhKkCm9lKeLVKsi8jTd/yXHLJuFzDkEITmyBs I8QCcs6o9Qfqe6Ri39l+wwx7wkM6HayvZmHygQg4Zhl9B/fP243LJQT32X77Y+a/MiIe aHPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754314674; x=1754919474; 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=DUssIjapGIx6gyV76Tc5i1eTr3ROiN2kUpMKAZhON7I=; b=DvwoNBb6YkvoLllQzxuQsiU78twsrvZELpSYvN0hUqyuEY0cc9g1ZqE5tKBWoky9rv wPJfrweTsZYPCYHQpL0MddsvRX333TjU+Io34VmAEdBxnT4s92rVpIBpqA66ubNuxjL2 ROPLM6zT9MgOZ6SNfOMJ2KzhVL50V0KU9pp9wVJVQJi8YZNQCGJwx/5JcpjyUPIb9twQ 9x4vedBE6AE6nmCa+GgmSMuF5uyap6Zz12qTaHW82kaVMs9eR1iSo+mIfbdYY+8x9NLl qgs39qL8/HuH1cM3UOa0IzKnjXEJzSTApBuZKu7Oa24NmbHtMsRh8XsizxLJYsi39NRt +Cgg== X-Forwarded-Encrypted: i=1; AJvYcCXUJDVCREo7q74ynolxxq03IQ3l9fQ6e57cVqJc7MmTBm5xPuq8jRgAOdz/0iDcovp+wctaLnZ/J/zTNcw=@vger.kernel.org X-Gm-Message-State: AOJu0YwX5P1OhOeS1Oz+QWWQxB47k2Kat6K6cGp9h6tye76AsKFtdTri 6ce1YEeDYxkMwF12NeyDdF9OtdMIFKGeBup0appeXxyDzpJVkTyPACEDkYM0XvccW8w= X-Gm-Gg: ASbGncuEs6fenJHtg6I1gYdeAoXMrr8srUvfWKxJXRvH7Fa4IT9yMmbJA4ifxVw63LS xtQNFCQpRwwlkHTToW4z2spH+oYGz88sviost2ssoBtw0zRWC3qXMocyTGVARBiilKLcqlENUMZ L6znc2a5iMTLaWRE+ktQL3QKOkZdajIJDJ8L/Mr3jQr+rCjljoo3K7UOIMe3OD+IASQNb+5zXdY jDTUYfA/DvG3avIjeKjJ6PymhCvWYsIS5HtiL59BSE5uZsdYb960uiut2j7iUjHL77Va8T0UFv8 NI+R0wQCmIs7GplsY3lePOO+Ic8zj81cUVntT1T+huxHFO6d15BQjsjandpUqMm6UQlaOEvnxRJ b5Ymbq9JnMk1ayrrHWldGuPHD5u9vtOOS+1jNwLA+6esSO1WnV0yCqkjYLJaK X-Google-Smtp-Source: AGHT+IH1jUwz1faa0ur3nGsP2laIgjCWYvnosp+3/cyknKLSU5mo+Rx5BTepI8NXMmhCLhExGHR3aw== X-Received: by 2002:a17:906:7955:b0:ad8:9fa3:8dd9 with SMTP id a640c23a62f3a-af940187868mr358502466b.13.1754314673481; Mon, 04 Aug 2025 06:37:53 -0700 (PDT) Received: from [127.0.1.1] ([178.197.218.223]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-af91a078cbasm741533166b.5.2025.08.04.06.37.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Aug 2025 06:37:52 -0700 (PDT) From: Krzysztof Kozlowski Date: Mon, 04 Aug 2025 15:37:40 +0200 Subject: [PATCH v2 3/3] media: iris: Add support for SM8750 (VPU v3.5) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250804-sm8750-iris-v2-3-6d78407f8078@linaro.org> References: <20250804-sm8750-iris-v2-0-6d78407f8078@linaro.org> In-Reply-To: <20250804-sm8750-iris-v2-0-6d78407f8078@linaro.org> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel Cc: Krzysztof Kozlowski , linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=15215; i=krzysztof.kozlowski@linaro.org; h=from:subject:message-id; bh=OkkzwlTlIswOtIsVRUIyGeqkadjY3iO1UMpWmycrQ7I=; b=owEBbQKS/ZANAwAKAcE3ZuaGi4PXAcsmYgBokLeq6iwhe0NZxP31r9vtQaZMwlIgiT7vnXoAQ sQStaX+sMeJAjMEAAEKAB0WIQTd0mIoPREbIztuuKjBN2bmhouD1wUCaJC3qgAKCRDBN2bmhouD 14vQD/0dP6HXWiLcWoMoOLMYyaNr3tBERWpIrlR8tmFzt0YA3WHEz6f5tJBS5WELXS7G9Q2Eevp eK5mHdmljVIO5AwcJ6/rXOgvD87bzTqT4kmramW38zdlhizLkIVhTPSiJUL/o2WBaO9PR0fAxKO JEFPceE5PqhsjLnEtOmrmnD3ekLy9q0aCEKCw7mQiqG+MpwP71dPfPS0b5BLDpHgV3LfWbSsJJK 4RwRy5zbqav0M/sjfRPqBn3nAnlzyeZAXdmZOy5Z3GWHgLUGCPb11u+emZs9yICtDs1E3iZQUmv ZFxRKwuImlXGzsofKVBxZuQigzn299yX/wnafnccZScVCClvDvQnkb0n8sqc37KP18YHIsDsjSN UOyMXlPBZhgXVRwkrQ1D5gD9KhwGyUwvCdLhxkOpXYw0Aq7ITG2KOGzffwMeLnXDQcABit6tZAj ijzL7Kesy0pO8O8NeMhz7S9DxvCPGP9HIDFfKJ50hVd/NfIhvW0DiOphdj4CyEXcc5wwuMehjRr za9Xsu4sRJs8e8QLg+Hh98CEcV2zAmXxlG1T6tukiG3kQcpLIogieKbldgkGyINN6DtRRbeemaE j9I3cJc6nqaF9hzk5d5gsddxW+hUMcO/EQicQGNLgZCkS7MiRjj90VdWbcUh2JSHEz8LRYUvCOu CQZtoGQMQtf8W5Q== X-Developer-Key: i=krzysztof.kozlowski@linaro.org; a=openpgp; fpr=9BD07E0E0C51F8D59677B7541B93437D3B41629B Add support for SM8750 Iris codec with major differences against previous generation SM8650: 1. New clocks and new resets, thus new power up and power down sequences, 2. New WRAPPER_IRIS_VCODEC_VPU_WRAPPER_SPARE_0 register programmed during boot-up Signed-off-by: Krzysztof Kozlowski --- .../platform/qcom/iris/iris_platform_common.h | 6 +- .../media/platform/qcom/iris/iris_platform_gen2.c | 68 ++++++++++ .../platform/qcom/iris/iris_platform_sm8750.h | 22 ++++ drivers/media/platform/qcom/iris/iris_probe.c | 4 + drivers/media/platform/qcom/iris/iris_vpu3x.c | 146 +++++++++++++++++= ++++ drivers/media/platform/qcom/iris/iris_vpu_common.c | 4 + drivers/media/platform/qcom/iris/iris_vpu_common.h | 2 + 7 files changed, 251 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index adafdce8a856f9c661aabc5ca28f0faceaa93551..fd5a6e69e01cfd00253f4ffb282= d40112b93073b 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -38,11 +38,15 @@ extern struct iris_platform_data qcs8300_data; extern struct iris_platform_data sm8250_data; extern struct iris_platform_data sm8550_data; extern struct iris_platform_data sm8650_data; +extern struct iris_platform_data sm8750_data; =20 enum platform_clk_type { - IRIS_AXI_CLK, + IRIS_AXI_CLK, /* AXI0 in case of platforms with multiple AXI clocks */ IRIS_CTRL_CLK, IRIS_HW_CLK, + IRIS_AXI1_CLK, + IRIS_CTRL_FREERUN_CLK, + IRIS_HW_FREERUN_CLK, }; =20 struct platform_clk_data { diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index d3026b2bcb708c7ec31f134f628df7e57b54af4f..c7c384fce2332255ea96da69ef4= dc0bc1a24771c 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights res= erved. + * Copyright (c) 2025 Linaro Ltd */ =20 #include "iris_core.h" @@ -12,6 +13,7 @@ =20 #include "iris_platform_qcs8300.h" #include "iris_platform_sm8650.h" +#include "iris_platform_sm8750.h" =20 #define VIDEO_ARCH_LX 1 =20 @@ -463,6 +465,72 @@ struct iris_platform_data sm8650_data =3D { .dec_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_op_int_buf_tbl), }; =20 +struct iris_platform_data sm8750_data =3D { + .get_instance =3D iris_hfi_gen2_get_instance, + .init_hfi_command_ops =3D iris_hfi_gen2_command_ops_init, + .init_hfi_response_ops =3D iris_hfi_gen2_response_ops_init, + .vpu_ops =3D &iris_vpu35_ops, + .set_preset_registers =3D iris_set_sm8550_preset_registers, + .icc_tbl =3D sm8550_icc_table, + .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), + .clk_rst_tbl =3D sm8750_clk_reset_table, + .clk_rst_tbl_size =3D ARRAY_SIZE(sm8750_clk_reset_table), + .bw_tbl_dec =3D sm8550_bw_table_dec, + .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), + .pmdomain_tbl =3D sm8550_pmdomain_table, + .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), + .opp_pd_tbl =3D sm8550_opp_pd_table, + .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), + .clk_tbl =3D sm8750_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sm8750_clk_table), + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu/vpu35_p4.mbn", + .pas_id =3D IRIS_PAS_ID, + .inst_caps =3D &platform_inst_cap_sm8550, + .inst_fw_caps =3D inst_fw_cap_sm8550, + .inst_fw_caps_size =3D ARRAY_SIZE(inst_fw_cap_sm8550), + .tz_cp_config_data =3D &tz_cp_config_sm8550, + .core_arch =3D VIDEO_ARCH_LX, + .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, + .ubwc_config =3D &ubwc_config_sm8550, + .num_vpp_pipe =3D 4, + .max_session_count =3D 16, + .max_core_mbpf =3D NUM_MBS_8K * 2, + .input_config_params_default =3D + sm8550_vdec_input_config_params_default, + .input_config_params_default_size =3D + ARRAY_SIZE(sm8550_vdec_input_config_params_default), + .input_config_params_hevc =3D + sm8550_vdec_input_config_param_hevc, + .input_config_params_hevc_size =3D + ARRAY_SIZE(sm8550_vdec_input_config_param_hevc), + .input_config_params_vp9 =3D + sm8550_vdec_input_config_param_vp9, + .input_config_params_vp9_size =3D + ARRAY_SIZE(sm8550_vdec_input_config_param_vp9), + .output_config_params =3D + sm8550_vdec_output_config_params, + .output_config_params_size =3D + ARRAY_SIZE(sm8550_vdec_output_config_params), + .dec_input_prop =3D sm8550_vdec_subscribe_input_properties, + .dec_input_prop_size =3D ARRAY_SIZE(sm8550_vdec_subscribe_input_propertie= s), + .dec_output_prop_avc =3D sm8550_vdec_subscribe_output_properties_avc, + .dec_output_prop_avc_size =3D + ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_avc), + .dec_output_prop_hevc =3D sm8550_vdec_subscribe_output_properties_hevc, + .dec_output_prop_hevc_size =3D + ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_hevc), + .dec_output_prop_vp9 =3D sm8550_vdec_subscribe_output_properties_vp9, + .dec_output_prop_vp9_size =3D + ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_vp9), + + .dec_ip_int_buf_tbl =3D sm8550_dec_ip_int_buf_tbl, + .dec_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_ip_int_buf_tbl), + .dec_op_int_buf_tbl =3D sm8550_dec_op_int_buf_tbl, + .dec_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_op_int_buf_tbl), +}; + /* * Shares most of SM8550 data except: * - inst_caps to platform_inst_cap_qcs8300 diff --git a/drivers/media/platform/qcom/iris/iris_platform_sm8750.h b/driv= ers/media/platform/qcom/iris/iris_platform_sm8750.h new file mode 100644 index 0000000000000000000000000000000000000000..719056656a5baf48a7bced634d2= 582629333cf5c --- /dev/null +++ b/drivers/media/platform/qcom/iris/iris_platform_sm8750.h @@ -0,0 +1,22 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (c) 2025 Linaro Ltd + */ + +#ifndef __MEDIA_IRIS_PLATFORM_SM8750_H__ +#define __MEDIA_IRIS_PLATFORM_SM8750_H__ + +static const char * const sm8750_clk_reset_table[] =3D { + "bus0", "bus1", "core", "vcodec0_core" +}; + +static const struct platform_clk_data sm8750_clk_table[] =3D { + {IRIS_AXI_CLK, "iface" }, + {IRIS_CTRL_CLK, "core" }, + {IRIS_HW_CLK, "vcodec0_core" }, + {IRIS_AXI1_CLK, "iface1" }, + {IRIS_CTRL_FREERUN_CLK, "core_freerun" }, + {IRIS_HW_FREERUN_CLK, "vcodec0_core_freerun" }, +}; + +#endif diff --git a/drivers/media/platform/qcom/iris/iris_probe.c b/drivers/media/= platform/qcom/iris/iris_probe.c index 4e6e92357968d7419f114cc0ffa9b571bad19e46..5fb936a04155e72f4298cd6760e= ff6e9d1da6310 100644 --- a/drivers/media/platform/qcom/iris/iris_probe.c +++ b/drivers/media/platform/qcom/iris/iris_probe.c @@ -353,6 +353,10 @@ static const struct of_device_id iris_dt_match[] =3D { .compatible =3D "qcom,sm8650-iris", .data =3D &sm8650_data, }, + { + .compatible =3D "qcom,sm8750-iris", + .data =3D &sm8750_data, + }, { }, }; MODULE_DEVICE_TABLE(of, iris_dt_match); diff --git a/drivers/media/platform/qcom/iris/iris_vpu3x.c b/drivers/media/= platform/qcom/iris/iris_vpu3x.c index c235112057aa7b7eab1995737541b7a8276ff18b..86a5aeaba9f336c1a0836784291= 4e0d50f538622 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu3x.c +++ b/drivers/media/platform/qcom/iris/iris_vpu3x.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights res= erved. + * Copyright (c) 2025 Linaro Ltd */ =20 #include @@ -21,6 +22,8 @@ #define WRAPPER_IRIS_CPU_NOC_LPI_STATUS (WRAPPER_BASE_OFFS + 0x60) #define WRAPPER_CORE_CLOCK_CONFIG (WRAPPER_BASE_OFFS + 0x88) #define CORE_CLK_RUN 0x0 +/* VPU v3.5 */ +#define WRAPPER_IRIS_VCODEC_VPU_WRAPPER_SPARE_0 (WRAPPER_BASE_OFFS + 0x78) =20 #define WRAPPER_TZ_CTL_AXI_CLOCK_CONFIG (WRAPPER_TZ_BASE_OFFS + 0x14) #define CTL_AXI_CLK_HALT BIT(0) @@ -52,6 +55,8 @@ #define AON_WRAPPER_MVP_NOC_CORE_CLK_CONTROL (AON_BASE_OFFS + 0x20) #define NOC_HALT BIT(0) #define AON_WRAPPER_SPARE (AON_BASE_OFFS + 0x28) +#define AON_WRAPPER_MVP_VIDEO_CTL_NOC_LPI_CONTROL (AON_BASE_OFFS + 0x2C) +#define AON_WRAPPER_MVP_VIDEO_CTL_NOC_LPI_STATUS (AON_BASE_OFFS + 0x30) =20 static bool iris_vpu3x_hw_power_collapsed(struct iris_core *core) { @@ -225,6 +230,138 @@ static int iris_vpu33_power_off_controller(struct iri= s_core *core) return 0; } =20 +static int iris_vpu35_power_on_hw(struct iris_core *core) +{ + int ret; + + ret =3D iris_enable_power_domains(core, core->pmdomain_tbl->pd_devs[IRIS_= HW_POWER_DOMAIN]); + if (ret) + return ret; + + ret =3D iris_prepare_enable_clock(core, IRIS_AXI_CLK); + if (ret) + goto err_disable_power; + + ret =3D iris_prepare_enable_clock(core, IRIS_HW_FREERUN_CLK); + if (ret) + goto err_disable_axi_clk; + + ret =3D iris_prepare_enable_clock(core, IRIS_HW_CLK); + if (ret) + goto err_disable_hw_free_clk; + + ret =3D dev_pm_genpd_set_hwmode(core->pmdomain_tbl->pd_devs[IRIS_HW_POWER= _DOMAIN], true); + if (ret) + goto err_disable_hw_clk; + + return 0; + +err_disable_hw_clk: + iris_disable_unprepare_clock(core, IRIS_HW_CLK); +err_disable_hw_free_clk: + iris_disable_unprepare_clock(core, IRIS_HW_FREERUN_CLK); +err_disable_axi_clk: + iris_disable_unprepare_clock(core, IRIS_AXI_CLK); +err_disable_power: + iris_disable_power_domains(core, core->pmdomain_tbl->pd_devs[IRIS_HW_POWE= R_DOMAIN]); + + return ret; +} + +static void iris_vpu35_power_off_hw(struct iris_core *core) +{ + iris_vpu33_power_off_hardware(core); + + iris_disable_unprepare_clock(core, IRIS_HW_FREERUN_CLK); + iris_disable_unprepare_clock(core, IRIS_AXI_CLK); +} + +static int iris_vpu35_power_off_controller(struct iris_core *core) +{ + u32 clk_rst_tbl_size =3D core->iris_platform_data->clk_rst_tbl_size; + u32 val =3D 0; + int ret; + + writel(MSK_SIGNAL_FROM_TENSILICA | MSK_CORE_POWER_ON, core->reg_base + CP= U_CS_X2RPMH); + + writel(REQ_POWER_DOWN_PREP, core->reg_base + WRAPPER_IRIS_CPU_NOC_LPI_CON= TROL); + + ret =3D readl_poll_timeout(core->reg_base + WRAPPER_IRIS_CPU_NOC_LPI_STAT= US, + val, val & BIT(0), 200, 2000); + if (ret) + goto disable_power; + + writel(0x0, core->reg_base + WRAPPER_IRIS_CPU_NOC_LPI_CONTROL); + + writel(REQ_POWER_DOWN_PREP, core->reg_base + AON_WRAPPER_MVP_VIDEO_CTL_NO= C_LPI_CONTROL); + ret =3D readl_poll_timeout(core->reg_base + AON_WRAPPER_MVP_VIDEO_CTL_NOC= _LPI_STATUS, + val, val & (BIT(0) | BIT(1) | BIT(2)), 15, 1000); + if (ret) + goto disable_power; + + writel(0x0, core->reg_base + AON_WRAPPER_MVP_VIDEO_CTL_NOC_LPI_CONTROL); + + writel(0x0, core->reg_base + WRAPPER_DEBUG_BRIDGE_LPI_CONTROL); + + ret =3D readl_poll_timeout(core->reg_base + WRAPPER_DEBUG_BRIDGE_LPI_STAT= US, + val, val =3D=3D 0, 200, 2000); + if (ret) + goto disable_power; + +disable_power: + iris_disable_unprepare_clock(core, IRIS_CTRL_CLK); + iris_disable_unprepare_clock(core, IRIS_CTRL_FREERUN_CLK); + iris_disable_unprepare_clock(core, IRIS_AXI1_CLK); + + iris_disable_power_domains(core, core->pmdomain_tbl->pd_devs[IRIS_CTRL_PO= WER_DOMAIN]); + + reset_control_bulk_reset(clk_rst_tbl_size, core->resets); + + return 0; +} + +static int iris_vpu35_power_on_controller(struct iris_core *core) +{ + u32 rst_tbl_size =3D core->iris_platform_data->clk_rst_tbl_size; + int ret; + + ret =3D iris_enable_power_domains(core, core->pmdomain_tbl->pd_devs[IRIS_= CTRL_POWER_DOMAIN]); + if (ret) + return ret; + + ret =3D reset_control_bulk_reset(rst_tbl_size, core->resets); + if (ret) + goto err_disable_power; + + ret =3D iris_prepare_enable_clock(core, IRIS_AXI1_CLK); + if (ret) + goto err_disable_power; + + ret =3D iris_prepare_enable_clock(core, IRIS_CTRL_FREERUN_CLK); + if (ret) + goto err_disable_axi1_clk; + + ret =3D iris_prepare_enable_clock(core, IRIS_CTRL_CLK); + if (ret) + goto err_disable_ctrl_free_clk; + + return 0; + +err_disable_ctrl_free_clk: + iris_disable_unprepare_clock(core, IRIS_CTRL_FREERUN_CLK); +err_disable_axi1_clk: + iris_disable_unprepare_clock(core, IRIS_AXI1_CLK); +err_disable_power: + iris_disable_power_domains(core, core->pmdomain_tbl->pd_devs[IRIS_CTRL_PO= WER_DOMAIN]); + + return ret; +} + +static void iris_vpu35_program_bootup_registers(struct iris_core *core) +{ + writel(0x1, core->reg_base + WRAPPER_IRIS_VCODEC_VPU_WRAPPER_SPARE_0); +} + static u64 iris_vpu3x_calculate_frequency(struct iris_inst *inst, size_t d= ata_size) { struct platform_inst_caps *caps =3D inst->core->iris_platform_data->inst_= caps; @@ -277,3 +414,12 @@ const struct vpu_ops iris_vpu33_ops =3D { .power_on_controller =3D iris_vpu_power_on_controller, .calc_freq =3D iris_vpu3x_calculate_frequency, }; + +const struct vpu_ops iris_vpu35_ops =3D { + .power_off_hw =3D iris_vpu35_power_off_hw, + .power_on_hw =3D iris_vpu35_power_on_hw, + .power_off_controller =3D iris_vpu35_power_off_controller, + .power_on_controller =3D iris_vpu35_power_on_controller, + .program_bootup_registers =3D iris_vpu35_program_bootup_registers, + .calc_freq =3D iris_vpu3x_calculate_frequency, +}; diff --git a/drivers/media/platform/qcom/iris/iris_vpu_common.c b/drivers/m= edia/platform/qcom/iris/iris_vpu_common.c index 6c51002f72ab3d9e16d5a2a50ac712fac91ae25c..bb98950e018fadf69ac4f41b303= 7f7fd6ac33c5b 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_common.c +++ b/drivers/media/platform/qcom/iris/iris_vpu_common.c @@ -84,6 +84,7 @@ static void iris_vpu_interrupt_init(struct iris_core *cor= e) static void iris_vpu_setup_ucregion_memory_map(struct iris_core *core) { u32 queue_size, value; + const struct vpu_ops *vpu_ops =3D core->iris_platform_data->vpu_ops; =20 /* Iris hardware requires 4K queue alignment */ queue_size =3D ALIGN(sizeof(struct iris_hfi_queue_table_header) + @@ -105,6 +106,9 @@ static void iris_vpu_setup_ucregion_memory_map(struct i= ris_core *core) value =3D (u32)core->sfr_daddr + core->iris_platform_data->core_arch; writel(value, core->reg_base + SFR_ADDR); } + + if (vpu_ops->program_bootup_registers) + vpu_ops->program_bootup_registers(core); } =20 int iris_vpu_boot_firmware(struct iris_core *core) diff --git a/drivers/media/platform/qcom/iris/iris_vpu_common.h b/drivers/m= edia/platform/qcom/iris/iris_vpu_common.h index d95b305ca5a89ba8f08aefb6e6acd9ea4a721a8b..d636e287457adf0c44540af5c85= cfa69decbca8b 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_common.h +++ b/drivers/media/platform/qcom/iris/iris_vpu_common.h @@ -11,12 +11,14 @@ struct iris_core; extern const struct vpu_ops iris_vpu2_ops; extern const struct vpu_ops iris_vpu3_ops; extern const struct vpu_ops iris_vpu33_ops; +extern const struct vpu_ops iris_vpu35_ops; =20 struct vpu_ops { void (*power_off_hw)(struct iris_core *core); int (*power_on_hw)(struct iris_core *core); int (*power_off_controller)(struct iris_core *core); int (*power_on_controller)(struct iris_core *core); + void (*program_bootup_registers)(struct iris_core *core); u64 (*calc_freq)(struct iris_inst *inst, size_t data_size); }; =20 --=20 2.48.1