From nobody Fri Oct 2 01:10:38 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 DDD42477985 for ; Thu, 6 Aug 2026 14:38: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=1786027132; cv=none; b=CaoUgVohCHZCprQmIyiO9Yx9p+Q3h0mZ0PmC9ZmHYh2NS56Ds13Ie6ktJ9mGNbiIKa4IL929JJ83FzQlLAUZWir5Y2N/qnzn/dVowC1T5msKcPrJyovDAElcGGOSThbCr+oT8HRP1foLZowkFruKhM708NZ92wJbyDsakCvL/uQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786027132; c=relaxed/simple; bh=036KrKutK2s+JBYYvV0r0UOnKyUPsfS9tqtbriE+abA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=p+iyP1EPIsd7HNltcP5qbnEvP/EsfTnAHRuM6byZGkLp/tiwpJpgMP9dGkltDyxfoWDM39qvgGSQzXjCiha9aEyI7bnHVXmgqy88Rvr70VdyITeAvoLr948bzo6IpuXocTYLst2PLz+tjmVnNqpbpHQr4rHqesdY8W8ClqQjoek= 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=mbTS1Pxi; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=gNqBuYBb; 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="mbTS1Pxi"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="gNqBuYBb" 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 676Bx29G3038027 for ; Thu, 6 Aug 2026 14:38:50 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= JU8Uh1sAxaXOEPqhB1RXVJGiUv22Sc7mcVDSZZfElb8=; b=mbTS1Pxi0LuRvOGw B4YG69hlkx2gjIGqX/GNaXgfcg+nm47kht9/dZYqeBkXlDDaAW6bJEN5TA5hBV8s nhNLGDafbeVWioOj/2WsdA/el7v8zGDUK5GUdOvX4nIYkH+CA8bHwLb3WTZc/zTI dGKKYl/Dc3h8vwG6+PoCF4QMhl+JARatBo0sYovrfLLj0j6DFZoXPk4ockY7D/SV 4k6bFus/opI4VlNi7B4cLFBfuG5qOF7SWgnIN7XBjt7fPJxnUO0bfKkimah1ATzY pncyWycc92RH3Y/jda/2JdsmuZvjMs46wTx6/q5hNPQXAJjLw47d4ddIfuPEE1yy IPfDMw== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fvsvd0smh-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 06 Aug 2026 14:38:49 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-52ce64c41efso37573461cf.3 for ; Thu, 06 Aug 2026 07:38:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786027129; x=1786631929; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=JU8Uh1sAxaXOEPqhB1RXVJGiUv22Sc7mcVDSZZfElb8=; b=gNqBuYBbTeHAJepoXDO98X80Riai4sgGvlJerSFA+ErWMfIL/6x29VgVhgsiqNwBcl 5xKSTaebUPDWhvHI1D6AUy+3Wu8JRRoi6yhjcsY630paYoRatb9DSUasL8IYvLr6pF6q spG6UGrP1WpkRpzq60qaCfnoviL9wKG13R+q3yN2sKFT4l2PxcoNIJ5H6KgyDrzZhc8k 3fzNWwwpuPaJZpVVEXYAWXgImSt+VPMIidRsfB1KCvmLz8uLPOdhwYGAzHikKqu1PvR6 IOZ10SDIVPxPdXrZj8bNwi9pAiTb94gxtpa3OiTxtScAm7Z/yM35bKRVjzS52tpnX6Re cSqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786027129; x=1786631929; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=JU8Uh1sAxaXOEPqhB1RXVJGiUv22Sc7mcVDSZZfElb8=; b=kmmd6SSeLul7Iq3yoiGI0dCM+avhEqk4ttZyM5cV/yagJU06F0K4RDhyl0YrrC86CE UisSxJ6lFUwWF5ajVVGa2DmFJdR69OdjQ2ndKwDEsDgBNqp8nrSQH7Jgmhy6vWDLsroX +dH+wSNNcKZHHCT+rboAsegMmhdaDl49Li/SkRCCiQxhacwakgKdCzEbf3l4gj+F7a4U zWRUPb2PYCyfZg6Vu+QnWJReZZsYPJ7xui5zqPextzTNcZmX3lG3hfaXa/2JjOWqDbY6 KxCsj1qrN0YSZJWS41vklqbyp0qe7HaOhqlbcLgoOEXEVdum+jNp4vrtujswDEzxHwSo DzwQ== X-Forwarded-Encrypted: i=1; AHgh+RqpqXG6klHu+5WQlvF1UHMuwtXHN0nliPhvXLgkOPuEY/dk3gpOdFYb5RBX2gVw+8+eA9tsJcIsaiX82xo=@vger.kernel.org X-Gm-Message-State: AOJu0Yyt6bwU2LQIuXkNGXvEL1vBDz0oT+xSOP7eyHvSIwHHmqfNropg uINjmYTJo5wkm+4wu1FUG3cTeTDZ4O50IJNTZ9ABUA5HdW2GRpRjD1JOr2AOKvq/NdA4smZuBQV GmU827Oaa/3BrZJ6Ld4vFzQBhbxId8CW4vT5FFCKLrCfqH7EtEBH+nAGiXJm/okwqsLU= X-Gm-Gg: AR+sD11XAe5GQYqtNwcP3h1YHeN3VQn+YurhrG/bmGUts+YLJSoXMNnJ+BnRyjVedHC ilAs2LbvWPakU8XFugIAZxiQajg53HY8jCRIt2Ygk5OnaJgiVnOsgufLoR0rvYmuaAZ++hv6B92 DYN5k1hs+EwHck4I8yqBAA8ceZT7O18UIb4mXQE3Wrdx8KPtfzhWfwYPz4oraoihVOHyYQ6ZUC5 dLqQ0MQUQPbWYLmys909MljZcmRXJkupFvpvR8a8bCosImQUBoofWG1pmuIo++64Dcahbn1GinN JVOiqvYEMSJ9jNPUPtIwkcxDLO7hU0Cz3aSNQv00ciR9zVLnjJXxxJkLzQ3oO5Tekl77KuBBlbJ FMCgDClnh9gw+CxLnX87pjOHeytR3MgD5rK150HNb6hRpY7QKc2Ae0ibKCk/J9tqdlBIkkTkbPW seL/HR/QPcNwlqewL0r7gtLs75SDfdSjyKWpE0HYFF0Wnkxw0jqw== X-Received: by 2002:a05:622a:22a2:b0:517:2c1e:8b6 with SMTP id d75a77b69052e-52ce61e7a0dmr167527741cf.38.1786027128585; Thu, 06 Aug 2026 07:38:48 -0700 (PDT) X-Received: by 2002:a05:622a:22a2:b0:517:2c1e:8b6 with SMTP id d75a77b69052e-52ce61e7a0dmr167526851cf.38.1786027128119; Thu, 06 Aug 2026 07:38:48 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([90.85.108.51]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2036276e58sm270552166b.28.2026.08.06.07.38.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Aug 2026 07:38:47 -0700 (PDT) From: Loic Poulain Date: Thu, 06 Aug 2026 16:38:34 +0200 Subject: [PATCH v10 01/10] dt-bindings: mmc: Document fixed-layout NVMEM provider support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260806-block-as-nvmem-v10-1-be598b2a5606@oss.qualcomm.com> References: <20260806-block-as-nvmem-v10-0-be598b2a5606@oss.qualcomm.com> In-Reply-To: <20260806-block-as-nvmem-v10-0-be598b2a5606@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 , Christian Marangi 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 , Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Proofpoint-Spam-Info: AW1haW4tMjYwODA2MDExNCBTYWx0ZWRfX6npMqteLSDjm Q65rpRA7Bh0Povy1e66bqM2CLkg02nhKRaMQy+Ilw7j4xRMZhigs0tZw6nYKKiCJF5Optjh/d0P XhIJOSMD5Fgb8B9ZrMA4VCvxjHJrtvU= X-Authority-Analysis: v=2.4 cv=WbY8rUhX c=1 sm=1 tr=0 ts=6a749c79 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=JDRa4Jy4r6/BpSpxP2cCow==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=VqbvvwzL3cOeFLaalA4A:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-ORIG-GUID: NftLer21KyR7AWxgy08g53Ym9wreVyKd X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODA2MDExNCBTYWx0ZWRfX7d/GTqpj15fK m9xRXcqHoJGfl6kSR5WM551szCWnpP3+GVqPdf9vDzyIoGpHrzAWF7D2gnr+hAWIQQ7eiXyDzxT bVXODCBkavnQuIN5zQZ8zkfXjztn2dtaUeDa6GY4tTU3iFTcLIGQIjQMs18poh527HeMjNp3IBu Dwowd6pIF2taeHDU4BuymBq9eEzULvfm26vrgW0K4EmyddBMWQ7LFm7/W6Hk6E0Ei6hCHV6iyRP BmoHmJA+51NhMnKnmVdun7GcbyBrp/YbYplwg/Q3+54Ra07h1MUpeN2z4hpBU1/zmE2IUQM5hxn gMdGw0ko0oXb3nuXmY1MIQdsUvrXITrazLWfQ15HKfGsivuBfTFQ40D9IQKYM2K19a1PZmGc7nz 0vtsuKXwCCElc3gh4KzCWr0Lcvh2rhqQqu5cdTB87mNFJOQNwoZQcpS3j5CDJ/+Fh+zNTCgvruF O4sOmVH4skOaXK5LBWQ== X-Proofpoint-GUID: NftLer21KyR7AWxgy08g53Ym9wreVyKd X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-05_06,2026-08-05_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 adultscore=0 suspectscore=0 malwarescore=0 lowpriorityscore=0 bulkscore=0 clxscore=1015 spamscore=0 phishscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608060114 Allow an eMMC hardware partition node to describe an NVMEM layout so the partition can be exposed as an NVMEM provider. This lets a partition (e.g. an eMMC boot partition) store device-specific information such as a WiFi MAC address or a Bluetooth BD address and reference it through NVMEM cells. Accept "fixed-layout" as the partition node compatible, in addition to "fixed-partitions", so the layout can be described directly on the partition node. Reviewed-by: Rob Herring (Arm) Reviewed-by: Bartosz Golaszewski Signed-off-by: Loic Poulain --- .../devicetree/bindings/mmc/mmc-card.yaml | 23 ++++++++++++++++++= +++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/mmc/mmc-card.yaml b/Document= ation/devicetree/bindings/mmc/mmc-card.yaml index a61d6c96df759102f9c1fbfd548b026a77921cae..0422894508478c8d0ca68292b58= a5fdbee218358 100644 --- a/Documentation/devicetree/bindings/mmc/mmc-card.yaml +++ b/Documentation/devicetree/bindings/mmc/mmc-card.yaml @@ -38,7 +38,9 @@ patternProperties: properties: compatible: contains: - const: fixed-partitions + enum: + - fixed-partitions + - fixed-layout =20 required: - compatible @@ -86,6 +88,25 @@ examples: read-only; }; }; + + partitions-boot2 { + 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 Fri Oct 2 01:10:38 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 3EEB347A87D for ; Thu, 6 Aug 2026 14:38:53 +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=1786027136; cv=none; b=L3aT8v6KtNBu1tQAKYSpyM6/Aakm3RtL5/6jfgeGAYA3FdUlkRgnNAF7yf063Jo6u9uCWWl0JSdVS0n8PZaVX9W63Qss/YhWcqLtir1XTEK5PwDNXyz31DM+niWOj8UcXU7XWLnpDILibhKTwyoRLo2+aD0A46yJUF2fILFCqVc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786027136; c=relaxed/simple; bh=rFLR77CJJYP1sKLFQ6gl8hLWfcBFJvASp2MjESWcdt0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hMqx1p6oM2UX0uDGwDxQXpwxE84b6rY0sd50YK8JzJW52Nt8Q339h6gTAfsoz0TgSdB1u4D2sjNawYzSUt7vnLKUgpKhtn2yihtxulYd5sqYqVGlLsoaR60sdK9swAZlMlZxjumM4zu8ZHPUo84OsUntGdMHjczlZZK85Q74Khg= 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=DY8zLtgk; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=XvnSSbky; 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="DY8zLtgk"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="XvnSSbky" 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 676BwnBm3037260 for ; Thu, 6 Aug 2026 14:38:52 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= 3Pq53qNpO4Cl13XpVwNXOs8IgmR52etnko+i3TUslYQ=; b=DY8zLtgk6GRUKKXH ChvACXmhsf7wRge6WlyJBT7d4hVgvki94RA1N7o53IJ6WoMzYGRCarNMLpYLFwzG 3nDXtEuYF3/p0zimY+tOUUM5+tN0nYnD3xU5yZ/JKpuk36jd8krQwo64bxdmJ3G1 jPbL5DM0gz+L6MfwAQZpZwkHrjMzuTadkrWryDvyz/EPmH0GgWwxAcPX05E6xxTb 9WvNdUp0TG0BznJspN/B7I+G+o3oGERTHb06nLVFrBuew8It9V3CJslxKhYZK1ec EzgD7VRnZwvDo51yH8+rP0bFF+mHqxw/xrDqg4XrzMAFpH0odyAqNQ6WaP3UVRl2 PxMeCw== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fvsvd0smr-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 06 Aug 2026 14:38:52 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51bfe3fa93bso24623551cf.2 for ; Thu, 06 Aug 2026 07:38:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786027131; x=1786631931; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=3Pq53qNpO4Cl13XpVwNXOs8IgmR52etnko+i3TUslYQ=; b=XvnSSbkyxTgDhDK+fNRpObMIj3SpwUup9R7f+vFHVWNJ+3sWFkaiE+sdANmnJcilxF 6UyJ2aDubqeuRPvxSpW0QUkuJ++lq1Fz5t9nzlm2X+P15XqXAYFHyZ3iTKVr+OP73Fcj erRuaiAD4Wt/Gp385go7ELw+YDOhhAzU4ImVMepgV2O9qPbbZu4l85aAELuVT5NUMedw 35dyboP2gWa2M/CtOSBu5GpZmv3La0ochTQDYE6Ch9yqsWDFuGa7l4tcWZFd0epIPTcO /dS1JZj8tMKKw3ILA0byxPy04PecexQBLpBUJGG00Mh4CRRgrf45mbanbqnL7tANhxT/ j6VQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786027131; x=1786631931; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=3Pq53qNpO4Cl13XpVwNXOs8IgmR52etnko+i3TUslYQ=; b=VAxk+Zsjo/htswxzT0gLGqoDy6H5mY3nACCeCopoqDkUksTsKrGeOv1SVHTNlX4L7H az4+9JR4jra8ub4ocYJM/kiQTm7filzX5RU0/C3DntoQMPWXjXJl0fmJ9FCMonnfbUid 0ZM2BI6gwg8guggLnGdjHBoF0FzOfE+C/C4N5sQqdzLNCkv1Wlt83K6bTkXDBdgCBUcv XgRf0hYDZGJJCK2hAQBB+huG5xe/yRoKjIZ+nG3Knr2tIZ6p3KA3Z8x/dlI9YuBvQIWp v9ARY0fLePVBxWkxHzKs0HULF6CDSr+Xkjnb6p73KGZfgQnMBZhdV/Uo39evKlvbYu2j HINA== X-Forwarded-Encrypted: i=1; AHgh+RoJsrnuL3V0NFWxdXQYyWg77oAmb8VwtzBg3AGmNKBgYr1suvJ4EpyHnmNW64J7+wSYfRY16T8cr/IuLL8=@vger.kernel.org X-Gm-Message-State: AOJu0YwTywC/TU7grU/6GW9NLKJW8scoZXm5gAgK76f1FUiI8QouhqCq tMxrwk+XgNUFZ21hrkExzmyAgj9a1tN/fMO7/VNgsKf32d2+RwpyygYAOg8G2W1euTauCeG+IE8 oykfE3Pz9FfGcEaaFDjt64YE1Csxh9lRK3y11KPH67XU8HfnRwcHTiDxnEubVYy4hS+A= X-Gm-Gg: AR+sD105rNT2dm+6AOboYKDtW3dxSckRM+wJzS7IMB16K6p7k4qNaZnxKePIiiZd8tP 21G3rdH4C9vFvufRr4msLKZ0PjrsxrCV8Mok7GG4J4WWbMgicO7x+wyIveRGTHizlQyqbNGKWgq BE2zGsd23pHhRtA37Y0PkbvpZTnI7PjDeVbSlf4/1UdvsZ1nheb/abQAoh2TIC3KIxg6j7Wb3Md cSqEdCtQoCzZujziNiyuEe3oCzZuQ6UuRbqwrw7Lpy+5fNtnmkA6ZOSJh3F7amBnfo2+F9cFJfc rILQCClVVzJiW5UfFE4k+AyLI01xpdyg5fJ6P03WzRYtCFu3Jvn1/FDCEsKgIOKEVycjNUmwcoM 6px0xWJY5fZOHx8gQWrdPSSdBChniPJgHaCsluoa26QQKbFFHDYUsiTYziwK5Du+Se69Do7RULZ D/+5xDjb9sNdZ6pe67QrDMWSqWn5N36itwY/XSrkEw6GkLedRmsg== X-Received: by 2002:a05:622a:1447:b0:527:43a:2f30 with SMTP id d75a77b69052e-52ce5f6013emr149751691cf.1.1786027131473; Thu, 06 Aug 2026 07:38:51 -0700 (PDT) X-Received: by 2002:a05:622a:1447:b0:527:43a:2f30 with SMTP id d75a77b69052e-52ce5f6013emr149750561cf.1.1786027130781; Thu, 06 Aug 2026 07:38:50 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([90.85.108.51]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2036276e58sm270552166b.28.2026.08.06.07.38.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Aug 2026 07:38:50 -0700 (PDT) From: Loic Poulain Date: Thu, 06 Aug 2026 16:38:35 +0200 Subject: [PATCH v10 02/10] dt-bindings: net: wireless: qcom,ath10k: Document NVMEM cells 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: <20260806-block-as-nvmem-v10-2-be598b2a5606@oss.qualcomm.com> References: <20260806-block-as-nvmem-v10-0-be598b2a5606@oss.qualcomm.com> In-Reply-To: <20260806-block-as-nvmem-v10-0-be598b2a5606@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 , Christian Marangi 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 , Bartosz Golaszewski , Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Proofpoint-Spam-Info: AW1haW4tMjYwODA2MDExNCBTYWx0ZWRfX7rjAmeiJ5zr/ OM0w73pzWog+qrOzgAakILn3nVoAlDpaYcI81PrgIkoz8oLr7nDzzrq9ElgCYzoalk3DwHMFCcg kgMD9bu7r1yM+LObzEJqqENtv8lzBw0= X-Authority-Analysis: v=2.4 cv=WbY8rUhX c=1 sm=1 tr=0 ts=6a749c7c cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=JDRa4Jy4r6/BpSpxP2cCow==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=Xy7nGJaRzBGhkMsTZAMA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-ORIG-GUID: AAUH2kFynf3qmyxj9NUPYFRbbiA6PSmy X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODA2MDExNCBTYWx0ZWRfX6exsqJPmWe7H gjcQKqe+VjzoMsFr15Q9CurDfOYj7W2iq9wykFi2d32Gs3KbQSxyFumnDNBV3OruO8pbxsHDSJv Ea+vNUVoIKIbwE6ovf+ymrF1pgeOTYmRZO9fgPJvwB7rA0R54mcM0vwelMCeVz0uGwesx8hT8f7 hqpzNywP9YT4ykvQh6t7QBgW35+pmRrmAPn8zLp9aCPiYhj7wx+x45u5zNf3j4JotYju80ulspT aWdWAsqNoUzzJhj56DmY2TnuRUwtsKyOMK6W4BHzEWbqR33CcZ2h1Kh2vRV8jvJPBmajAzDjZNR FfkBXmhLQDBuFwF1U++CzsuLI4DjYjnfQB9yF+IDTduTMv97vWhAatZDSO6WN8SELkJ/0aerRKK Bp0s3Og2GJtkXBtz4Ga2fFK74RxgbKztAWEgKuzzDCoavDO0zjCn7xll9w1tDuRn2Wl7ovixa76 3+gjqbV6CgIqs/hsicQ== X-Proofpoint-GUID: AAUH2kFynf3qmyxj9NUPYFRbbiA6PSmy X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-05_06,2026-08-05_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 adultscore=0 suspectscore=0 malwarescore=0 lowpriorityscore=0 bulkscore=0 clxscore=1015 spamscore=0 phishscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608060114 Document the NVMEM cells supported by the ath10k driver, the mac-address, pre-calibration data, and calibration data. Since such data may also originate from chipset OTP or be supplied via other device tree structures. All of these cells are optional and can be provided independently, in any combination. Reviewed-by: Bartosz Golaszewski Reviewed-by: Krzysztof Kozlowski Signed-off-by: Loic Poulain --- .../devicetree/bindings/net/wireless/qcom,ath10k.yaml | 16 ++++++++++++= ++++ 1 file changed, 16 insertions(+) diff --git a/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.yam= l b/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.yaml index d4f4d72ee0d388f43437fc5a3047f90b464a5274..7f9d16cb7c14330e11ce7d567d5= 85b5e47793bd8 100644 --- a/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.yaml +++ b/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.yaml @@ -92,6 +92,22 @@ properties: =20 ieee80211-freq-limit: true =20 + nvmem-cells: + minItems: 1 + maxItems: 3 + description: + References to nvmem cells for MAC address and/or calibration data. + Supported cell names are mac-address, calibration, and pre-calibrati= on. + + nvmem-cell-names: + minItems: 1 + maxItems: 3 + items: + enum: + - mac-address + - calibration + - pre-calibration + qcom,calibration-data: $ref: /schemas/types.yaml#/definitions/uint8-array description: --=20 2.34.1 From nobody Fri Oct 2 01:10:38 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 5965B47ACFD for ; Thu, 6 Aug 2026 14:38:56 +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=1786027142; cv=none; b=TJDgYIoz7WoQRdYoXI9XbWmF0iAP5R2l+Gpnm6nbb+k0lgRAKgUiHFitLs0GhJJquhd7JapwXbMNejbrjO+nwLhJL5nj2HIPuqZeURnA3DEuhVsuzqYo+o2yafZbyxvm9WUbKeGnA6Nirb0Nni8cqETcym2TzOXsSgtj2C8dG0k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786027142; c=relaxed/simple; bh=xh4ucig5hPRkaGw1GggCAwEU1pqdfnGTPbj3vUFpt5A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ds8u0VZPrOYMRB72zzQEd65VeAVs7+Nstor5IGQzfen/F+g9pekDuRiNfF3kaRxzPi23Yd+f80gWq6pGwjowXCwuP6vFl5ODKdJyBp8fiEpNmkLIkRLiFy0Bh9iCbFBzNm05eCnMJBeOkxCrvPvOWOM+O2GXNhq3JTVC8goY51Y= 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=d6ElbH6P; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=fx2dpWx6; 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="d6ElbH6P"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="fx2dpWx6" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6769neLd1876463 for ; Thu, 6 Aug 2026 14:38:55 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= OF0qK3G3GFE0oahQw0gKGPhEucSp1JH1FwJoY8Lp59M=; b=d6ElbH6PPCz9QX/b BLbUMMJyIPdBUt6nC/OUVYRJu70FjQUJAa7LpLyG7zhEwsScwo1NGcXiHmzKgeSg DYU8w0xqtmCJIWKYgCXBfDx/xfUTJCdzL1u29j6IC+sObGK/yHh50oe8eSIAOlvk 976M3BEoKD5MoE4SNLDq7BNxKXvDUfxcaK1YJAd6nzdZwvKiZFSXQ9vzebS9sYel KFkMqqoT9+O0OtQNIpNFVm1w692AacBXnc1bZO2Net0oojLqeyRhN74XIV1ZKHFG Axe12rUOHhUNYN1nxi/bgL7bUO6lLRce7AcRCt7F/rgvB/jLDwlU3Zyh+00QU14W HuUzJg== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fvjucjqhv-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 06 Aug 2026 14:38:55 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-93494cce712so280680485a.3 for ; Thu, 06 Aug 2026 07:38:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786027134; x=1786631934; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=OF0qK3G3GFE0oahQw0gKGPhEucSp1JH1FwJoY8Lp59M=; b=fx2dpWx6Ffu/uTDPCgJSqlfPHnGG1eN3KFQd6nA+4fyZFOsBVdAgkw83aFZeif3AJ0 MuJ2oWCTWEQMeofGa9C7v2WQr5wtDON21MiruUOqmoHyx/ITIhiW/XztE3eGtRASRuSZ M/FcQyIIYXT1hNuvTbIM3irO+h3CLPqmU6xSbC++9Z8J9yx2Nws8p8k98W+zthfU2WQ+ BQbFyxY8pOflaKkqn8Pb9Zw9t0+gjsymdO4nslE34xgInuFchglxWMLmxyDe94GxNmB8 0S16i0SvnEKUfzU2JkEabDIKa/B7eKore6sL3dTQbT261cA3hKCRRSZQlpeEDPoz9yc5 ge+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786027134; x=1786631934; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=OF0qK3G3GFE0oahQw0gKGPhEucSp1JH1FwJoY8Lp59M=; b=EWQBPMm5h08fJMMUkFf2jKDHPgWMtoK8umBBpBb02LuEgmxZc8OA+GzZdLFnMosv64 0cq70WayZ94lA95rD81UxL3w6pvpUxD2Be6m+IXlV5DhVHaO2hZwcEZG9lppZxtA+35t snXMslAw/QXTzmZPrlBpnYN3uyuSxD5eLLNmT6JqfTZjG6HFV5vycsWYkVUPqV7nKjWW nqOGrb1R1o6WH+W9FvT7An8tOYkc8JQuC4sTbCjbBgrsEaz8MFbCNDHuyBr5mw8fbJir 8Qxx5uJYZtnmnyD0uNJ1MmUpGtTD6DSNrzV+yAcSzao+57Pk4ksqFbHFEUCKuyQEPx/Q T+8Q== X-Forwarded-Encrypted: i=1; AHgh+RrLDs6OLvbxPRqbnGbpi4IM6EKml5gUa9wJlwipHF2rirbGY9miIvPcgF7/sBTNM30y84X7Z5nHp0Z3sQ8=@vger.kernel.org X-Gm-Message-State: AOJu0YyLD2BO5GLaZWig9dCLNqDfUq8KyULWGaIeLwvLoFR9wMFi0dAf K0zTsGPV1/V5LNu4nd0E07elYUsDOdVkpHJDgrXUX02Gcb4/Y0X/ryH0ByJOzORa87FL1Lmy46H /8SsmRI+OfoRsIp2jqBGGzu8x3qBEzesJSxQ0EnrmWmIUcSQWKvWIYImvaxkGQpdTJCM= X-Gm-Gg: AR+sD12wiiDrnbBSrY8ydXK2vOw2HMN+5VwLItchEIxv8obDego4vckV9Qqjuui+4rX PDep6sHOMxmCB0yh7QtEODsCor+O7iej6GkE1A+BGo+a9gYSutT/mo0iffkA/DTeq8cz/BXrKqQ LNYgIBOeGbROR3s0C/d+/RshOg63e+kX3rsfGWDep9dJHk/LXpxlzHwOy5yQyxT2sHZQ08vVKpp Vni7smSkiY74HOy5TxLkty8dX5Z/g4/oJVPc1j97litJKwY6x8jnYEZsw7ZHHhDI//oh4xS3Bfr x+DMi4m4GC1ViQ3HB5P8LLpk81ghfDlJtx6YPzCYkwfpwxamFAQRTo/TNL9JuLKXgPF0RPVrdi4 BDmW7juNDLvylSNwcLaChCHJxQktkoJ4CDFPkaX8aOcxQaYJRF7GeeZNkTbRabEOfujUi1OBtZW jc1l4hBusG1MwOEVu/Ll+fiyrF1+BDELtLW5zitH3GCQ7thXEFgw== X-Received: by 2002:ac8:5cc3:0:b0:51c:1532:ae93 with SMTP id d75a77b69052e-52ce6146122mr164305171cf.26.1786027134243; Thu, 06 Aug 2026 07:38:54 -0700 (PDT) X-Received: by 2002:ac8:5cc3:0:b0:51c:1532:ae93 with SMTP id d75a77b69052e-52ce6146122mr164304391cf.26.1786027133693; Thu, 06 Aug 2026 07:38:53 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([90.85.108.51]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2036276e58sm270552166b.28.2026.08.06.07.38.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Aug 2026 07:38:52 -0700 (PDT) From: Loic Poulain Date: Thu, 06 Aug 2026 16:38:36 +0200 Subject: [PATCH v10 03/10] 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: <20260806-block-as-nvmem-v10-3-be598b2a5606@oss.qualcomm.com> References: <20260806-block-as-nvmem-v10-0-be598b2a5606@oss.qualcomm.com> In-Reply-To: <20260806-block-as-nvmem-v10-0-be598b2a5606@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 , Christian Marangi 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 , Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Proofpoint-Spam-Info: AW1haW4tMjYwODA2MDExNCBTYWx0ZWRfX5koTlgfrjIP6 szMzT5ADW5zAl8Rj1UWJ6+LobP8h+x7naT6hIj8okccFY74ZMdSc1RwB7k/NpZovg9SpKtD29kp s/rXtSx4TsDh0OAkDaoiEn+VAP9DkSQ= X-Proofpoint-GUID: IAz7QHa1gvNp3wdBZdxUwjCQ0mwMXmwU X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODA2MDExNCBTYWx0ZWRfX4oOjhOYd37vN D0zkIrP+sAXHD0nLJTb9q40CwY3gvy54cAiYbrHEi6qQJNS99gDRnGJGfDbPY68zXFd/mOmHQYd i62iouONyDzN0LRTdq5c2N8ZS+Ugxqu3nTI+UYMFBR71QwoRAVuDrp8L09cL+R2JvIefr4XZ+nQ pU2yKSg4Hgm6mxUUyA7i9O0huW2IdeZSRQ+fgN1t5LsTWx96XIhBHFYQJS+Ac5ucF95hzMNeFzn 5zBYEIyBdE9G/Lardcx1u3Lib4BI0I6p7qwBWrePHoscjKChADtdH4mJKkx1Lt0fERe4GSz97Cb 7q2wT9Y6Xznq6kguR+7WpnXB8cGy3N/f47CxyAww0DCXG+dwkdShLLUEA86GOMrTR4aCtEuv2Fv IeqsmlDHD/B5wTGrgG2H0sB3uIyeX5MqqzvmoThuDyo0O9CfEHrcEu7awXhIs99lG0Ed4soAh4C aydJj3LrM6RKo6JMY2Q== X-Authority-Analysis: v=2.4 cv=Mo1iLWae c=1 sm=1 tr=0 ts=6a749c7f cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=JDRa4Jy4r6/BpSpxP2cCow==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=jFERsaRKWwo8c2z-USAA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-ORIG-GUID: IAz7QHa1gvNp3wdBZdxUwjCQ0mwMXmwU X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-05_06,2026-08-05_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 impostorscore=0 priorityscore=1501 adultscore=0 malwarescore=0 bulkscore=0 clxscore=1015 suspectscore=0 spamscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608060114 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) Reviewed-by: Bartosz Golaszewski 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 Fri Oct 2 01:10:38 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 E7CE947A884 for ; Thu, 6 Aug 2026 14:38:58 +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=1786027141; cv=none; b=ducjfZ3rpon9oR2W+Kvn69Zcynua7cOY1472cnE2Tikl0swGJwaby+7oKLmB6yVlI9lfXGzr0PCSCKwxa4tpMMlrI3gyu/7jtWh3gGND6TuAEgExMHa0rU2NWqZDMNqtcpmKFGu0k9QgRA++AQLEjQMt5KifVThNpvKPhE8C24U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786027141; c=relaxed/simple; bh=NYZrwdZQ8Unx+4+MfgqEtix1DA4oaM8IOP1pJXmdN5k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=okW9+f/9furP29any6kFpm5+X/6LuQvqqUdAWxlD688EnZ5w0ZybXp2otrshtj/fWNO4tKIt50zLETe/o6iHBq8Odvd4VbX2jQ01OVthhA7dkPNu9K5NmhbGtHjfCfewbNPTkV5Dxutpo4q7Dz+gQ7BkDAoOmYUGNqO+o2mSemc= 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=KOkasYZf; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=CnTstnHu; 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="KOkasYZf"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="CnTstnHu" 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 6769ndTC1308839 for ; Thu, 6 Aug 2026 14:38:58 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= oLlLllLuzegCOZuXn5+dUp09HoQyVIGVgRcx14v62PM=; b=KOkasYZfyawfqtfx kp3fH+4kNrRaDxs/Ft0qbH520UYzF8ncdN1LyjUUifvmWrKfyxhOvX/rRAIbP+x2 PIDKDAe9Yn4/XKcQekdSfwS5rkUtBHkMZU4GlS4Inrr7UL9bSZ6wHEFdc+bfQyjC S5NnzLF0UjugyEN1aKT7FLwdsGmal6wmLHhCA8jWKMRe8agjDwvwcItJNnLYndeL vcczEhML7MZJAHOjXJeHQfgwof9syCrGNWh2/nxRhf2Ja75/eaBHUiSYLrSWu96s 6Z0S4mz+Mjnuwl9UU/uyhlygxL1I4eRnsw4oygt65Z9qvPoW6+hRJlluuHgHwhLp cCchZQ== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fvp729vep-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 06 Aug 2026 14:38:57 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-92e538afe65so265746585a.3 for ; Thu, 06 Aug 2026 07:38:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786027137; x=1786631937; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=oLlLllLuzegCOZuXn5+dUp09HoQyVIGVgRcx14v62PM=; b=CnTstnHuoCPQ3CVNB+OyPox0Hx6XXKo0pInZJjKKsmaMiTXcsVDMFJxH0B6aw2WV+R sznVhtzhnQBPVMHqhisfpjNhnLh6KkicmWwPWsfVjfCAtD/tEbJUYa9ZoX6azEDQnPwx ZXFO0AMxuEK02poCZY8vZM20ZaPKSijzV/ZC57Feh91YjPlmpzfPTSIXWww2hxDHD8J7 h7lkQILRosz+emWQ1mo6FeUjP+P9rNJJh7eA1cQM4YUYsZCDzvcXror/nUVGa7R305Hm I4v1HhdIKJgZXVJ4X4RQDJDvj63uZ2jjI3bOnvoyaDwNVUnAPP/2lZ6sf9rw/3FDUUMn TFUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786027137; x=1786631937; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=oLlLllLuzegCOZuXn5+dUp09HoQyVIGVgRcx14v62PM=; b=BQ68guG1WbQNYZlDlmgRNiat+jQXcjMAmCDm+ZNBCzbb2dWad/9o41t7jbMd8ssG9+ lK/AvZFshC5sA33PanN8XbYicKR9OsTxbO5VVjOfNo36nsUk+3DyrRcYDBirQET8Lfkf E4oDfoog4TasVpqud0I1f3+aHaKqh8cQprKX1bWCDSXG9aNZC/dWIA85tfmRAbZqUKUU ISyZ4NSFO1bubn0Uz+DHrNk/Q0r2V18IW7PZqJdAHSlv4sLq/bk0maZeFlQbpOScma3z exXz3l/1YiCRd9TEduc9O87y2X0Bz0pz345G4VmlLa0DGIhFih7Q/4m6ZOX+mVMCxf7F nFaQ== X-Forwarded-Encrypted: i=1; AHgh+Rq8QRr1kDNprJpZdWdwB/C0uA8yS/+ryLk3dcC4Umra5+U15LAhzK+RJacWeL9bMwh+86Vt7v3JwqB/v0w=@vger.kernel.org X-Gm-Message-State: AOJu0Yzbe0b6QPcQAYxMHSJ8elV4krsmCo19W9MKBkkNBm6jdbD1OFgx IQhcCjPeqXeJmOH2dnKGBpdLY7lCtaNMmUApe6ZiY+D/Mmg9r5sTuMewBfwbwBRVfsvULYUWbcz vbU1rYrlDkZflD4hd2XSFala8Hf6OjsLy+pxTBy7wohkq8rvK6mKwp9uKl8HxdrD+VXE= X-Gm-Gg: AR+sD11S3z2fKJntU1XKZNXuwKJJurnGDcpKRmaAmcb/yOk0guR0L5eLWmGcPfxDpxx mVAZMsQAUGQydNDl/LxeFspyY0hOLSjsmd5ENBDE1KfekS8mnnJras/7jpViGhvXX9ntVRGkKhI kq5hDtZlWETE8h4SbuPI01Zw0a6fM2oon7XEqtVHQWTNx21vJh7eqLcGspd1S0i6mjFVhO0/YA+ tDBwfD4Ymib6qUtCUoOR9BcEe3YEeIpNXzHO5zliYllb9mYddHPB0gNILBuE5XnKnPMiaEaStrR WDOPdqFvy9i5SMM2lnim7YQwbcKibSLbWWUDNNRv1R4vBZw3nFmZhR50qjUK8B9c69rVMj4rVvG sfBacNQa2ot8ON4zsv/z07ISu70JQQk7FWgHTPael0N6jHDC9HvB0TeoalJ4cFblEweYM9zOvvg ObiIfnNPrXL4qaEw3656CtVsbHwGJe1fxP9HLpNDger9N879MdAQ== X-Received: by 2002:a05:622a:4ccf:b0:50d:e471:2d1e with SMTP id d75a77b69052e-52ce61b4ef7mr159133341cf.35.1786027137095; Thu, 06 Aug 2026 07:38:57 -0700 (PDT) X-Received: by 2002:a05:622a:4ccf:b0:50d:e471:2d1e with SMTP id d75a77b69052e-52ce61b4ef7mr159132431cf.35.1786027136590; Thu, 06 Aug 2026 07:38:56 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([90.85.108.51]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2036276e58sm270552166b.28.2026.08.06.07.38.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Aug 2026 07:38:55 -0700 (PDT) From: Loic Poulain Date: Thu, 06 Aug 2026 16:38:37 +0200 Subject: [PATCH v10 04/10] nvmem: layouts: Support fixed-layout as the nvmem device node itself 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: <20260806-block-as-nvmem-v10-4-be598b2a5606@oss.qualcomm.com> References: <20260806-block-as-nvmem-v10-0-be598b2a5606@oss.qualcomm.com> In-Reply-To: <20260806-block-as-nvmem-v10-0-be598b2a5606@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 , Christian Marangi 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 , Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Proofpoint-ORIG-GUID: HjZ_ZwnR-22NVdLmkyj_apIfYALYCJ5r X-Authority-Analysis: v=2.4 cv=JYCMa0KV c=1 sm=1 tr=0 ts=6a749c81 cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=JDRa4Jy4r6/BpSpxP2cCow==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=4SYEPDBQci7QR0ImIkAA:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODA2MDExNCBTYWx0ZWRfX083yibLxOtNm 2iYsrkWXZymwLWqe2ArIBiZTXXySOGfVMLp9yOe8Rz47Z24NiN6yqKAyqTBGx8ooyQfDUMDNeaQ xJiI94qEXvIZT2c/JOidU1k8PX2cdj5a4fp2higInMsEhX84nRwR0lXDjL9kTBVFjrIafKZNu/r 7rzY8AXeRpOI7FszbWC66/+A9BlaRMjUt+sifkO5PjakBkfT3CnNUATjaRa+WHkxWqyYSNa4pGg 51NDhXyYNnH6waf0/nMd/8WuNynRuGwW+10QD7Fy6RMHcnDS/d6C05afIi/VyPhB/ZZXbP80RB1 UCOw53B6yJ94Di4G5jlTopfZyW2Y5INY65oJfoSP8pHpHL4dVZd8AMdUHnKvpZsgEJJxDmFfojB sD3nv2Rx5jHY6DF67kfNLqbZUESg+X6bVHgIpM0XPlpxaCw1Fa8pSScAQaDiLlYnD9ek2hJRLo9 rLveHzk7FPteU1X2+nw== X-Proofpoint-Spam-Info: AW1haW4tMjYwODA2MDExNCBTYWx0ZWRfX975TNmkW8FIc HM659hJownG/kIXUnEOxkl8/xdKmFKJgPJsJMb1rQWdSYyU8umk2QpUXxGaS1DRfiNZXvZXoTH9 0FHt8zwmSGbnSVUogji4YJv0vW4w43Q= X-Proofpoint-GUID: HjZ_ZwnR-22NVdLmkyj_apIfYALYCJ5r X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-05_06,2026-08-05_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 impostorscore=0 priorityscore=1501 phishscore=0 adultscore=0 malwarescore=0 lowpriorityscore=0 spamscore=0 suspectscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608060114 of_nvmem_layout_get_container() only looks for a child node named "nvmem-layout" to locate the cell definitions. This does not cover providers whose device tree node is itself the fixed-layout container, such as an eMMC boot partition block device whose fwnode points directly at a "fixed-layout" compatible partitions node. When no "nvmem-layout" child is present, fall back to returning the nvmem device node itself if it is compatible with "fixed-layout", so that its cells are parsed by nvmem_add_cells_from_fixed_layout(). Reviewed-by: Bartosz Golaszewski Signed-off-by: Loic Poulain --- drivers/nvmem/layouts.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/nvmem/layouts.c b/drivers/nvmem/layouts.c index b90584e1b99eab4217cbe7ec48373e18a7caf0dc..efa631ce7283bdd6c8ecda75915= 911b5e3a33c99 100644 --- a/drivers/nvmem/layouts.c +++ b/drivers/nvmem/layouts.c @@ -167,7 +167,18 @@ static int nvmem_layout_bus_populate(struct nvmem_devi= ce *nvmem, =20 struct device_node *of_nvmem_layout_get_container(struct nvmem_device *nvm= em) { - return of_get_child_by_name(nvmem->dev.of_node, "nvmem-layout"); + struct device_node *np; + + /* Search for nvmem-layout child */ + np =3D of_get_child_by_name(nvmem->dev.of_node, "nvmem-layout"); + if (np) + return np; + + /* The nvmem of_node is itself a fixed-layout node */ + if (of_device_is_compatible(nvmem->dev.of_node, "fixed-layout")) + return of_node_get(nvmem->dev.of_node); + + return NULL; } EXPORT_SYMBOL_GPL(of_nvmem_layout_get_container); =20 --=20 2.34.1 From nobody Fri Oct 2 01:10:38 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 C6754471CFE for ; Thu, 6 Aug 2026 14:39: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=1786027143; cv=none; b=qml+YAqIZPLvzoKJnBAodlrvL2hC49nD8KAxyLdZsWLv/LGeaKW7KKewyb/8T5D6OeyayGvS/wokSiUBOsNEd2t6GdKAtfBE4SmAR+qyQIKiQ04Gc82ltspq6trT9RduLqVFx7OvC1CgtBp8m9eqJhLs5xSYHqayVNxA5dLyGj4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786027143; c=relaxed/simple; bh=4VpmiI5LpCl1NsX5cM3Chy+y0oCRqLImzwBt/7bn6io=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=B8r6GPKmFivtCfnKM8AYE25X8Hr+CQC9b7/zjpOmySH5mlK56B4dUR5u7YkloKN9AgfvUbynweBQuK6a/riH6exNL//X2LbeET3VAS4ySlmhTs3EnASuBuU+SZ1nSXC8C6ndvb1WwjRBOcugCQHJBJZ5mlzql+0FP4SHd36HXJc= 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=X5mfZwG2; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=cpreIGeM; 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="X5mfZwG2"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="cpreIGeM" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 676EYeiQ1519292 for ; Thu, 6 Aug 2026 14:39:01 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= dxMrTZWIsd5PR+qlzxRw6lsq5IV1Qkuw+tEVxsLuc90=; b=X5mfZwG2vEwSz4nP 8Dpsyg8NvlJfWbUAYbvIhbsXmLWeyvGydzWxPRGf6yapBYAuNdhIKS25Mri+7Aw9 oV+vjRPXsp+0Lf2NpedoxE5IkL9Ply7KWRrkfL1JdA8sirUKVD5ScQu/bndt0wMG fJL/pQ4d7oMOtAEASrrWKCOOqovDh8tfX8zrL55Ou732i/6pAvCWje13V7BFiSdR Xnzijtq+aKKk5p2rNqHzg8SV9nhAG56q6PgNS84K1cs1ENJmzdyOaQDoxYpDjkF7 yx4wRHCmrGYSZOwVa5N4a+qxqchJWXfZ2C6AwCCuwXGO8Mt7eM79na7VJSmZyQ0l 6NXH+Q== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fvv5b0193-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 06 Aug 2026 14:39:00 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-51c1d137a68so40490851cf.3 for ; Thu, 06 Aug 2026 07:39:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786027140; x=1786631940; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=dxMrTZWIsd5PR+qlzxRw6lsq5IV1Qkuw+tEVxsLuc90=; b=cpreIGeMcoijCtxUBW8xjuP08uopTKC0PafEOfLqWBDqmN8ALnVDmGscpuTsXnm+o5 yI5eDc30UQHBKTvS7MYpNN/PZbB5vcu43qeOtlPEVNjFV9bhd/rzEydZFkQdGRW7taUw WhBVBrSQ6Fwp5IYtg0LgLYnF+Wpav5uF4KmPaDwXVAIVWjCw0hW5iUaz+mGK3k7wnaDg GgWEG8r9yh06k8IG+jZywk3MFXE0PUIEiiKWAwSHGFb7j0Otsw4n9zK51CZcAQJZ2KX8 A7OKAWyoWlQ92VVcvpiCEACQjyiDaad6Xr29zbKSQGsd1uvA86ratt3nDLCck5s+2gcj tQEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786027140; x=1786631940; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=dxMrTZWIsd5PR+qlzxRw6lsq5IV1Qkuw+tEVxsLuc90=; b=M+fDnsD4xCQaMdwwZzxUjKWgCGluhUEV1euTmLW5yHX5x5jnYjRvW0Pt0Dw/Pg38ae w7UHT+K3MUpzPV1Rt90qdKi97r8BgWv1maVMZJWpdR4ojIjMqC53BU7dgLlK9xRstPuS LOgyeDb291KC1IogK9hxDNbf2ryMeoAkBlYXAHu1xAIUTOOudRzlOYkl1QDJvwC/oSvr uUKMVvkpnwovh8mqM7GgF4yxCcVvVDfIFEtgfchJR8IY7kAWBp5sQaz5obHJknsrmMP2 g1NhJ76kVkdIsj4hmDYLkIcxAgCqWS3ykK3yMN+XAc1QViCxQdhROAgq1Bbs192DJRes 0XnA== X-Forwarded-Encrypted: i=1; AHgh+RpoXv8aDykcBaI2HagvuT6UNskjpYCVCpxnGUSY9lpuXsUijELIzRcykTDtV9Lxv5YyeBh5svVsL/5/r84=@vger.kernel.org X-Gm-Message-State: AOJu0YxUSK5fgymwnWnRvzSNo0b8rS3+YZmw2OVy66PdBpVh21sfz0jk QRXAF5jYgFnrzqL8BpaehpkiFoF1FR0eCVqhmBAG7LOgHQGmHcBTS2p2MEB1fPlP86apDJ82uLD 9TdcsaQU2xT6baJrfGWoPwSXLuFHJzczKA5wOzb/Nvz10+iErZpRMV/zWYfx+8Ztyabg= X-Gm-Gg: AR+sD10O2RwxU3ZwksMbIMVbISOwbdSwJ+kzhfB20l/0o9b3+HymnXxFppq14kxHspn qJHRqXzFokIYHJrwoMMJEJJLWwORV2zqrcTUW5zIpR3KnX83pjt9x/eBMBQpNazPsgsdABHqxtQ Hi1au07GMxjpuir8ONQb2FUJVfGK/oy3kE9Q1oIHCYJzaTJh0PqPParS2yXy8R2ElFQyVfgPpzp /7m47J4UO+tzM4+v3yEqQWlmuUcq9hPdNxCM0lgUzcW5a+J9aIg81KGza+o3c0u+Ji/G8FyEjgD j+Ltqc8B/H5nBCxAhue4QzNS00REbBpOrGqyD8gVXX/reNzD0+tp65iLBj5LVpyB/gJYU2T+SLV D+KGVScS64uJQz+EOMocg2X4Zj7TM+4MK6PFnf247bdyOmVGzqDkpjNsuI3ZBBIaphqNzCCIa6l Oo3un2l6WZp/xip+eDKi5QsV0NzatlZ92AGHjf3FVxIc4pRXpC7A== X-Received: by 2002:ac8:5acd:0:b0:50e:635b:5579 with SMTP id d75a77b69052e-52ce608e48emr133499741cf.19.1786027139823; Thu, 06 Aug 2026 07:38:59 -0700 (PDT) X-Received: by 2002:ac8:5acd:0:b0:50e:635b:5579 with SMTP id d75a77b69052e-52ce608e48emr133499151cf.19.1786027139362; Thu, 06 Aug 2026 07:38:59 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([90.85.108.51]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2036276e58sm270552166b.28.2026.08.06.07.38.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Aug 2026 07:38:58 -0700 (PDT) From: Loic Poulain Date: Thu, 06 Aug 2026 16:38:38 +0200 Subject: [PATCH v10 05/10] block: partitions: of: Attach partition fwnode to the block device 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: <20260806-block-as-nvmem-v10-5-be598b2a5606@oss.qualcomm.com> References: <20260806-block-as-nvmem-v10-0-be598b2a5606@oss.qualcomm.com> In-Reply-To: <20260806-block-as-nvmem-v10-0-be598b2a5606@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 , Christian Marangi 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 , Bartosz Golaszewski , Christoph Hellwig X-Mailer: b4 0.14.2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODA2MDExMyBTYWx0ZWRfX91pLISeLFweW jZ7mCePRP+gyZi1imL44eVxVl89tVW7D1GC7z7nQu2WqNzf/nJNRhSGWODtm1z7rg7b8YNXqMbc Tnk2V0yHEvCRQUFDu+4/+kLi5Xo1qdosKexqKJSbpNgef2Mro3fbHThZiyPf1vU+QYvPN2vqe43 nUhA150Ohb3FipPR0YxOQdnbujfnNyqwp8NRzz1gp7nKNoRNMW1eP9k78i1lWbS2L+q0rXTcnlI T/HtZw6GjMCLkx0e5V70zEcKjvS1gHj/u7IphCI/qy++MhYEPngk9VWciqRXpi1UqLA06wlz48T /Er5bNnmtWl0mC3cwVHZlj45K196DAbNgTUJXHAd90ZoLh9VTro5eadmUFvAtkuJQw7Vbmx8ndB DODYjiuY1UlfQrobkW0hnCRfoghZJ9ftdW/SmPFVAI4ByDbHr6pH6DzzOkHurbTmTlPQ1W8KnHp g0WQAPkDOuwKKvmoSTA== X-Proofpoint-Spam-Info: AW1haW4tMjYwODA2MDExMyBTYWx0ZWRfX47mnGvTfH8pW Y8NhstvGUkyP38Aj+v7y5DYlv/femP/gJ+wYi/oL8TDtO1ULOIbNhi9u9wn/bYlfFTdHJ8k3IGQ NqXAju+b8SsOtfBc3ZWZekvuyMt+w0M= X-Proofpoint-GUID: NS3M1rhJIatRtAFGqOzlpkw1fwjsJusG X-Authority-Analysis: v=2.4 cv=W4gIkxWk c=1 sm=1 tr=0 ts=6a749c84 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=JDRa4Jy4r6/BpSpxP2cCow==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=2ffTNAQyBkxXHBiWhEgA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-ORIG-GUID: NS3M1rhJIatRtAFGqOzlpkw1fwjsJusG X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-05_06,2026-08-05_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 adultscore=0 bulkscore=0 suspectscore=0 priorityscore=1501 lowpriorityscore=0 phishscore=0 impostorscore=0 spamscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608060113 The OF partition parser reads offset, size and label from each "fixed-partitions" child node but does not associate that node with the resulting partition block device. As a result a partition has no of_node, unlike the whole-disk device which gets its firmware node via add_disk_fwnode(). Carry the partition's device tree node through the parser and attach it to the partition's block device with device_set_node(), mirroring the whole-disk case. This lets consumers describe per-partition properties in the device tree (for example an NVMEM layout on a partition node) and look them up through the partition device. No functional change for existing users, partitions without a matching device tree node simply get a NULL fwnode. Reviewed-by: Bartosz Golaszewski Reviewed-by: Christoph Hellwig Signed-off-by: Loic Poulain --- block/partitions/check.h | 1 + block/partitions/core.c | 20 +++++++++++++++++--- block/partitions/of.c | 3 +++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/block/partitions/check.h b/block/partitions/check.h index b0997467b61a54a8a621b9c155c8329289649460..326081499d9a6be730dbd659c11= 0449cfa06921f 100644 --- a/block/partitions/check.h +++ b/block/partitions/check.h @@ -17,6 +17,7 @@ struct parsed_partitions { int flags; bool has_info; struct partition_meta_info info; + struct fwnode_handle *fwnode; } *parts; int next; int limit; diff --git a/block/partitions/core.c b/block/partitions/core.c index b5c59b79ca7cbb28d4d93478ee1c80908f76ee9f..eee954df1ac6ef7dd4f02ad5c9d= 49aed778bf015 100644 --- a/block/partitions/core.c +++ b/block/partitions/core.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include "check.h" =20 @@ -110,8 +111,17 @@ static struct parsed_partitions *allocate_partitions(s= truct gendisk *hd) return state; } =20 +static void drop_partitions_fwnodes(struct parsed_partitions *state) +{ + for (int i =3D 0; i < state->limit; i++) { + fwnode_handle_put(state->parts[i].fwnode); + state->parts[i].fwnode =3D NULL; + } +} + static void free_partitions(struct parsed_partitions *state) { + drop_partitions_fwnodes(state); vfree(state->parts); kfree(state); } @@ -139,6 +149,7 @@ static struct parsed_partitions *check_partition(struct= gendisk *hd) =20 i =3D res =3D err =3D 0; while (!res && check_part[i]) { + drop_partitions_fwnodes(state); memset(state->parts, 0, state->limit * sizeof(state->parts[0])); res =3D check_part[i++](state); if (res < 0) { @@ -247,6 +258,7 @@ static const struct attribute_group *part_attr_groups[]= =3D { =20 static void part_release(struct device *dev) { + fwnode_handle_put(dev_fwnode(dev)); put_disk(dev_to_bdev(dev)->bd_disk); bdev_drop(dev_to_bdev(dev)); } @@ -294,7 +306,8 @@ static const DEVICE_ATTR(whole_disk, 0444, whole_disk_s= how, NULL); */ static struct block_device *add_partition(struct gendisk *disk, int partno, sector_t start, sector_t len, int flags, - struct partition_meta_info *info) + struct partition_meta_info *info, + struct fwnode_handle *fwnode) { dev_t devt =3D MKDEV(0, 0); struct device *ddev =3D disk_to_dev(disk); @@ -343,6 +356,7 @@ static struct block_device *add_partition(struct gendis= k *disk, int partno, pdev->class =3D &block_class; pdev->type =3D &part_type; pdev->parent =3D ddev; + device_set_node(pdev, fwnode_handle_get(fwnode)); =20 /* in consecutive minor range? */ if (bdev_partno(bdev) < disk->minors) { @@ -449,7 +463,7 @@ int bdev_add_partition(struct gendisk *disk, int partno= , sector_t start, } =20 part =3D add_partition(disk, partno, start, length, - ADDPART_FLAG_NONE, NULL); + ADDPART_FLAG_NONE, NULL, NULL); ret =3D PTR_ERR_OR_ZERO(part); out: mutex_unlock(&disk->open_mutex); @@ -564,7 +578,7 @@ static bool blk_add_partition(struct gendisk *disk, } =20 part =3D add_partition(disk, p, from, size, state->parts[p].flags, - &state->parts[p].info); + &state->parts[p].info, state->parts[p].fwnode); if (IS_ERR(part)) { if (PTR_ERR(part) !=3D -ENXIO) { printk(KERN_ERR " %s: p%d could not be added: %pe\n", diff --git a/block/partitions/of.c b/block/partitions/of.c index dab36513eba336344c9558d486a8915624b0fca8..d4016f9b77ec078eb1adb329231= 07c012ca4a751 100644 --- a/block/partitions/of.c +++ b/block/partitions/of.c @@ -3,6 +3,7 @@ #include #include #include +#include #include #include "check.h" =20 @@ -65,6 +66,8 @@ static void add_of_partition(struct parsed_partitions *st= ate, int slot, partname =3D of_get_property(np, "name", &len); strscpy(info->volname, partname, sizeof(info->volname)); =20 + state->parts[slot].fwnode =3D fwnode_handle_get(of_fwnode_handle(np)); + seq_buf_printf(&state->pp_buf, "(%s)", info->volname); } =20 --=20 2.34.1 From nobody Fri Oct 2 01:10:38 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 6E9EA47A0C0 for ; Thu, 6 Aug 2026 14:39:05 +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=1786027147; cv=none; b=HrTtPt7duWTCI1+kMwABhTp4z57xZsQ59N8gperhuAS6aaz2hAfgoGp4bJsKldcpTwgOJ4QDdPnBWmiY/v9qlk7Jss/Era6fRJ7lEZkchOJ7ZNzuVEovJAFA+pAdSp9Iq2iOmsL+CWpqkErOL2E6UuZJL+gIVF/gfdhAibX26tw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786027147; c=relaxed/simple; bh=8zb72y+uRtZA5JG7Jpy7Gdf5cpo//eqQjoZwFUzntms=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZIXto0pL/YvalsnTFT6SxcrWK7f577EhfCNh0zkdFarmUdzf0UVpeK8FkjBrN3TQO0LyPHkQw2CF2KkwFYqWy62Nhu2RgFfIhNvKxozWg/u9Ntgt3BjVHpAsKQQFGJuumQIudhWyLIH0ZNVwDr1k9XecnbafkAylHxVvWIANaY0= 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=Umdw0+wX; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=BtdvXBWA; 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="Umdw0+wX"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="BtdvXBWA" 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 6769nqkl1626116 for ; Thu, 6 Aug 2026 14:39: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= tLAbMrw6kMVW1KpbCEzwXaQHTu3vG+Xv+taIs0sFboE=; b=Umdw0+wXDi/tThuW hp38e8A8JadQ4rM/lXI8TBE5H9Qz1QR7UzvGGkZCqBQ2zUgqhfnWUVDD5WAJsKKE R/XhAYL5WSB885KUs+UeTFEyHlF+I0cmfY/23fWoiY+AbGo4WWBmgwtNaO/BYwW5 a3F8EvBz7P7xQxTRM1EAE3o7LjkPUKuhpYSaGchOp6PMCVLHFVKgXhS0s3v7zDjA yopcd/y7sL8nzPj59wEbTvp1mutd7Itp1xIUbYkc6GB2C2WUcpuw4DiCXYitgQYB ujuHuSYvPIfStAEqtz/aumqKyP4AufbKbWc+TSJuL+WMOQfG1UCVbCAkT4I4JIw2 551lBg== Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fvntnhxr0-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 06 Aug 2026 14:39:04 +0000 (GMT) Received: by mail-qv1-f70.google.com with SMTP id 6a1803df08f44-8e934385db1so25700746d6.0 for ; Thu, 06 Aug 2026 07:39:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786027143; x=1786631943; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=tLAbMrw6kMVW1KpbCEzwXaQHTu3vG+Xv+taIs0sFboE=; b=BtdvXBWAfvyBuvA9XF0E2UtTHOCU1HsIoEzPDNBKBHI7qxCpFLybv/uABO7Y686XUu uJhT5J1QLKKkv+3PT7O5PBfP9Ult4j2oodtHcopUE6nWII6sDupRCqgOPRXj/MhszqXV Lg46IKEjhJxHM84DPqT/5jwJ9Xa8D7ZQ7SkEJkRG1RYy2Isilj1zwFTQ2pmKSu3Q2hVm yMDXyxKiyj1yl90I/m0ZNVbK1kjYm9KZLlzHH2icjNp94pC1pI+IclXxtf/9L1WGkglg VZTGLomR6H3PYpNGsWRwGYLDmgcwi9MbTOTqXRmp7SrJL1Z6UTsX2f6Ux9S+ow0lKlNP Q8UQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786027143; x=1786631943; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=tLAbMrw6kMVW1KpbCEzwXaQHTu3vG+Xv+taIs0sFboE=; b=ktpBhJossP8e7J6eEfxdU68KeQimvEiudBte+jnSAVXBEcWScwDhtRhP7/aMJYRC8c tOi+7+x7hfEQxbdyz21w7lxgFAA5d3cSuuY1+P89yutBdvZifKTpBGUDaWQe4BLWJg5c dvxSUNH+AY60/Pjk6fBmf/5vpgYc/Ibe+tmhQAtnUHdj8CZDtxZAUTYfimflHot+fbZH fjp7u1ZFFCH7/H/BPHuZ9LEMgcUzIDKlu4bVZZKMXlspYVcwjCpF42duKwyXc4GX6yHP fCvR1Zz6E/PSKp5ZlGepkh+2flyaYZxnRfoTy9mGBY3cTW6D+pPIs+RnFETmDlYf+Af7 /Ptw== X-Forwarded-Encrypted: i=1; AHgh+RqWJwi7nn71qftNPP7rc1ju6tvL2lC+sEYcytgvxdw9FqjAG/FctGzO7g5UJGeYONJYwl/OLJbdANw5ox0=@vger.kernel.org X-Gm-Message-State: AOJu0Yy0c8RjgTSQ/7wMedl2La/7vBhgvRzeSGYgXnc2imfhfbZP8ysu UPnu2dsBa+siaGhoevPGa5351r58na63WpQ3EtYFnb7jDahGu0q6SzWtMbqWcrPakmBSdaPjidE Tthgfhw0JPILFFyVt7KwEOwCDLTzagpJ2QgykK8S2/eneF5acyZ5hkjeoPYrWNNiOMEs= X-Gm-Gg: AR+sD10OLevcNXJg1RmiWuimao7LSmgVGqve1MjzR3UQg/K5VntlZGcpMr4r+loNzsU hZiOUEtf74L4py5lPoHjXxdba5SZoJbwIaeXl+6eb9FyHsBAF9pn0J+Zoa4v3hdUykU8kTvX+IK Q7hdGt/sTHbl8zPQ6cFPKtFgSLqqqN64vNS1NRFOuflyCFh95NaoAGFG80sdj8mbljlB7jodNT1 +7dSNTrMBUImVzmDOWKScZ4rqmM4mmi69UpN4fYtVVAHWrYihhYw5nxdqphwxTt59tBph+Z7LnA 7yI6F2WZXDHzw3rpIgkPbxZnCHR48DE6nr03xN0+vDWbxhy3zHSfGTFCXy9cScpLRsKxmAWyq9R wufLM5eeVWOnhgC3CKrmBBPLqiGJMCPOWXLQ4XjrgbN0EAiktmnIG2X9K7VKrRg21SPjVXZ7e++ g+JQ4io3WskNZpkKSnOGPYYAm0x7wVWRMqauPCvEFplgD4uz0KdQ== X-Received: by 2002:a05:622a:4c14:b0:51c:2633:9ddd with SMTP id d75a77b69052e-52ce61eabd5mr171870711cf.41.1786027142942; Thu, 06 Aug 2026 07:39:02 -0700 (PDT) X-Received: by 2002:a05:622a:4c14:b0:51c:2633:9ddd with SMTP id d75a77b69052e-52ce61eabd5mr171869411cf.41.1786027142285; Thu, 06 Aug 2026 07:39:02 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([90.85.108.51]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2036276e58sm270552166b.28.2026.08.06.07.38.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Aug 2026 07:39:01 -0700 (PDT) From: Loic Poulain Date: Thu, 06 Aug 2026 16:38:39 +0200 Subject: [PATCH v10 06/10] 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: <20260806-block-as-nvmem-v10-6-be598b2a5606@oss.qualcomm.com> References: <20260806-block-as-nvmem-v10-0-be598b2a5606@oss.qualcomm.com> In-Reply-To: <20260806-block-as-nvmem-v10-0-be598b2a5606@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 , Christian Marangi 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 , Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODA2MDExNCBTYWx0ZWRfX7xPYWpEtL75T lOwiGXv60E7LBpK6kLNhhDaTkRsU+2KKem+nwPYR5v5IH4ajyr+CTexgZpZtI8+ES3axa4HNRE4 vVp1AXp810H1UCSki9CzxKOXtC/oVvBMAbBjeIj/QyQdzwo8C4YbfJf2EkHc+jPkr7Dz6FyiwkQ WpaKumxN37CrzHk6YkZ+dE6Wf1fsXqG07RwQTKPs9PiC9SY75C1CIlWHNY6QK9wwQQ7eTLtKd63 0P2sYDklRVOT4iis0fguYe1oynRN6BThfaRXx3xY2BC2rWh4mpqGK4PeQy+uYgaP5dT0OXuVgkM SnNPjPhpOTl10OPTWYuErK5buwEOdb6zpTcjHUnV9YAz6/ICC6RTv/YZsu9RkhvB5KvAd5eTROz MMoZ33wvkDLeJEJGWOfX3OzLVK2W3TJEG2A3YqWXdnxCq4Y4p7FhoBb7YguYEIucwWEtGzMhpHE Hy7DGmnKSR/ncrWBFaQ== X-Proofpoint-ORIG-GUID: UgR-DKF1zEJ_LTjLOpONt_oJyHEetb6J X-Proofpoint-GUID: UgR-DKF1zEJ_LTjLOpONt_oJyHEetb6J X-Authority-Analysis: v=2.4 cv=LpKiDHdc c=1 sm=1 tr=0 ts=6a749c88 cx=c_pps a=oc9J++0uMp73DTRD5QyR2A==:117 a=JDRa4Jy4r6/BpSpxP2cCow==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=VT4XjZGOAAAA:8 a=71DuYGxFrHUPmPLwgxgA:9 a=QEXdDO2ut3YA:10 a=iYH6xdkBrDN1Jqds4HTS:22 a=6CpsfURP9XNmmWg3j1mJ:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwODA2MDExNCBTYWx0ZWRfX9BeeKrW0mwp+ Fq/11lx4c4uG85QnhahofHfCfMXun5kAJLaLSPsiCBP3gH0A/EkB5xERG75Rfm0XeSUCvm89cPc 6KjEKFO9/qd7VXx2DeG/iXWXWpsjtBk= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-05_06,2026-08-05_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 lowpriorityscore=0 adultscore=0 bulkscore=0 spamscore=0 phishscore=0 priorityscore=1501 malwarescore=0 impostorscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608060114 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. NVMEM is registered for a block device whose OF node describes an NVMEM layout, either via an "nvmem-layout" child or by being a "fixed-layout" node itself (e.g. an eMMC boot partition associated through its mmc-card node). The NVMEM device is a read-only side channel onto a block device. Each read opens the block device with BLK_OPEN_EXCL to keep other exclusive openers away for the duration of the access. Signed-off-by: Loic Poulain Reviewed-by: Bartosz Golaszewski --- block/Kconfig | 11 +++++ block/Makefile | 1 + block/blk-nvmem.c | 112 ++++++++++++++++++++++++++++++++++++++++++= ++++ block/blk.h | 8 ++++ block/genhd.c | 4 ++ block/partitions/core.c | 5 +++ include/linux/blk_types.h | 4 ++ 7 files changed, 145 insertions(+) diff --git a/block/Kconfig b/block/Kconfig index 70e4a66d941ff66ecb0ec34f4f7eff7fd1e4be40..4899ad572c71ffdbb62460d5762= 3216254893ddc 100644 --- a/block/Kconfig +++ b/block/Kconfig @@ -209,6 +209,17 @@ 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, + exposing factory-provisioned data such as MAC addresses or Wi-Fi + calibration blobs to the drivers that consume them. This is + typically used on embedded devices where such data is stored in a + dedicated area of an eMMC, instead of a separate EEPROM or OTP. + source "block/partitions/Kconfig" =20 config BLK_PM diff --git a/block/Makefile b/block/Makefile index e7bd320e3d6971a8abf584f5de42776bb54e8216..8200297fbcbab304beb4239d0c3= 3da07011c3ed9 100644 --- a/block/Makefile +++ b/block/Makefile @@ -39,3 +39,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..69b69184e16303444c9cb2dc816= d5679daeb13c4 --- /dev/null +++ b/block/blk-nvmem.c @@ -0,0 +1,112 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * block device NVMEM provider + * + * Copyright (c) 2024 Daniel Golle + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + * + * Useful on devices using a whole disk or a partition (e.g. an eMMC boot + * partition) to store MAC addresses, Bluetooth addresses or Wi-Fi + * calibration EEPROM data. + * + * The NVMEM device is a side channel onto a block device that stays fully + * usable. This is somewhat mitigated by opening the device exclusively. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include "blk.h" + +static int blk_nvmem_reg_read(void *priv, unsigned int from, + void *val, size_t bytes) +{ + struct block_device *bdev =3D priv; + struct file *bdev_file; + loff_t pos =3D from; + ssize_t ret; + + /* open and prevent other exclusive openers */ + bdev_file =3D bdev_file_open_by_dev(bdev->bd_dev, + BLK_OPEN_READ | BLK_OPEN_EXCL, + blk_nvmem_reg_read, NULL); + if (IS_ERR(bdev_file)) + return PTR_ERR(bdev_file); + + if (file_bdev(bdev_file) !=3D bdev) { + fput(bdev_file); + return -ENODEV; + } + + ret =3D kernel_read(bdev_file, val, bytes, &pos); + fput(bdev_file); + + if (ret < 0) + return ret; + if (ret !=3D bytes) + return -EIO; + return 0; +} + +int blk_nvmem_add(struct block_device *bdev) +{ + struct device *dev =3D &bdev->bd_device; + struct device_node *np =3D dev_of_node(dev); + struct nvmem_config config =3D { + .id =3D NVMEM_DEVID_NONE, + .owner =3D THIS_MODULE, + .word_size =3D 1, + .stride =3D 1, + .read_only =3D true, + .root_only =3D true, + .ignore_wp =3D true, + }; + struct nvmem_device *nvmem; + struct device_node *child; + + /* skip devices which do not have a device tree node */ + if (!np) + return 0; + + /* + * The layout is described either by an "nvmem-layout" child node or + * by the device node itself being a "fixed-layout" container. + */ + child =3D of_get_child_by_name(np, "nvmem-layout"); + if (child) + of_node_put(child); + else if (!of_device_is_compatible(np, "fixed-layout")) + return 0; + + if (bdev_nr_bytes(bdev) > INT_MAX) { + dev_warn(dev, "block device too large to be an NVMEM\n"); + return 0; + } + + config.dev =3D dev; + config.name =3D dev_name(dev); + config.priv =3D bdev; + config.reg_read =3D blk_nvmem_reg_read; + config.size =3D bdev_nr_bytes(bdev); + config.of_node =3D np; + + nvmem =3D nvmem_register(&config); + if (IS_ERR(nvmem)) + return dev_err_probe(dev, PTR_ERR(nvmem), + "Failed to register NVMEM device\n"); + + bdev->bd_nvmem =3D nvmem; + + return 0; +} + +void blk_nvmem_del(struct block_device *bdev) +{ + nvmem_unregister(bdev->bd_nvmem); + bdev->bd_nvmem =3D NULL; +} diff --git a/block/blk.h b/block/blk.h index 25af8ac5ef0f77c09b4d747827b275c32e9f2972..dad8f0d7a218edbafa9b6a03aed= 673657f3e8cbb 100644 --- a/block/blk.h +++ b/block/blk.h @@ -810,4 +810,12 @@ static inline void blk_debugfs_unlock(struct request_q= ueue *q, memalloc_noio_restore(memflags); } =20 +#ifdef CONFIG_BLK_NVMEM +int blk_nvmem_add(struct block_device *bdev); +void blk_nvmem_del(struct block_device *bdev); +#else +static inline int blk_nvmem_add(struct block_device *bdev) { return 0; } +static inline void blk_nvmem_del(struct block_device *bdev) {} +#endif + #endif /* BLK_INTERNAL_H */ diff --git a/block/genhd.c b/block/genhd.c index f84b6a355b574af88c870938a8c69aeb9f8f44ad..0c9c5e5ea7baffa326a2d45b075= 688cf3a0edf5a 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -421,6 +421,8 @@ static void add_disk_final(struct gendisk *disk) */ dev_set_uevent_suppress(ddev, 0); disk_uevent(disk, KOBJ_ADD); + + blk_nvmem_add(disk->part0); } =20 blk_apply_bdi_limits(disk->bdi, &disk->queue->limits); @@ -704,6 +706,8 @@ static void __del_gendisk(struct gendisk *disk) =20 disk_del_events(disk); =20 + blk_nvmem_del(disk->part0); + /* * Prevent new openers by unlinked the bdev inode. */ diff --git a/block/partitions/core.c b/block/partitions/core.c index eee954df1ac6ef7dd4f02ad5c9d49aed778bf015..c83227710584a6feb25c8abae3b= 319cfae9cce5b 100644 --- a/block/partitions/core.c +++ b/block/partitions/core.c @@ -289,6 +289,8 @@ void drop_partition(struct block_device *part) xa_erase(&part->bd_disk->part_tbl, bdev_partno(part)); kobject_put(part->bd_holder_dir); =20 + blk_nvmem_del(part); + device_del(&part->bd_device); put_device(&part->bd_device); } @@ -406,6 +408,9 @@ static struct block_device *add_partition(struct gendis= k *disk, int partno, /* suppress uevent if the disk suppresses it */ if (!dev_get_uevent_suppress(ddev)) kobject_uevent(&pdev->kobj, KOBJ_ADD); + + blk_nvmem_add(bdev); + return bdev; =20 out_del: diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h index 8808ee76e73c09e0ceaac41ba59e86fb0c4efc64..6ed173c649025b95cce9253b27f= 68f2c7dbab8eb 100644 --- a/include/linux/blk_types.h +++ b/include/linux/blk_types.h @@ -15,6 +15,7 @@ struct bio_set; struct bio; struct bio_integrity_payload; +struct nvmem_device; struct page; struct io_context; struct cgroup_subsys_state; @@ -73,6 +74,9 @@ struct block_device { int bd_writers; #ifdef CONFIG_SECURITY void *bd_security; +#endif +#ifdef CONFIG_BLK_NVMEM + struct nvmem_device *bd_nvmem; #endif /* * keep this out-of-line as it's both big and not needed in the fast --=20 2.34.1 From nobody Fri Oct 2 01:10:38 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 D91CD479889 for ; Thu, 6 Aug 2026 14:39:07 +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=1786027149; cv=none; b=iD3pRM0lgXHjL/IwcUOFAxgv4XN1AZdYJP20NOZNI8Z72f8Zh7+0yVNE6jUmCyO6K8Kr/mzgCvyqPz+hFDCtQjdUN+JViXgjRSei+qJm2vc+Yq54OK54H1LWi1EwkMy+6xSvyM/brvCn+0at6BB5e0SJC5S6XVuM+AmUixEMEWE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786027149; c=relaxed/simple; bh=L92wgefYXvtbzOMdFEhUTkLwtCR1yYb0ZcvRRGDMuNM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dOAsKpI9HiRMpjoq2lr6NBZvVBTjXMy7pdkTkvuta8R0puDDT9xW6o3u2p8qOEYab725+/M88h5O5nkyYCAC/wGhexia74I9cXpDbCWEUQL/9dk1MWNZV1JmC1FBiq7Tgw1CLaqRlApiUfAtkcJLKD2itdKLg4ATG0jfYjJHdQc= 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=Tu7wovN1; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=W6zuJobQ; 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="Tu7wovN1"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="W6zuJobQ" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6769nxXV1871633 for ; Thu, 6 Aug 2026 14:39:06 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= cPeNqGPMRBWAfsA5CvuzYdqPrDk9qOkztMDjoEMaK1o=; b=Tu7wovN1yUeuNh2h YaUwjkkkN8p0Y3Y4/b64xoMPKryZFIwHN1MEm+K6zTfr5B/pupMFOE93Y0b9hszq HNNiigNAb7txL8R0o15QcYwQijLQfpziy61yvktiD2bmL7qvQ5x3BkjpywMlevzV fZy0AzmR83bdWZ2Gq4azy4Y6Ail743FLZcaAWYcNiMyT7cMQ2qFbGz7W2SbHDBu4 znBl8nhMZy+S8kN91o393vnzDBtZSZHE7JyB4njZ0mqAVxeO1IyJxAcKAfn5fLf3 AJ6xisRMQLTiTjg5QAmDVuWERq8L9crSL7HxA3FyDTNPvCeJyfDDgi3zoitBNabc 9o3wxQ== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fvjud2pw0-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 06 Aug 2026 14:39:06 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-5283df62d68so25621251cf.0 for ; Thu, 06 Aug 2026 07:39:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786027146; x=1786631946; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=cPeNqGPMRBWAfsA5CvuzYdqPrDk9qOkztMDjoEMaK1o=; b=W6zuJobQMzovX5XY+ges5LegvJc+QfPblYTnJUOHwItKm8JCYcHMPM6gG0zfGOIWlW uX1PAe1KN24dK+jJi/+KKB7Jj9oFD1V1xRME7uj1zk414emthsC8lTpaSxzpBwBiMELf Y/tPHG+Ca8hh7H8Wy+/8dzhMWEfqGUnNxV22ok18TrieqA1YtYAD4Ff4CSvDoEzN4T/L zCGtGsbKlq36d7AfQIUADN+U/gEIZWMPlOlFzABzMXfnjSWTPSsEqxe1x/48OHcG4opF /MWHov3C7FErWl506blcIMe/kn8/vcPdyByjXqQyMRCWtSPaA3qw649fFZvWCpv4Evky DM/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786027146; x=1786631946; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=cPeNqGPMRBWAfsA5CvuzYdqPrDk9qOkztMDjoEMaK1o=; b=lHzaDr9QnIhFTR9Ko5+vyDIgTNXXBGeGB+BiV7z9TV+7FAhSV315UlMdQjjXqMhovb 4wbnr8BOrU5znY+ETxd6c3K11lxYhKEgqjAoVoK1LSefHwevQGU13V4QzrqxUO3iAD5W UIrd0VMQj6aRr2oYRbCNCbt7/0bJJQ9F38EPXkU4A5fbR+V9FDXqOs/NVWIFcs4H26bH GbfWe2CbtKEamYzQHeEGOF7txKc2qbkEjg2Uv3Nbafq6A6VCrouBDSxrRFuzdXZEqVTl pz/yJndT7JEP6O6eVH4qtc5A0nyq8v2KFFvpDGy/0ba1nzCmJkMaeJks3rUgP/EqyQCA oIJg== X-Forwarded-Encrypted: i=1; AHgh+RqDOQ3HnFCf2Wj7VrffAQeB0QIcOnatj/ABox7UOR2ycNXume0ZERmAA+fF624SuRmVSYpX4WDp/rNA8Xc=@vger.kernel.org X-Gm-Message-State: AOJu0YzkdeVhnPGoDu9JRCdzyalf1SafWVuH8/jPzMjPDvpiBFJCF/HJ uvOgDzg0uCcV1qPJ6ynw9qvtyDxkkG4Nt/ZLMktxbaKkbRMhRMZZnaPPwQj+cPfJtPzK7BAZPXp D0Oq2YJ7dWBJBQpwXCpq+HQ/Xh8Ub3mF6Jp8DICM/rZHqiNB7VuACuabTOnJTYEyDGK4= X-Gm-Gg: AR+sD12sky8nKUTmOJDBmMm/W+yD0BttotyekupHJiFxYEKwjWcN1x/chrr6Gj/Njh4 l+S3yMZ7eeG818LMc9djJ4GEfhqsf/ZE3EnNMBRoWGycNyBHtHV3wQPGBcg96JTaNrXxO9qTF0W yNbHQ28e+UKBqabbgmBmOHtlLydWFCemWCCOtgHatoC9i8+Sod17rZYeeDHm6tJbhzItZV1PTUR 6Uw8GwbSVse6Oes/jNJWsfZzg788DS5fSgqYhxq99FsXEcV30UGsKmlcB2gEXuVe1NeaPb520IV jzB7cv0/ZeMhrPt/WPtTKTtBu4USRoMuycIOQ10hcOowIxu2iccXHi9G+PX+OEghIgTmYDRxWnp dHrydu6iUc2ASQdbJnwb1Dy7bEOBUrSEpKImrrQmqJHEokNqSjKxxdejoC0Q4ZYBsFmgkzriDyZ lNSv7Ap9P0iSVt9WOqcXnv0A7PeC+nbpNaNpwcc1CF5ArvfxaP+Q== X-Received: by 2002:a05:622a:1489:b0:51a:89c1:1eef with SMTP id d75a77b69052e-52ce6022480mr139973741cf.14.1786027145657; Thu, 06 Aug 2026 07:39:05 -0700 (PDT) X-Received: by 2002:a05:622a:1489:b0:51a:89c1:1eef with SMTP id d75a77b69052e-52ce6022480mr139972401cf.14.1786027145034; Thu, 06 Aug 2026 07:39:05 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([90.85.108.51]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2036276e58sm270552166b.28.2026.08.06.07.39.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Aug 2026 07:39:04 -0700 (PDT) From: Loic Poulain Date: Thu, 06 Aug 2026 16:38:40 +0200 Subject: [PATCH v10 07/10] 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: <20260806-block-as-nvmem-v10-7-be598b2a5606@oss.qualcomm.com> References: <20260806-block-as-nvmem-v10-0-be598b2a5606@oss.qualcomm.com> In-Reply-To: <20260806-block-as-nvmem-v10-0-be598b2a5606@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 , Christian Marangi 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 , Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODA2MDExNCBTYWx0ZWRfXzO6YTD+RzjO1 Xu70sR6cDpPKqsjYBu1iiHIhJ8l4rds/HEnaB03hSdbL8Xv/MjbE8oJoMs8xr0jL6Z4cWQIytJc Nfl65eJt5eb9lglx00z3jhqb4L53OXf80O0VAVNYZiDIE+fBHxIM+yOjZK6kb5DWfeWMRnrMeEu ZhBR1Jg341ru0sZ8ezaPZjNekslO1n3UEcwqdrd29jlomUzT3aSo43BF9Gn4mq12296b0q+Oquw RmP5pNIJZFzFPFe3IDKnNLXfJv3aN25xIaLV9txl2TOsM1IRSZnUUXMyJ8g/g0RQWVhjWZxuKM+ jws6GIDzx4msjzo7Zf7NpTvDQQox9IU70kc8+EING4PrkB3n+Fdzyn0onBk6Ly2iH9e6/NsEuij QkEPkXrYOa5she6hY79xxvGAVIYBqVDlwnzHOc6AnEBXj2P7SIyKZZ2CycHtgyvlFU+G8H5AVVx FC9IzXSRZF6PaKdTmmA== X-Proofpoint-Spam-Info: AW1haW4tMjYwODA2MDExNCBTYWx0ZWRfX8JcTd04lpnhf UqxogIxYTEJaTNSTpLBwW3trdf8egg+AlTugCGAnC9rXB7YZDjrXJUceAXLXxjNIxcgMACc30sM EPYF2TC04JB4jL5xttSlZeNLeV7ZHjQ= X-Proofpoint-GUID: _R7evSqN8af4HaER_phEC8oXizW6lmY0 X-Proofpoint-ORIG-GUID: _R7evSqN8af4HaER_phEC8oXizW6lmY0 X-Authority-Analysis: v=2.4 cv=DeInbPtW c=1 sm=1 tr=0 ts=6a749c8a cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=JDRa4Jy4r6/BpSpxP2cCow==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=bEbww9rD5qa0LKludeoA:9 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-05_06,2026-08-05_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 bulkscore=0 priorityscore=1501 adultscore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 impostorscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608060114 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. Reviewed-by: Bartosz Golaszewski Signed-off-by: Loic Poulain --- include/linux/of_net.h | 7 +++++++ net/core/of_net.c | 52 ++++++++++++++++++++++++++++++++++++++--------= ---- 2 files changed, 47 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..999ca0e9258c41580823b80e0ef= 6db26617bc968 100644 --- a/net/core/of_net.c +++ b/net/core/of_net.c @@ -61,9 +61,7 @@ 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; + u8 mac[ETH_ALEN] __aligned(sizeof(u16)); int ret; =20 /* Try lookup by device first, there might be a nvmem_cell_lookup @@ -75,27 +73,57 @@ 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", mac); + if (ret) + return ret; + + if (!is_valid_ether_addr(mac)) + return -EINVAL; + + memcpy(addr, mac, ETH_ALEN); + 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); + /* Reject unprogrammed cells that read as all-zeroes or all-ones */ + if (len !=3D ETH_ALEN || + !memchr_inv(eui48, 0x00, ETH_ALEN) || + !memchr_inv(eui48, 0xff, 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 Fri Oct 2 01:10:38 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 D858747A890 for ; Thu, 6 Aug 2026 14:39:10 +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=1786027154; cv=none; b=eC8CTR/PGHSGsVAvBI5TyslQgqibR1sR1jd0b8lFHHdzppfyYkTVhMUfvKcA4NMJoaWir3ECAVQ29NOkapa9wO6G5m+svFrlXiMhUnOCfKNgZOsrZM5CbcYMVP6lAkDybrm+idfW2GMec52mqDSLEHbJqLcsiKPfv+ArszURw1Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786027154; c=relaxed/simple; bh=uhpDyIoGXajFOzs4zO0R7BhqrSY1CyahIEnZEYC/lAU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=o8+78DrjbC2xX+qGC80AyPiVQpif2kdk11BogATVEw+pxjjB8AB1WF1pwD+h7CUrq7dqmi5HNM1jKsttMh50aH2foRW7qTtsYGxIkeJRca98pOtVDD4ZLJ1QJ0VhYBP2Ke+m5NQVna7gUZ5ryOKNIZ+iiZ1boj10gm0RpuHGbyQ= 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=TCzLLmkl; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=XVmwEFea; 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="TCzLLmkl"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="XVmwEFea" 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 6769ncAj1308819 for ; Thu, 6 Aug 2026 14:39:09 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= SkfAnMQDHbMi2DKEw9B9JDdOl1z4aZR7BlMrHcVf2Tg=; b=TCzLLmklckCWLwgB EHmYTcVuGsmvFTyYFnSJeCxCLQJ4cT+eu3toRPVOpxU3lxdHUXKeiUTwLqUpi6y9 YGuaUrGGuF9QVIJwepkptpeGyt8G+gXfl2rHLev9I9kjYGL6leKvPQbyPonCPABG ZPbjCurLPaAEbQV12DzbHbXdYEkF8X8lLbA94Oy2tegml44YUetmI12iwazbkUBr O7ddWPxxQE53onXqoZW1MfPNtzNkViLMx6nvuTIflNX9qHKuIA3KtAklrLjUUiIr 3vlWgSe6X22uw3ZX+bJfHln4mIkT6qie1Viq9gguvrikNOZEU3Z6++RV25ZPeRhp eVGZAg== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fvp729vg1-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 06 Aug 2026 14:39:09 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51c12e43b98so25634721cf.1 for ; Thu, 06 Aug 2026 07:39:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786027148; x=1786631948; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=SkfAnMQDHbMi2DKEw9B9JDdOl1z4aZR7BlMrHcVf2Tg=; b=XVmwEFeazEPoEuahMRKpFvWyNu0YfUYhrOzM0hgOAJ0y10nmLJir1+7JnEGWfhyVV4 fcWPz81ok4ZSxpeAUqQFTqkUEu8QhB4fwb5vZrPKYAy1MXTHW5WEEcCC8tG1HDGaEPSB f7pWdoNlgnTEohFVFJ/wApRcR5n5nWSTI3qeI3BMXFvlNv4WDTMRidCrtUmuSqmlSnAO aNQytgxmb+f0vQkOpl/tWpUgEZ07Uik9eEga6rQnpoZh44FesTx9uClxMkzO8/xSVXdV UPNry3fqKLJN4QiiRc91099VMXoR/SCY194BpugKJ1v0XW8AggJ8a5vPNsRr13gHwMwJ 3+iQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786027148; x=1786631948; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=SkfAnMQDHbMi2DKEw9B9JDdOl1z4aZR7BlMrHcVf2Tg=; b=k86ll41yFfnQ3AI4e0dEKHeP7LgNTgSrdvFxmi7FcizX7Fm34ka39wocueSP8usi9t BbAplDMWY0J924vHclc5dw9hOG1s2YxAAMLlAwq1T7CfQ9fc17VclT0X0ijY+0j33G7T /VQSZCq9zOHQFJJfYobpVPaL4dgGu+4gXcFYlWJQzl/Am9dv0TjwI6bsEpy1yt1uDb2r +/UwFRbel2CQiJpuEUNkuLnpveHZFrGHOViRljBummXt6xKohaTS6f+hydGYWGxp6jcu gAlZDzGJIxJFnR85YWO+9/T8jf9oOvP0LQxQt6aWGDZBGfma7Q8v0jW8GxSRnhxc1Avf Iv0Q== X-Forwarded-Encrypted: i=1; AHgh+Rq3YNmOPdBVYXQB60M9/brTFuMsc0lJqCViofBvMfXm8+igt0305DZO+d6Dts93WjbkPwNrLqc16UvKTfU=@vger.kernel.org X-Gm-Message-State: AOJu0YxQAVcoB8mSI4LcWl5fnHSx4R9E2/aEaS3IsCR0owKTw7cNPT55 H+Bi4i+Boc/Xg6gxh+PQadV6cNwiY3WoxMLodNzfC6HaUNj7ZWBmsdSTY4VTs3IaSQqiNLLMHrn GTxPbsVVAZ3kVnX5xN/5360I+zM7MUBQbAYTmsJQsv5FZOrcdLtZWNiZFiRdhJobWsRU= X-Gm-Gg: AR+sD116jp+ITcjCVvNpbE7YgQudRb/OgvY0oKOXmIJUINB8Zr/j2gLy1dpUtnf1aoC 8iWmI7+p6nQz6maVa9mrRZuJvPn6ZEPZnwKvTrWGrlECRWbTgQHD0GZkicUCyBh3Rme7chAGVg9 x+zNrtZ1InyWVWkYh2+ZJjdoGl2LJDSr8q0o8nkONNST2vxna687strMEeemmu2rZ8H8p/u9+nJ 9/zlxuYv4IudPxHLbcwlwxYrDMpqRuRiGLlcK9b5bmFnFx4x+6pese7IBx8anKANY7NjhaKipTY 9Gxp1TXo+bGRYiHcnYMpot9VvwteS8kEZOy5rHUvumDEIgC/soGAFdl1wQEW+9cVkEF/fBRtA08 wRSfHMHDr0/qpG1EZNDS9pcD7L5KMm2gjLzQ3gxJyDPmR1gI3yUpFuM7CvBdsGqF8kaP9puQu7x D8ulDO2bDxg6dSD6Of3ImJKK3Oi925CTSrGZO+wmpfFEbbpCdjeA== X-Received: by 2002:a05:622a:1ccc:b0:51c:9b44:c59e with SMTP id d75a77b69052e-52ce60d3fd2mr170035591cf.22.1786027148470; Thu, 06 Aug 2026 07:39:08 -0700 (PDT) X-Received: by 2002:a05:622a:1ccc:b0:51c:9b44:c59e with SMTP id d75a77b69052e-52ce60d3fd2mr170034201cf.22.1786027147897; Thu, 06 Aug 2026 07:39:07 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([90.85.108.51]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2036276e58sm270552166b.28.2026.08.06.07.39.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Aug 2026 07:39:07 -0700 (PDT) From: Loic Poulain Date: Thu, 06 Aug 2026 16:38:41 +0200 Subject: [PATCH v10 08/10] 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: <20260806-block-as-nvmem-v10-8-be598b2a5606@oss.qualcomm.com> References: <20260806-block-as-nvmem-v10-0-be598b2a5606@oss.qualcomm.com> In-Reply-To: <20260806-block-as-nvmem-v10-0-be598b2a5606@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 , Christian Marangi 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 , Bartosz Golaszewski , Piotr Kwapulinski X-Mailer: b4 0.14.2 X-Proofpoint-ORIG-GUID: 7VWl_upN_FER32VOheGuTbdswonPLg8P X-Authority-Analysis: v=2.4 cv=JYCMa0KV c=1 sm=1 tr=0 ts=6a749c8d cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=JDRa4Jy4r6/BpSpxP2cCow==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=QyXUC8HyAAAA:8 a=ZruV3ba3MPUC-7CJ7xEA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODA2MDExNCBTYWx0ZWRfX3DiL4UhuYdx0 M9Iq1U8gq5ZbzZ6VLedhIj9LJiG5VTPTiAT6ZWG1sEprubme6841ml1+TWlEc5pnObpNNZAP5G2 iUmdY+CS1SxaIjWDqaCZDoXzjIBXrn/bmDMDS+1n4HdOZkKQwCpR63ev3zbqYz9XNwfEZi29ej8 cPRy3H1dLmSCJAVRtS5SJsOD7+L1WrPh25FQzQzhtsqHsqSYyiVWU5DdEDem3nd8O1fFfvFwy5A Jl1HuDSaisE7B5EqQRps+r6IzXHKcscxL8ghL8d+kA1/eyZ82iVwHJCPJwa5y/lermN+AU/l98O DtSu605dqiEYJPTWBie9VDXDvKRxIIlf13VACEecbXwdK69+PhBlc1ogkN420ONg9Q4AqxqW9LB YCuCWy4HzZqOSsmSjy8tpatTbbzY6+F+R1vLJLenBIZSjg53iFOLcbxqbS+9AmbSfuGr+EPxuZa H2kge9NYZ7bFrHF70Yw== X-Proofpoint-Spam-Info: AW1haW4tMjYwODA2MDExNCBTYWx0ZWRfX4O56moRl0fa2 2y82qmhqYTt73jzqySfoJxmu1diG8dnzXwo/XLn5b0l3QHWcQUfrlPQb6+vMnsy8Kg7L9zvUuYo ccsAt/e/m4wKaHtlxHclPQXZA1GAotY= X-Proofpoint-GUID: 7VWl_upN_FER32VOheGuTbdswonPLg8P X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-05_06,2026-08-05_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 impostorscore=0 priorityscore=1501 phishscore=0 adultscore=0 malwarescore=0 lowpriorityscore=0 spamscore=0 suspectscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608060114 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. Reviewed-by: Bartosz Golaszewski Reviewed-by: Piotr Kwapulinski Signed-off-by: Loic Poulain --- include/net/bluetooth/hci.h | 18 ++++++++++++++++++ net/bluetooth/hci_sync.c | 41 ++++++++++++++++++++++++++++++++++++++++- net/bluetooth/mgmt.c | 6 ++++-- 3 files changed, 62 insertions(+), 3 deletions(-) diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h index 38186a245f14dbd2a26cbc331e7f1b3e72f1a607..145ab94e51482f903f4c9133d8c= 97561ac1c1e00 100644 --- a/include/net/bluetooth/hci.h +++ b/include/net/bluetooth/hci.h @@ -161,6 +161,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 3be8c3581c6caadeeea56e14e09d4123deb4ec03..c0ed7fb14d19bd79429a6892ec1= c7cc89bc7ab3a 100644 --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c @@ -7,6 +7,7 @@ */ =20 #include +#include =20 #include #include @@ -3593,6 +3594,39 @@ 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). + * + * Return: 0 on success, or a negative error code on failure. + */ +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 @@ -5072,12 +5106,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); diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c index d23ca1dd089365fe4606600c68475dceb561e5ee..42b6866f96a4c81850d98041b34= b7fcb0f9d0e47 100644 --- a/net/bluetooth/mgmt.c +++ b/net/bluetooth/mgmt.c @@ -614,7 +614,8 @@ static bool is_configured(struct hci_dev *hdev) return false; =20 if ((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)) && !bacmp(&hdev->public_addr, BDADDR_ANY)) return false; =20 @@ -630,7 +631,8 @@ static __le32 get_missing_options(struct hci_dev *hdev) options |=3D MGMT_OPTION_EXTERNAL_CONFIG; =20 if ((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)) && !bacmp(&hdev->public_addr, BDADDR_ANY)) options |=3D MGMT_OPTION_PUBLIC_ADDRESS; =20 --=20 2.34.1 From nobody Fri Oct 2 01:10:38 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 E0FBF481648 for ; Thu, 6 Aug 2026 14:39:14 +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=1786027156; cv=none; b=tXVqfqZygb3x+R6hBVrKTUHHppRxzm+i3MiV1uVjiu+4TW6PBsGNHo2k4mKulcMY5f5wmCe1bFTPz4/EoBIKzlTwll3hSmTmWKgxGhOmcpSY8KoopcANSJUWlOL6/yYMgUiCahvTbB4sS2MhpFa8B3mHU6XIRMci9LUWmF/ru+c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786027156; c=relaxed/simple; bh=8FCfjPBXOgeSOCE9oMNfyVBDBWfxZtU2M5HiiMnr1BI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rtf46nNE7KkVPTcf6dpT5Ob6okOResa0B5bgqOaRb4f0M16y2a7kYi8HDYpdNvpO3UKkjIjdCuHtQHz3DXWXsQZlXqm4RwtT/GE6t9EXsKsENaTboUUTnOJV5BBmBR9iz2gYxWiQ0tbryV1GLYlZ1LIJneghJTL1a7bjr/LGY6I= 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=QiS/BjLC; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=KxpK1nvC; 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="QiS/BjLC"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="KxpK1nvC" 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 6769niXq1625877 for ; Thu, 6 Aug 2026 14:39:14 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= r+r+249nF6a2qrtXG3fwd0XKqhJprD40LYapJr4TU6o=; b=QiS/BjLC/B/ZEeVX leRVFOHaAJqMLNNOkf2Jz8C6MGNXVKN5Vf/0NWYe41lq8NiS1jJPAV3YsY3ZOUNs 828C4l6IgPKiuUH9sVJXPZUZ085ZneGDG+p2OKNlHwsdG+fW41bKbCeQLr8hHJc3 lKivAWR5nCfpgOhkRRH8A155NsVkGDA/oChU9txG0xMG/y0xq5MBWRurXXoTRIEF kyXUAFfO20Y98sbh8K3eRAvfb9xHes6C/yLXmWyqSRdhSJjVT6ki5NH3cBDLNPAl 1w42y4alJ7hBsZ6gbmV5NPkMqY0IRRSxlgO9CsWyiGJa9+7r5nAehiEXA6VjAla5 noHa+Q== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fvntnhxs6-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 06 Aug 2026 14:39:13 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-51bfe3fa93bso24627121cf.2 for ; Thu, 06 Aug 2026 07:39:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786027151; x=1786631951; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=r+r+249nF6a2qrtXG3fwd0XKqhJprD40LYapJr4TU6o=; b=KxpK1nvC3udKWFMjX710IHO95Mh9MzDbIabdjk6y0Q2dCuhRR7hfOuhRVLcHlEccTS BkrCXMlwjAU25hvgcXXHGX5BuTT5fGSewTdRnefx18uZPHUJY//Yp2KihXKV2E0c3Iwt nf8JRNW80jlgp7KO+wfGjjwKu8JvFV4K+5rZdsY3Qka87QPbDM1iwgb5D9AjHBt5wv+T ztENrCn2BHzrnS8aWj5Iz7U25u5PYRhV2MpAB51UNe4x3Rq52dLRqIvAXW7n/X84bqdd 1FOH4BIKLbTknbqJl25Z3DKLvuIIy4MssuKX7OXvDI0SiOXrpr4CnME7uoUukUEd6AW4 WtgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786027151; x=1786631951; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=r+r+249nF6a2qrtXG3fwd0XKqhJprD40LYapJr4TU6o=; b=O4Zz+9O3UiNExl1npp014sb7L3RooFvtZATZ2q68zIWLxZs8jjwxRvx61B9NZYkggI W/gcSMeNZahhlXL9whZPbwQDDmukBP/Ej1+SenA9qfVncQn2OqMwKJKK9a+Lj1JOZH/J YfHeitoAsMlJpy+PJxK/QQrJLiYuANt78OPmRIwCKabyLu6byXN6vvOAiQnFhw/Dftmt TZHJzvqhIDICOflJIAVXpAzCiJRY9UG+3BFlCztAeVWfp08CDPcNW+whN6towwkCASiW qpEIY2TPbXZLvKOQhqwYv9ZpU++OcdC1uuRvBqPSs4gEW304w3MRSoFG6PEUbDnq7tYi eQRg== X-Forwarded-Encrypted: i=1; AHgh+Rr4bMkyD7tY7J4gYjVRnNhskuNsmG/d6sBAH10CkfNxhdltESTo63JVnCudDkg9HJKU3iXC5Ec143vN6Vw=@vger.kernel.org X-Gm-Message-State: AOJu0YxmLxZNvme0tAo9K9HEOyp+58vMOb7uS6pv+jGLAxZ8Kzmcx157 dhmaBRTD300/88rbpcPXPB6I/A69dvop0JkxvQotL5ZS/39QBSw82geyGAzO6hW1S3Gf53oV+Px Bl5POfa4kI68ZEEz82O6Uv8vFStXZrCr6UUK+dYllJGqEQG/04f0o/Q7riLpjJ3KODao= X-Gm-Gg: AR+sD11XC4qp1bm3LtptG4wOJ4s2wE37IYj8FzwrCm+ohQTkRmxljKXQdI/gq6Tu0kL gV5F0H5z7FUVq0V7VIjnIorzE9LzQwKtUKh1ai/IbfK57n3EAAPZt7Y/uo++kxoX3Zy/wr4MvoS BVJTT+ryREsvBlxKIs9jU3QA/B1OnQEFpmltfVzLmXLvZRv0EnqEsG/s5VGQ2i4YFJTApauIAWK tLcTcYGsbRu+Vny6NtD/gn8n2VKnHWv5A+Aa/P8tFz8Z55f5YGh3MJmElsVIg92SAQlQ8iV+L6P YRYjOdl9M3dqLutBNygldTxYUZAeHf7OE6kImGh2Z2pIacl7p9uVX1XvZU8lDjtRWdZ6IOjPvvQ IWyUcBPne7gEQKjh+/nGbg+imE8i8FysxP2+NIY9EKyoS1PO9Ve1uvsFeUJ3llsenvZSOh6rM5U MfJKwNvhsFMu5uiJ+daheRJm1PkCMt5trWkrpH8zfumRUCVe6spA== X-Received: by 2002:a05:622a:998:b0:51f:20e1:137f with SMTP id d75a77b69052e-52ce6035ce7mr175976451cf.19.1786027151219; Thu, 06 Aug 2026 07:39:11 -0700 (PDT) X-Received: by 2002:a05:622a:998:b0:51f:20e1:137f with SMTP id d75a77b69052e-52ce6035ce7mr175975181cf.19.1786027150660; Thu, 06 Aug 2026 07:39:10 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([90.85.108.51]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2036276e58sm270552166b.28.2026.08.06.07.39.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Aug 2026 07:39:09 -0700 (PDT) From: Loic Poulain Date: Thu, 06 Aug 2026 16:38:42 +0200 Subject: [PATCH v10 09/10] 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: <20260806-block-as-nvmem-v10-9-be598b2a5606@oss.qualcomm.com> References: <20260806-block-as-nvmem-v10-0-be598b2a5606@oss.qualcomm.com> In-Reply-To: <20260806-block-as-nvmem-v10-0-be598b2a5606@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 , Christian Marangi 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 , Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODA2MDExNCBTYWx0ZWRfXyOnVaUa7WYSv P9wzARbLhL+J+d+3t3ZbGQjYOxptp1Pxb01MHMG0dCuQ/HD6SoyvE4heXuB8Txmes8tZ6YSFZPz EKtHK/fHfrfHSJ3h2/oNCuvtBpaG46seKB+AIoQb9qyUGu8FNDkNO1Yd45pt0z6h4iGXRQcQZRs a9o3IH/QktuQN5LUjOUVy3zRaer3uufJAg0EM6ZAg+tXLcnwuIMYOEFYMe+36P7fI5GcT1/m03o 64nACwxaLd+9BdSXfnEX0zM0QUuZ6oJ+xWiC4/H/xfC+ubRH2/4GoaQ6TtRMJKGDQlkn0foFWon PI56lEvZIeUqI2Cvyii9V9PFAYhrcfPKAHVVSrmsDmZ5UtXoFTiMwzyMaziR8tTl/y+obUqVgQ6 s1Jwus52PcGhIUdzDqXPHurj48CUBg3HgIFR0R93RXj0SeCirzao751vxI2zrkswOF9XSKMeeMC EFqwCWb0FpRS2+/zbEA== X-Proofpoint-ORIG-GUID: V7zI6c77X36nxtmHZkdBP7_ZED9IUlkR X-Proofpoint-GUID: V7zI6c77X36nxtmHZkdBP7_ZED9IUlkR X-Authority-Analysis: v=2.4 cv=LpKiDHdc c=1 sm=1 tr=0 ts=6a749c91 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=JDRa4Jy4r6/BpSpxP2cCow==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=99fXo_IpyjsNTNVBUdkA:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwODA2MDExNCBTYWx0ZWRfX8d1juPHUpQ9b VvTzn+P/BCJVpFWH1aQ9qbAOUwSIdOD2cdpwk/Md7P2hHYJhpoe1pf9qqgzAuWHoRX0mnRMCvtm cukrBwsycJ+yJkpd4anWseur11nIceM= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-05_06,2026-08-05_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 lowpriorityscore=0 adultscore=0 bulkscore=0 spamscore=0 phishscore=0 priorityscore=1501 malwarescore=0 impostorscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608060114 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. Reviewed-by: Bartosz Golaszewski Signed-off-by: Loic Poulain --- 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 04ebe290bc784ea854ec7743bc753c3e41f556d3..06cb787b0559f3d712ec2b88d9e= 25a7d46fb00b3 100644 --- a/drivers/bluetooth/btqca.c +++ b/drivers/bluetooth/btqca.c @@ -723,8 +723,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 Fri Oct 2 01:10:38 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 C69A8480331 for ; Thu, 6 Aug 2026 14:39:17 +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=1786027159; cv=none; b=QRqNGj83Vpz6DnBNkmPczW3A/j8dcGdtSIh4i5+kzQP7B31FKgCQLUdMG9QXuKkHE0yNvP41iHetpaIlU1IddldcH4D6nKKMh56KLn1Gvgkf324v/rFZyZF+HHVPz3cQhbkiLsdUHWYVXtHnziOHx0k1gh5jS9VFXc+71XE3iFs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786027159; c=relaxed/simple; bh=WoEsQQXEHcp3Z4NugaMqCjtqYrDzpmWHIggHogkIi2k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gs8wYVNRLoEI6z+nZIU/DW9kG6N9Qs7OmGHYibeardNIf2g8iJy4i3POROlcOBCcy7ZET7bTjsqC0+AYf9wEKaX/Z8UVPmg7SiD0C6ANe+aNvW6gkPdeGvGZAlqnrSWNomVeGTB1P+5MY+D1vUyU1edJP2DVPRrMi5m7uYvjFy4= 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=dMUkAwfR; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Tnr+iYDY; 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="dMUkAwfR"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Tnr+iYDY" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6769oGNA2106070 for ; Thu, 6 Aug 2026 14:39:17 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= Rc77KXcNF3bATkg/J0Hcy+3fqulP+axrKTzQn99rjZ0=; b=dMUkAwfRDd94ITcJ ThymBVvr/uAsEmhYltnLdBgOLtGCsM13SpU7I1R+KHqilUROU9paqQKO7XtDhetg PVBuBjYCGdqam8jYXxy5T/qiV040YQCsxhS8V8vB3mRVIEMRFD1a7zWxDwFDd5m+ sK9D1RK+Tyo5YQvG5VFtoS6aqFxRUjKyQhEIRIt9fVHW/zuCOoXKxpJmtDhgBncg ePMBEnGgV1mGvbRdQysHF6yLqNCKv6W3k/MIW5i/HPTF0aoWIZzQvwUrhJ9K5FnQ +qqM8x4p5DhndF1jJL0mKHQ+9Nw7DYmRDAS7S1GVjh2lH9CSBrg2cKAH4yoL/jNy CLLUpw== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fvq731kq9-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 06 Aug 2026 14:39:17 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51c01ff996dso25153611cf.2 for ; Thu, 06 Aug 2026 07:39:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786027154; x=1786631954; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Rc77KXcNF3bATkg/J0Hcy+3fqulP+axrKTzQn99rjZ0=; b=Tnr+iYDYkzUXcH3Gg/w4Yw928wlkOdJHjzUauMzjBEsa6NSoewCsOfDzQiGnNNQdA+ /78cPEVZafgfuaAh+Rb89r3gxmO6Ftr6Or/mrHHC951Z3H4646+yxiLg5BgDnNRB6f9i D7GOhSehre+ReyV5/gWEnjxm3/I5pRuAUkwGHsn1+AG2YzWT2LBB/1yZaZFDYcaqS4xs K1k1qHFRMxNFUNRN/FEZiTno5t3BZXQRnM5f6PCIqa7xkCV/k8w13wsY5mPqI5a/qW+9 1iFhIpge+ucLbh2pdhV0oDU7WdHUrpPTttWE+Oilhb62uzM6L8XCxYtZ7zU9hVGTcihw Ix0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786027154; x=1786631954; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=Rc77KXcNF3bATkg/J0Hcy+3fqulP+axrKTzQn99rjZ0=; b=B8k5YKssJF/us4/52apRAeBEEJwd0+AiclQubZJgjkvG0oZE48VsUA+73v0vL8a1zW hKjWJYBNn/kAxA+ZOQ12M4zTzz/v5dZcmdKY7V4Pbu+g/Kk9Ulesz42zbmQG22FsubE1 f7cAlfcANdZRb/MXHwBIIssWP1y5sG7bphbLt6tDniJPYN1rRS1D2iklHdVo5jWNAozq 04Ev+C5+MuwRzL4C8QSc8BYYDradYZIkaWRFHTYCKIAAQdkK//n04ODLxNXYXyu10Z9K NdNPzAmpywQv+JRuKtpykxO7Dh7ZfACaeE+5rvgjA7cGP7Tpqm0TpKm7QIW88eFtO+h/ Yjng== X-Forwarded-Encrypted: i=1; AHgh+RpIibD/15N34xzRXym8f3I6xEBwCfPggualJx5KbGw9tTZQaNXhXyWgefUDWm3xir9i8MYAqn38ohs3IBY=@vger.kernel.org X-Gm-Message-State: AOJu0YxU5t7p8Wsah9oChBXee9fZXi416hQ43m11VDp9U3POeplB2yVI QFHTpnjo3Oe7W/aFflvIiWA6DpCrPFfYXll59EUC/r3QCEK5azDifQ2sT4pNLnHYCeLZQkPagS7 27+05DtP9qeyw1ZTFgyG0iIsOyTKAbgV3pU8pOiLGwqqL/4i3ElImvauWIBagoRaRc14= X-Gm-Gg: AR+sD13UMPkqJqynfuGZkF+mcfinRY0GC+w+MNAktc2FF1S+U8zThAw6b4fIVeoU4uT DTQ0YVPl9nF6PWRRPJ/2Wd4/5Sn/ib8pkHfeO6bgj4GSKmDtzEZ605DQdZ+8ubMmvyq+Zzwhtwp 2/PBubNyKLRk5BCpMhkjvaZWdYxKp8tfhS4BKlwAxp5wGVy/8mX0eR76K0q7IfOCnXgTfIcm2cp 1bzblt/xKtWx09CvRiu6AvlaAyrcef5O4hxUAI42ufEALhkEGAbCoeql+PIqfYVX1ABWY40fBnl llADAOIH4lIrbzRYZUfR56Pl88GTh4M3H34xwx8Khu7mQMIbRg45UVvpqX0zNX/D5UN4ygoOJ25 CHcG1ofIIRxE3lT30SWN2omHhzEtOvNfnuG1TSjWnND8JjvbD5x3mLRm+Qrrr9wE2xKdyEutMPm iyOVb6nQtHJRvFloyRdGx9bSjfUOTKKDM7OSQdTH9NoKQDYP4aqQ== X-Received: by 2002:a05:622a:1448:b0:517:8f2e:5d97 with SMTP id d75a77b69052e-52ce60c07dcmr146321911cf.22.1786027153967; Thu, 06 Aug 2026 07:39:13 -0700 (PDT) X-Received: by 2002:a05:622a:1448:b0:517:8f2e:5d97 with SMTP id d75a77b69052e-52ce60c07dcmr146320971cf.22.1786027153456; Thu, 06 Aug 2026 07:39:13 -0700 (PDT) Received: from QCOM-eG0v1AUPpu.na.qualcomm.com ([90.85.108.51]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2036276e58sm270552166b.28.2026.08.06.07.39.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Aug 2026 07:39:12 -0700 (PDT) From: Loic Poulain Date: Thu, 06 Aug 2026 16:38:43 +0200 Subject: [PATCH v10 10/10] arm64: dts: qcom: arduino-imola: Add NVMEM layout for WiFi/BT 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: <20260806-block-as-nvmem-v10-10-be598b2a5606@oss.qualcomm.com> References: <20260806-block-as-nvmem-v10-0-be598b2a5606@oss.qualcomm.com> In-Reply-To: <20260806-block-as-nvmem-v10-0-be598b2a5606@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 , Christian Marangi 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 , Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODA2MDExNCBTYWx0ZWRfX2Kbqch+g1ETB YetnxLmCLj+U49oiX2lMs2VHhG/RUIjHR6Gs/OX50IzORRgGR0H3oNtpMTwF8foQTseMLjWe43C 5Tf2qk+lwnSHtuteD+BCO1KeAgIlPRBrp0+SZ82evbLeXvSzO3s2UDj2orKmj4u2oega78uUtgh MdkvcQC8/jXw859LG9h7ySTaAINF3tFiyroywyx7vtacs4IYMfS2IUARW1xTE8Vhb5+TzKEgfC/ sj+Ut8frITtKWyriJ3Ihdsza92sN7TH/dGN4xNZQk3zLCFhBWhsFRlU5GG0z6NZgDRkFDWN48bA vOi4reKD+WRnUkngV0TNnRxi9vav4DrEWYkQbqKa3BHjxmIu5dG2S+6S18RXz338OVfYX7BCFqo OXx9Iu/jDQb7Qi5GYHDt11Rx8SPlBy9Q6jm0dBqhJ5GxOYRELHXGWcYGfzdJcKyk2/AeVlu4AV/ FCpWb+l7k7syg6Zv0gw== X-Proofpoint-Spam-Info: AW1haW4tMjYwODA2MDExNCBTYWx0ZWRfX0TsZeXFg9Y94 Jyr41PX8kbwihsZ5nUShdTZPcO/J3WwWlmro5svf0Ww48XdLaqOjd12f4QE0n33HHiB3sGBZF3B KEMRK+qC1O3grpey3JQxF0SFzoJYLAQ= X-Authority-Analysis: v=2.4 cv=EeH4hvmC c=1 sm=1 tr=0 ts=6a749c95 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=JDRa4Jy4r6/BpSpxP2cCow==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=1BEw5LmG3YzgyHxDt7YA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-ORIG-GUID: 1ti9BqIAWPgnYUk2rzHtRkrSqf8aol8g X-Proofpoint-GUID: 1ti9BqIAWPgnYUk2rzHtRkrSqf8aol8g X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-05_06,2026-08-05_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 priorityscore=1501 suspectscore=0 adultscore=0 impostorscore=0 lowpriorityscore=0 spamscore=0 bulkscore=0 clxscore=1015 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608060114 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. Reviewed-by: Konrad Dybcio Reviewed-by: Bartosz Golaszewski Signed-off-by: Loic Poulain --- arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts | 32 ++++++++++++++++++= ++++ 1 file changed, 32 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..38839b8a361e76f6c1989924b16= 095b9d8815f66 100644 --- a/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts +++ b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts @@ -409,7 +409,33 @@ &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 { + 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 +538,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 +586,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