From nobody Mon Jun 15 08:17:59 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3CA66449EB0 for ; Thu, 7 May 2026 15:24:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778167491; cv=none; b=GRPhCqp2NlZ6FFR5cQFOrcg9guz7r80wGI6xBAR88XYidHxBWdclztIVoY3mKcB1iDc85/oANQvY5Sx2FUNmEhFhVinStq8ymuXIKX8tLARMtyeakZDqgMU98ePEvjWujF96IkM4SOTV1iOlM88K87HTgLsmCxnuSTlVhZBvA8M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778167491; c=relaxed/simple; bh=Yq9eZWlTIDpBT1jqRXA1YcQ7jewB4Li4nESrsfqdqxw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Aeba4KmNKjHOTeyIHJnhCpkTSTSAHzmth4WEJNO00GDfmw2zMwKNVGO2XguKiIabxIUYV9mmlIXKopXcH4ajjtSvBXNOXfD2wz63MjFdckDQd6qgLjpLtr2xBs76owE2BUyenqzC75bhDTPCTIxUPgJQX0qsdWobsNLtLCmvx/8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=PHIaw8lj; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=UqyYzGxt; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="PHIaw8lj"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="UqyYzGxt" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6479CoHa3464724 for ; Thu, 7 May 2026 15:24:49 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= z8YhFkwRRG7HQCuWlp0zuKi3fIa5ZkmTd/FI4268HU0=; b=PHIaw8ljGKMKOyXW JOMO0FrKk7092/z3zBfZ51Z0eshaRXz/CQjQi3MqCNsDNbb1qyI6e1z8L6NOHnkr a1T9wEdg+HlOXoTK3j8BvpPkfYpIYnQpUUdIHv3nEYEtQ6QuuHUsOFBNOYnw/w5k G2dlYAXt7ffweosKr94E6p9uMOyUBDLi6BeLLgIrCIfN6eB3m4+vWiIyvLUwJqUL IeNMZtKS/iDJbuF36Egxpn6xYoL4qBCCYwivxpddkuSgwv+10CSYj8MbKhHJIe0U Vg0yh/yatuoRZzZWNG2qQ3C7Gm1F+6hc4NFRkzcjcFx6rUa0Rh0SVRfIm84CrLFu IbJ5LA== Received: from mail-vs1-f72.google.com (mail-vs1-f72.google.com [209.85.217.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e0hvn2s8k-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 07 May 2026 15:24:49 +0000 (GMT) Received: by mail-vs1-f72.google.com with SMTP id ada2fe7eead31-62f5497f0b0so684950137.0 for ; Thu, 07 May 2026 08:24:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778167488; x=1778772288; 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=z8YhFkwRRG7HQCuWlp0zuKi3fIa5ZkmTd/FI4268HU0=; b=UqyYzGxtw4RaQzs+Lh7p3NAX+TfIazBHUHl3Tt9PoIe22UEUWSag0zGZPWXj6nFdoa US9Pn74G3mNcsuuFo+X/XgxXikIOYw7eFIBrj8S9FZfN+nS2vLJ6YvI4fHxY5uJlQVUp crYdIPHBbNbwuzxZ1im8QrBxY/KxQg0B/eULb9Wh+WUNMUboYLovphyOOjUL9Zw3fI9r vcvXH6fmR6WE094U3VU8efcdFEL3jwtRYslld5EKDupMG10t5Xvd7TP3Fyb4+9XJ8Fd2 GIdUdFy1918mpYnHZwwBLB/0/YJNh/IJD552BSffi8RHc4Swpis0f4CYLisf+w/SU+S8 SFUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778167488; x=1778772288; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=z8YhFkwRRG7HQCuWlp0zuKi3fIa5ZkmTd/FI4268HU0=; b=I9scNn+4RZwvJuH5Ydgob6Wd3NtXKEzfaVYRBJhGNuASYxANXzUO8t2ubj9Jv3aZYn 3s435YHObkEcf2ZqgLGcyyb9YbmxFw/yiCNI+zESexrrEx1riOZNJb0ImInNYTVokCUv /xKaPBVhkXKlYStS9YgUyInpdDZWIFEqsBcnEU0dve/rQsg8j60dI0WHkRodxwpv7z1C YavLLuvmp53sQ3KfZ/CAsoOSKFuMa27DrMcvZ6hzpEDFqR7AA5FpkkSRl7422l2OJOk3 JIM/PlfTcgXrxiBgaywaiM2j5RWMJJUPZEtvhlJkrljUfF6zUTWL0PjGijkAF05K7OlT y73A== X-Forwarded-Encrypted: i=1; AFNElJ8vnlh4lHjOg0iHnrutDMx4v1QPmwjVSDLtIQDKq2g1hm4V93VXPL+NYu8O/jWjWocZpfrIDe0IZIhKRPc=@vger.kernel.org X-Gm-Message-State: AOJu0Ywm2wtOKsIQM9s15/TLYK8p3QkrfP+ncQcq2EdqwelHzQtMsVEu wc1dv6DJWO5fuxtPaTQMo7u5tthX7hPvUrtm2PoBTsb6es+aD+8+olFFfLgqkKpD6uB53s7clW9 IEfJNVScU2ep4b6h922roggzxGKGYf89V+yQaRPY5Bp0jxibdxviOK8JiOb0NwG16Xsw= X-Gm-Gg: AeBDietz/YscTKz1Ud+rewfhl+9Ieczd9uciB8Ry2BseKja0bimBXO6BHi0DsaPtCe9 QCHvUXzORW/Mrk3yIjFu2SEjrtRDidQ845XpLCkYnIKdkbmJNB3jAmThkFInD7KolpFkkSgCYXT Czn/kIKJptPQj6zpXAGMCHU6aI7fqjvieH4NDQDSHOHLECCNytomDaQzBarHmw17C6j/tigpiCA 14JB+klnFpULmqkXUWM/1GPRBfCv+b4O5cfHaybEqcnoXVbzH2gzqYkthl054TMcjPWLWLDGIsU 4U789t6aypNmsRdlhWoujtk2b1B5ihlZhg7R+67ScF3Z5pFdnfp4QzmaKSHT9Hnbfp+0Uq2aBh+ 3EuTDzib4x0X9FzT4F4B4TuM1Q47RfiuxJnsuz7ErawWnYTzqnSRydf9fU83MUIYGI6uL3klQ7B wAMH75yr4Pez83CWgDRfrzX0bj6a8= X-Received: by 2002:a05:6102:1614:b0:62f:c97f:aec4 with SMTP id ada2fe7eead31-630f927f4fbmr3735582137.27.1778167487888; Thu, 07 May 2026 08:24:47 -0700 (PDT) X-Received: by 2002:a05:6102:1614:b0:62f:c97f:aec4 with SMTP id ada2fe7eead31-630f927f4fbmr3735537137.27.1778167487442; Thu, 07 May 2026 08:24:47 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:b16a:3475:ec42:bcfa]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bca583dd7e4sm240966b.58.2026.05.07.08.24.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 08:24:46 -0700 (PDT) From: Loic Poulain Date: Thu, 07 May 2026 17:24:36 +0200 Subject: [PATCH v2 1/8] dt-bindings: mmc: Document support for nvmem-layout 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: <20260507-block-as-nvmem-v2-1-bf17edd5134e@oss.qualcomm.com> References: <20260507-block-as-nvmem-v2-0-bf17edd5134e@oss.qualcomm.com> In-Reply-To: <20260507-block-as-nvmem-v2-0-bf17edd5134e@oss.qualcomm.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Jens Axboe , Johannes Berg , Jeff Johnson , Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz , Balakrishna Godavarthi , Rocky Liao , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Srinivas Kandagatla , Andrew Lunn , Heiner Kallweit , Russell King , Saravana Kannan Cc: linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-block@vger.kernel.org, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org, linux-bluetooth@vger.kernel.org, netdev@vger.kernel.org, daniel@makrotopia.org, Loic Poulain X-Mailer: b4 0.14.2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTA3MDE1NCBTYWx0ZWRfX1qFXJ5Y4ZfjM Ff+PFgCL2tnWcmQ5oXWdiKVNW4LZma5SlYrPFauyhF5b+i18aYrVcLEHZEbFR26/vT4/avy61FF oeNs0orHwli2w2EfcIsfoF7rtIrcMtmisJRHvMOKdWwMzeFzVZbr2ZUhOIPILNvtMp9ogbwGQrw cnWYZE18m6KvPGzekCDGr8fukBkpaV0UTK2h2zQqi6c7x0eWVlV9Tz1x33qusdV9ExKhOOrz5s3 7z345HToiCnlJnAOkAb5Rfqh21ynZd9A0ZXrQXVNe45WAN8BXM4TsKjcmMCEOufW5yO8b3L4VHq MTWCSHTsnrOySKEIXtglUk9UOS4/tu5Ynm4yZnazrpesfuOnLpDq2WdfLbzcCffKcF1zNMzRjG4 v5PCzGZDx5mtxXmDqv7CROqfBLtvY2yiFgcH+iUpZAF9mOJZli/A9vENAjIFkMR3tS0Kr7frsB4 BzYJ/U6F64Y0KcBa0cA== X-Proofpoint-ORIG-GUID: x_MN3-v5NZlbVpx04AkjEsXKlIwFjj8k X-Proofpoint-GUID: x_MN3-v5NZlbVpx04AkjEsXKlIwFjj8k X-Authority-Analysis: v=2.4 cv=ZZ4t8MVA c=1 sm=1 tr=0 ts=69fcaec1 cx=c_pps a=DUEm7b3gzWu7BqY5nP7+9g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=hFPe-bIbDLvfECHHD4sA:9 a=QEXdDO2ut3YA:10 a=-aSRE8QhW-JAV6biHavz:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-07_01,2026-05-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 suspectscore=0 spamscore=0 priorityscore=1501 bulkscore=0 phishscore=0 clxscore=1015 impostorscore=0 malwarescore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605070154 Add support for an nvmem-layout subnode under an eMMC hardware partition. This allows the partition to be exposed as an NVMEM provider and its internal layout to be described. For example, an eMMC boot partition can be used to store device-specific information such as a WiFi MAC address. Signed-off-by: Loic Poulain Reviewed-by: Rob Herring (Arm) --- .../devicetree/bindings/mmc/mmc-card.yaml | 24 ++++++++++++++++++= ++++ 1 file changed, 24 insertions(+) diff --git a/Documentation/devicetree/bindings/mmc/mmc-card.yaml b/Document= ation/devicetree/bindings/mmc/mmc-card.yaml index a61d6c96df759102f9c1fbfd548b026a77921cae..b21426a49cf1d9aae5b4e8e447b= 5be11b08c96bf 100644 --- a/Documentation/devicetree/bindings/mmc/mmc-card.yaml +++ b/Documentation/devicetree/bindings/mmc/mmc-card.yaml @@ -40,6 +40,9 @@ patternProperties: contains: const: fixed-partitions =20 + nvmem-layout: + $ref: /schemas/nvmem/layouts/nvmem-layout.yaml + required: - compatible - reg @@ -86,6 +89,27 @@ examples: read-only; }; }; + + partitions-boot2 { + nvmem-layout { + compatible =3D "fixed-layout"; + + #address-cells =3D <1>; + #size-cells =3D <1>; + + mac-addr@4400 { + compatible =3D "mac-base"; + reg =3D <0x4400 0x6>; + #nvmem-cell-cells =3D <1>; + }; + + bd-addr@5400 { + compatible =3D "mac-base"; + reg =3D <0x5400 0x6>; + #nvmem-cell-cells =3D <1>; + }; + }; + }; }; }; =20 --=20 2.34.1 From nobody Mon Jun 15 08:17:59 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3337D44D6B8 for ; Thu, 7 May 2026 15:24:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778167494; cv=none; b=NtLSDwPdofvOXrAMV8vAZBudzAY99olqsKYmjgwz11ysGBlLnFr7FS5CgebOAdZILTDBAtustf3t2fM9+lE/EfDkFgqga5juFkrqsNxWYn3Lov1D6Fn27Or53/j6NVViGvBmCuRt6aLtpl8EUVpP1u1GLTTIF7S6UN1S+xlU3V4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778167494; c=relaxed/simple; bh=aWIeQEdmSLhgx88ywuNXkmaIu8+4RM4LnE64b4MEZHg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ILl4i1aiK1W4cWwqKbkeKg/M3bibQuYeWyQ40BB5a+j3SBFWyERtxnfudJkOI/zQGge3VzAL9Wd7HQB5J6rARQXrdWb2XUwYcsVFkbyLBIy2AKyWb0Ft20swAgNd52cBBGd9eULDdTOgxNYomPI6A5I17hRqCh2+7pZqNfcy3J8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=A2LhJinX; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Ww/ZppNl; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="A2LhJinX"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Ww/ZppNl" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 647AjgvQ682765 for ; Thu, 7 May 2026 15:24:51 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= BmKkWNysoQOkzQVu0/HpO6GRxwgi9ndXDewfJyYIvjs=; b=A2LhJinXkxFI/S96 9vte8eeCRxFZ/E3ZYfrJQhuW21ihoIaeeqWVGUT9ZnEWt1g9Nqjg0us2pQSDCU8o puKLgB8ksgjnhr+8qycY2wZEqtnKH/wo64eSLK/DgtapCF9gGyZr9Yhp3EEZqXFX AOFJ0tp4dfPdwVx6xtbBZfSxwIRsO9nzFdFO2ewf9zbsaanbhqgC8AM9eWRPGm2n 4K4k+eogj+kc+t2F5nNkwR9xmaMXKzfNi2t0wdIAw6RVTViVO5T8DfxVaqIr9qWK na8BUQmp9zy6TMKuJ1pgBd2WFa3Q0sgXHSdsRyFv8baE99MiF4vyAAK78VuqhYAN Q5COHg== Received: from mail-ua1-f69.google.com (mail-ua1-f69.google.com [209.85.222.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e0mhat8a3-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 07 May 2026 15:24:51 +0000 (GMT) Received: by mail-ua1-f69.google.com with SMTP id a1e0cc1a2514c-95d434f3356so638115241.0 for ; Thu, 07 May 2026 08:24:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778167490; x=1778772290; 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=BmKkWNysoQOkzQVu0/HpO6GRxwgi9ndXDewfJyYIvjs=; b=Ww/ZppNlaLFL0EqBmpKzQputg8kT3OWojN7Uhvdi7r/V8ZJ8eiC7qfjreIC0wmNfdG tcpUMaMwDm0CeJOvWzXz9qTW1RA1Sk22grbaLzpEA/I6V27sm4qVQDph5MYITjF0fvLh QhF1cJ7oYjl1n6bIL2pOJ2SXC7lJUoNox9Gc6DoWeP2xTHqdWiRNG+STKERJMSlpHgqd WolNlsgfG91zjsj2M6S6pvT5b8wSGnl9UWpBPP+L+ll9SFoHIT4gIbxUqB2c+DjHT7kP ArqKwd52mPUb4Utufn8Jzw89fLUm02NFK9hN0Ro6a8mJZm3cjoopdhnvnq7c+Wt6rpd+ VvbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778167490; x=1778772290; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=BmKkWNysoQOkzQVu0/HpO6GRxwgi9ndXDewfJyYIvjs=; b=Pg05q5tjYiJQTk+VWRfpO61Eui8MG7z9Kx5GvQ1iOiQo26Ja1W6yO3mKHQ5XKm//H5 bMeZNmijoRmHfsdnDOIhWMwiA7ZrmjnzP66Cq3DI6S7JlbfKvcEunA68Ji7ERq2n5/gj 6Rn9CIEoP+HuoJc7Kb9vhG99If6ODwJjZSGfwxsjoEr/VSQo+CILY9F4cIXY5PaWAnOa +eKY18cORL0VVherkgOc/jO0H8jLqLWuYlyoJd57g/b00TO1CVoktZ5QW/Hlkuvq+ca/ N3FQK1UJf/GCB8s8Dt1zM+Yh61DeTPgDKZPAQkbyH8UqkDFViJaRkczry2PnteBS1mgN G2sg== X-Forwarded-Encrypted: i=1; AFNElJ/1C0679G9HPJ3MWe2B1Sd2AESj1LfIyYhTF+yrPIyY8UB75BbRaVSsDyYvBQe6BHbrq4brDY3cTN95gAU=@vger.kernel.org X-Gm-Message-State: AOJu0YyvQDrG+Ep9+TSFuFNEbsjlKWcIxnxBwsKwfezU35tg/9qwcPbD nQJ5EZEn4SbtOdQNcxARUdKc33xx4XhtPUWJiokSTMhCH8nPXzyRkfu04gPtRys/7RByldTQI/F VT7Ev0AF0gx5BKScQdgVceodh3SiTz/Qfxs8k2IXWL/+xGyl9LrlFBnBSCwjEprZbnhc= X-Gm-Gg: AeBDieswHqTyeIJAnafgb4nLWHnd5dn0JygRvbQSw+qV2W2cnGWaF3qae1VhSYyGQCl /VfFM7QD1pe/GjB+mFl1jbE0wFiROAJU5gIribUgA+f8l+qw06VgdQNMXc1ZvOXWKs4TuX5Msox AFC1vrL2WqkApUN9FxDkXBVV7IWpO+TWhpQ6t/YhHHnkzAwaV9Sekqn2xjv7MkioleyFsabIlYA BRyUffYaWADeYJ4AivlUCQKpN0VpnFQBv+CVL5SVRU7zB7mfH6DganuDF5X1s9mD6zomMRL7htR HkBne7e3XBPmCL6Nc8kV73nmm63Bl0r50pXI4u2y9hAEBg9fV8W6e82DBjvQYNACeY+5v3W6lCw kJbpDDB+9WYX99xKr396L8Rgy7dx0tK4SwSD8saSQFe96sUQcXS+QlkxoNKS3fW97ght5v0QFYS Sv09X3xHjIfm3yZFKyRnYiZySP2qI= X-Received: by 2002:a05:6122:3a06:b0:56b:8e1c:582d with SMTP id 71dfb90a1353d-5755974b78emr4681446e0c.14.1778167490334; Thu, 07 May 2026 08:24:50 -0700 (PDT) X-Received: by 2002:a05:6122:3a06:b0:56b:8e1c:582d with SMTP id 71dfb90a1353d-5755974b78emr4681359e0c.14.1778167489785; Thu, 07 May 2026 08:24:49 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:b16a:3475:ec42:bcfa]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bca583dd7e4sm240966b.58.2026.05.07.08.24.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 08:24:49 -0700 (PDT) From: Loic Poulain Date: Thu, 07 May 2026 17:24:37 +0200 Subject: [PATCH v2 2/8] dt-bindings: net: wireless: qcom,ath10k: Add NVMEM MAC address cell 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: <20260507-block-as-nvmem-v2-2-bf17edd5134e@oss.qualcomm.com> References: <20260507-block-as-nvmem-v2-0-bf17edd5134e@oss.qualcomm.com> In-Reply-To: <20260507-block-as-nvmem-v2-0-bf17edd5134e@oss.qualcomm.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Jens Axboe , Johannes Berg , Jeff Johnson , Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz , Balakrishna Godavarthi , Rocky Liao , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Srinivas Kandagatla , Andrew Lunn , Heiner Kallweit , Russell King , Saravana Kannan Cc: linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-block@vger.kernel.org, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org, linux-bluetooth@vger.kernel.org, netdev@vger.kernel.org, daniel@makrotopia.org, Loic Poulain X-Mailer: b4 0.14.2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTA3MDE1NCBTYWx0ZWRfX1vYTX63TZqCW ui7SfOkuOZ/ZPS7xfbG+n2l4DYAr67QxR0mSSl6Cfkkd5XuFyTPRZ0wBHj2YNEPdN0uqDXhi+Lj xtK4SVQYIvHbpG4k7drgdRu0Qt1V0sS8VNt9VHkFyd7TScwpxVxy9laYfu4yervllxB8QHX3MGZ vfmwPh54sPvjNT0vCXRzgLwECdlldyLt32zAnC+PYa6u5s0Muk1vCU2/NgNpfLO1r6BWamXBNKW p0ghtlYNXD4nA0OfuhD4LCuCHoD2z/N0VLb64+pOzCQ+jv6xZKuH68PqmRtDo7gFVVS6BJnq54R ZPZ9MxLAuRohaLOUgHRPlUcFDOWYgq6rI0/p6egHK7EREBj0dQHagnZnV8OTeqJzbWGucOX/OKm i36mvPvluOup1XC60JCx+qJ30bi+obYN64IDHhmlGnj+/F8J71NSk4m320BIh97tryDm8EwfEXr gHNL9rNao5XptDeERdQ== X-Proofpoint-ORIG-GUID: xOH9q4wKq8jMLNDuuNpHswl27sDlL80R X-Proofpoint-GUID: xOH9q4wKq8jMLNDuuNpHswl27sDlL80R X-Authority-Analysis: v=2.4 cv=ReWgzVtv c=1 sm=1 tr=0 ts=69fcaec3 cx=c_pps a=UbhLPJ621ZpgOD2l3yZY1w==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=yPTVd8cUMD2GasGf7IAA:9 a=QEXdDO2ut3YA:10 a=TOPH6uDL9cOC6tEoww4z:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-07_01,2026-05-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 impostorscore=0 lowpriorityscore=0 spamscore=0 suspectscore=0 adultscore=0 phishscore=0 malwarescore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605070154 Add support for an NVMEM cell provider with the standard "mac-address" cell name. This allows the ath10k device to retrieve its MAC address from non-volatile storage such as an EEPROM or an eMMC partition. Signed-off-by: Loic Poulain --- Documentation/devicetree/bindings/net/wireless/qcom,ath10k.yaml | 9 ++++++= +++ 1 file changed, 9 insertions(+) diff --git a/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.yam= l b/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.yaml index c21d66c7cd558ab792524be9afec8b79272d1c87..96e025cd1e3acacf3da270ed439= 55b0d6acdb7de 100644 --- a/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.yaml +++ b/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.yaml @@ -92,6 +92,15 @@ properties: =20 ieee80211-freq-limit: true =20 + nvmem-cells: + maxItems: 1 + description: + Nvmem data cell that contains a 6 byte MAC address with the most + significant byte first (big-endian). + + nvmem-cell-names: + const: mac-address + qcom,calibration-data: $ref: /schemas/types.yaml#/definitions/uint8-array description: --=20 2.34.1 From nobody Mon Jun 15 08:17:59 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 032C344A713 for ; Thu, 7 May 2026 15:24:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778167498; cv=none; b=E66UII20v5ENNzrna+7DL2uJCr4oCatmFK+gYfh1zB7jCKAKSkdkEkYiris5DU4d1D+6m5V1NIaOhhgb3zquUvvSOtwJLC6jrn5EHYaan7w06VsHhCSihN7vixfcY9a3X83vPVoSlbhOcXGh+NpTi8fpM8yluazeRaiIcyPdZUA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778167498; c=relaxed/simple; bh=RjAXLDtyeqYajrszhA7+nXfORAO+2o+t2+Lsa/IoOi4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=E3gRXcESnm7PLQT5dMmTM5lGABOCnlQv76zeepjNB05/BHrk4/b9K06s699sFztGu8TpeAeOkxsGGfkJdEQqJhW2/g/ZW6ifm5i/MSGFNE2uo+fukIPsEVwmA0+KfeFdkryFJce6MnKuCjh32CqW1DF13/m5YguRiTK7zVC9qLw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=pngJchIU; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=jxI+G6b3; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="pngJchIU"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="jxI+G6b3" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 647BjbjI3924358 for ; Thu, 7 May 2026 15:24:53 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= q7Clh3n6Vth4q3WERt/c3dsM43tyAEU24nXfs697yQY=; b=pngJchIUuTR6hnjQ lUECzDHVo3pz1dlhpiqmaq1DuAFQv80gbFnsc430vvYvth4mo1bwdyR6UWKw5WdL WOpcq2EHSqx0x7SuRWqWe2LCyY625A/6sKNH2CPBz1+ERlw6lSn9VmVhjg3m2AjE 9xjqaSAc6WqXXEOq/Srh54PIvF9/IBE1T0VyqUIqyRFa90B/3Dgo/n+591Morvba unefJ2L0hLpbQtFvm9AZTpw+nb43cU0FWeITrCo5GCw5BvFhhlt8ia+b3JuFJtgM lcihyLA5QdlvrdltBs6JtiQmmkeQ7kGuSsh/wQ29S1Y3j4W5t0tX7JFr9FIvJpJx E+BCeQ== Received: from mail-vk1-f198.google.com (mail-vk1-f198.google.com [209.85.221.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e0c88bs3b-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 07 May 2026 15:24:53 +0000 (GMT) Received: by mail-vk1-f198.google.com with SMTP id 71dfb90a1353d-575590529a0so1935918e0c.3 for ; Thu, 07 May 2026 08:24:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778167493; x=1778772293; 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=q7Clh3n6Vth4q3WERt/c3dsM43tyAEU24nXfs697yQY=; b=jxI+G6b3mTV3gazoiC4aUSTNbP5wqPMTene2mNpHXaXsW7p1Onp1Cp3VYHxEi1ACdj NGv6mZSC2cl5w5ZkYaK0AFfSCz7XzDMNjVk2soWHW58RUjNSwPaSofUssRXD7uUc7oIZ 5Ww61+6zHtUUvujAIqaCTRHRtvyY0Mmw6BKQM31G6jgDY3j7jcaOgfnhRD9MRi2LDDeN 6we13Oe2MnNANU2vhdnpgfbs/keHR9uTU8W2gxxLgDa/G+Nh4YGn8e3U05OyID3+ycJ4 mIqAjVk52B85l6VQmIuxOo1jlKVt8PV7oTAZflvmlMBOjlki5XwhZrkqHWjcDDU0QDP7 FXUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778167493; x=1778772293; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=q7Clh3n6Vth4q3WERt/c3dsM43tyAEU24nXfs697yQY=; b=WhRgjxPsCtPOHZ4YznrU/irqs2Ld9jPdWw62DS1i0wlDuq5pvphUakQs7XtaFaCen5 mozSS3czE2P+0fGpixBHqDmCOgKEHKY5//g2TXYHpiYiq9YdVyjQG+RsFHZ4QYm7G99/ 8cMZkiCItQaWCVUYAmOo9CF4lxx8BM4KbvFFG9t3Z6HYYYVNwmOSez/MRJwiigMDATMg 98+yVnhsONkdpS2ywRijh1IFZmvAJStnGQLdBsHvqKou+qTjXeU8JVrUccAyZP6JqBdn 03gAMfUYi9m2Lxxn9VJS32IiQRSM3YvkEB/zu49Z8shCjObcjsgWnDvZbVj+PjUEcrg8 gA2Q== X-Forwarded-Encrypted: i=1; AFNElJ/1UoS4AVEd3IxuiYORF43Wx+8WU9xDjbEO9rwXE9NbtZgQWi5yIyQIPfVsfT33Vp4veiYgDCXo7zQM3Lc=@vger.kernel.org X-Gm-Message-State: AOJu0YwSBU1ARWYGhfCxxZFp5/VGSGGGLdr6iORnwhk2+H5PTW2ls6li yyrzvqCyTm11hl3itb+B5+uiRN+Yu3lo04N/rv4eo6AyJ9uXYz1v2jzAP4tr7Ajbs2UdMAyz/OK iUZqXTmdAIYZ/E//Rngxx5E4sZ/4x26CZQddIlG1co4xcMPoVrs6OCMNi6y03qy9eHrI= X-Gm-Gg: AeBDies+9hEUGY4VzKvrrGNoz6up7PHmJY/JEcSTkBHRu13mNtQdY11BmQTuZy5+UKK 8zGSvb+uwzi57ltle7fO/j5/54stnPAGaSgs4ova01u1Ei8EKZOalchJNo5r1Lt/muwpiHvUuqy OSqJ2WZVcx427cgoIIKxVUBtetco0O3QFiMGe/S8C6yRiIcrNDOhxslooqig32/vdsKCY9SYDhn hUFSbpoz+v/GAmFJsnNlCjddnJe5vLaMflbabvZPHRRpUhTJRGNIVH+2zCgU2Uba7C164MJ+Ssg b1hWtjJ9Cl5iGf7c+MG/uprhngImEeVslc2d90nG1pLWPJ9ff5FTW+aYxsBbRX9v8ZGtbrfiVkf fC4RNCNy22Nok2OWpXL87yP9ZfdJ5htvgNVEaXMhrKdtgrTRFX5+8WnUfRLT9FnJw0ydvAtBbil JV8hj7fvqkxozpa66e6ZH0s/xG6AY= X-Received: by 2002:a05:6122:da3:b0:56f:b0bd:2276 with SMTP id 71dfb90a1353d-575591f7b22mr5439011e0c.0.1778167492601; Thu, 07 May 2026 08:24:52 -0700 (PDT) X-Received: by 2002:a05:6122:da3:b0:56f:b0bd:2276 with SMTP id 71dfb90a1353d-575591f7b22mr5438965e0c.0.1778167492169; Thu, 07 May 2026 08:24:52 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:b16a:3475:ec42:bcfa]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bca583dd7e4sm240966b.58.2026.05.07.08.24.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 08:24:51 -0700 (PDT) From: Loic Poulain Date: Thu, 07 May 2026 17:24:38 +0200 Subject: [PATCH v2 3/8] dt-bindings: bluetooth: qcom: Add NVMEM BD address cell 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: <20260507-block-as-nvmem-v2-3-bf17edd5134e@oss.qualcomm.com> References: <20260507-block-as-nvmem-v2-0-bf17edd5134e@oss.qualcomm.com> In-Reply-To: <20260507-block-as-nvmem-v2-0-bf17edd5134e@oss.qualcomm.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Jens Axboe , Johannes Berg , Jeff Johnson , Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz , Balakrishna Godavarthi , Rocky Liao , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Srinivas Kandagatla , Andrew Lunn , Heiner Kallweit , Russell King , Saravana Kannan Cc: linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-block@vger.kernel.org, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org, linux-bluetooth@vger.kernel.org, netdev@vger.kernel.org, daniel@makrotopia.org, Loic Poulain X-Mailer: b4 0.14.2 X-Proofpoint-ORIG-GUID: 9BToHrB5Hufy-IUx29D5UPVd1QRQtmOe X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTA3MDE1NCBTYWx0ZWRfX4yDcWEM3EGBy jGzpZHKnbXSbKSGPKN/GJ3OLxE5PyLxmaj3lKVEeP031/Ts1CwfO0/wMvCDgXnr2VI1/WLhCLWE 6mba5OzlX+CXcvIfTgbqxYXk5LwkYGfFOhRveFICxTqGc9r4MnSDmf3vKZ15YldQqq7n5t1O6xb Li4Z1kw2o4mogCyGr/MtmQc+BkImB9ZXWCsI86AiZcJieUyw93f6cwVbY7WOHDTZGw9rJjq9KO6 +DtlhMhyiiFPQZxp3y0kpVN2xzPGrhQejx37HbL2pfu626z0FQsaRHbA6BTfxom1GSqdadSe7Pe cRbiFqywStpDAPCTZcxEmbjLel+bUdQe4RMgbldjfB/A0tzIv8nsZP33oLQZH1A2a4TpVgkPjWf 32nbH+7XZrc3MGeJ0O2omKHxWVzIq2s82YlUqOsCyQLrZIiBzXUYTJyRyXr7LXSvZeWa+EJv+do y0t+JbaI1s6Oyk6gHaA== X-Proofpoint-GUID: 9BToHrB5Hufy-IUx29D5UPVd1QRQtmOe X-Authority-Analysis: v=2.4 cv=X8Zi7mTe c=1 sm=1 tr=0 ts=69fcaec5 cx=c_pps a=1Os3MKEOqt8YzSjcPV0cFA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=jFERsaRKWwo8c2z-USAA:9 a=QEXdDO2ut3YA:10 a=hhpmQAJR8DioWGSBphRh:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-07_01,2026-05-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 spamscore=0 adultscore=0 malwarescore=0 lowpriorityscore=0 clxscore=1015 phishscore=0 priorityscore=1501 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605070154 Add support for an NVMEM cell provider for "local-bd-address", allowing the Bluetooth stack to retrieve controller's BD address from non-volatile storage such as an EEPROM or an eMMC partition. Reviewed-by: Rob Herring (Arm) Signed-off-by: Loic Poulain --- .../devicetree/bindings/net/bluetooth/qcom,bluetooth-common.yaml | 9 +++++= ++++ 1 file changed, 9 insertions(+) diff --git a/Documentation/devicetree/bindings/net/bluetooth/qcom,bluetooth= -common.yaml b/Documentation/devicetree/bindings/net/bluetooth/qcom,bluetoo= th-common.yaml index c8e9c55c1afb4c8e05ba2dae41ce2db4194b4a0f..7cb28f30c9af032082f23311f2f= c89a32f266f17 100644 --- a/Documentation/devicetree/bindings/net/bluetooth/qcom,bluetooth-common= .yaml +++ b/Documentation/devicetree/bindings/net/bluetooth/qcom,bluetooth-common= .yaml @@ -22,4 +22,13 @@ properties: description: boot firmware is incorrectly passing the address in big-endian order =20 + nvmem-cells: + maxItems: 1 + description: + Nvmem data cell that contains a 6 byte BD address with the most + significant byte first (big-endian). + + nvmem-cell-names: + const: local-bd-address + additionalProperties: true --=20 2.34.1 From nobody Mon Jun 15 08:17:59 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F0E6A4657DC for ; Thu, 7 May 2026 15:24:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778167502; cv=none; b=sEMr3WjLeB2wPOC7vXid3dQ87kWMCSTAED0ovjGoqkn2dsixrrzrU9BjTqHfAPJ4sFq2MU3zYhgdn0zyXXT+Vy2qem7wO7oy+OknR7b5iY3vRwZQ04/OgGu/QY6XH1Rnjd2yT1S/sA/VRZXwJ1FCgKkME/LPBSgegSLsKwrmqCU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778167502; c=relaxed/simple; bh=RM1D8OBCAOaFvaWlmG/BF9szeghRU3UqO9TQZXq+eUM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Gw3gG+SxThdSxj5sLpy5Lq+eokbe+y4myCQsLl17E/aV+K1KJElBRP7v7eQJEHMfzElz1nkudNUrM5HowJ9CLqjMHTcJuU+Vs9ABBxHqCuMK5HR+lrjVv5sF3t5AXapISi0aUMpEh21wkJJ+X6GSBYJHHUJB8nVaKDMWEMe5Kks= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=NAq1Uehi; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=YHe6yPKw; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="NAq1Uehi"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="YHe6yPKw" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 647BaEJV682810 for ; Thu, 7 May 2026 15:24:57 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= Nv8kxkOoxWLas1bms0TwZMzIY1MQ08eWrRceN3ebjas=; b=NAq1UehidFfBq59k bok3F7/2xbm5kG0Q/N0IZnvVvoc0zJaPtR6FO1GRkpRqISb2G2gt7NLJLaw1HTkb 4AthaN8kOQGdBpz58AvMAMkhSH384aFRRKr2OPPsHJEbvjiqg8URGK0xGFOp/tZX UWhLYSnGBQHuHodbYrgbMi2zABK16FD+y/GTaxvtaBsv8CLi7ZTBR1ipKcsICqsd bILYnjygMyUB0h6tr0RQjlV/C9eDaWTio2dM5KY6I0KfMJdt4PmKeV4ni9wXI8In MxYvhSh1pSddXjSUZ1alq+OqN7eU143mCSJFgFQNrV6M0c/u38XavhR2yXezu1R8 JseW2A== Received: from mail-ua1-f69.google.com (mail-ua1-f69.google.com [209.85.222.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e0mhat8ap-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 07 May 2026 15:24:57 +0000 (GMT) Received: by mail-ua1-f69.google.com with SMTP id a1e0cc1a2514c-95d25cc8f5bso1384242241.3 for ; Thu, 07 May 2026 08:24:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778167495; x=1778772295; 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=Nv8kxkOoxWLas1bms0TwZMzIY1MQ08eWrRceN3ebjas=; b=YHe6yPKw6Q9d9sd4iPdkksRJuQvqpiUpWKn2sh0WOgCX8wt+htByAMTlvei3k6DII2 ZPBgkquQ94libdcaABL8D7zsCAbO2DvT0VFt8IgVjGGjLJHqIZvJEyluyD+aXQoxJ7M/ HXEZbtqGGI0edAkkeLb0FSUrWYkTK2Khvflr1d2Rf/Faan5I/FRik4Ex7KmucutB/CxR O2c5R0pzwg46fnkdTssOuXWGZ/fUVgGkB7WUH8AWrjrIu8Kff5Wn8AvWvh3iE5dD0Pb+ yV+MjXs9+2WsllBBfv8ksIh6Hb49SMjcvLILn0tWTju2qPk2qXBQmlQCHL9/kp/EAPM2 PK3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778167495; x=1778772295; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Nv8kxkOoxWLas1bms0TwZMzIY1MQ08eWrRceN3ebjas=; b=evziV1f1qOLJJKs2ZMfQBG3QqaQpDH9zdyDfnNaiyStz5As7skaUVbJ9sOeuqgnum3 GZgfS9dgAsAJfF8DJ+abLA35HjPNpAkVzUEGGeOzpHmfGctwP0fc9w5lpfZjKH5YFqUL OUvlMRolAkF4Gcavdy8aXIbnDNdp3lZd+Ozh1nvXc3YfYAk+HUeqvSyD0VZv6TK/FpoW 7z2q5FAs1gnZNcwLfuVQ8xYaxGIX7bY+3Pq1i+8cXlxmj6okfuUsYXyluPcQqCEY7l7o mML/MHU2rqAQK2aBB/jMQ/ZR/BDLP6pmPirQH9XpGD3A9A/MrBfMNf0okzlYARgajlOM OuYQ== X-Forwarded-Encrypted: i=1; AFNElJ8quLYh91YwSNH1ecm3I+/VW/u3u/3fgVZ8/NJyxCXdmT0UJ+13mwBNXJ8IhsHkJVrAC7b6bge/cYn0p7M=@vger.kernel.org X-Gm-Message-State: AOJu0YzvN6gObBSQxsV5nAGVVCeqJl/Vu3dpIKxiODgBCjbSTOdwpHcd lSltwZLrZnAddk2uxn6npOWwekiWMgYWJ9lGg9hdoUBAE7LfBRTDelwe0bOw4/18hiKXoBB0jhA M3AFD1+pfG8RNKeULSD2tuiFuJ83ymTwt7++ZUjtbsElW2u7LC02MsqtgSWtbV6oMAYg= X-Gm-Gg: AeBDieuylgWZnvEnQKW8Mh/gQtMPNWDX3y4gp7FDSTngs1ZJULT0pEQb39ij/RBQsSU 1RIyt/2ucjp/Cgo6T74MNG0wuMQmRAWJcs92n93buXT5651u28LmsM6azs7CjM/Ws+60wsV6RCF oQJ4JnxJiqvBJ7q/LvflfvwQFSoK82j1K28dSsWXzgZGSwNxJ2kVlpQEiIoAwT0kkDBf0fX4h51 kJE4pK2TzkeRB/9iaXyiV1X4CyEH7VRwBsk7yFpFKxc2RGzsvQLpVq93RSixz3ODpEwwtdrTO23 uJGM10ts0YBCf5YB693GScDxxYYeGSnyxyP4ufQnJ3lzBtPIysgRtq2S6zcjAkYex6bbck6JIty EdctDG6AX8c6BFYoCnKMyUE4h3VQY2ZQgmZVjit9wW5EAZhe+fXDRNkLsjFvZcQKrt2jYpwoXoV msSDrJSG02vhKukz8fhMKkg1M5JP8= X-Received: by 2002:a05:6122:9001:b0:56d:8ded:796c with SMTP id 71dfb90a1353d-575596399bcmr5099009e0c.4.1778167495032; Thu, 07 May 2026 08:24:55 -0700 (PDT) X-Received: by 2002:a05:6122:9001:b0:56d:8ded:796c with SMTP id 71dfb90a1353d-575596399bcmr5098940e0c.4.1778167494472; Thu, 07 May 2026 08:24:54 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:b16a:3475:ec42:bcfa]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bca583dd7e4sm240966b.58.2026.05.07.08.24.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 08:24:53 -0700 (PDT) From: Loic Poulain Date: Thu, 07 May 2026 17:24:39 +0200 Subject: [PATCH v2 4/8] block: implement NVMEM provider 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: <20260507-block-as-nvmem-v2-4-bf17edd5134e@oss.qualcomm.com> References: <20260507-block-as-nvmem-v2-0-bf17edd5134e@oss.qualcomm.com> In-Reply-To: <20260507-block-as-nvmem-v2-0-bf17edd5134e@oss.qualcomm.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Jens Axboe , Johannes Berg , Jeff Johnson , Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz , Balakrishna Godavarthi , Rocky Liao , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Srinivas Kandagatla , Andrew Lunn , Heiner Kallweit , Russell King , Saravana Kannan Cc: linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-block@vger.kernel.org, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org, linux-bluetooth@vger.kernel.org, netdev@vger.kernel.org, daniel@makrotopia.org, Loic Poulain X-Mailer: b4 0.14.2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTA3MDE1NCBTYWx0ZWRfX3u78sGsv/nSo ZorgkGf2pqVTLcWAbN2V/08XBfuameQtL3f0fe6qq+8tRCif0qugKDso3kcYahZ+lEdR4M0iEyz 0OUvdbhhRxaZD1BiFeNK9Th+VJIyTI09zIdWypVdJrBdRvaizN59OQ2vPr8rpqRR0xrZs+Np93E VfG5zBLXjZ/G/XwWTxSiE6qi9rGX1w01HRbDvsk1MHtPV8+I/TPYs4at+QMPrItMMtANFIqd64Y bjbRRRONc9zvqbVaD3DunZVAtm7TyiWdtoNY1AtoXLmLVekryL2mq3Uyj5MeuZon4Ix3EIg5MTY qNDUdLdmdbwWpRNIXKyvdcvBH9vHPd9hdAy9W7aL4yiUn0jQcDTgl92RhQxcvPbBh6GYGuqIgDs Q32GrAtHZx4WBlOCvOhHY5PDPOg5zTYQVy7OzH05UqSWDC1yb/JuwHRws4dy/6qBDYdPICk+dFV zhUQ5brbEQ9XJTW7HyQ== X-Proofpoint-ORIG-GUID: CT0CXNVDpuhAdwhBQQqRu21u4A0sFLyI X-Proofpoint-GUID: CT0CXNVDpuhAdwhBQQqRu21u4A0sFLyI X-Authority-Analysis: v=2.4 cv=ReWgzVtv c=1 sm=1 tr=0 ts=69fcaec9 cx=c_pps a=UbhLPJ621ZpgOD2l3yZY1w==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=VT4XjZGOAAAA:8 a=EUspDBNiAAAA:8 a=71DuYGxFrHUPmPLwgxgA:9 a=QEXdDO2ut3YA:10 a=TOPH6uDL9cOC6tEoww4z:22 a=6CpsfURP9XNmmWg3j1mJ:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-07_01,2026-05-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 impostorscore=0 lowpriorityscore=0 spamscore=0 suspectscore=0 adultscore=0 phishscore=0 malwarescore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605070154 From: Daniel Golle On embedded devices using an eMMC it is common that one or more partitions on the eMMC are used to store MAC addresses and Wi-Fi calibration EEPROM data. Allow referencing the partition in device tree for the kernel and Wi-Fi drivers accessing it via the NVMEM layer. To safely defer the freeing of the provider private data until all consumers have released their cells, a nvmem_dev() accessor is added to the NVMEM core to expose the struct device embedded in struct nvmem_device. This allows registering a devm action on the nvmem device itself, ensuring the private data outlives any active cell references. Signed-off-by: Daniel Golle Co-developed-by: Loic Poulain Signed-off-by: Loic Poulain --- block/Kconfig | 9 ++ block/Makefile | 1 + block/blk-nvmem.c | 188 +++++++++++++++++++++++++++++++++++++= ++++ drivers/nvmem/core.c | 13 +++ include/linux/nvmem-consumer.h | 6 ++ 5 files changed, 217 insertions(+) diff --git a/block/Kconfig b/block/Kconfig index 15027963472d7b40e27b9097a5993c457b5b3054..0b33747e16dc33473683706f75c= 92bdf8b648f7c 100644 --- a/block/Kconfig +++ b/block/Kconfig @@ -209,6 +209,15 @@ config BLK_INLINE_ENCRYPTION_FALLBACK by falling back to the kernel crypto API when inline encryption hardware is not present. =20 +config BLK_NVMEM + bool "Block device NVMEM provider" + depends on OF + depends on NVMEM + help + Allow block devices (or partitions) to act as NVMEM providers, + typically used with eMMC to store MAC addresses or Wi-Fi + calibration data on embedded devices. + source "block/partitions/Kconfig" =20 config BLK_PM diff --git a/block/Makefile b/block/Makefile index 7dce2e44276c4274c11a0a61121c83d9c43d6e0c..d7ac389e71902bc091a8800ea26= 6190a43b3e63d 100644 --- a/block/Makefile +++ b/block/Makefile @@ -36,3 +36,4 @@ obj-$(CONFIG_BLK_INLINE_ENCRYPTION) +=3D blk-crypto.o blk= -crypto-profile.o \ blk-crypto-sysfs.o obj-$(CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK) +=3D blk-crypto-fallback.o obj-$(CONFIG_BLOCK_HOLDER_DEPRECATED) +=3D holder.o +obj-$(CONFIG_BLK_NVMEM) +=3D blk-nvmem.o diff --git a/block/blk-nvmem.c b/block/blk-nvmem.c new file mode 100644 index 0000000000000000000000000000000000000000..96c0ffc51b1862a75644f3f94ad= d35d59577d86b --- /dev/null +++ b/block/blk-nvmem.c @@ -0,0 +1,188 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * block device NVMEM provider + * + * Copyright (c) 2024 Daniel Golle + * + * Useful on devices using a partition on an eMMC for MAC addresses or + * Wi-Fi calibration EEPROM data. + */ + +#include "blk.h" +#include +#include +#include +#include +#include + +static void blk_nvmem_free(void *data) +{ + kfree(data); +} + +/* List of all NVMEM devices */ +static LIST_HEAD(nvmem_devices); +static DEFINE_MUTEX(devices_mutex); + +struct blk_nvmem { + struct nvmem_device *nvmem; + dev_t devt; + bool removed; + struct list_head list; +}; + +static int blk_nvmem_reg_read(void *priv, unsigned int from, + void *val, size_t bytes) +{ + blk_mode_t mode =3D BLK_OPEN_READ | BLK_OPEN_RESTRICT_WRITES; + unsigned long offs =3D from & ~PAGE_MASK, to_read; + pgoff_t f_index =3D from >> PAGE_SHIFT; + struct blk_nvmem *bnv =3D priv; + size_t bytes_left =3D bytes; + struct file *bdev_file; + struct folio *folio; + void *p; + int ret =3D 0; + + if (bnv->removed) + return -ENODEV; + + bdev_file =3D bdev_file_open_by_dev(bnv->devt, mode, priv, NULL); + if (!bdev_file) + return -ENODEV; + + if (IS_ERR(bdev_file)) + return PTR_ERR(bdev_file); + + while (bytes_left) { + folio =3D read_mapping_folio(bdev_file->f_mapping, f_index++, NULL); + if (IS_ERR(folio)) { + ret =3D PTR_ERR(folio); + goto err_release_bdev; + } + to_read =3D min_t(unsigned long, bytes_left, PAGE_SIZE - offs); + p =3D folio_address(folio) + offset_in_folio(folio, offs); + memcpy(val, p, to_read); + offs =3D 0; + bytes_left -=3D to_read; + val +=3D to_read; + folio_put(folio); + } + +err_release_bdev: + fput(bdev_file); + + return ret; +} + +static int blk_nvmem_register(struct device *dev) +{ + struct device_node *np =3D dev_of_node(dev); + struct block_device *bdev =3D dev_to_bdev(dev); + struct nvmem_config config =3D {}; + struct blk_nvmem *bnv; + + /* skip devices which do not have a device tree node */ + if (!np) + return 0; + + /* skip devices without an nvmem layout defined */ + if (!of_get_child_by_name(np, "nvmem-layout")) + return 0; + + /* + * skip block device too large to be represented as NVMEM devices + * which are using an 'int' as address + */ + if (bdev_nr_bytes(bdev) > INT_MAX) + return -EFBIG; + + bnv =3D kzalloc_obj(*bnv); + if (!bnv) + return -ENOMEM; + + config.id =3D NVMEM_DEVID_NONE; + config.dev =3D &bdev->bd_device; + config.name =3D dev_name(&bdev->bd_device); + config.owner =3D THIS_MODULE; + config.priv =3D bnv; + config.reg_read =3D blk_nvmem_reg_read; + config.size =3D bdev_nr_bytes(bdev); + config.word_size =3D 1; + config.stride =3D 1; + config.read_only =3D true; + config.root_only =3D true; + config.ignore_wp =3D true; + config.of_node =3D to_of_node(dev->fwnode); + + bnv->devt =3D bdev->bd_device.devt; + bnv->nvmem =3D nvmem_register(&config); + if (IS_ERR(bnv->nvmem)) { + dev_err_probe(&bdev->bd_device, PTR_ERR(bnv->nvmem), + "Failed to register NVMEM device\n"); + + kfree(bnv); + return PTR_ERR(bnv->nvmem); + } + + /* + * Free bnv only when the nvmem device is fully released (i.e. when + * its kref hits zero), not at unregister time. This prevents a + * use-after-free if a consumer still holds an nvmem_cell reference + * when the block device is removed: nvmem_unregister() only does a + * kref_put(), so reg_read could still be called with bnv as priv + * until the last consumer drops its cell. + */ + if (devm_add_action(nvmem_dev(bnv->nvmem), blk_nvmem_free, bnv)) { + nvmem_unregister(bnv->nvmem); + kfree(bnv); + return -ENOMEM; + } + + mutex_lock(&devices_mutex); + list_add_tail(&bnv->list, &nvmem_devices); + mutex_unlock(&devices_mutex); + + return 0; +} + +static void blk_nvmem_unregister(struct device *dev) +{ + struct blk_nvmem *bnv_c, *bnv =3D NULL; + + mutex_lock(&devices_mutex); + list_for_each_entry(bnv_c, &nvmem_devices, list) { + if (bnv_c->devt =3D=3D dev_to_bdev(dev)->bd_device.devt) { + bnv =3D bnv_c; + break; + } + } + + if (!bnv) { + mutex_unlock(&devices_mutex); + return; + } + + list_del(&bnv->list); + mutex_unlock(&devices_mutex); + bnv->removed =3D true; + nvmem_unregister(bnv->nvmem); +} + +static struct class_interface blk_nvmem_bus_interface __refdata =3D { + .class =3D &block_class, + .add_dev =3D &blk_nvmem_register, + .remove_dev =3D &blk_nvmem_unregister, +}; + +static int __init blk_nvmem_init(void) +{ + int ret; + + ret =3D class_interface_register(&blk_nvmem_bus_interface); + if (ret) + return ret; + + return 0; +} +device_initcall(blk_nvmem_init); diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c index 311cb2e5a5c02d2c6979d7c9bbb7f94abdfbdad1..ee3481229c20b3063c86d0dd66a= abbf6b5e29169 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -2154,6 +2154,19 @@ const char *nvmem_dev_name(struct nvmem_device *nvme= m) } EXPORT_SYMBOL_GPL(nvmem_dev_name); =20 +/** + * nvmem_dev() - Get the struct device of a given nvmem device. + * + * @nvmem: nvmem device. + * + * Return: pointer to the struct device of the nvmem device. + */ +struct device *nvmem_dev(struct nvmem_device *nvmem) +{ + return &nvmem->dev; +} +EXPORT_SYMBOL_GPL(nvmem_dev); + /** * nvmem_dev_size() - Get the size of a given nvmem device. * diff --git a/include/linux/nvmem-consumer.h b/include/linux/nvmem-consumer.h index 34c0e58dfa26636d2804fcc7e0bc4a875ee73dae..ce387c89dc8e4bc1241f3b6f36b= e8c6c95e282ed 100644 --- a/include/linux/nvmem-consumer.h +++ b/include/linux/nvmem-consumer.h @@ -82,6 +82,7 @@ int nvmem_device_cell_write(struct nvmem_device *nvmem, =20 const char *nvmem_dev_name(struct nvmem_device *nvmem); size_t nvmem_dev_size(struct nvmem_device *nvmem); +struct device *nvmem_dev(struct nvmem_device *nvmem); =20 void nvmem_add_cell_lookups(struct nvmem_cell_lookup *entries, size_t nentries); @@ -220,6 +221,11 @@ static inline const char *nvmem_dev_name(struct nvmem_= device *nvmem) return NULL; } =20 +static inline struct device *nvmem_dev(struct nvmem_device *nvmem) +{ + return NULL; +} + static inline void nvmem_add_cell_lookups(struct nvmem_cell_lookup *entries, size_t nentries)= {} static inline void --=20 2.34.1 From nobody Mon Jun 15 08:17:59 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0BD47466B55 for ; Thu, 7 May 2026 15:25:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778167505; cv=none; b=RK65DgFbnkwUlCPbIjiz5JbEhXQMxO9wsDEXvnjwXcgmWHY1Nf2sxm4dhE6rAZ//s6ZcPNqO9RV4Q3SYkVuS+yQviW6lCUx7CbNN1Ow4g9D8Sms/qC9xpNGQNgulwKrAaOBiORIyYrJTL2kSjgys6m7r+zoJ17rsVPIydGuDvu4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778167505; c=relaxed/simple; bh=PTkmvq/Q7QJ06WLt1N+U7YrHr9PbicR5yuKr0MktND8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QIHlb/WsjY2embmRJGJD9wDYSMofOJNaHwto7125g4kByBP/IHWX0AOATWS0gJ2BS9vBWuoxFKpMsOqCnBOTOqCA+WALoKzklZK9nev0BJvmHVOj5gXjZ4FdjWxTECxndMxAd+DLhovAtfpLkWOaH0H0e+LF2GvPSg2QCQ3mVxg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=GQGKmWwP; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=BoiEoIEG; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="GQGKmWwP"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="BoiEoIEG" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 647BxhlS2734318 for ; Thu, 7 May 2026 15:25:00 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= uk7Oe1xq0TlLuceyYysifE8TQzhLGFxXPLlz8g3T7ak=; b=GQGKmWwPpcYT7z52 bh2TBhD3xN2aVw+NnsWrysEnuoLLqDCOscuj7MW+9REwKMoW7mY5/4nq9ouPjv/g thwhVWE3ViIlDkCt1ycf1AQFZ1cGZ6NmEpXCVrtcQnVpGRxU3RQxdHtKryWF6KTx K+xYI7lTzBNnoOWbnW+5KGwx1fJchODrvLFvjUD14mh/H0p4TxPqRr84WwFrh27f 8N9KTX/ztpP9EOfYjCzV1eoVEbr61V9zen0za/2MVIw/iZ5PXTf+/ZK+7484+EIw Cm7l3M9dBPTFL56gluoApthPugAaLSFg/qxw+RHO+JWjyxvQoRxJcadQFKuQf+xk 3Wj1hw== Received: from mail-ua1-f71.google.com (mail-ua1-f71.google.com [209.85.222.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e0tbqrt4k-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 07 May 2026 15:24:59 +0000 (GMT) Received: by mail-ua1-f71.google.com with SMTP id a1e0cc1a2514c-95ce07ddc14so1138541241.2 for ; Thu, 07 May 2026 08:24:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778167499; x=1778772299; 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=uk7Oe1xq0TlLuceyYysifE8TQzhLGFxXPLlz8g3T7ak=; b=BoiEoIEGSFg2nLyqYhoAS3ipSziX+Bf0RWodsXs3iufy/Qa5PRuz7MUHqznU+dHm0/ CqCfhVboEOvao6bgt8qedh76exBuQnXexVSN5oyVY0J4XngL5MWXWqxuvqrvcovefsDi 38NyygRbYNg08ggM+KVxvhyMY5loN1lk8prlnui30qmnvBnG6GaXU/Pbd1pGWh68BpnP NtLiMrx8YmEkEXBoTRuvWGd9nYVoXNbJreQ6RAP6DvEk7RJMf6wb40CF1bFe2tUeiOvK Vd2epm1UVYz5f9qY8KAc/0Qxe0AHlFmHw6+TE4xzWYAUVsZjhDAlx7bHp74J0vDwYHOm Wb0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778167499; x=1778772299; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=uk7Oe1xq0TlLuceyYysifE8TQzhLGFxXPLlz8g3T7ak=; b=GO2qoh0Q2puPjoSDo3vEA7KxUWvbMXFzrCroK9rQn9WM2HCy/wAv1dTb+JGMVfjP7c QZ63ZgeGfheskazLo76iNXwBh9bfN65OaZ2gJB/liXEzte7Eq5VfTFVg/+48nJ9CVAIt m46VvVmyA/wXrnLQHRrh2cCfQp+f3oLXzfzkJAlNMyMiesvFnmMWM/eZ6e6J6BzGmA5b 4gABkPxYczAGNXmGNakbVo7dXpmLf5G21AqA3L0/o/IM5ZkWeibaNiNNRuBbfXYeSSHB VKtO6PW99jLlpDxKuCCHmx4xd8b5V91bPtCoPzurNgg4WwMtjq8q/Pc4ESYStNBRP9FS aqFg== X-Forwarded-Encrypted: i=1; AFNElJ9GyNEuAtlesGeOPIGf4aOErDTEc6osE3pSFwlOOcp9crQhbN7upTTXc/w/Bcu613FexFLvMRXv1T39mBg=@vger.kernel.org X-Gm-Message-State: AOJu0YxJzs2fFviclkYdnCQL/9oucPWrCIl8hl0cMYMoqDdmV4RtNKOZ B94SXOuOTK1tJPvxhdBir+UdJvVSvuhSu5tTXg7ksqXHhxXoT6csBsaaHFOJyUs0rXUxiALt1ow FXkiHojzHTtFia/Vk9EfTl8Dq0QGX1Av+6hpxR0dGaawIoTOsry/jDhG7dhd4Zb7xyk0= X-Gm-Gg: AeBDietbRDAnIc/DwEXmyptXEXJB0xg+yAImjBJ2hiqB8s69HFItwhw/ybdoaDOFs4Q NMt7y/lmILjmJ9JOUbhq7oRP7ZbHZkzznXpDehOo/lpZtNllIKN53WLOER8hqI9KXhXruVZJKZ5 LCPvNOxD2QCr5G0/SSXDiCgt320c+BD3LueqMhlXmzPrvTSurkov9ChHhLuy2/5UHdDc6U9Suoq gcjzjjYKU8W1bwi7LAFqdi0iZqkVLkxSYptxsB7JkyRMolqD7LrRjOpY6bQBwyuND/ZifsNQXv4 i8/XBfNJklRT9yCta/YoT7mmybDhgz/balec0K5KZRUmQ+9n0/0wIA3PmP8g1ys2avUduIoV6OI pfwiAVPwkYZaZamdhnisBwYglYSyg8HwM4WZvFyEXIWsQg7na4JqkiM0rRLL/RB+t97iT7fysYp jajn6npbLNwwEvE0ViOpUEusCOLBg= X-Received: by 2002:a05:6122:1822:b0:56f:6add:9029 with SMTP id 71dfb90a1353d-575593aea76mr5335452e0c.1.1778167498780; Thu, 07 May 2026 08:24:58 -0700 (PDT) X-Received: by 2002:a05:6122:1822:b0:56f:6add:9029 with SMTP id 71dfb90a1353d-575593aea76mr5335377e0c.1.1778167498276; Thu, 07 May 2026 08:24:58 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:b16a:3475:ec42:bcfa]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bca583dd7e4sm240966b.58.2026.05.07.08.24.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 08:24:56 -0700 (PDT) From: Loic Poulain Date: Thu, 07 May 2026 17:24:40 +0200 Subject: [PATCH v2 5/8] net: of_net: Add of_get_nvmem_eui48() helper for EUI-48 lookup 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: <20260507-block-as-nvmem-v2-5-bf17edd5134e@oss.qualcomm.com> References: <20260507-block-as-nvmem-v2-0-bf17edd5134e@oss.qualcomm.com> In-Reply-To: <20260507-block-as-nvmem-v2-0-bf17edd5134e@oss.qualcomm.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Jens Axboe , Johannes Berg , Jeff Johnson , Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz , Balakrishna Godavarthi , Rocky Liao , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Srinivas Kandagatla , Andrew Lunn , Heiner Kallweit , Russell King , Saravana Kannan Cc: linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-block@vger.kernel.org, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org, linux-bluetooth@vger.kernel.org, netdev@vger.kernel.org, daniel@makrotopia.org, Loic Poulain X-Mailer: b4 0.14.2 X-Proofpoint-ORIG-GUID: KwIqrjZ4BBQOr8HJdz_XEtlctmmyDfYo X-Authority-Analysis: v=2.4 cv=SJVykuvH c=1 sm=1 tr=0 ts=69fcaecb cx=c_pps a=KB4UBwrhAZV1kjiGHFQexw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=C98JESGoZJZpJ7w8-ywA:9 a=QEXdDO2ut3YA:10 a=o1xkdb1NAhiiM49bd1HK:22 X-Proofpoint-GUID: KwIqrjZ4BBQOr8HJdz_XEtlctmmyDfYo X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTA3MDE1NCBTYWx0ZWRfX8NPidMRsuqOF Y6pu7JxlPox82W0Zg6nqhHDkZA5vwilwlCtdCwk5rtk2jPmyLSuVy0/55AWN8mPsQDyXmPICPuv +uSWDfC9QCVZOQhqoFv4CJomJwqCi3i9rAZN4/Am4tbSA7Cwxxc1RFrazKwInaqZBUmT7+NC4DX y+3TqbPZWBIJPE+VfsTZ932GSLNNvGCskfhmgAqAr3mRol3QDO1tPm8jk8UUYIlugdlVD6UeG2b mFl5GEDnP9hmWGYrWqlPjg9iGtERGStujbMBAilNVS6curtpgsPJ3sUcKb+8p1TPMhKIJmDppQt TSLjuQrY5VBUYnypRk+v+NVg7kXmeCdWH8EMySf/hLe3nYLnN6wP4SVnE2EqP1Me17fJjALiIdU fdlEh0XErk/YBQAqqMd26zYXrcWrAmRoDwQ0V+RQYNkIuqWZdLJSBiLNmyVmRiGU9CdPOO+YTSh ks2UehSea+sfmojtUYQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-07_01,2026-05-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 suspectscore=0 lowpriorityscore=0 impostorscore=0 bulkscore=0 adultscore=0 malwarescore=0 spamscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605070154 Factor out the common NVMEM EUI-48 retrieval logic from of_get_mac_address_nvmem() into a new of_get_nvmem_eui48() helper that accepts the NVMEM cell name as a parameter. This allows other subsystems (e.g. Bluetooth) to reuse the same lookup-validate-copy pattern with a different cell name, without duplicating code. of_get_mac_address_nvmem() is updated to call of_get_nvmem_eui48() with "mac-address", preserving its existing behavior. Signed-off-by: Loic Poulain Reviewed-by: Bartosz Golaszewski --- include/linux/of_net.h | 7 +++++++ net/core/of_net.c | 47 +++++++++++++++++++++++++++++++++++------------ 2 files changed, 42 insertions(+), 12 deletions(-) diff --git a/include/linux/of_net.h b/include/linux/of_net.h index d88715a0b3a52f87af23d47791bea3baf5be5200..7854ba555d9a55f3d020a37fe00= a27ae52e0e5dc 100644 --- a/include/linux/of_net.h +++ b/include/linux/of_net.h @@ -15,6 +15,7 @@ struct net_device; extern int of_get_phy_mode(struct device_node *np, phy_interface_t *interf= ace); extern int of_get_mac_address(struct device_node *np, u8 *mac); extern int of_get_mac_address_nvmem(struct device_node *np, u8 *mac); +int of_get_nvmem_eui48(struct device_node *np, const char *cell_name, u8 *= addr); int of_get_ethdev_address(struct device_node *np, struct net_device *dev); extern struct net_device *of_find_net_device_by_node(struct device_node *n= p); #else @@ -34,6 +35,12 @@ static inline int of_get_mac_address_nvmem(struct device= _node *np, u8 *mac) return -ENODEV; } =20 +static inline int of_get_nvmem_eui48(struct device_node *np, + const char *cell_name, u8 *addr) +{ + return -ENODEV; +} + static inline int of_get_ethdev_address(struct device_node *np, struct net= _device *dev) { return -ENODEV; diff --git a/net/core/of_net.c b/net/core/of_net.c index 93ea425b9248a23f4f95a336e9cdbf0053248e32..79b289de0f16aa5f8724e84d6f2= 300648c25b6c4 100644 --- a/net/core/of_net.c +++ b/net/core/of_net.c @@ -61,9 +61,6 @@ static int of_get_mac_addr(struct device_node *np, const = char *name, u8 *addr) int of_get_mac_address_nvmem(struct device_node *np, u8 *addr) { struct platform_device *pdev =3D of_find_device_by_node(np); - struct nvmem_cell *cell; - const void *mac; - size_t len; int ret; =20 /* Try lookup by device first, there might be a nvmem_cell_lookup @@ -75,27 +72,53 @@ int of_get_mac_address_nvmem(struct device_node *np, u8= *addr) return ret; } =20 - cell =3D of_nvmem_cell_get(np, "mac-address"); + ret =3D of_get_nvmem_eui48(np, "mac-address", addr); + if (ret) + return ret; + + if (!is_valid_ether_addr(addr)) + return -EINVAL; + + return 0; +} +EXPORT_SYMBOL(of_get_mac_address_nvmem); + +/** + * of_get_nvmem_eui48 - Read a 6-byte EUI-48 address from a named NVMEM ce= ll. + * @np: Device node to look up the NVMEM cell from. + * @cell_name: Name of the NVMEM cell (e.g. "mac-address", "local-bd-addre= ss"). + * @addr: Output buffer for the 6-byte address. + * + * Reads the named NVMEM cell and validates that it contains a non-zero 6-= byte + * address. Returns 0 on success, negative errno on failure. + */ +int of_get_nvmem_eui48(struct device_node *np, const char *cell_name, u8 *= addr) +{ + struct nvmem_cell *cell; + const void *eui48; + size_t len; + + cell =3D of_nvmem_cell_get(np, cell_name); if (IS_ERR(cell)) return PTR_ERR(cell); =20 - mac =3D nvmem_cell_read(cell, &len); + eui48 =3D nvmem_cell_read(cell, &len); nvmem_cell_put(cell); =20 - if (IS_ERR(mac)) - return PTR_ERR(mac); + if (IS_ERR(eui48)) + return PTR_ERR(eui48); =20 - if (len !=3D ETH_ALEN || !is_valid_ether_addr(mac)) { - kfree(mac); + if (len !=3D ETH_ALEN || !memchr_inv(eui48, 0, ETH_ALEN)) { + kfree(eui48); return -EINVAL; } =20 - memcpy(addr, mac, ETH_ALEN); - kfree(mac); + memcpy(addr, eui48, ETH_ALEN); + kfree(eui48); =20 return 0; } -EXPORT_SYMBOL(of_get_mac_address_nvmem); +EXPORT_SYMBOL_GPL(of_get_nvmem_eui48); =20 /** * of_get_mac_address() --=20 2.34.1 From nobody Mon Jun 15 08:17:59 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C9AA64611E1 for ; Thu, 7 May 2026 15:25:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778167509; cv=none; b=txGjsPb2JEotm7qJzrBOPOyzYP/HS9vuUz6MxSlGDMyBhdDA3JdBCxgfP9neUTj16UqCiBHERnU7b/xLYZMQ3ziCl8nB+Ch0C+5J46SkPwcU16Rn7wrZM6SzzOCFd7cIXESz7JGPIc8daEFD50Xida2BW2Q1bwrcsEUELkMeMaM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778167509; c=relaxed/simple; bh=/5JSpbZRWY5COHZDhN4gNF7Jnw0iPmpuvearF0ixaPA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rfUXML4qcqMh+hLBZXNGSHlouA1RDoi2T91hlxaW1B+F574Qc7D1Wrgiwn+kPB0KHuauCt6+gCd5ApP2yVm5zrpXkAGo1LE3BBnCC2WSG5RJuQr1csR4UrGhB3OHuNE9m0FfuU25HWbCt8H07R9Ea1NsRCgNBZaXEzuZ22EdFNo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=OBsau1YP; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=DHONmrzn; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="OBsau1YP"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="DHONmrzn" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6479pA7X026511 for ; Thu, 7 May 2026 15:25:02 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= kVKEAS8GhVMCCsKzWvqDs3cunTV/p/7YyYFmPXPEJtI=; b=OBsau1YP7Yy+Iv0k Uq5fle1uCLNF61w2iOsc5BgnzsyKJrCSbaMr3P4ys20u8HSD5tSJmzwaB3UsTu1/ 65eX6tYgK/vJ2IVXY1nORGIG2vRygbP9teOOJffIvXS9DQq/l+CTaCkjAQPuPRXG 1ScKblMYBSjQFTZjjKwMpQ8ytpsegGBp9EB0LwFrONQgBdA8et8K4uclP2xCXQio f6cC/i5TRqDx0gumanbzk9exuVFBX0rmg9+a3QZ6CUuFWfgXkx5gnzYYGO+Aa+co KjEk5eF+GrUEiIC+/d3AGbGi+HC8STjRLvTuU8aN+urzheNgt37w6Ospq8pnDa43 1SueFg== Received: from mail-vk1-f199.google.com (mail-vk1-f199.google.com [209.85.221.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e0k1t2kc3-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 07 May 2026 15:25:02 +0000 (GMT) Received: by mail-vk1-f199.google.com with SMTP id 71dfb90a1353d-56f6ef62af1so2208754e0c.1 for ; Thu, 07 May 2026 08:25:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778167501; x=1778772301; 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=kVKEAS8GhVMCCsKzWvqDs3cunTV/p/7YyYFmPXPEJtI=; b=DHONmrznETmLNj+/HA2W9VThA2sxk1CHvggZE5NPbGJ/OWjx0mZcuN7jIXRDZv1u4f JbbS71anhoD2uxxG6+D4M2TRl71dW1twRmWC0UJEzBd39A45NN79yvolOeGEAJmo0mta 7QliufA6Zb8fnAKDPx3jOpUEUPmFooQW1a4YwG3pvgsWCoheqK/BoHVT0Bc7gwed4kSU zOHQM7rVvIh6iT3+zhAJ4gPonh0g32ROILXv5WoKG49HL1tEx088By3w717gjm3S8sPo QV/D+DgbeMUGP3LTx0xqp6UJBHwV3hkrccMpf0Jt0QJKLFUXJ5YcXWQOEZeWqgGGcTuy 2uyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778167501; x=1778772301; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=kVKEAS8GhVMCCsKzWvqDs3cunTV/p/7YyYFmPXPEJtI=; b=iIHWnUQWB9C4xmO6K3q9PSNt4dI1av+E01UhuDospGKwT0vkESAudZCdFlRfuTMACO ZmBbEE89kbCpIa7c8d/ozxnOwQzxuR/QdVwIK97MMShUGkz2uVunqhZ2RJ+tzrcGGIDh Rad4RhwkXTMFFRuJAXdd/vIAviHh7pbdRDQVIrkFD1FscFnQQSQE6aQfItHNIHq2kC1x vM3a0HG6Ya00wzoM9RG2SbvYeEb2nSIdy81O1vZmtBvyQC8ss2sS05Jq3sgFNpxFota9 yRrpuy9rC0f1tMq0n0bR3AVmNAfR3w7xONFPnad+gBxBzH3Q/PyrqwLc4VMYn9hIj67O I8lw== X-Forwarded-Encrypted: i=1; AFNElJ9vvLbaH2vMuRw2guzJ4uRGZhQxjHkNL92DPcyy+byIksuP5yUWYBMtyhlaiE7uuVylfseUBDhFFw+mk3c=@vger.kernel.org X-Gm-Message-State: AOJu0YwnMcreHOaNme2N8H0d33zt5UcSuit3VxuC0nUipvPpw12tNmqx NupDvodE5qSRyuxmXGGW4B0c1CtTeIjf1iS7yTll1Z2527ans5SJzIOZw9EgusnJkkpbjiMYptP WZclzK+CK2JzhqBEG9W+hNE6D7cAJA594GcDG/KVUeH13vaVolEk3L9UOGLOBRgRqPd4= X-Gm-Gg: AeBDies7qEsGWDeAiGXEU6tfBwvRQdOgXrqx59smS2y+Tlc2do6f0qxfymZtdvDgs3J q2IiZDjE1TIJPlZcNLRX6la5NN1TxC1yCcTwObtOxJZM14eGWBEuH3bFcNrOBl22UZ13WZHUZ1L u/SvmIlNNTG/ogsXN8Ls83JHnYwTK8HVFwmtcIN4x8enJEw9bfRpJvkvthtQjyzcDGtiZO2O2Yb QAv6yMiKOfkQzFQj7XlZ4gKrmOWN9mE22F1hTW8MfkcEcEXgVDp/j9i95/qd3T87HL9wSrIkUpy uisJsgSvGJet0VYoAq7Q0QsYKvLbQnQzw/y8Vvps8J/z/fg2vig9dQTskNl1/CVdD952MxeTnEA GZ5tQ7/xLrtM0wXZ32dBABiiIG5Z/vmWJ4Ar1+oGn3QTYWbETB0LGgqv73tt6UXFpuLM0EnaQkX 1CijFi908t/EraWJW6yXDtNBPWtTI= X-Received: by 2002:a05:6122:a07:b0:56b:8e17:25f5 with SMTP id 71dfb90a1353d-575595c4094mr5143481e0c.11.1778167501261; Thu, 07 May 2026 08:25:01 -0700 (PDT) X-Received: by 2002:a05:6122:a07:b0:56b:8e17:25f5 with SMTP id 71dfb90a1353d-575595c4094mr5143393e0c.11.1778167500580; Thu, 07 May 2026 08:25:00 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:b16a:3475:ec42:bcfa]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bca583dd7e4sm240966b.58.2026.05.07.08.24.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 08:24:59 -0700 (PDT) From: Loic Poulain Date: Thu, 07 May 2026 17:24:41 +0200 Subject: [PATCH v2 6/8] Bluetooth: hci_sync: Add NVMEM-backed BD address retrieval 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: <20260507-block-as-nvmem-v2-6-bf17edd5134e@oss.qualcomm.com> References: <20260507-block-as-nvmem-v2-0-bf17edd5134e@oss.qualcomm.com> In-Reply-To: <20260507-block-as-nvmem-v2-0-bf17edd5134e@oss.qualcomm.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Jens Axboe , Johannes Berg , Jeff Johnson , Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz , Balakrishna Godavarthi , Rocky Liao , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Srinivas Kandagatla , Andrew Lunn , Heiner Kallweit , Russell King , Saravana Kannan Cc: linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-block@vger.kernel.org, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org, linux-bluetooth@vger.kernel.org, netdev@vger.kernel.org, daniel@makrotopia.org, Loic Poulain X-Mailer: b4 0.14.2 X-Authority-Analysis: v=2.4 cv=EoPiaycA c=1 sm=1 tr=0 ts=69fcaece cx=c_pps a=+D9SDfe9YZWTjADjLiQY5g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=tQ7bI2BnKgK5Av-YYOwA:9 a=QEXdDO2ut3YA:10 a=vmgOmaN-Xu0dpDh8OwbV:22 X-Proofpoint-ORIG-GUID: Wiy6UMYmds00taThqFyLVLqdxve_gP1L X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTA3MDE1NCBTYWx0ZWRfX23lqMTxpJlrq XglFcodKcnN6Q/3TPDJKdx/pGdKEdNdAzh8VWZrD2EI16m6i518HLjH76l+TXj1us3E4cVKfM92 SGSJlc4vVhG4aXHQ1lsKA9GPeSbnbSkh9UViTIbHOcTL4bDej/R2hHar62goFmo6p3yfE18jf5Q 4P3LYcYdgk2gYbOO78HdDgFj0S8OG6eSLhMrEu1ps/C72msnDvuZ1yAJ2pamh+5n/1G686VRguf DX0PNqY+Fbx/8CGZa9B98pG6pfHbHOiiJAehsqCUGZUaYR4pYLFazzQmpRtETgLN5JbtgT7ZTvU EL3J3+4RGKNyd22FuA8bQf+Hr33lmZLY5yYxzjSGSX4P1TxUToITs03J7X4zttYwrDDXMp0VwAI a6z38lx6BnwRYOJQVaLwUEB+hggeNQH3CSxhbvWORZEPbjiE6cDs9XWzJkorcHI3teHRjPtM2tZ 2Stv07NJJ6lZaRI2zRA== X-Proofpoint-GUID: Wiy6UMYmds00taThqFyLVLqdxve_gP1L X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-07_01,2026-05-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 bulkscore=0 impostorscore=0 lowpriorityscore=0 phishscore=0 malwarescore=0 priorityscore=1501 clxscore=1015 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605070154 Some devices store the Bluetooth BD address in non-volatile memory, which can be accessed through the NVMEM framework. Similar to Ethernet or WiFi MAC addresses, add support for reading the BD address from a 'local-bd-address' NVMEM cell. As with the device-tree provided BD address, add a quirk to indicate whether a device or platform should attempt to read the address from NVMEM when no valid in-chip address is present. Also add a quirk to indicate if the address is stored in big-endian byte order. Signed-off-by: Loic Poulain --- include/net/bluetooth/hci.h | 18 ++++++++++++++++++ net/bluetooth/hci_sync.c | 39 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h index 572b1c620c5d653a1fe10b26c1b0ba33e8f4968f..7686466d1109253b0d75edeb5f6= a99fb98ce4cc6 100644 --- a/include/net/bluetooth/hci.h +++ b/include/net/bluetooth/hci.h @@ -164,6 +164,24 @@ enum { */ HCI_QUIRK_BDADDR_PROPERTY_BROKEN, =20 + /* When this quirk is set, the public Bluetooth address + * initially reported by HCI Read BD Address command + * is considered invalid. The public BD Address can be + * retrieved via a 'local-bd-address' NVMEM cell. + * + * This quirk can be set before hci_register_dev is called or + * during the hdev->setup vendor callback. + */ + HCI_QUIRK_USE_BDADDR_NVMEM, + + /* When this quirk is set, the Bluetooth Device Address provided by + * the 'local-bd-address' NVMEM is stored in big-endian order. + * + * This quirk can be set before hci_register_dev is called or + * during the hdev->setup vendor callback. + */ + HCI_QUIRK_BDADDR_NVMEM_BE, + /* When this quirk is set, the duplicate filtering during * scanning is based on Bluetooth devices addresses. To allow * RSSI based updates, restart scanning if needed. diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c index fd3aacdea512a37c22b9a2be90c89ddca4b4d99f..589ccdfa26c1281d6eb97937052= 3fff0d7920302 100644 --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c @@ -7,6 +7,7 @@ */ =20 #include +#include =20 #include #include @@ -3588,6 +3589,37 @@ int hci_powered_update_sync(struct hci_dev *hdev) return 0; } =20 +/** + * hci_dev_get_bd_addr_from_nvmem - Get the Bluetooth Device Address + * (BD_ADDR) for a HCI device from + * an NVMEM cell. + * @hdev: The HCI device + * + * Search for 'local-bd-address' NVMEM cell in the device firmware node. + * + * All-zero BD addresses are rejected (unprovisioned). + */ +static int hci_dev_get_bd_addr_from_nvmem(struct hci_dev *hdev) +{ + struct device_node *np =3D dev_of_node(hdev->dev.parent); + u8 ba[sizeof(bdaddr_t)]; + int err; + + if (!np) + return -ENODEV; + + err =3D of_get_nvmem_eui48(np, "local-bd-address", ba); + if (err) + return err; + + if (hci_test_quirk(hdev, HCI_QUIRK_BDADDR_NVMEM_BE)) + baswap(&hdev->public_addr, (bdaddr_t *)ba); + else + bacpy(&hdev->public_addr, (bdaddr_t *)ba); + + return 0; +} + /** * hci_dev_get_bd_addr_from_property - Get the Bluetooth Device Address * (BD_ADDR) for a HCI device from @@ -5042,12 +5074,17 @@ static int hci_dev_setup_sync(struct hci_dev *hdev) * its setup callback. */ invalid_bdaddr =3D hci_test_quirk(hdev, HCI_QUIRK_INVALID_BDADDR) || - hci_test_quirk(hdev, HCI_QUIRK_USE_BDADDR_PROPERTY); + hci_test_quirk(hdev, HCI_QUIRK_USE_BDADDR_PROPERTY) || + hci_test_quirk(hdev, HCI_QUIRK_USE_BDADDR_NVMEM); if (!ret) { if (hci_test_quirk(hdev, HCI_QUIRK_USE_BDADDR_PROPERTY) && !bacmp(&hdev->public_addr, BDADDR_ANY)) hci_dev_get_bd_addr_from_property(hdev); =20 + if (hci_test_quirk(hdev, HCI_QUIRK_USE_BDADDR_NVMEM) && + !bacmp(&hdev->public_addr, BDADDR_ANY)) + hci_dev_get_bd_addr_from_nvmem(hdev); + if (invalid_bdaddr && bacmp(&hdev->public_addr, BDADDR_ANY) && hdev->set_bdaddr) { ret =3D hdev->set_bdaddr(hdev, &hdev->public_addr); --=20 2.34.1 From nobody Mon Jun 15 08:17:59 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BDF2647277D for ; Thu, 7 May 2026 15:25:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778167511; cv=none; b=tmTWSWrfqWNWNbGaRDPc9v4kRus0KJvcskHD1QPrmH8MppUePfKuYywEyIqFhohzL97TZqb86dwy/zmSys1RxwYWDBFHKhHx8ywxN1OfTheh/EE9pGMkcVAlgNV2dp7YjLZWefuu9zxU9uqeDPa/xz4vuZHBBT6FWj+w+S5ptWU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778167511; c=relaxed/simple; bh=cLdgwybwmVheaxNq3A4ptASzy5fGo7sa3nM19lVmCQY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=thV0Q91+/clx7ojqBHdjjQVYZDSnomxwWYJtFe9GLdvLtFrXxD+Al/7CJWduKpN3ajEUHeWQSxXcrWcRD8mllByw2bhOVtdlejYwrHzvjLVf2Rrmxwq+ODvjcJ3wrnhuLXbcV46KuYMkmGu/8b+PWg4jyPrwnoYxpJOycHnQbdI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=JNRuu/6t; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=FAlW2kYb; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="JNRuu/6t"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="FAlW2kYb" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 647Eno513463995 for ; Thu, 7 May 2026 15:25:04 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= oEdzPlvkzmsz9XRBy398mVsjWjXUxo2umSQ5Z50zP28=; b=JNRuu/6tQg8Iq2yd efyuW8NpXjne8LakeYYrmxE2IXd0811URgteAZuuZe7hSFzFIjLDs4geR7VhamFG n83UxzHDzPwQY0bf2pDm74l1Dbpi+19LuNU2e8Iozs8RmX3DhPdqyCEXe9F58AMu 8VrFY4AoYHnLwTjLpcLSAYm7/UY4JMH+8frEp7SibnG5+D/O78QB0nBkVdm1mpO8 TYSdd5vt7KWPhF+nOUX3+HPbeX0X8iooViDwgbzYKKlaHtpQU+ybcnyGr9XHY6wG ikXlCr+7RoRcCJ5Tl11QBu+mpsMILrxsHNJNLdBXZoQUHPyBKpG/LJw4k/Phl2WZ rI3n2Q== Received: from mail-ua1-f69.google.com (mail-ua1-f69.google.com [209.85.222.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e0hvn2sam-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 07 May 2026 15:25:04 +0000 (GMT) Received: by mail-ua1-f69.google.com with SMTP id a1e0cc1a2514c-95d5e66646aso1363417241.0 for ; Thu, 07 May 2026 08:25:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778167503; x=1778772303; 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=oEdzPlvkzmsz9XRBy398mVsjWjXUxo2umSQ5Z50zP28=; b=FAlW2kYbEFbSRezWYKrHriJT1nLtx00Hme0Ybkk+Wq/NiOaZ/Y/JcLJn+mnHNNS9cA Qz3fZOVCJc0CZn/RhXTbWqKaXvK66YfCSDnKZdOBLVUzhqJ9WpjyebFW07P4HucUe7q9 iC9p8DZiM09iujRtRkcp2hE2RZdIX1KXEgJ+LzjYmH5gpOcWq3tVtOsjLp/GLb3Dd/Z+ hSK+wAZyvLkBXBSEKJciEKr/Af4kcl2AEyxgR0BLIjMo6rDNUCdGQoMXyCV8XpNRD26q Zm3AWKTJjwBp7cyoNjDtgKs5TZhgY5EX2t/yqgZOJJD3fqT7cdrfWN7wjugMNFK3Eq+P 083A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778167503; x=1778772303; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=oEdzPlvkzmsz9XRBy398mVsjWjXUxo2umSQ5Z50zP28=; b=dOa7gwlt6UUJmq+PgyRVHvHZ5DPgdhGCqLUc91C+dcsPOIQGOH4P1STJZyCCbLDhuI qjX3/tB2Yu5dZEfcFhG5Ndoh3v31+VGuBwgk49IYtNeU0BxBPjmNcFU30RQ9q8NiyuDu oXaMbYe9jOdmz0chzkiHvkCP0cwqBmDt6bb1V1eL8qqAGpONYUfSlyEhx4ZcxvLHMXDx oOXRtpPnZGXCw4gWmu33cpMl+NXtMMu8Bbo7Amj8ObeuVOFvzb25Y3v3voh+vPUkqhVe 0KP41FDrCqm3MrViRme1ezt+vLe9sufk6LDzz+4SYua/Na8M1fxKxWVYcQfEjatMrBZI Hp5Q== X-Forwarded-Encrypted: i=1; AFNElJ8Hhr9PBFQoleqi6aF0lzWHm1noie/iwK2/GpQ+SFNawQiW5GH9CU9LC0c2Gw9Crv6KCYP5baZued+xIwA=@vger.kernel.org X-Gm-Message-State: AOJu0YzEEZvvyXjYa6aW7alBcrsZZmLhIEXDHND4Hn+LEIBSRLIvFqoI 5nU3zonuJokdySmctfHXGkGqiCfHAL2XIy4y7QMLdk9yubD6UShlB3ZtOvaB0QlpS0xCCEW1g4X 8EPa7w+JRQuVNnncejbGydCNoh2KWnSk7nIav4CI/Uhe4Nm0uPJ52tRxZlQe45CxpSxY= X-Gm-Gg: AeBDieufxdNrJpCPIfde8WC7bQGtpretWmBIlWzTUN4gEuUXp4uPWQPbCcW4vh/fz71 O5tT9HHFWndQggO8P0OJwhrYyaDztf/KndadM0wd2Gl0I9ZqVXpmjOMvSpDx/zlOWIGiM0h45gN FcLlVcdPPjlspPyZ1oLgY7UYgrDnd2Lj7DmRXlTlUskMEuoPsTwHh97rDMkTjstacIWhBTVwRYj iaT6qn4vlBKTjJJxVD/2XH2nVpMly6b3zbkUUrv7vfJt0XHU+Pxr5o5rTzTVullHraki6MrWuTV fxeTrq/bwZ71BozcDGf8l1eqr8jvz5b5vuZZjFfAb8qonVBGNeXJepXhelWHAwh76b+gnMhcnZp NPesrShX+B7CA0010fBKAvoe/JmL4Y/Cu+pKsCSU15+0QhjTSB1T+FDLrmx8/tuaBFW55jBH1Ta a9WnRKj3lIKKVu7Bbb4CZ/d6ttHOqVfg1gY+YIFg== X-Received: by 2002:a05:6122:e14b:b0:575:37ed:f787 with SMTP id 71dfb90a1353d-5755968ada9mr5305814e0c.13.1778167503442; Thu, 07 May 2026 08:25:03 -0700 (PDT) X-Received: by 2002:a05:6122:e14b:b0:575:37ed:f787 with SMTP id 71dfb90a1353d-5755968ada9mr5305758e0c.13.1778167503042; Thu, 07 May 2026 08:25:03 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:b16a:3475:ec42:bcfa]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bca583dd7e4sm240966b.58.2026.05.07.08.25.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 08:25:02 -0700 (PDT) From: Loic Poulain Date: Thu, 07 May 2026 17:24:42 +0200 Subject: [PATCH v2 7/8] Bluetooth: qca: Set NVMEM BD address quirks when address is invalid 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: <20260507-block-as-nvmem-v2-7-bf17edd5134e@oss.qualcomm.com> References: <20260507-block-as-nvmem-v2-0-bf17edd5134e@oss.qualcomm.com> In-Reply-To: <20260507-block-as-nvmem-v2-0-bf17edd5134e@oss.qualcomm.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Jens Axboe , Johannes Berg , Jeff Johnson , Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz , Balakrishna Godavarthi , Rocky Liao , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Srinivas Kandagatla , Andrew Lunn , Heiner Kallweit , Russell King , Saravana Kannan Cc: linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-block@vger.kernel.org, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org, linux-bluetooth@vger.kernel.org, netdev@vger.kernel.org, daniel@makrotopia.org, Loic Poulain X-Mailer: b4 0.14.2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTA3MDE1NCBTYWx0ZWRfX3SkOFjHTlgHL 8n/jyD+SG+TAAa1H3FjoytRzWX6EeNZls+ysXoS+HczQKcrXnL9C1fFgQ20AinWCkaCCz287C3a QOJ/TZBwvgRLn0bTQuBSn3beM7+YQOIlrlgsgsfdiIt/CgZ4eequTwVTxvJsVX7UJQjBPG+Szgx nwl/+dcJ4fFh5Sf5+4NKvEwEto5zGIOGxN8SU62VfQT9nX2XnZxzy8RJUkp+9I7zvoYlwgUMG/O +7yrUkl2pBQUly2244LyLDQNHLowN/lcMaht5I9v9BDGlaFLUgydy6EQnEWMDAmaephlkDhP7P6 WjeuRA8fdZ34biCn+TUTG15DP7YxWWwrj5sif5UvCF+AEZzw22Qh6K+C7bvopJdLZzsMQRwDEzp wcky8J7AbGozKe84raH7SDP8EFgAWv+qOnOgTrxscdaKuINURF6rLyZ5+Hr5dIM9JnYUZ/zSQ10 6F/9w3NvMviNWY3Vk4Q== X-Proofpoint-ORIG-GUID: _Mit5BhG4HWoDKaklwFKunqqj3pZR2EY X-Proofpoint-GUID: _Mit5BhG4HWoDKaklwFKunqqj3pZR2EY X-Authority-Analysis: v=2.4 cv=ZZ4t8MVA c=1 sm=1 tr=0 ts=69fcaed0 cx=c_pps a=UbhLPJ621ZpgOD2l3yZY1w==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=99fXo_IpyjsNTNVBUdkA:9 a=QEXdDO2ut3YA:10 a=TOPH6uDL9cOC6tEoww4z:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-07_01,2026-05-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 suspectscore=0 spamscore=0 priorityscore=1501 bulkscore=0 phishscore=0 clxscore=1015 impostorscore=0 malwarescore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605070154 When the controller BD address is invalid (zero or default), set the NVMEM quirks to allow retrieving the address from a 'local-bd-address' NVMEM cell. The BD address is often stored alongside the WiFi MAC address in big-endian format, so also set the big-endian quirk. Signed-off-by: Loic Poulain Reviewed-by: Bartosz Golaszewski --- drivers/bluetooth/btqca.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/bluetooth/btqca.c b/drivers/bluetooth/btqca.c index dda76365726f0bfe0e80e05fe04859fa4f0592e1..df33eacfd29fa680f393f902151= 50743e6001d5b 100644 --- a/drivers/bluetooth/btqca.c +++ b/drivers/bluetooth/btqca.c @@ -721,8 +721,11 @@ static int qca_check_bdaddr(struct hci_dev *hdev, cons= t struct qca_fw_config *co } =20 bda =3D (struct hci_rp_read_bd_addr *)skb->data; - if (!bacmp(&bda->bdaddr, &config->bdaddr)) + if (!bacmp(&bda->bdaddr, &config->bdaddr)) { hci_set_quirk(hdev, HCI_QUIRK_USE_BDADDR_PROPERTY); + hci_set_quirk(hdev, HCI_QUIRK_USE_BDADDR_NVMEM); + hci_set_quirk(hdev, HCI_QUIRK_BDADDR_NVMEM_BE); + } =20 kfree_skb(skb); =20 --=20 2.34.1 From nobody Mon Jun 15 08:17:59 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4906E450909 for ; Thu, 7 May 2026 15:25:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778167514; cv=none; b=djGax+lLoBAh8yrdMllRAuVWU0RoFZyXKncdWnx6uIAmb0INBHke1y/atRGz17RTXLPFQDB9zFZSwThvbBHnNBlT9geMkqTQvQ1sQaKkF9my1ZtOUYEyCOcPFZF29pF/Jm3upSWfcuAXUwhbPWxacWJHTHvi4BvZ87NOaWB/JNU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778167514; c=relaxed/simple; bh=ih3AqtvxdrSPtCldRnisYtzCgyzMAnQ+QYbLGIbAp9g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ugZ+F5bjboaIq2+hD5TSYrC3z7XOczCTz1KpGc7qRL2f3UZ610Vhr4Bcn2QBPHopADN1S/PcAdaxcio+snqE0m4k2JgEjLqr93s1wc0OkX/86MaWVWWoFPpP0yHCMyJHXNreJZT661TVbn3UYF1gxzlClNZkwlx6eXlvcwAJyUE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=LWAYSYES; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Vl1cFvsn; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="LWAYSYES"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Vl1cFvsn" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 647F1Qcu258772 for ; Thu, 7 May 2026 15:25:08 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= +sodB+04y/mdW/cdeZL+z+1VhhOZL3GKbJATgOyNhgQ=; b=LWAYSYESvvmgzGOx ZuGeDCIveSsdJxzhtGMmkhkB9d0hLh5zvSPgCuKllGO2/gjLQ7GoxOvZ+8pdHGUB KJtzP7511f9HHpgyexvDoSArItpj6N9yEWa8EvVoxY+mbm/YNwESbiRdgy6LC9Bu +ZKS3MxdMSncrx3AMJ3gagwV2V0tmpcM8jt5Zk+NelsffYsdqP9zMmfhzZ7Js9tU aHD3bxnBnPoGFwU4MHfaHc2CYKmfFxw0rOQZ/PyVSiNrPwLHBiCKHp/F3GPqaEiI vAsBWgQdVxpPZ4UpZ6kQ2xLOivxSe/Hr3AOqBRjm1//4obbgK3FORcxnClIxjE+S JUKQew== Received: from mail-ua1-f72.google.com (mail-ua1-f72.google.com [209.85.222.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e0hr8tu0m-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 07 May 2026 15:25:07 +0000 (GMT) Received: by mail-ua1-f72.google.com with SMTP id a1e0cc1a2514c-95d2ad5df14so1454055241.3 for ; Thu, 07 May 2026 08:25:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778167507; x=1778772307; 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=+sodB+04y/mdW/cdeZL+z+1VhhOZL3GKbJATgOyNhgQ=; b=Vl1cFvsnCItSz7UK2NzulzV7Dme9ELNPmQsrCcOyUMv3N6hONRJyCEzoahw354mlmb tizquJBDh0DHodC/L0zP61qBo/EKl9+ZVAJg4qjSeNMk8gkKVcbFPZpNMx0bQhdBpQXK Liwb8Eg4hFTkUo1t4CBk9okcW7m21h9SwP9zjloq2+k0t9avpdbn7O89e47iWZ4wboZW tniAPuivwYUwdJGptN2hpxknjpxm4PS2fuyKWtZbO/2WTdsac+PbLeX1jvua8uFFoiuL oX0xe0vXG+B6YRLDk72KSeXN3nSc6Fs8aYlJH1++ilEAfxIH8iNEfy4ApPUXjuuzHnbD KgBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778167507; x=1778772307; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=+sodB+04y/mdW/cdeZL+z+1VhhOZL3GKbJATgOyNhgQ=; b=XJk7U2tgA6jSD3TZDPHm44ZsRUQhkwTCggFbd03sb/MihupzUrVylR8Xo/V/0Gz8Gg 77gqfM81ADTT7Wslf0mNy9BoZcKnMO3jUOLdG1q4/WpRnZqv6Mn2uuPO8vp2Rezt74F/ 9cecbMYCCa875eL4UMJ6L6oLcJds2EGXNxOMyl2yduChzUx0iiaPp4MSmTaxpZuRxCn0 jt7fvKYsiAW5AhGx02OD2PJUMoYs4W5aca1HUObjOD/X6WTvxjgVfIKcXo5WBZ7jotSA OOnfQmB4amQwfgSk92XYq43CCa+aNv2GjMn07NNEpJICIy/h55YFqxyVtLUOPzgsEZm+ WTMw== X-Forwarded-Encrypted: i=1; AFNElJ80zFZJP8GTAIVSEoYGl8/ZbI7QE33srfeENhu9ZXoCmc7gOvwuSKfogAXTJoFbz/K4n5CJEhW66oBFsJY=@vger.kernel.org X-Gm-Message-State: AOJu0YxlsjeYgLSOrTH/rpTRBrelhn/RdkZgWlVWQFvzzqW9P0cPLoc3 Y6qBoRa7cViW8oYHODGyrpRUxunqY0opnZ3W8Y3LIFyWC2TDM5uhJ3yMNjRrnaEsdFGyPfC3tJ9 MOLWEL+qmi+d1rDPjlTc9vNOM7Ahg8arjqi6okoCwQ6a4i4M1gGhYpYQgitjOBUVKolk= X-Gm-Gg: AeBDietPhwxGfxTztImtc/g2/SomZg8eLeNjcnpI9ny6ljfqvTNG5Of5Hq4297dT9Q1 lcceRGLwXghZAF/9s6mUKzgProsRg+YCJehSqBOY+84svCLllGx+eSvL9NF/wMM89OwQb6hat5V U+KUPKfcMTn6UDmm5CO+mBO5lfa028CGKgmYdH01boxGKCNpz+oAlY6n8stBpb4ZchbR6j8xfGq nuC5xS9HvA/PpueEDHqCbZaVr2Yd17vFvNCKLvns+MSl8/t2P+Ng+MNWZ+nc3qAh4UW5KNwhW0h jHEpUeGIdH4dBYHGj7j+LKtMJo+LSpwf10inqbWKiVny9a+X2dd3FjXK9RlpWgBq7xePiPt8H5h tYKH1TVWm4MVYNfIyhdflu6XdYrNDGQ42gn6nDvB9D9vS2XYn1U8X2ZvvOMvzyy4WYBHo7l9uX7 miUmtKg1bQDZ/O1NhwZCU9OaaplIjlowStbbLdLw== X-Received: by 2002:a05:6122:2a13:b0:575:2166:74c3 with SMTP id 71dfb90a1353d-5755960bb57mr5381644e0c.9.1778167506749; Thu, 07 May 2026 08:25:06 -0700 (PDT) X-Received: by 2002:a05:6122:2a13:b0:575:2166:74c3 with SMTP id 71dfb90a1353d-5755960bb57mr5381466e0c.9.1778167505322; Thu, 07 May 2026 08:25:05 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([2a01:e0a:830:450:b16a:3475:ec42:bcfa]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-bca583dd7e4sm240966b.58.2026.05.07.08.25.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 08:25:04 -0700 (PDT) From: Loic Poulain Date: Thu, 07 May 2026 17:24:43 +0200 Subject: [PATCH v2 8/8] arm64: dts: qcom: arduino-imola: Describe NVMEM layout for WiFi/BT addresses 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: <20260507-block-as-nvmem-v2-8-bf17edd5134e@oss.qualcomm.com> References: <20260507-block-as-nvmem-v2-0-bf17edd5134e@oss.qualcomm.com> In-Reply-To: <20260507-block-as-nvmem-v2-0-bf17edd5134e@oss.qualcomm.com> To: Ulf Hansson , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Jens Axboe , Johannes Berg , Jeff Johnson , Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz , Balakrishna Godavarthi , Rocky Liao , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Srinivas Kandagatla , Andrew Lunn , Heiner Kallweit , Russell King , Saravana Kannan Cc: linux-mmc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-block@vger.kernel.org, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org, linux-bluetooth@vger.kernel.org, netdev@vger.kernel.org, daniel@makrotopia.org, Loic Poulain , Konrad Dybcio X-Mailer: b4 0.14.2 X-Proofpoint-ORIG-GUID: qheON9z5dtFFTeQMasMgW0mo6QI6RnxZ X-Authority-Analysis: v=2.4 cv=caHiaHDM c=1 sm=1 tr=0 ts=69fcaed3 cx=c_pps a=ULNsgckmlI/WJG3HAyAuOQ==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=7004nz7suiqLHAzt4fYA:9 a=QEXdDO2ut3YA:10 a=1WsBpfsz9X-RYQiigVTh:22 X-Proofpoint-GUID: qheON9z5dtFFTeQMasMgW0mo6QI6RnxZ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTA3MDE1NCBTYWx0ZWRfX+wwckvhpuaSF 51okmqs+1O+G72gZyr1RPR3Ib1wr1BNmQcIqFMbKbrNZop4McnWVZpP2kUHpCsXk7p4KTNwy2N1 WRA9QU/fOupQMZSMt8SNKhzJEcJHQ4wzVgoYFp2H+ycohtla1/DHvklyapLUIRISruoxsUABGbV x/P2dJEdsv+w80JRaJBf6scmLEblHgG9NflX76jMHA7GEIl1db+Ix7fOg4N2RZbpsx+U5X/jJDN qc5+8Bqy4ZZNBVXtn7fYlfqArIGVbI+jw0SmpzguS/H32C0UZnVj7ZnvHGuJWCaBq09v92zoUT7 INSrseSrVVLpvWFhzZlwdxbA2n8/uS191Jy9KZvdKmxsFpaiZ2h8WPo3V2IhYjAvOtNrO96QnpU FYJiDL8Smtieksa3cB9aQIzqglyRerNZIKmlxfWNMT4kDsmbIQsIqJJ/IhZuwn5NhahOfQaEEpj ebdaZCBNP9/EXSlAr8A== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-07_01,2026-05-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 clxscore=1015 suspectscore=0 bulkscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 impostorscore=0 spamscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605070154 On Arduino Uno-Q, the eMMC boot1 partition is factory provisioned with device-specific information such as the WiFi MAC address and the Bluetooth BD address. This partition can serve as an alternative to additional non-volatile memory, such as a dedicated EEPROM. The eMMC boot partitions are typically good candidates, as they are relatively small, read-only by default (and can be enforced as hardware read-only), and are not affected by board reflashing procedures, which generally target the eMMC user or GP partitions. Describe the corresponding nvmem-layout for the WiFi and Bluetooth addresses, and point the WiFi and Bluetooth nodes to the appropriate NVMEM cells to retrieve them. Signed-off-by: Loic Poulain Reviewed-by: Konrad Dybcio Reviewed-by: Bartosz Golaszewski --- arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts | 34 ++++++++++++++++++= ++++ 1 file changed, 34 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts b/arch/arm6= 4/boot/dts/qcom/qrb2210-arduino-imola.dts index bf088fa9807f040f0c8f405f9111b01790b09377..6ed91cccae2fbf0723629a4db12= d2724312d50b2 100644 --- a/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts +++ b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts @@ -409,7 +409,35 @@ &sdhc_1 { no-sdio; no-sd; =20 + #address-cells =3D <1>; + #size-cells =3D <0>; + status =3D "okay"; + + card@0 { + compatible =3D "mmc-card"; + reg =3D <0>; + + partitions-boot1 { + nvmem-layout { + compatible =3D "fixed-layout"; + #address-cells =3D <1>; + #size-cells =3D <1>; + + wifi_mac_addr: mac-addr@4400 { + compatible =3D "mac-base"; + reg =3D <0x4400 0x6>; + #nvmem-cell-cells =3D <1>; + }; + + bd_addr: bd-addr@5400 { + compatible =3D "mac-base"; + reg =3D <0x5400 0x6>; + #nvmem-cell-cells =3D <1>; + }; + }; + }; + }; }; =20 &spi5 { @@ -512,6 +540,9 @@ bluetooth { vddch0-supply =3D <&pm4125_l22>; enable-gpios =3D <&tlmm 87 GPIO_ACTIVE_HIGH>; max-speed =3D <3000000>; + + nvmem-cells =3D <&bd_addr 0>; + nvmem-cell-names =3D "local-bd-address"; }; }; =20 @@ -557,6 +588,9 @@ &wifi { qcom,ath10k-calibration-variant =3D "ArduinoImola"; firmware-name =3D "qcm2290"; =20 + nvmem-cells =3D <&wifi_mac_addr 0>; + nvmem-cell-names =3D "mac-address"; + status =3D "okay"; }; =20 --=20 2.34.1