From nobody Fri Oct 3 20:59:25 2025 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (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 580D72D3A72; Mon, 25 Aug 2025 09:16:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756113373; cv=none; b=M9TUlRvFLVbgorDiqUAmVCjqUy+5zZe0+LCn7KK+Hab9S2F60FpRDDWcomAgu40gir1+/nc5SawnqO8AuTzznSJ1NGdRuJqZom1Bz3aDpeMFrHcmcBDKDiM3lwiKUc5ifus1WWLQj72KJ6QWPXVjkgm1a8HI2WqJorArM0MXxN8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756113373; c=relaxed/simple; bh=bGe3lHrFEExwJaoIxfgSlWjKRZ1MiKpscWSHgaSU79Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pRKk6dAFuIGgkg20SxYf7E9ZqUOaA3UJVUnudALwAGGwvRtClmcSxNYqhBAVYuyyDa/OtReBO9vSNRLvP7JwOGuzbO3wZiRtztW/r6XhGS29/i9G6J6NKumtbZGWS1tGsoquWeOwB9e76jVQR/oO8gEcNzI3HyeLrjoGqbCpPEg= 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=Skghi1UL; arc=none smtp.client-ip=209.85.214.176 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="Skghi1UL" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-24457f581aeso30045335ad.0; Mon, 25 Aug 2025 02:16:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756113372; x=1756718172; 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=KtjFp+37deP+qcyMingdWbOCwQKbGl67hntF9ZyCbl8=; b=Skghi1ULIcZJPX/QmBawqNz/R2rhOZ9YFPQUEXT3M5waoznd7WEfxI9CIeAPk1FJbq cZh65R1uin/YbYnVSSBeWuYH7ZMSL6MxySrK3bOKaKCmJF8OAfNr9h5IFGui4uoIlFGG kvzW5sv6XREMWXkgXrp4y/1CS9Bfldmfziohi77dY6lRii8u/2k3mwQ1jcVk6NmNY7Pg V0ZoF2NFzWQDuPPQKJhxM3QiT4RK6nSGJF3rv69PhNrcFaBNTrdaqy7nnHvsqDYUVl9Q uSfXWy7UfsQL0WaMTtRs2LxbROA8IYA91Gdrb+dTQ5IKs6l3q+8SWsOK7uBpsHmvdEXE U1NQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756113372; x=1756718172; 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=KtjFp+37deP+qcyMingdWbOCwQKbGl67hntF9ZyCbl8=; b=eHmtWkRHDXevkr3pIY5HMunSeyrG9UuIF80BHSZcML98Fhq+V9KSHVTMSAKQMrLMuW /J4/MSrxAadJk6cgHigq+D92oQFHpDQqUeCFVBvFoKFdjG5CKcuSYq+hWZmbdDRsKNPW Od/Qp3kp4QtlGqdznxZ/xtVoi9EVxozlvWSkX4/6asSEaWG7b/XiuquTq1gEie+FPmRG Yxd6V631hAgpQ5Qk6PT8NY/H+8uTY5/usx7XXzylzaTcA/A/yRJ3vsjOoJMnulmwLG51 vBqlGI9XButBJ1M29LgaFOAsydEualuXjX3uvvtNWydWnP9NGCuonFiigc6gkiJsa6OM qeKw== X-Forwarded-Encrypted: i=1; AJvYcCUfqiOZ85vEsI9BNwcyG07jskzifRYyMaBeB/MMqgfMaOd7qM7SkW0UGPIDJJmg4OIlIyu03I7/Hcul@vger.kernel.org, AJvYcCVGyqpU7+E1V+YUROd98B/5v1FLq36/H+Gnvrus+d7YMUeWS7yMsuExwy+TcT0Issz+oNSDKzVOIg+vVtVA@vger.kernel.org X-Gm-Message-State: AOJu0YzbV3CDpm/L9RVeIqHZEafY0PK64dtuuc8x4IKgQ0+uum7f4VLm xn+g/UpDEs2xUeSWpiNICRsT95jmhpSECaKOpjWqoe+fGJdeTYMZB3QJ X-Gm-Gg: ASbGncsAvpx+Ds2CCKBz0E00adCWGxctnYM3b6L8c77Jn9+BCf2FoNUMIuoETodNHmI GYnX2VsY/n6OxVKqtCsq9TUR3LFjZdBMCUs4RhK2810cSow0wkl6oqNGvw3Gdmlkx/Jv/PFijGN m5gZf+V4a26DrVUQqfc82SKi7ck0sbLBzmbXndf7VA1e9Ita8kNPj++mkitN8hUstjImCtpw4A6 wahLVmo28gVOkTgTcFqSK6Z7fVBnlmSsG2h0V1G1ef969oY5wa4xjQv59UStsCDlpmT90vCERxA dKgUU4vFkYL4yU80KrbdmQh0aTxwQGup9jgzqOdB9UqUVOsuFbhO7YH2JII1/W49WUvR7nIRQX9 88hptEKu8SyWV6hX/Qrv33LQyInj4anmEJw8aPA== X-Google-Smtp-Source: AGHT+IF4/e+c9KPSdTDMcNdsLzyEg0pIQO80fJt35j/c/EQiaTLu5Fs4DEVRakhW7pq5lO2LcmBS0A== X-Received: by 2002:a17:903:40d1:b0:246:d00b:4ae3 with SMTP id d9443c01a7336-246d00b549dmr33462425ad.61.1756113371622; Mon, 25 Aug 2025 02:16:11 -0700 (PDT) Received: from [127.0.1.1] ([59.188.211.98]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2466887fc8dsm62873875ad.122.2025.08.25.02.16.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Aug 2025 02:16:11 -0700 (PDT) From: Nick Chan Date: Mon, 25 Aug 2025 17:15:04 +0800 Subject: [PATCH v4 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: <20250825-t8015-nvme-v4-1-6ffc8f891b6e@gmail.com> References: <20250825-t8015-nvme-v4-0-6ffc8f891b6e@gmail.com> In-Reply-To: <20250825-t8015-nvme-v4-0-6ffc8f891b6e@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=1310; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=bGe3lHrFEExwJaoIxfgSlWjKRZ1MiKpscWSHgaSU79Y=; b=owEBbQKS/ZANAwAKAQHKCLemxQgkAcsmYgBorCnRRlvaE1w45hp8w+1EdsAIb8vul/MWpn6CY /kNXwesAeKJAjMEAAEKAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCaKwp0QAKCRABygi3psUI JEzuEAC2TMVz3DGV6ukw1ucnN5hJu5mTHBu4Ncp+n7bj2ByuWZ6dFArojJXcFBs60ihtFtLLbG6 800iDleo3mVFngAS4fGuPMBfjKZdMAZE67+ErnTamwUipTCW7igb8A9yuPQeFFjJDE8fUd7SA/1 Jc0/yiyLm4MNnUPuXuHyvnOTbRWZMuableg/SlSbqYZnaWwPyQAI/v9k9M1LC68wp6Pz0nJ7lag 9JkM4gbvt0Nc//Rov2phSzZnYUE9BLaaogCo7m1QEtLlf8TISP35plxevBeK/Zlowc4p/AdLWAq qadzU4c5PYHedjIfIbuk3SvazoC9nJK3ZOGBvRBD7k6kENFnqRGwDpjRFQu5Az3RzL6qq0svpKg F89UjE4RdSndyy0itOO3pI9oKyOEWI3LdK9l9fSDT6VeEuDM76DLcuTMdFqfYTXikM9py5/v20Y OXY301j4fuCN3PEaAVV25pIHHSqG8z3532ce5Ijmi72J5V75d1tUBXGCS3cql4vf5IjGhmNx7Fm Kk0UKy2GhWLbgJ8mt92b/giaq/kxeI/c7OQLJNizjXDqedaaWV+pbkbsaj6HxYc0V7m7+mLl/dG LYqg0ANnheFUTn+ML/uVpcebFDszlNtMUP1YotMT94RkGsOhwQulR/T9u4isP3rydo6yBH7hPTD SniWNkdxz8exiAg== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 Add ANS2 NVMe bindings for Apple A11 SoC. 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 20:59:25 2025 Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5AA402D375D; Mon, 25 Aug 2025 09:16:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756113379; cv=none; b=A/RdGNYyLOh+1XkLDoHCMg7vwyGrHYzBIl9Qeszy9UIhYohvl8Mbn3euj6+pcngUioIKW0J/p7rFXpUU47LxxNzYQfi4DReOprU+1I4GC+BZ47RVopuO2NFTt0Z41RZUbKtsINiWDZ11SGmg+ub15KTTafjD3UqqxXtfVRaz3P4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756113379; c=relaxed/simple; bh=EP2maDZNX/L8/MsVIGQbi95tV8ISG4kZg5AEcjYpYJ8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=D8dI9op8jQa6Cpdrrg5/ZGKYpaDAtCIckWm/1C5P0LRUcsBcgBaio2/JACU+Ia3knOJroMTVC4Swy/6rORAy8iL12nYTCfSvoaUAp2Mo+E7amJRMNbplBBda9Q7w8uEGsdZ3aUftr0KBbPoYPVwd1GumPfvdMIj3L6zaPOXr0Lo= 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=ef48rW+u; arc=none smtp.client-ip=209.85.216.42 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="ef48rW+u" Received: by mail-pj1-f42.google.com with SMTP id 98e67ed59e1d1-3254abaf13dso1208947a91.2; Mon, 25 Aug 2025 02:16:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756113376; x=1756718176; 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=ef48rW+uUZd+tUzDzTXtHwIaceM4G4WEMVsovYfMUaO5/Jf1/pzXo9RM9/bMnarKl5 E+Xe9+ZkR+M2wBaVzQWEoWBCoERe14/cXWskz5vOoxKexFiOK8Pie55DR9kKUG6Z8uob ux6rSQJ+yU5Eaiv2/kq3fXG4dluuuKrWX3sqhCyFyi2Yr6Ag6C8h2d8RI/uZNJP32Arl 9LxOhA+/oK/04bhPkDy5oWN0EBo3fcA0WMHESv0PlfQekeBOhP3ncWQyVV/tgJN42Hq6 JnChcJotG/TpnKAo1QQpsK5pZaoRVaAW4p99uyDqePmRkyARB9z4XNO9oOMTqnfqqh9/ Ol/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756113376; x=1756718176; 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=CN0LC64KSD6aYrUw3sMu1t+tIHVoddH+L3WlTNE2YR2dDqJt7OW3QzSLu7jR8BQTZM tNgBFcGnCARvkioAxNHnGawUcTq+blXiiTvIfb4Wa3GVrtZr2JvKn6ul+Pksf5asCY4u L6kZB2l/sJoKWRB4tCEyJLs1hIxkRMitWUk07OKnG7x0Tfd6TkiO+/qf1f3jiGKG4XMS Ga8cA5+SWotLaFDNX31IJGc3gQMDQB/mSj+VkH0NxtqKM7bmH70D7+AsPD0CMwrBzz9h 45PEcPKA0HAVLVZKC+hfxNtAtwKips8BUdkhVEIg5IjUwHIEJ3eyfgAOF/PFzl8hTy7K 04Pw== X-Forwarded-Encrypted: i=1; AJvYcCUBV8XaZMuylNWEKZnR0tCy6fm4CQA7449u8an2fAXObxooowNxoxSrU9myW2ybXE58w91bv/cGapD2@vger.kernel.org, AJvYcCXv9LU0m9fAQuZcVClmWYvbvQ6a93EByqUSpFxfFrJ0F+PegjRLWn5C2UXgpj71U5vrntg4zfVjuwVbqeLk@vger.kernel.org X-Gm-Message-State: AOJu0YwUjc+PlYHrCxa5P6VX7990JKkqw0bdBWV/ngTDkr6SrbrMuqKG +/gVswNtpcdebc8L8+u9a0qssS9R8JZAPrWVz87Rat516gBYcj1Nq3yR X-Gm-Gg: ASbGncvQV2YCxKV7nPkpMvpbF72+1pqsG4BrUKOJRfkyCmTcXBUi120iaFrq7XUz0GU sQ2kKHfQynXykWBwMYSLIKd19NEz1RZrKD+RtZmewbBCH+nt5Qk5FAVbuwm+DuJNJzo4yJcqaZ7 PFixALPXTmVme1b9O7mk51LlH0/DARLFo7d4QLIpCpizkzLzN5Qg0OKcVCvV7Ak0PZomEq94Muv BR8ok7WGrQLUzvdzirxcQVeZc6HshBfHE7Nvb7Y6pZxPnq9WcrD6Xj8RsucfgRMhapS3Wph9E6j kEZQtuQjXzB/+P77hk2PnBo/OVbtF9eVOvdkKbmKMm8AZdE+zxfu57Dj/PxymUO430tnW/ZUgbb hgQFUjPi3ZcypjyPBd3clLN/Y+8c= X-Google-Smtp-Source: AGHT+IHqcsi4pWGp71KVZidv4p+Xk8lFkI2xbej+aigVyL+o8tO99TXq53h6bKVJG475liw4k/ZBkw== X-Received: by 2002:a17:903:46ce:b0:246:de48:1f54 with SMTP id d9443c01a7336-246de482122mr30410545ad.47.1756113376291; Mon, 25 Aug 2025 02:16:16 -0700 (PDT) Received: from [127.0.1.1] ([59.188.211.98]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2466887fc8dsm62873875ad.122.2025.08.25.02.16.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Aug 2025 02:16:15 -0700 (PDT) From: Nick Chan Date: Mon, 25 Aug 2025 17:15:05 +0800 Subject: [PATCH v4 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: <20250825-t8015-nvme-v4-2-6ffc8f891b6e@gmail.com> References: <20250825-t8015-nvme-v4-0-6ffc8f891b6e@gmail.com> In-Reply-To: <20250825-t8015-nvme-v4-0-6ffc8f891b6e@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/ZANAwAKAQHKCLemxQgkAcsmYgBorCnRVkNFcPItWrIQaSlJP4AQwtfPwIfCEbBfL m+YhhzbfFWJAjMEAAEKAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCaKwp0QAKCRABygi3psUI JCDAD/96UbQeRz+tsoeNKSshLuakSJ9dkSMJxCe8F60UuuZlQDdYbEkLtbiQQLFnBh9pgLNbxIH VJy7ozCAW2wc0Aj20hC5o8eVSVdSOGpJTXUCD25LKTRBDHEoKBGqLvhKW2W21wl2U7IcmTvpnYx wY/RT9/1Y4TjNXYZuxg0S7+ReG2QvVZS3FBfa/Km84QUvFetRAY5vBFVDUJLBvRVxCwKGXWlybm 9mOevezPTjwVNi4g+4bN/2hwPvtP8BkDrWIrWXDhtOCw5z9FlHzeentq47+yQGRmBtLmyAQB125 HNCu8LWZUVmwcaEk+okUPAz42FunpidWi3Mx5tHoNaQCDMnCLTTuOra2499EYU2MS6KDrafePKp CGYpI72X70M3tcXCi5HG0K0BXiSGtcohVc+Q/cE341ehlhvSdkl4ZiFCaRnjHiXmYUYIQhxbvpO e2Sl/7NmZLvynVpgB6Chz8/OVQow6yUW+yRsseQHOux9zXO75ocE2l7qfzULIBhS+QhxFfw9olb LZjZIzA9Ez2TLWVMOg6sLEgAHQyJfBJf3FvbM/SUgaU/LFZKVSvnyqaXmvYrrc8cBNQ0TgVLgiF moiFuzXCHeFbwZuRr/um5DuLyzOG1TgfXn3BmpqbOD665TSYTvyluR6Zb2Hs5S83wAibTWMv2hy YnyMdcwH1zScObg== 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 --- 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 20:59:25 2025 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E92C62D47F4; Mon, 25 Aug 2025 09:16:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756113383; cv=none; b=J3yeOLP5K5v9rDBxKrgMFIkBFugqj/Cmqf8d8ODsOXlv7j2r0T70oC7QpuNg97rIswveH6VIWc4Dg2eSf2yeU/570TBtRcphwt/LO5F+wDyoLuMNEchXL+2y+2ebMhgitH/IWo7IkHslOQPcHpqlK82hW+1ijMVOUvzEjfyhJ1k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756113383; c=relaxed/simple; bh=CYNjF9OQgn4g6Ftiuun6/MohBcP92VmI1C5IHAHtgWs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=X4siiYonzOF8r0zyjg5pO7K8N2zHxvjUtOBOLWdrni6gWaNDrH0rngurWTL0gTlkm6Hroqss3W3jAbkoTte+H3u1DUcJInsPxC1r5cq1zd2Bm1+6kcg4OmYGn9gGLObepzFffzDDVv/58PQtZU42wgVNIH/K8XF2y0cI2dT3GkU= 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=CnS4a7BA; arc=none smtp.client-ip=209.85.214.182 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="CnS4a7BA" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-24680b19109so11819255ad.1; Mon, 25 Aug 2025 02:16:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756113381; x=1756718181; 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=CnS4a7BAKUf4W+dLkVHMym3bibuHefnDxz55xzkhCuRQn3HYLJmTOh+kicV+nLo9dY QfoxsLxhfupVe6tt2NQfO31+NAPvemagTMVKjy6Bza63hKvQZHX5SCc52Irr9CZ5eBzP 0hDrDhN9TTisKgCYpkjBKWauKuox6es0TE6E+MV0VD8xESqaixFK8iXTm59iLDKqBpIC cfxe9tRbLeFY7gOxpfmxOSx0Nu5BtMrfSQ9zIsLX7Fd/y/Cg61NzfWtnvTjVIyqWbbes 6g4e9hl34m0Ztla+MVb4pDsubPpbvfFDRuVMG2AdXdUzxglc0dq877lKs6Xqx97J7yU8 IR4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756113381; x=1756718181; 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=LC0mgZPog3YfK6IGxi9oz3yf/LrfJtKUtmYydipd4ruUxZZ6N1UAngOWf1yk/yk1qh mtntGBLPwxc6pkbSoHMOiWrvtxjgza8YtdYror/8mCxzax0u45PfwmAKwfZa/81xtaVS skuVvZYsGeO05wW3Z1ObzyiqADWWwxCuJelQ/yTPE1tJjgpSwMij0iCeVnE/fZifkSPI BYSr3fxPqu2y2Hz5IFbBGD+e9VutonmzJV2GlaN3oJQclywdIQlZvCb8MkwI56Ov1ccg 96MyGBP9RqIr6ktTr+3PzRzD1rNqbPzT1Y7B1bUPR3W138xpxqbOIxz43FaQu6UnPwL+ S9sQ== X-Forwarded-Encrypted: i=1; AJvYcCUEha7HHBIk64TtsFGNF6hBp6LTOPzwRM+weOzBJ4iIhdziGGjvLo40X/Hv36es+GzUW9gpfphdGtrH7NlO@vger.kernel.org, AJvYcCVgOlnzyrQvd8/4Yy7fC/TRNTKz9vVKYg6frmm1EtsEa3q2pmbkPy2xo3sids2MhYkuIwEiKORTHzm1@vger.kernel.org X-Gm-Message-State: AOJu0YyrV9v5XHeRKP9Xu39+ySLX6aWD3WnfnRbdLmfnuF60V4oDFgMt ZAXs6rDhLkWCi3o7xFV/thrE/a3By0eShDJoErKUnuNcPRROl3lnNQVR X-Gm-Gg: ASbGncu8230AoeivoipUyRdG7BWm0NeW+NsVTkAgYABz5QwYgba8PUzeK1s+Qff87+u 5zNsF+JIsvx0r+r/dQtdYvV1QIK2VUlQ5h6tFetOlIj7A3VX2y9Cb3RkLQl9cYsLCPguHY/gBlU YNWS64sUMFdlAExMIIGKKY0cz1fonj6pe4vUDr02pubLQu/lcQpFbjRRVZZIAqCwUnqftrQe0xE 75MqYPmlLksG7EMZiVJlHyemTLOC9PG1ISsaSfqpdErC86DHgW4oBnE1/exm9B7q4MlCBcxysF4 93//JnnCihr5Bg2PAj1FSaaUdY0d8ZBjAdJbIFH6NiO7GjzvnDR+sxj2CQJEzbtbqXxtk13cJMN mPkwRaMYBRkwkrmel95C4Y8kl13m1xl7Bo9ossA== X-Google-Smtp-Source: AGHT+IHA47RwYrhQlSdnPL+YYSXKWvogaXdS7+aDOLyvLluP5swy5MJMTU+F1aS+P0WHsZaiEZ4Ang== X-Received: by 2002:a17:903:2f44:b0:242:fba2:b8e4 with SMTP id d9443c01a7336-2462efaf1demr168678245ad.56.1756113380983; Mon, 25 Aug 2025 02:16:20 -0700 (PDT) Received: from [127.0.1.1] ([59.188.211.98]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2466887fc8dsm62873875ad.122.2025.08.25.02.16.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Aug 2025 02:16:20 -0700 (PDT) From: Nick Chan Date: Mon, 25 Aug 2025 17:15:06 +0800 Subject: [PATCH v4 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: <20250825-t8015-nvme-v4-3-6ffc8f891b6e@gmail.com> References: <20250825-t8015-nvme-v4-0-6ffc8f891b6e@gmail.com> In-Reply-To: <20250825-t8015-nvme-v4-0-6ffc8f891b6e@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/ZANAwAKAQHKCLemxQgkAcsmYgBorCnSe7tdWkaBU97yy4wbnzIj/pY02k9llba3c I7lzujWLziJAjMEAAEKAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCaKwp0gAKCRABygi3psUI JE7dEACzNVpLM+4i8uqFOcvOfkjW3xgay/vR53ye42qMYaEkvaP37KrBfyROeY1ZGEj31z6QKUv D4DPls/oRz0S0RP4ck/YVCFrpfljG3aW9Wq1f9DshvLquSf3e9ruU0QCi70tjs+dt538UoGJ0yh l7bl7MRAkV7DM23zcqubRmTY5F1z+yiLjdyaa37estt3dSJlcP/RhBg/K7YPpfH6vtq3ywLImyb K4/GkOhv+8aK+wjafHlMLooSlIix6W9m5iEGlO0z6KZT7n7A5LSYoVoX1182hCQMpY+6MV8wfXn ZDGRpO+Zqsx85UJjZS/bfCSzRpmAToQ01y0bD0WnPy1YjpChz4G1rPaCePat+OTgGDnmHmOIp+I gDyU59GEHTc4RUAQsBKxVE8swI7ILEB5DhxKSCuOORCf6DlQB4hDjxcduOA2W6QayDpDAmk6ZIn /bhAKiN7+cGq5Do5Ec74edy+NysyAtcY2eC9xIC4w589hMTbovRXpWOIaDB/F/MXdwsVgyojWnD a1dZjlZ5RMCgzDrAgnv227Iji6yzH5C5WQSU4qViyAcRO8z3CCKcZtICfRk/h1PvqniHJUUSVo7 UOD+So9LIrnSMgsY/wfLY/Yh7fM4rFMlJliKNeIEygoIlMpmPrr/ja5jYXIsCvO6Q6UFS6tMy/V xEsbtftF5ap2cOg== 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 20:59:25 2025 Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) (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 915AB2D23AD; Mon, 25 Aug 2025 09:16:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756113388; cv=none; b=AOFMsg1sJmOIWtzDxJVrjpfyIKTPhJX9xUCC86RJDs/HX7t9JOp/HEgehF9+AP1IulfIv/5YYpIdhk6UYyb4ZEJWBhkEoEHLOWoS/+KDKAUYr7h5hoHhV2CcFftZpkbFIxGHth/++LI5kD5SPi8V4Y8DAUpvKbujwtwJUnaTn9I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756113388; c=relaxed/simple; bh=n0GU3aHOIbzcpxdfkfvKoQ2JdbUFCoeF/xHA7QnVC2k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gJiD5IkNdn5PatZ/Cl2OLSLgDzP0uVl0zii0ijLKQVaqUP3xRK8BWHWAESV3+Kbofr4hlHCJaA0mFensLwrELksalEpDiEpkHxhdLmMPHNlOQxgNM8/0dq7RC821gugpvgKgJrmHYfX/0iyRaYXRI41JqxaG3SCro7z0LXcjJuI= 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=jkk8khYH; arc=none smtp.client-ip=209.85.214.170 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="jkk8khYH" Received: by mail-pl1-f170.google.com with SMTP id d9443c01a7336-24639fbdd87so19711585ad.1; Mon, 25 Aug 2025 02:16:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756113386; x=1756718186; 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=jkk8khYHdi0AoLkE0aZ5BP/cswsV137xptcmCvAAXom3fQiUDQXIeFaGH9JDcGG0l1 PPNUkwOASevexJlcvYJfWnsmCqA0aehkLKPDFKy5bNHTw9J/0/Fa2RveTykpcnizpQYg TvrUNj1RR8PFdKUwpp8ZPsxi+8eJP5taeb69HeuF0LiAXXbyVGd+SXIbfZR+pAtRrsGb seyC+/3k+yp3ZVLgPHVv/oUbUqAvsWCikHCWnLZFqlvqz19C95cIs/v+J3oGrwr3EmaS cxjTY+8qGWMXcFZ5dRHvV+ZsGKw/wwtfkMtrHAaDcyaEArkVXfZ6g7T8weNdzjNIYLab LX4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756113386; x=1756718186; 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=VzJjPaLaQkJmKseHR5gxH4lFFtsD0vRrXmGjLq1tczwwiEF75/Fs348EdsXWVylBi7 4amcj6PR6SP3YH8ZjSeDnHQJ8CriLJzuoPIFG0YjLOQQKyjkF7UaOEV56+402vLYit5r PVdho+G0OCodCrnUfkpJpXFk37vlTpA3dk0wQd/zp0jtsonEoU8U4VTIcsice9l5d9dy wB+Av25ZAtKSETXbYpbiXuK91UCUkCUgbxTpt5i2IC6nHwg5xy6uvBnkvfUZFFW48rp/ 3EXLcMqmc6I5kHe7KRgX0hKVXUMlpUtVvwnovYaEuYL3TXGayQf/wTU4M9+bQsFrnBu7 9HfQ== X-Forwarded-Encrypted: i=1; AJvYcCUX07BZBG7oKkqltsFwCdUIVuwPjPDbLDY+6y9sEE4bZESkXnLGbrR2mKhau7Zr4znnNb9viOJijxtXFgJN@vger.kernel.org, AJvYcCVO3b5NDZhU6ylh5bXaEibfahHb+a0RDsuXkRHdJd/naAhEGm5PYGcX/w/+L/OCLaZQ2UMQuI8b0bKG@vger.kernel.org X-Gm-Message-State: AOJu0YxDjkl4vFWJYuunMSOer6xi41tcrhs4y6YKaaDXLBLoAsSe0sPU /+iR37al2m93XiWsSJChq/y5CDN6dL/8IBwfaPHiMdRVq5FbL56f8g3G X-Gm-Gg: ASbGncvQEWK9Y0Y7sgc9K28tAr0KvaP7q837w+mBYrMuXN9tkVu+WbX/IGNx6REkLuT jkbk5YHbtERFElt3OjZH2+0iSwmKOuh6XHv3Rkm1P/LQrk0bVN1ooHDOabxFmCtnj9ga11Kzzj8 oH0BzBvAy8sTVgYFRHoBMPMnwO8D8YRpbk4KPES3kFuBxvxjftezVMaHWRSqYU62eVc6I+JoW2g ZqAOEbnQsyQ/kKtUkGamfQnhmKWr0das1jTDdrKNodmm/rQ/Vai0Javzubg0k2wWne2cgl8jyT6 alu/wGvZj0ZohoXXDKSWYXMfDg90bRHgWTuL5Qr5tA56ILrNBPQB2Li/CbIhwRCORxYWpvf9WT6 jR3Y/BYSPGHePDC2m+86QP69urhk= X-Google-Smtp-Source: AGHT+IHgizChUVDS7mx0qvkliQW47KxLTLpcVKppDYz0nFP6cUthwlUhWYvTA6G9L8vEDxCRdxjvFQ== X-Received: by 2002:a17:902:e888:b0:240:4d19:8774 with SMTP id d9443c01a7336-24633d6a31amr135180055ad.24.1756113385707; Mon, 25 Aug 2025 02:16:25 -0700 (PDT) Received: from [127.0.1.1] ([59.188.211.98]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-2466887fc8dsm62873875ad.122.2025.08.25.02.16.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Aug 2025 02:16:25 -0700 (PDT) From: Nick Chan Date: Mon, 25 Aug 2025 17:15:07 +0800 Subject: [PATCH v4 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: <20250825-t8015-nvme-v4-4-6ffc8f891b6e@gmail.com> References: <20250825-t8015-nvme-v4-0-6ffc8f891b6e@gmail.com> In-Reply-To: <20250825-t8015-nvme-v4-0-6ffc8f891b6e@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/ZANAwAKAQHKCLemxQgkAcsmYgBorCnSx5G1CCbpODc4cRGWNpyxqthUZtzEbbGT/ r5lqX9uaO2JAjMEAAEKAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCaKwp0gAKCRABygi3psUI JD3zEAC08M/q+crYeSCt61tg18W8wh96uLThiPK1oIN8cT6sza82FbzzE5tZz/JAkuOxmeDT1Jr /TniRuMWHcR1ABZzQxNSzoTEO4kDKwoVl01F7A9eG3xSG1hMcoBpFOefCD5ZJwKsBJPSkJazMy3 Uq0MfkxY4vsMHJVTCxXczUZySYl1MGa81GLOqKcR6LsfzsGWbolmfH4Bvlrv63vGBd6i2uKMNSy fdK46uREg0LZfa4l+E2LsjiNk1Lvk/Ovb1qje+vjYfqB16/DJDGiUk1IJC1q1J8iLBJouyfYiyI upg9pcjsYb3xsOMcPmXcyI7W33LjCjhHYkXcBBaugqQ+7HoAL0CjS4Cuw879KYuOvHDYAnOofXX zgHTKr4XwyWQVB2Hd/pHthOiIc0D7OkpdL3314KaflUBRiL4obg5fFz0/bSdKCIiaUM6pLMrvi6 QI4FyM/whrJYY1u8pstsdOD4XjPronxD/nneGpr2t/2PPPe9M+Mysse3MPo8XTSvv2x+fujb0Pt XXqVoAUsgTBLN+3i8QipITSrYbBSLnf71cWLXHNaq7ybKg8dwvWq/861T9M74mlfROH3n1XyuuW 0+ijxGn5++G6PNnwvO6tlJDjihhJtLhSTijTfaQiQ4gNYR6XRlruP1e+rSTQUO+CCN9dSvktcMM QAlh8/SxgKhfv6Q== 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