From nobody Fri Oct 3 19:11:38 2025 Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) (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 EFF0D322530; Tue, 26 Aug 2025 12:09:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756210192; cv=none; b=emW7ZhQ9/8jKfSUa1nSFiaeaFuPM9loc9XqTtqOFVbxs4L4qsv3pAQjeY0LU83rmFsKRRonuqrWpEMlcAHUyCrhPplfiA8feYO6RGMD+Att3NfH6CVdsGE7JS8HwmIYo1X5vaEDMVsJ2yNFAf+X/iitaPY1tvvDKjx4ir2NMwx8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756210192; c=relaxed/simple; bh=QAiPwZypg/VMlrPIBhr0fWYCSyBf5BBQP9eNNCiNfG4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=spEwor6xBwftbB1+/aAO3IK49RQFkRcNBj6PhQN47XWjITTGd8evfGRFbMgpXR9+YV/WkMuMBmvIBQV/6KuSHvn5gyDfMvBkdr9AbsHpd19+3uUpaNdGB3cmI55czwl49+5gV+aGTg+WIHQKNSapuIKqFzzOFn9oEUWERmynlCc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=jVaePLG3; arc=none smtp.client-ip=209.85.214.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jVaePLG3" Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-2445806df50so41905635ad.1; Tue, 26 Aug 2025 05:09:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756210190; x=1756814990; 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=myWZ5KKugg0r3Iz22gx0u77eYst6AR+R8GzbR5T+YNo=; b=jVaePLG3TYtTvx4aNW+V4Py71VlB7ofgSvYkfVSeqgxl2qWGOpE3VYKNwxGBAgT8GE b2TTM9Sc0jnmbbP4/Mjoaxo7MVAvSoizO/xgD+L8F74Yu2xzyssZ0iZP7rRKvLKFHJ5E NRgJnTgRwCzVhTLIvhnGRXHsp/lQM4sFMbbimKXQ5F4+D8nr/xjGpRsP9AqM++xU2UWF xFwJZu+jem2sL4WiFIZ8Bq1OiSvByCMpmG9O+MFcM5Kpuve8XpLI6ftqi6f05eb2qsOf RruF6MxrgcLb38cu9Wby8UzK7qQsMR2NKZ8WIJhhSRvUxnWVnqoGL3NC6W3qIsItAZa4 z1og== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756210190; x=1756814990; 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=myWZ5KKugg0r3Iz22gx0u77eYst6AR+R8GzbR5T+YNo=; b=ltUtm4n4mJxqT7GIzkKGPwNrSWO+Kx0e9u3v23Ty2CrZi0kuWtOXJ9pHADH4m7RnwU g6TrkcuscKvwFoKHGlqz48GZ0TDd/rrQIzX9LCMLlN4hW+RU7/AxmK1qkgiJ1Lwed140 k8pTz1z3lHBXscGSmgc4Bb3tPzrHkrvbL81x5L3YrBDARy5Jfqm9bHUQsu5WF0nQywiT 4jAueCBZO4A4T2vW4fMjy7g/1Ug93ajs2v3IGFnX0lTrNbT/pWUfCoirhmtofvhm2/wX EBLdoAHfv2woKifMpO280QaSMlOHDOSMybRgVuMgQi4R4sp8z0WH34LCPZ3FNKLm1GyL VDRQ== X-Forwarded-Encrypted: i=1; AJvYcCUYSKHUR8s9JvW+Es7gJRMI1mtRqcXVdq7r94piSX+aeopJgGMNH2keL1MXyJU+L9Gul6vsiyynJe5R@vger.kernel.org, AJvYcCVuUNjDzCqPQhOMz+PquPSHigHBLe44c6H0MglvETATIsEskntR+Gqudjq1352r78Qx3UjyCCEtBePXze8C@vger.kernel.org X-Gm-Message-State: AOJu0YwgSqWdQa1W1dxjyyOhESMtA22vXMVDPFhGSvg6BygbhkwFRoHE j81+LQ06ncFfhpJlwCkDdDa7qB78h2+ELc/Iq3pYiCJd1VX3GcsOVLlRdPc82J0j X-Gm-Gg: ASbGncvw1DNmZ/A/LaahdtbVgxYOltRokADNylz/meTe/GqqZkmyWmAYanG78qK6Z4O C4D8wAEt2WH6pnAFL4D/HnMyTMalLEKBDbq33fwG28wYNfPQ3Twefv3ikaCctmzR2KovlXujlUl vS15QhUUzkdq0jEApMXwN7R7qqlM4xVaOh9nBTRu2ComUCbbAtRNwY4Nx2z08FCnS4v6EiCuNY+ o87Weftq+zQDTm7xZ516VJ7bv5eiT+SuZ/KTF9BJ3VZP64CV5sOiIc7tjCu0YJXt1Lz0/zCh8JJ hhJ1oE8Qv4XHQ5Xo2UEKYnt6Gbxj+b9+w3tIyr9uW3JsUsgeOyMt5+pcRtgC2NgbZHvENKUOku7 22JocB/mHeZ8lAXY30HeiOJ115Vc= X-Google-Smtp-Source: AGHT+IFCs+0+QPpGE5rod3ewcQ6LEfg1s385+SmIISqW/6UyVrO7Bz46rSAw1PuBDWqjvwCmypo/2A== X-Received: by 2002:a17:902:d4c6:b0:246:eaec:2994 with SMTP id d9443c01a7336-246eaec2c7bmr90916255ad.49.1756210189659; Tue, 26 Aug 2025 05:09:49 -0700 (PDT) Received: from [127.0.1.1] ([59.188.211.98]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-327565d3924sm619966a91.13.2025.08.26.05.09.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 05:09:49 -0700 (PDT) From: Nick Chan Date: Tue, 26 Aug 2025 20:09:12 +0800 Subject: [PATCH v5 1/4] dt-bindings: nvme: apple,nvme-ans: Add Apple A11 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: <20250826-t8015-nvme-v5-1-caee6ab00144@gmail.com> References: <20250826-t8015-nvme-v5-0-caee6ab00144@gmail.com> In-Reply-To: <20250826-t8015-nvme-v5-0-caee6ab00144@gmail.com> To: Sven Peter , Janne Grunau , Alyssa Rosenzweig , Neal Gompa , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Keith Busch , Jens Axboe , Christoph Hellwig , Sagi Grimberg Cc: asahi@lists.linux.dev, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, Nick Chan , Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1377; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=QAiPwZypg/VMlrPIBhr0fWYCSyBf5BBQP9eNNCiNfG4=; b=owEBbQKS/ZANAwAKAQHKCLemxQgkAcsmYgBoraQDfcGlhRdbNX8kCRUtLsCfOQJIqHlyC4YjU BwPiF6XsVuJAjMEAAEKAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCaK2kAwAKCRABygi3psUI JGGFD/94mzTsBZpIQi24EhnHzwccGc0LDw8hGHIljz4WJYYwVsLfVquxUWdYAB08y6fm2eTVo0T MNh3t5Gt4Lh3wL2DcI3SFCG/3IVipT+XGVbX/r0RpHiDos8ZCg0QVtF1/on4amZn3T7qwmGqdSF +ySBYE7E4a0CpSNlC6GGgPOfGwrMeUVshCdM2liaghAVcPF69QMylAeYPUIc2eDlBbRZT0l/A5J vERkbULAJPwxT3bW0dV3fnqj0X00lXQdSiL7sxiZwb01qxR1zX+XGjyGfP2nm31y7vJNTt3Pb1g yyZVEoS2SE9lU44S1PBS1NZyMbrWu8KHWJ3NtkDJve5EQBcqJe4kJCvqWEuBZudmGTaPnbYx+bv se1nOzWouaav74L8nOGYFxS+CPCAxCzaZ1BcUYEdZ9DQ3EAMXaC61OOkWbPZQ+ZPFZydGk1kQ/o VOBAQTqno65pINclM5H73eZNQIy3rWDQF476WxLpc6hGY5fY2s5OYcFgBw9lFfXUzHYB5WeoXct h9Tv0rP6qPkmlAqsa7tDZGnLAilKIN5d9kHLtdB04LSzG0vSTzfFnzTdsLrIaQ39oKlEV7YkQRP vGpOy8z2Jdc97Qrtgt3Ue+iVUHC83WYvyGsh/r1HGcMkOBqEBADXHbNEPJvu1Aa3YSRgvJaqy+E OLsg8E+SBMa0Ktw== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 Add ANS2 NVMe bindings for Apple A11 SoC. Reviewed-by: Krzysztof Kozlowski Signed-off-by: Nick Chan --- .../devicetree/bindings/nvme/apple,nvme-ans.yaml | 15 +++++++++--= ---- 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Documentation/devicetree/bindings/nvme/apple,nvme-ans.yaml b/D= ocumentation/devicetree/bindings/nvme/apple,nvme-ans.yaml index fc6555724e1858e8a16f6750302ff0ad9c4e5b88..4127d7b0a0f066fd0e144b32d1b= 676e3406b9d5a 100644 --- a/Documentation/devicetree/bindings/nvme/apple,nvme-ans.yaml +++ b/Documentation/devicetree/bindings/nvme/apple,nvme-ans.yaml @@ -11,12 +11,14 @@ maintainers: =20 properties: compatible: - items: - - enum: - - apple,t8103-nvme-ans2 - - apple,t8112-nvme-ans2 - - apple,t6000-nvme-ans2 - - const: apple,nvme-ans2 + oneOf: + - const: apple,t8015-nvme-ans2 + - items: + - enum: + - apple,t8103-nvme-ans2 + - apple,t8112-nvme-ans2 + - apple,t6000-nvme-ans2 + - const: apple,nvme-ans2 =20 reg: items: @@ -67,6 +69,7 @@ if: compatible: contains: enum: + - apple,t8015-nvme-ans2 - apple,t8103-nvme-ans2 - apple,t8112-nvme-ans2 then: --=20 2.51.0 From nobody Fri Oct 3 19:11:38 2025 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) (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 7E95E33436C; Tue, 26 Aug 2025 12:09:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756210197; cv=none; b=Mg83Iakq5SyWbESTSJ46qUj5fHcAPkxl8/z7cUPoNgCUf7q6HII1rOZw+6GXtre2QrIdlszj6s1CLtOrOvPT2YuxEFwJXkYCBKy9GbyzFlYlOpsifUW4oFDE1ySKrDJM3Hcty9QbAaAvpRQDE2z+jRMKsFioNDFXDO3bwP/emrY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756210197; c=relaxed/simple; bh=EP2maDZNX/L8/MsVIGQbi95tV8ISG4kZg5AEcjYpYJ8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ppi66B+UtGmPOFYV5R30yw5GxlycNAldzBU5/RBnB+pYnbXmo0A/THxfLILMUlbbu55dUlEnTTrKPAqGL9Gmbo71cQVm7rvShKOe/Yz5JmFz+sizxlDsVPSeTqD94QwRvoqyuDw81yLGE2AFW+ZLgi/Im6MfvcO6hkd0ZEl6/Eo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=hC1UNBka; arc=none smtp.client-ip=209.85.210.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hC1UNBka" Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-770593ba164so2007954b3a.3; Tue, 26 Aug 2025 05:09:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756210194; x=1756814994; 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=9RhXQ+h/W7vkWVgu90QiUh64dQ6/rniCVZCTAu1ZHrM=; b=hC1UNBkaYk1qKcDNJPw329rCiQEjlYCb61rBlUUOeamnTwioWpZo0A0swq2ycJ3Q2c yp1dpx4NKSa8hPhgN8vMrDYyCILumKUxhm8yY5zlPn1qHFHN05no9U4tl0YDxfwAgp0S Bbf/n1/VcddkPlYMDrGmKmE1NZFvPfftHAgF6ds3gg70JknmxAXUoWMGY++XZavalN1w mSh8/i9hw2DRHzdwoKHHlJN3gSi6mrS+3+WZhDpNPUlGIvPt3Rp326eshrpwv+IAYJtb ytQ5YI/lxaCTrwUZoTox//bmtqMYKE4oa9lUCsM5R1VfSh1OgiMlYL1o2jPgjVG780Bp x5EA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756210194; x=1756814994; 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=9RhXQ+h/W7vkWVgu90QiUh64dQ6/rniCVZCTAu1ZHrM=; b=ttYDLcILJE1EGXcXsx5gpg1c0DoHkInbO779CMzDzq1xDSAuWMIzA74s/uxRiOB9Mb HufUEs5qO2tF2QUe5fhh2RjuCJzH68l2VOk/eXr7sZJ05S/55Wsbtzwe0SLcy9MYaWyE O8QoTBA0DHKwXWL6fVGt/M9JbU+gsUuvL1rTtzJs1WIi9p5hvgsiQs8Ce4ztNnsrKamR NbsKGMsWbVOYPkjnERfK1KnRnTGgKg02CHkLxWvlJrFsqpHou6RvSd+baFaaom7T3Od/ 8JdenBssViiJm8fFKxFVxjolPVPkW0Fe2N+781iP/qR1Jb0/ez+mNxkXfxCe+mYjQT9/ PzNg== X-Forwarded-Encrypted: i=1; AJvYcCVATs7BTXeEZJA2NtlpkuuvCmQ1VmZHkX18ODuiVjyns7+yNWZv+M4SKG3K0dDjRPm5cDgohe4VCd1m@vger.kernel.org, AJvYcCXFvhkRKxWHkYi3TWgsUkS17OP1B7WMY4tVrhsulijNcg5qvDsxjtUOJojxtBPEwtoBDFWhYqis//WytmsJ@vger.kernel.org X-Gm-Message-State: AOJu0YxDg3b3SKvvGLsEW0q+YwYfG3m4wwnEj1/hpR54nJ5wHGexDkPU 5N1q4c/ZlTqkCuYywfizoi0r1ucfV1UrJbaQSOauOkGBDjNYmwFmfxw90UH3i8mU X-Gm-Gg: ASbGncsw6fZXoJmvBo3EnHEJGVAmXdY671pH5IPBYtgARAUXpfNlJHb8bjXoC/xaW9Q ghf+AdGfveDfU/xJa7NVnnDSgfzm1oWP0tA22lDeXJng9EtwBOKoPU5i3EX7k0bEcLdkGV4n2Ce Vh5GNlTkeUTRENrq3DOL7BKDLne9LifilyuA7lR3leQ/PPAwlE5zGfxszkp0vwvDygNntLEkVk8 +Zr0iLLehzbft/0JVHU2CztCjcJZ7/Efx0Tr89eRVdeZggKP2XL7ah55tR2IDxSNQJUKQYRc+uA 1OyO5JsmIpfe1DX5K+bh5rahOnHocVXAX9cAjLM2DpeAQgbDzFz5ikulDInxH94d2oT0kOI/3AS QHK/DyrbdXi/srcHuPLguR0XMS6CgdAxbbLb0VA== X-Google-Smtp-Source: AGHT+IGNP4EaRV1BA1e+ASa+K/75WkTJ8/RIl1r5L/ASVDKbLpelHjtOny9d91wG3yHF+XAQucM3iw== X-Received: by 2002:a05:6a20:5493:b0:243:755:58b7 with SMTP id adf61e73a8af0-24340d92b54mr23917707637.56.1756210194261; Tue, 26 Aug 2025 05:09:54 -0700 (PDT) Received: from [127.0.1.1] ([59.188.211.98]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-327565d3924sm619966a91.13.2025.08.26.05.09.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 05:09:53 -0700 (PDT) From: Nick Chan Date: Tue, 26 Aug 2025 20:09:13 +0800 Subject: [PATCH v5 2/4] nvme: apple: Add Apple A11 support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250826-t8015-nvme-v5-2-caee6ab00144@gmail.com> References: <20250826-t8015-nvme-v5-0-caee6ab00144@gmail.com> In-Reply-To: <20250826-t8015-nvme-v5-0-caee6ab00144@gmail.com> To: Sven Peter , Janne Grunau , Alyssa Rosenzweig , Neal Gompa , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Keith Busch , Jens Axboe , Christoph Hellwig , Sagi Grimberg Cc: asahi@lists.linux.dev, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=13147; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=EP2maDZNX/L8/MsVIGQbi95tV8ISG4kZg5AEcjYpYJ8=; b=owEBbQKS/ZANAwAKAQHKCLemxQgkAcsmYgBoraQDL/gM44vviEkcJDF3x46e0m5/N71zjyJMy APmgR7ZrRqJAjMEAAEKAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCaK2kAwAKCRABygi3psUI JANDD/9WOfXX2GjM0rpC/7gXq32fb572RM5Cbii31CzLZs40+ikgRUO3BS1aiQLyz4jzFn39EDU gNfBAL6rdFtCNlgW68eeEN8JR7hgv6R/5q2TgC6hRz8EtUz/Z1p1mYE6IJFneXirWWY3/fU94wh Xs7AcL7xwQWR2bAluBEsmCZIcIHNnk1C/9hUb5Z9GSZvU/Hu0hxcUWukEWTkBx6aa9DhDeuCozw k8IULYtKVC6FHOFDk/p0IL1HWvQzGYMrWtS54TJBTTI5uHaMnWXaCavMQpgMe0jZn29K/n0I5q7 T/Gx3fS/osjRBFL0hPG/9iYvcpC6XPzymUfTJgzw3AhiZGh8PEVX+If2sYocgGy5qjrVJeHiam8 IfRsOqsXfZw18oAoog/bkrUxLTE0GnVPz9mwi9UztN6o+RY3FxnIncCGukgPBsEKALPa7zYyWFu VjSBuwHSWkCdeluRceJlX1vFHIZk8+Am9acmw3yO/Vu1BwMVac09U0RNGDcCISndkVFqj89w3ht 85e03pJTieXg4tW9XVC0/ClPu2/hmbtABK8QA2WgndDYo9mnkhiEDG1YEXJNzLTEZZfEpzdAouh PElpCejnpHDipMHMbeCfNn4MhMF3Oa8CuIIhBPSaOLfmZbxqRgq67T+Ytfk7/WbABK+Z1KI0CG1 V1Z7VYGyhujxURA== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 Add support for ANS2 NVMe on Apple A11 SoC. This version of ANS2 is less quirky than the one in M1, and does not have NVMMU or Linear SQ. However, it still requires a non-standard 128-byte SQE. Acked-by: Christoph Hellwig Signed-off-by: Nick Chan Reviewed-by: Sven Peter --- drivers/nvme/host/apple.c | 197 ++++++++++++++++++++++++++++++++----------= ---- 1 file changed, 137 insertions(+), 60 deletions(-) diff --git a/drivers/nvme/host/apple.c b/drivers/nvme/host/apple.c index 1286c31320e630cb012009d6b962526e0553869f..f35d3f71d14f32cf7ea8de00c30= 991fc153ff383 100644 --- a/drivers/nvme/host/apple.c +++ b/drivers/nvme/host/apple.c @@ -35,7 +35,6 @@ #include "nvme.h" =20 #define APPLE_ANS_BOOT_TIMEOUT USEC_PER_SEC -#define APPLE_ANS_MAX_QUEUE_DEPTH 64 =20 #define APPLE_ANS_COPROC_CPU_CONTROL 0x44 #define APPLE_ANS_COPROC_CPU_CONTROL_RUN BIT(4) @@ -75,6 +74,8 @@ #define APPLE_NVME_AQ_DEPTH 2 #define APPLE_NVME_AQ_MQ_TAG_DEPTH (APPLE_NVME_AQ_DEPTH - 1) =20 +#define APPLE_NVME_IOSQES 7 + /* * These can be higher, but we need to ensure that any command doesn't * require an sg allocation that needs more than a page of data. @@ -142,6 +143,7 @@ struct apple_nvme_queue { u32 __iomem *sq_db; u32 __iomem *cq_db; =20 + u16 sq_tail; u16 cq_head; u8 cq_phase; =20 @@ -166,11 +168,17 @@ struct apple_nvme_iod { struct scatterlist *sg; }; =20 +struct apple_nvme_hw { + bool has_lsq_nvmmu; + u32 max_queue_depth; +}; + struct apple_nvme { struct device *dev; =20 void __iomem *mmio_coproc; void __iomem *mmio_nvme; + const struct apple_nvme_hw *hw; =20 struct device **pd_dev; struct device_link **pd_link; @@ -215,10 +223,12 @@ static inline struct apple_nvme *queue_to_apple_nvme(= struct apple_nvme_queue *q) =20 static unsigned int apple_nvme_queue_depth(struct apple_nvme_queue *q) { - if (q->is_adminq) + struct apple_nvme *anv =3D queue_to_apple_nvme(q); + + if (q->is_adminq && anv->hw->has_lsq_nvmmu) return APPLE_NVME_AQ_DEPTH; =20 - return APPLE_ANS_MAX_QUEUE_DEPTH; + return anv->hw->max_queue_depth; } =20 static void apple_nvme_rtkit_crashed(void *cookie, const void *crashlog, s= ize_t crashlog_size) @@ -280,7 +290,28 @@ static void apple_nvmmu_inval(struct apple_nvme_queue = *q, unsigned int tag) "NVMMU TCB invalidation failed\n"); } =20 -static void apple_nvme_submit_cmd(struct apple_nvme_queue *q, +static void apple_nvme_submit_cmd_t8015(struct apple_nvme_queue *q, + struct nvme_command *cmd) +{ + struct apple_nvme *anv =3D queue_to_apple_nvme(q); + + spin_lock_irq(&anv->lock); + + if (q->is_adminq) + memcpy(&q->sqes[q->sq_tail], cmd, sizeof(*cmd)); + else + memcpy((void *)q->sqes + (q->sq_tail << APPLE_NVME_IOSQES), + cmd, sizeof(*cmd)); + + if (++q->sq_tail =3D=3D anv->hw->max_queue_depth) + q->sq_tail =3D 0; + + writel(q->sq_tail, q->sq_db); + spin_unlock_irq(&anv->lock); +} + + +static void apple_nvme_submit_cmd_t8103(struct apple_nvme_queue *q, struct nvme_command *cmd) { struct apple_nvme *anv =3D queue_to_apple_nvme(q); @@ -590,7 +621,8 @@ static inline void apple_nvme_handle_cqe(struct apple_n= vme_queue *q, __u16 command_id =3D READ_ONCE(cqe->command_id); struct request *req; =20 - apple_nvmmu_inval(q, command_id); + if (anv->hw->has_lsq_nvmmu) + apple_nvmmu_inval(q, command_id); =20 req =3D nvme_find_rq(apple_nvme_queue_tagset(anv, q), command_id); if (unlikely(!req)) { @@ -685,7 +717,7 @@ static int apple_nvme_create_cq(struct apple_nvme *anv) c.create_cq.opcode =3D nvme_admin_create_cq; c.create_cq.prp1 =3D cpu_to_le64(anv->ioq.cq_dma_addr); c.create_cq.cqid =3D cpu_to_le16(1); - c.create_cq.qsize =3D cpu_to_le16(APPLE_ANS_MAX_QUEUE_DEPTH - 1); + c.create_cq.qsize =3D cpu_to_le16(anv->hw->max_queue_depth - 1); c.create_cq.cq_flags =3D cpu_to_le16(NVME_QUEUE_PHYS_CONTIG | NVME_CQ_IRQ= _ENABLED); c.create_cq.irq_vector =3D cpu_to_le16(0); =20 @@ -713,7 +745,7 @@ static int apple_nvme_create_sq(struct apple_nvme *anv) c.create_sq.opcode =3D nvme_admin_create_sq; c.create_sq.prp1 =3D cpu_to_le64(anv->ioq.sq_dma_addr); c.create_sq.sqid =3D cpu_to_le16(1); - c.create_sq.qsize =3D cpu_to_le16(APPLE_ANS_MAX_QUEUE_DEPTH - 1); + c.create_sq.qsize =3D cpu_to_le16(anv->hw->max_queue_depth - 1); c.create_sq.sq_flags =3D cpu_to_le16(NVME_QUEUE_PHYS_CONTIG); c.create_sq.cqid =3D cpu_to_le16(1); =20 @@ -765,7 +797,12 @@ static blk_status_t apple_nvme_queue_rq(struct blk_mq_= hw_ctx *hctx, } =20 nvme_start_request(req); - apple_nvme_submit_cmd(q, cmnd); + + if (anv->hw->has_lsq_nvmmu) + apple_nvme_submit_cmd_t8103(q, cmnd); + else + apple_nvme_submit_cmd_t8015(q, cmnd); + return BLK_STS_OK; =20 out_free_cmd: @@ -970,11 +1007,13 @@ static const struct blk_mq_ops apple_nvme_mq_ops =3D= { static void apple_nvme_init_queue(struct apple_nvme_queue *q) { unsigned int depth =3D apple_nvme_queue_depth(q); + struct apple_nvme *anv =3D queue_to_apple_nvme(q); =20 q->cq_head =3D 0; q->cq_phase =3D 1; - memset(q->tcbs, 0, - APPLE_ANS_MAX_QUEUE_DEPTH * sizeof(struct apple_nvmmu_tcb)); + if (anv->hw->has_lsq_nvmmu) + memset(q->tcbs, 0, anv->hw->max_queue_depth + * sizeof(struct apple_nvmmu_tcb)); memset(q->cqes, 0, depth * sizeof(struct nvme_completion)); WRITE_ONCE(q->enabled, true); wmb(); /* ensure the first interrupt sees the initialization */ @@ -1069,49 +1108,55 @@ static void apple_nvme_reset_work(struct work_struc= t *work) =20 dma_set_max_seg_size(anv->dev, 0xffffffff); =20 - /* - * Enable NVMMU and linear submission queues. - * While we could keep those disabled and pretend this is slightly - * more common NVMe controller we'd still need some quirks (e.g. - * sq entries will be 128 bytes) and Apple might drop support for - * that mode in the future. - */ - writel(APPLE_ANS_LINEAR_SQ_EN, - anv->mmio_nvme + APPLE_ANS_LINEAR_SQ_CTRL); + if (anv->hw->has_lsq_nvmmu) { + /* + * Enable NVMMU and linear submission queues which is required + * since T6000. + */ + writel(APPLE_ANS_LINEAR_SQ_EN, + anv->mmio_nvme + APPLE_ANS_LINEAR_SQ_CTRL); =20 - /* Allow as many pending command as possible for both queues */ - writel(APPLE_ANS_MAX_QUEUE_DEPTH | (APPLE_ANS_MAX_QUEUE_DEPTH << 16), - anv->mmio_nvme + APPLE_ANS_MAX_PEND_CMDS_CTRL); + /* Allow as many pending command as possible for both queues */ + writel(anv->hw->max_queue_depth + | (anv->hw->max_queue_depth << 16), anv->mmio_nvme + + APPLE_ANS_MAX_PEND_CMDS_CTRL); =20 - /* Setup the NVMMU for the maximum admin and IO queue depth */ - writel(APPLE_ANS_MAX_QUEUE_DEPTH - 1, - anv->mmio_nvme + APPLE_NVMMU_NUM_TCBS); + /* Setup the NVMMU for the maximum admin and IO queue depth */ + writel(anv->hw->max_queue_depth - 1, + anv->mmio_nvme + APPLE_NVMMU_NUM_TCBS); =20 - /* - * This is probably a chicken bit: without it all commands where any PRP - * is set to zero (including those that don't use that field) fail and - * the co-processor complains about "completed with err BAD_CMD-" or - * a "NULL_PRP_PTR_ERR" in the syslog - */ - writel(readl(anv->mmio_nvme + APPLE_ANS_UNKNOWN_CTRL) & - ~APPLE_ANS_PRP_NULL_CHECK, - anv->mmio_nvme + APPLE_ANS_UNKNOWN_CTRL); + /* + * This is probably a chicken bit: without it all commands + * where any PRP is set to zero (including those that don't use + * that field) fail and the co-processor complains about + * "completed with err BAD_CMD-" or a "NULL_PRP_PTR_ERR" in the + * syslog + */ + writel(readl(anv->mmio_nvme + APPLE_ANS_UNKNOWN_CTRL) & + ~APPLE_ANS_PRP_NULL_CHECK, + anv->mmio_nvme + APPLE_ANS_UNKNOWN_CTRL); + } =20 /* Setup the admin queue */ - aqa =3D APPLE_NVME_AQ_DEPTH - 1; + if (anv->hw->has_lsq_nvmmu) + aqa =3D APPLE_NVME_AQ_DEPTH - 1; + else + aqa =3D anv->hw->max_queue_depth - 1; aqa |=3D aqa << 16; writel(aqa, anv->mmio_nvme + NVME_REG_AQA); writeq(anv->adminq.sq_dma_addr, anv->mmio_nvme + NVME_REG_ASQ); writeq(anv->adminq.cq_dma_addr, anv->mmio_nvme + NVME_REG_ACQ); =20 - /* Setup NVMMU for both queues */ - writeq(anv->adminq.tcb_dma_addr, - anv->mmio_nvme + APPLE_NVMMU_ASQ_TCB_BASE); - writeq(anv->ioq.tcb_dma_addr, - anv->mmio_nvme + APPLE_NVMMU_IOSQ_TCB_BASE); + if (anv->hw->has_lsq_nvmmu) { + /* Setup NVMMU for both queues */ + writeq(anv->adminq.tcb_dma_addr, + anv->mmio_nvme + APPLE_NVMMU_ASQ_TCB_BASE); + writeq(anv->ioq.tcb_dma_addr, + anv->mmio_nvme + APPLE_NVMMU_IOSQ_TCB_BASE); + } =20 anv->ctrl.sqsize =3D - APPLE_ANS_MAX_QUEUE_DEPTH - 1; /* 0's based queue depth */ + anv->hw->max_queue_depth - 1; /* 0's based queue depth */ anv->ctrl.cap =3D readq(anv->mmio_nvme + NVME_REG_CAP); =20 dev_dbg(anv->dev, "Enabling controller now"); @@ -1282,8 +1327,9 @@ static int apple_nvme_alloc_tagsets(struct apple_nvme= *anv) * both queues. The admin queue gets the first APPLE_NVME_AQ_DEPTH which * must be marked as reserved in the IO queue. */ - anv->tagset.reserved_tags =3D APPLE_NVME_AQ_DEPTH; - anv->tagset.queue_depth =3D APPLE_ANS_MAX_QUEUE_DEPTH - 1; + if (anv->hw->has_lsq_nvmmu) + anv->tagset.reserved_tags =3D APPLE_NVME_AQ_DEPTH; + anv->tagset.queue_depth =3D anv->hw->max_queue_depth - 1; anv->tagset.timeout =3D NVME_IO_TIMEOUT; anv->tagset.numa_node =3D NUMA_NO_NODE; anv->tagset.cmd_size =3D sizeof(struct apple_nvme_iod); @@ -1307,6 +1353,7 @@ static int apple_nvme_queue_alloc(struct apple_nvme *= anv, struct apple_nvme_queue *q) { unsigned int depth =3D apple_nvme_queue_depth(q); + size_t iosq_size; =20 q->cqes =3D dmam_alloc_coherent(anv->dev, depth * sizeof(struct nvme_completion), @@ -1314,22 +1361,28 @@ static int apple_nvme_queue_alloc(struct apple_nvme= *anv, if (!q->cqes) return -ENOMEM; =20 - q->sqes =3D dmam_alloc_coherent(anv->dev, - depth * sizeof(struct nvme_command), + if (anv->hw->has_lsq_nvmmu) + iosq_size =3D depth * sizeof(struct nvme_command); + else + iosq_size =3D depth << APPLE_NVME_IOSQES; + + q->sqes =3D dmam_alloc_coherent(anv->dev, iosq_size, &q->sq_dma_addr, GFP_KERNEL); if (!q->sqes) return -ENOMEM; =20 - /* - * We need the maximum queue depth here because the NVMMU only has a - * single depth configuration shared between both queues. - */ - q->tcbs =3D dmam_alloc_coherent(anv->dev, - APPLE_ANS_MAX_QUEUE_DEPTH * - sizeof(struct apple_nvmmu_tcb), - &q->tcb_dma_addr, GFP_KERNEL); - if (!q->tcbs) - return -ENOMEM; + if (anv->hw->has_lsq_nvmmu) { + /* + * We need the maximum queue depth here because the NVMMU only + * has a single depth configuration shared between both queues. + */ + q->tcbs =3D dmam_alloc_coherent(anv->dev, + anv->hw->max_queue_depth * + sizeof(struct apple_nvmmu_tcb), + &q->tcb_dma_addr, GFP_KERNEL); + if (!q->tcbs) + return -ENOMEM; + } =20 /* * initialize phase to make sure the allocated and empty memory @@ -1413,6 +1466,12 @@ static struct apple_nvme *apple_nvme_alloc(struct pl= atform_device *pdev) anv->adminq.is_adminq =3D true; platform_set_drvdata(pdev, anv); =20 + anv->hw =3D of_device_get_match_data(&pdev->dev); + if (!anv->hw) { + ret =3D -ENODEV; + goto put_dev; + } + ret =3D apple_nvme_attach_genpd(anv); if (ret < 0) { dev_err_probe(dev, ret, "Failed to attach power domains"); @@ -1444,10 +1503,17 @@ static struct apple_nvme *apple_nvme_alloc(struct p= latform_device *pdev) goto put_dev; } =20 - anv->adminq.sq_db =3D anv->mmio_nvme + APPLE_ANS_LINEAR_ASQ_DB; - anv->adminq.cq_db =3D anv->mmio_nvme + APPLE_ANS_ACQ_DB; - anv->ioq.sq_db =3D anv->mmio_nvme + APPLE_ANS_LINEAR_IOSQ_DB; - anv->ioq.cq_db =3D anv->mmio_nvme + APPLE_ANS_IOCQ_DB; + if (anv->hw->has_lsq_nvmmu) { + anv->adminq.sq_db =3D anv->mmio_nvme + APPLE_ANS_LINEAR_ASQ_DB; + anv->adminq.cq_db =3D anv->mmio_nvme + APPLE_ANS_ACQ_DB; + anv->ioq.sq_db =3D anv->mmio_nvme + APPLE_ANS_LINEAR_IOSQ_DB; + anv->ioq.cq_db =3D anv->mmio_nvme + APPLE_ANS_IOCQ_DB; + } else { + anv->adminq.sq_db =3D anv->mmio_nvme + NVME_REG_DBS; + anv->adminq.cq_db =3D anv->mmio_nvme + APPLE_ANS_ACQ_DB; + anv->ioq.sq_db =3D anv->mmio_nvme + NVME_REG_DBS + 8; + anv->ioq.cq_db =3D anv->mmio_nvme + APPLE_ANS_IOCQ_DB; + } =20 anv->sart =3D devm_apple_sart_get(dev); if (IS_ERR(anv->sart)) { @@ -1625,8 +1691,19 @@ static int apple_nvme_suspend(struct device *dev) static DEFINE_SIMPLE_DEV_PM_OPS(apple_nvme_pm_ops, apple_nvme_suspend, apple_nvme_resume); =20 +static const struct apple_nvme_hw apple_nvme_t8015_hw =3D { + .has_lsq_nvmmu =3D false, + .max_queue_depth =3D 16, +}; + +static const struct apple_nvme_hw apple_nvme_t8103_hw =3D { + .has_lsq_nvmmu =3D true, + .max_queue_depth =3D 64, +}; + static const struct of_device_id apple_nvme_of_match[] =3D { - { .compatible =3D "apple,nvme-ans2" }, + { .compatible =3D "apple,t8015-nvme-ans2", .data =3D &apple_nvme_t8015_hw= }, + { .compatible =3D "apple,nvme-ans2", .data =3D &apple_nvme_t8103_hw }, {}, }; MODULE_DEVICE_TABLE(of, apple_nvme_of_match); --=20 2.51.0 From nobody Fri Oct 3 19:11:38 2025 Received: from mail-pg1-f180.google.com (mail-pg1-f180.google.com [209.85.215.180]) (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 17169322530; Tue, 26 Aug 2025 12:09:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756210201; cv=none; b=JV1y+r+9kVHRNEJqamO1aiHnkfHiUlk0BsdGxGD++8Zmb1DsFloCSsGNV1PPlKZ1bZQPAqSjvr5W/FHyj3oBsjPAAnDNpjeWW/h5ulpd5VRmonVWEj6FenZioUXS00RbVM/Zyze2IdtX0hcbckDdiScoxx1lQ+DlAEDw2MlMDts= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756210201; c=relaxed/simple; bh=CYNjF9OQgn4g6Ftiuun6/MohBcP92VmI1C5IHAHtgWs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mjT8+o04xWvgBK7WE1xu4bpX+sV17ET+giuh+TosutXIFlW687FoMs8A7TrVHDUqZhfcVGZ6k8Mc97J1wA+7db/emL6r8YNKdONhN4rha3Xk9VTj6jSHvKsbcHPOlakQTBeL596MyG3NVITCFDRntgfcwm+vIbJYvZJbByytmMo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=fF3Lh76j; arc=none smtp.client-ip=209.85.215.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fF3Lh76j" Received: by mail-pg1-f180.google.com with SMTP id 41be03b00d2f7-b49cf21320aso3357767a12.1; Tue, 26 Aug 2025 05:09:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756210199; x=1756814999; 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=Te1xVrQgzDBuz4rdm+oAY4F74VBZ8yuKiz2U07Pbv64=; b=fF3Lh76jo7PON7hja9CkcywKaOEkklpb5AuzWZxFNERB5iNkayZ7Hugp7orkTRjuoo j8/m4GdqrkY0J0KwUykqI7Ho0qwxOdVryu1TWEA+yU8WYKTybOISj0PsKmQiC0CyrQys uZzYaYjF92ODdCfMSOhc+yJ9Y3Ogplijw0WFL0qmmYkchHuXBRundIeVlLSZBV58znSO 7J2uN6EVRw+lQQK1haAmE02Xuv4UNnT3hKQUDI35QgNwWuftM+PtAY0cBsNi1roSggBa SwmgPKt44Z9NSgP2E26/PzWSqtWwHXAxaItX4aRxnT1P4yWaftE/LgGMgLxJdyYiUNkW 2jLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756210199; x=1756814999; 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=Te1xVrQgzDBuz4rdm+oAY4F74VBZ8yuKiz2U07Pbv64=; b=C6RlnpYSp95tyENK7Gk5+m+aH9WpIVFE+8GDSZTna30zo+Uqws6oQIoadEOJ2tEJjk G8u0nNX/9M2umSKnh6+DhGHj9B8KetQ9O71SvnaS51XaA0kFm3j1TIDvZzwtXyWs9ZIX ghhyZjLf6XLvE7l218GJQCm9GmcGE2+YQGOmw/p3KHFjPFcJNATFRes13dJsIwqf4YT8 HUo9tpXynt/+OlJ8VlJmPdvNAZeSwGjdz1Fc8zmJA6fnFFvoDBdNYIyH6m/Yaj1Zb92W LVC6IAKvfuTCOAPF8k6WwID8cdTgaTOh0NroAbT4/rNKB7/wKHRBwK1U0WBKKTvAMl7Z RLhw== X-Forwarded-Encrypted: i=1; AJvYcCW9rB1VPVyIa4Dhtl+UspMYEc2RnqBPlSCqP6+K3sQulswybXspo5S5OkSKUS8DP7HJy9z74tv9Q8Evl62x@vger.kernel.org, AJvYcCWs3YBPKoNgIRDm9uSiE+SYuBOjr6knE+D6s6YOoXmOYL1Fo6ZIrDBF/W/AsUXcjZgq1vT78M7MP1iG@vger.kernel.org X-Gm-Message-State: AOJu0Yxwd+ZVbQ2GZNh7ghXZ6AytoVCZ41VTrX9ZJ8jh09+XYvFeS5pK 2bVVJMwwSAjvEETB5Piujz6BGjZsswiOI/PgJnLMwiWmf7QYXRERMdGpSGFYeyIi X-Gm-Gg: ASbGncsZgj+b5Mg2xkOs3/u9ctE+ZKWJYXwGF1Zt4CnkKBzUXyolOAmmnOjC9d/sMTX 3GQ0qGgcmuEp9Y/zU1rW61nWL5G/OXKGJkLxWZI8zKklDrhcI9UUezYHAOIfI5sSm5hJuCbFHqV vOBDx6ETUJ3EpAdNNTyHRGzjzMRzkfOGjQFzJwoMYW9pcWhdkj88NtrzNAet4xqt2+hm7bXoPCv WqLPM46On10o+zUR8tfGtTack5CuAjKDHJ/tMnsGjWWoRlsRnW2iobgI2vwCIGz9GI/6aOLttCO kAYxX8CmsdFFZkjW6pXJ6U+hz4VuT97rEc/sRyAzLQLDgppb8g/yb3T6mixWwzrnChxXobnJmth vXDLqfq9CO9aH0fG/GaGFIlZvhbhX3Setfd8vmA== X-Google-Smtp-Source: AGHT+IHtj4KgXbSqTdwrJl0C85JLO/ylMqNOyyNdi7uTUtfGcZME4gs+kyz2KM5t0aJF8T2+RPr03g== X-Received: by 2002:a17:902:f543:b0:246:7a11:3775 with SMTP id d9443c01a7336-2467a113b1amr133955215ad.48.1756210198844; Tue, 26 Aug 2025 05:09:58 -0700 (PDT) Received: from [127.0.1.1] ([59.188.211.98]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-327565d3924sm619966a91.13.2025.08.26.05.09.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 05:09:58 -0700 (PDT) From: Nick Chan Date: Tue, 26 Aug 2025 20:09:14 +0800 Subject: [PATCH v5 3/4] arm64: dts: apple: t8015: Fix PCIE power domains dependencies 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: <20250826-t8015-nvme-v5-3-caee6ab00144@gmail.com> References: <20250826-t8015-nvme-v5-0-caee6ab00144@gmail.com> In-Reply-To: <20250826-t8015-nvme-v5-0-caee6ab00144@gmail.com> To: Sven Peter , Janne Grunau , Alyssa Rosenzweig , Neal Gompa , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Keith Busch , Jens Axboe , Christoph Hellwig , Sagi Grimberg Cc: asahi@lists.linux.dev, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=798; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=CYNjF9OQgn4g6Ftiuun6/MohBcP92VmI1C5IHAHtgWs=; b=owEBbQKS/ZANAwAKAQHKCLemxQgkAcsmYgBoraQDxO7Qv1fzxL96zHeJ8UWQtZ+jverp0LMZr KDDOuHgJf6JAjMEAAEKAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCaK2kAwAKCRABygi3psUI JEkwD/0QJJHfCREZw30/LgHOOZhIwxNN9/ncVeXksoFKhfe1XdfT0CTUV/5MqsZPYXRLEi5D90X c4b5Tg14SjloONpUPd4fFzx2pi6atWQ2KVETMATFdRbeA9D3hdnkAk5wo7K1NP8cKUHkreo+aH6 OH/UZFBjr8Fi4ZQ55UHa8Y8nX/PHoXPpZd/0+g98pkIVrMdzcWRYnci9x5aKBF4dfryLJLytW9Z pLn2C/VEsZJAxWe4QZZ4KTcGAZAsVkf4ytvpi5S8NG3PNT5GiTemz5rc0oPz/otK6DS2NY6s3C0 G3rGendudRTzg0AJRAoJmPNXqt5cN6Kt/7S+lGpRJV3avH2gDq2UPyxkHwK1cnrliUmec4WxOyx stFLRy1di10g8esevDN97RpmiC3NNSn5yJ1Xc7wsBl73EafjB3fytXW2HgkcypoZ090NlcgNRY/ 8N5bZaPuoLkWJkkfiqViehHAI6Si6k3w21NldiUzoaqegH+3OJS/LlMMPAEd5OUQNxpc06nRGR9 nvWM2W+V8zZjQ8lyDpsj7V+wU0snKxVysRfkmkEUfhLCP5yEl2NQVKu5OMj+5tsA/cenjWLGst+ rF59G0fy6vX+I/1vNQDwenNZMiHDFp6vX/1q6G65UQxxovLzQ6zqFmlwSQbPsofCaShSfAZXOsN 7HK+Nk3zVoCnoPQ== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 Fix the dependency topology of PCIE power domain nodes, as required by ANS2 NVME controller. Signed-off-by: Nick Chan --- arch/arm64/boot/dts/apple/t8015-pmgr.dtsi | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/boot/dts/apple/t8015-pmgr.dtsi b/arch/arm64/boot/dt= s/apple/t8015-pmgr.dtsi index e238c2d2732f7944dc1f984a4eb647ba212b9ea5..1d8da9c7863e5b7a732888342de= 9d481f309edd8 100644 --- a/arch/arm64/boot/dts/apple/t8015-pmgr.dtsi +++ b/arch/arm64/boot/dts/apple/t8015-pmgr.dtsi @@ -658,6 +658,7 @@ ps_pcie: power-controller@80318 { #power-domain-cells =3D <0>; #reset-cells =3D <0>; label =3D "pcie"; + power-domains =3D <&ps_pcie_aux>, <&ps_pcie_direct>, <&ps_pcie_ref>; }; =20 ps_pcie_aux: power-controller@80320 { --=20 2.51.0 From nobody Fri Oct 3 19:11:38 2025 Received: from mail-pj1-f47.google.com (mail-pj1-f47.google.com [209.85.216.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2BDAB321433; Tue, 26 Aug 2025 12:10:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756210206; cv=none; b=DTpjt79MHl+Per+WcXrEIqTPpom+u4DhEnrbburwqCvixXqSyVI0lt6s6YAnOSdeeTZYbhkSfP9oBYT00iWd/VPS5apdj3iHXdoZkX9Q0QKlnK9d11lX2LvD01PZbfWYDJG4b7rurndiANllwCsc1Txf6dOZxJbfj+CI25hpZk8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756210206; c=relaxed/simple; bh=n0GU3aHOIbzcpxdfkfvKoQ2JdbUFCoeF/xHA7QnVC2k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OW46dJVECc6e6Xn+QMxOcg2xRM9w7yMSHEkNNiy+tDb2TLnD0bWoPIBGQ+t/J95wMwRunOGqPHezYeLX2I+ExTb8tnKiXg9eGGz5SaZK9IypnezvrCH+n5TiT1sZj/m6i/EIlWlh5GvtOyExeMYRy5y4L/lzPs6e5vYYhKtL8Hs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ExpUfSZl; arc=none smtp.client-ip=209.85.216.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ExpUfSZl" Received: by mail-pj1-f47.google.com with SMTP id 98e67ed59e1d1-324fb2bb099so4098835a91.3; Tue, 26 Aug 2025 05:10:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756210204; x=1756815004; 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=CLgKkUt/EORHceeO89abTN08otZovq/goeI6WeVPzj4=; b=ExpUfSZlBI8yZ7U6kgwyw0wUIY1mOs8+mUDiQaGHoZ4JNXd0EjEsohkNYNTqFgPzST G3QzSsT1KEnPHLJpYdCAL+ioqhBWH3VZcFwhzI/Ys7ktzZTy6G0XaHtxwr6XE1CGQLlV iRQJAs5cxEJHvk8v5Oe4wdIf8YTH+HEgLn+VXgBQfd9lVbXg+lR1vxTndMweKuu1Hasv UAed2VYVvh45IM9XWAlWwnDf8OvhlxrJ6pBU2yD8Oj0A1JqVUTGnSa7Op1TeY7/Op0vA XR1S3CkJTuI1ScUKHC1CuoVTBRTnFkqNhl7EFWA3TCMLwVwIdDypH9eW9Q6gkxLgnvXP YCQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756210204; x=1756815004; 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=CLgKkUt/EORHceeO89abTN08otZovq/goeI6WeVPzj4=; b=iKmYs0607Kw5SF3LB+ClqA3m6eShxAKxQlKU4FbRL0jyW9+yQjn/CDo11uY/0sFUJC w3bbNaFMYakXjWUBilA2nRyQscHg3v7tAHn3RMszoYBbEFlb5kRxmmXMkjfDCPEKfAiT d96yx6MQfeCROXHkCrSAkOOqXRlMnFaprt+ggU+AtvW/l/X4hDyt+u6TnrEyggonh3P+ gK1WV4KEzTGIa8hLExpNqK7xdnKYe2f9q8yReUwOfdCE6j1HBrpOk0Np/o0oB3wfLf0P Fp53U2IltzWYNKfU1WrgeSjOAVUC/5Fu0yD2Du4KseghbBM7PQtKLTrE3zALsHyh6O+F n3xw== X-Forwarded-Encrypted: i=1; AJvYcCU6EfMU6WmYZN48m78wYCs+OJ5MvWuOGrYFv13L2DVaYkvs0Ub53BwqHgCRsecj/K9shsaJrblntMzw@vger.kernel.org, AJvYcCU8uCGp1MzR6boEWfXV9nE6V4Lwmq38e++lLYjCY/HG3vOnBuz+8BDEP+O1LN8I1avHi0lGAviNO93rN25N@vger.kernel.org X-Gm-Message-State: AOJu0Yy6m+S/RBOxTLuGYssED16nrU0WHdJrcgI7FJn9cYvIEFvooekY Sl7dzGDi7AAFJAgfHu/ffUohrxT2yX9qHBW6nbsuMjjgt8zPzOGXV2dep+eR4jjM X-Gm-Gg: ASbGnctK8v/g0WdPYEJOde5Szu7jPAyF+bkz5Btwa2HVcN+fyaldNAp5gS8AnzDAuQQ wJWabzSQ2eutf09LywsgzROMqLn4gbi9o/AlwRQ14trSzAExKzOE2A4Nz+pmTkRUAZ1rfRQLJAd cYY66YtGKqHi1DT5mTc35yBUkYOb6wTtJfES3+yT/sIR45haPbigGprOkorqK4Zhi/j2XVcp+jZ AiCsWDAffahaRyGXIvY7QkHBny+p+S7RM0zyEQH3lsNP22Lvcgqi+JYwPaBmfCaD6dNbtUjSHIQ O4UiV4iR3KurWqS49jdX6TH/9eYv+Ze3Q5OlKHvBSxW6CIGTO6ygoAHexi1sIIlWytio96ZZLyh jylVLnaaoMpKQAyJGXqWkWj8kI0g= X-Google-Smtp-Source: AGHT+IGWgie8ZS02lLq0YJgxOyT9OhF17cJYHT5FMDsYYjsiJPCGQK8BxGNo1tID5Q6Dk0AkG/0Bgw== X-Received: by 2002:a17:90b:514f:b0:324:e6ea:f959 with SMTP id 98e67ed59e1d1-32515ed12b6mr20451822a91.14.1756210203424; Tue, 26 Aug 2025 05:10:03 -0700 (PDT) Received: from [127.0.1.1] ([59.188.211.98]) by smtp.googlemail.com with ESMTPSA id 98e67ed59e1d1-327565d3924sm619966a91.13.2025.08.26.05.09.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 05:10:03 -0700 (PDT) From: Nick Chan Date: Tue, 26 Aug 2025 20:09:15 +0800 Subject: [PATCH v5 4/4] arm64: dts: apple: t8015: Add NVMe nodes 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: <20250826-t8015-nvme-v5-4-caee6ab00144@gmail.com> References: <20250826-t8015-nvme-v5-0-caee6ab00144@gmail.com> In-Reply-To: <20250826-t8015-nvme-v5-0-caee6ab00144@gmail.com> To: Sven Peter , Janne Grunau , Alyssa Rosenzweig , Neal Gompa , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Keith Busch , Jens Axboe , Christoph Hellwig , Sagi Grimberg Cc: asahi@lists.linux.dev, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, Nick Chan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1720; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=n0GU3aHOIbzcpxdfkfvKoQ2JdbUFCoeF/xHA7QnVC2k=; b=owEBbQKS/ZANAwAKAQHKCLemxQgkAcsmYgBoraQDdi3xvWrgtoq+xYU0KaEpYAJiSJed9pe6Y /L5WzRkEjeJAjMEAAEKAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCaK2kAwAKCRABygi3psUI JB1eD/9FRaF5x0qOcvMaYKSiP6C7NrIQ2IRtHgqkthJk9bKAJo/6jVT9USMx+2fBKj3XVOlHGd4 B7k3kwLSivIH7/Jxmhmu8nBktrbBnan5KWHiM24HnMrNompcQOIVKpCrJFlCWdma8sysAdG1w/P wCI4oZr+FlHtyx4aIF2e/mqOUe2xB5YuKlcAkZJ3s6x7NdzlY7vPTFatiPFGQxnWt5D2oFgextM cpPFRw80SmudDzweipUKE3+XyWBq6x9Q5VHE8xz8B1vbvDYh7rdFy6zrW+Tk2Wq2UdnsC+G+B6N lAEUDJscdVObCSnCinkxUnqYBb7322jSRX7ew/QrgJRrZkMMgoPeiXqvyVaYRJvVgvJO8avtqKR 8z9KTqP805PtPTpUXsKmjUOQ+xv1bX5dKlhm9+COAwZQNU2D/5JdPqaf71T722PZNsqD5rsIvW6 Jj7h2LBjsMq21c4EnpSN4Si+iXHUYKo4pkrS+WzIlE1KH7oeQymatyKCowleF4N2IaD/JoJ3B6u tTFEdXikWWk9WGngv5wQTUgYKVPuGE5YoGLRW5ZMzsjpWxwbRMgIn/gbrmzt/i8FtQQf57t7RLy PZuGQjW2ja7ri7RIjWULGqlcUBwH0Re7h5kta5xXw7DlnwsF1tLY3DQIx3shq7tmy23tw5oPOZr uKVWm1K9alCgZKA== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 Add nodes for NVMe and associated mailbox and sart for Apple A11 SoC. Signed-off-by: Nick Chan --- arch/arm64/boot/dts/apple/t8015.dtsi | 34 ++++++++++++++++++++++++++++++++= ++ 1 file changed, 34 insertions(+) diff --git a/arch/arm64/boot/dts/apple/t8015.dtsi b/arch/arm64/boot/dts/app= le/t8015.dtsi index 12acf8fc8bc6bcde6b11773cadd97e9ee115f510..84acf2839fb6279dcc956e1f4ce= e1afa909d2f27 100644 --- a/arch/arm64/boot/dts/apple/t8015.dtsi +++ b/arch/arm64/boot/dts/apple/t8015.dtsi @@ -402,6 +402,40 @@ pinctrl_smc: pinctrl@236024000 { */ status =3D "disabled"; }; + + ans_mbox: mbox@257008000 { + compatible =3D "apple,t8015-asc-mailbox"; + reg =3D <0x2 0x57008000 0x0 0x4000>; + interrupt-parent =3D <&aic>; + interrupts =3D , + , + , + ; + interrupt-names =3D "send-empty", "send-not-empty", + "recv-empty", "recv-not-empty"; + #mbox-cells =3D <0>; + power-domains =3D <&ps_ans2>; + }; + + sart: iommu@259c50000 { + compatible =3D "apple,t8015-sart"; + reg =3D <0x2 0x59c50000 0x0 0x10000>; + power-domains =3D <&ps_ans2>; + }; + + nvme@259cc0000 { + compatible =3D "apple,t8015-nvme-ans2"; + reg =3D <0x2 0x59cc0000 0x0 0x40000>, + <0x2 0x59d20000 0x0 0x2000>; + reg-names =3D "nvme", "ans"; + interrupt-parent =3D <&aic>; + interrupts =3D ; + mboxes =3D <&ans_mbox>; + apple,sart =3D <&sart>; + power-domains =3D <&ps_ans2>, <&ps_pcie>; + power-domain-names =3D "ans", "apcie0"; + resets =3D <&ps_ans2>; + }; }; =20 timer { --=20 2.51.0