From nobody Sun May 24 23:31:54 2026 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (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 88ED12F363F; Wed, 20 May 2026 14:28:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779287284; cv=none; b=jYGwhXoqsepjFE63Zko1QDrN9wQty0D2GXWIlgXvEN1uwx4XJon2S/CCX9NPfo7u5xgmbjyzj38rfz0MXL1i3jBamOuEudc9g8qeZNFaB4fWuRiet7+lvt2EF2PABr3tcdSUH7/uPH0XfldI7ZE63iWwY5nqB3/FL6vvzCRf9fg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779287284; c=relaxed/simple; bh=au4xWUMxkrQnvU1u6IDdk6ABFJbLPtkw+ui4+y5bLec=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QaEY2yq652LRu/SJ1veMfBXLNQqlwIuvJvoC2+gRyduFAxnoTebx+SJ1WmMYxJE4xDbUOwuBhHImJHMPyUfgfevyojRSxict90U01hQYn4tFyvGghwujURUcMa1stHFiWKCfNVW/14ETnYwqxKLkCIGjgmFEsyNKAw8jb0wEdm0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=NcuEc5os; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=Wb3nK3Y+; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="NcuEc5os"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="Wb3nK3Y+" From: Gregor Herburger DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1779287278; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cM6T3JboLweSs+J5rPXUUdgy1Wperx1vRoU9nQtE5kk=; b=NcuEc5osdAfjz8c5aFfFsY8umChOIjYnsUKSsAGUBvK67JTppF4Sb44DUBJBbX/x8QOdC4 GP1vWVMIEAiaAMV7uzyTxCkb4Ww6ylkZO2o5ByPMGqP2up7wAmpmzoZoMrniJN1D7QUGEx ymA7tWjujqVldSFOy6FoEJxetATzJLiyOvmkJ2dmV6Kk5PoawMLQAek+aDRwjpS+y8cve2 E2EV9y/+BdeY801AcLzsaoCj5QwPSr/x3AUjoEBCEx2rr8BqlFVFw2uZP8qI9n41Ta1+eV pB0iLJNrgIUMzeueyPBOzH1PcVKItb3A646IlBNW/8RUe4WbwXot/VQmNA6eFw== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1779287278; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cM6T3JboLweSs+J5rPXUUdgy1Wperx1vRoU9nQtE5kk=; b=Wb3nK3Y+Kv27l/Xl2g/kmfvzfCEv7Ct5zl4MQ9nVHYftOQ2eBWxx8iWkdeRVR/QPSsj4LM ZqXoKEXec7MViCBg== Date: Wed, 20 May 2026 16:27:53 +0200 Subject: [PATCH v5 1/8] soc: bcm2835: Use IS_REACHABLE for function declaration 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: <20260520-rpi-otp-driver-v5-1-b26e5908eeac@linutronix.de> References: <20260520-rpi-otp-driver-v5-0-b26e5908eeac@linutronix.de> In-Reply-To: <20260520-rpi-otp-driver-v5-0-b26e5908eeac@linutronix.de> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list , Eric Anholt , Stefan Wahren , Srinivas Kandagatla , Kees Cook , "Gustavo A. R. Silva" , =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Cc: devicetree@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, Gregor Herburger X-Developer-Signature: v=1; a=ed25519-sha256; t=1779287277; l=1327; i=gregor.herburger@linutronix.de; s=20260226; h=from:subject:message-id; bh=au4xWUMxkrQnvU1u6IDdk6ABFJbLPtkw+ui4+y5bLec=; b=fcW6MCbGz5a3dOo1SLrPb00wjdsHCrmhO22EfAVfrMuIRE2/jZfyBmFX9zpHH7HH1iDSVSLM0 ynv2Mv3YtUNAraVhvyXd8GNweutT/mpp6VVswobWeJT2/w2eu495IqI X-Developer-Key: i=gregor.herburger@linutronix.de; a=ed25519; pk=u72Lv7+/lS5CC1hmSrb17lv/6CK7HBh4Lvz77PHA5LM= The drivers that depend on the RASPBERRYPI_FIRMWARE use depends on RASPBERRYPI_FIRMWARE || (COMPILE_TEST && !RASPBERRYPI_FIRMWARE) This should ensure that the driver is not compiled in when RASPBERRYPI_FIRMWARE is 'm' on COMPILE_TEST which leads to linker errors. The same can be achieved by using IS_REACHABLE in the raspberrypi-firmware header. This evaluates to false when invoked from built-in code. This way the Kconfig can be written as depends on RASPBERRYPI_FIRMWARE || COMPILE_TEST Which is a more readable variant. Signed-off-by: Gregor Herburger Reviewed-by: Thomas Wei=C3=9Fschuh --- include/soc/bcm2835/raspberrypi-firmware.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/soc/bcm2835/raspberrypi-firmware.h b/include/soc/bcm28= 35/raspberrypi-firmware.h index e1f87fbfe5542..eb33838e0cd10 100644 --- a/include/soc/bcm2835/raspberrypi-firmware.h +++ b/include/soc/bcm2835/raspberrypi-firmware.h @@ -174,7 +174,7 @@ struct rpi_firmware_clk_rate_request { .id =3D cpu_to_le32(_id), \ } =20 -#if IS_ENABLED(CONFIG_RASPBERRYPI_FIRMWARE) +#if IS_REACHABLE(CONFIG_RASPBERRYPI_FIRMWARE) int rpi_firmware_property(struct rpi_firmware *fw, u32 tag, void *data, size_t len); int rpi_firmware_property_list(struct rpi_firmware *fw, --=20 2.47.3 From nobody Sun May 24 23:31:54 2026 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (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 4EDA93EA958; Wed, 20 May 2026 14:28:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779287284; cv=none; b=Ppb60JLB9KWNv7L+CKvL0H3/j56d/ErqjrGXk8rGY8luib/RzaCsggfMu1Mn/mQRdQ5HAhhlkP+BkNHuKiuzaMIVP/R2VUJh8qCFH98llBDAflDbyVhPl9Of3iNBzPTYUunUZCsj7o2r5fOJbc6EQYL5CS4vgiNsOfuvhrLl5ew= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779287284; c=relaxed/simple; bh=1lpYj5pFLwL7UBmIPyOk1IxVfJCvdzB+umU9I4v0Q0I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SFt6onFL885GhDwiqfsEm5/AosGDg+RsG8X9W/Sd/5VdoHJgkssj7owL/z2cu+HxT12VnTShJdo0AeXjVcLXplXWQHfKxh1nNM3LGhPFDGE7ECnHqR1gwOxiAHwM7b2w/GSK15a4Mda4xZ2nOqk8+LYeLJbz/GvF3dz2pjremoc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=Ww8hfLdg; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=p6DVFKli; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="Ww8hfLdg"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="p6DVFKli" From: Gregor Herburger DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1779287279; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=om+KGVXb1v83gsKZbVoHyS3YW/veq0SaXYYsGEnL8tE=; b=Ww8hfLdg1WrnrWSZ0GSDdRKcsGO0FjkmzA68x8417AphntwNQ95/Ic0A7e7BD28qxOUQ7u USNfyHSDD18+2C2YhkUefphFm2qV3ctOessGUK3SaBgrt+rFWCEQXs0ZHzf2bBjDQkD9YG Tba4lZLBg7J6DpXACIT+3RLGn+CEIsYtHoYdVZDEr8tu4qYZbbbzFlvclluZWVH7P1bPDL 66wNjrreKbmlxcKcmvKBiUPZQoy7ireSpkmzmzqyw6zwn8Pctabkp9FnpGkmnTs0VjyM7s q5mytU5tsXNaphP5Noegyt1ELHiPdVTmK/ldR9zZjf1vVpe9maDZO2RPSIAOWQ== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1779287279; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=om+KGVXb1v83gsKZbVoHyS3YW/veq0SaXYYsGEnL8tE=; b=p6DVFKliYYsgAURxBpaRYT7Hk5ua4GDGSRDqPXhpWcVsyOM9qh4PYu0ulWL2k8CsUp/hrv a23MVIQltojjbCAg== Date: Wed, 20 May 2026 16:27:54 +0200 Subject: [PATCH v5 2/8] nvmem: core: Enforce stride and alignment checks for nvmem_device functions 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: <20260520-rpi-otp-driver-v5-2-b26e5908eeac@linutronix.de> References: <20260520-rpi-otp-driver-v5-0-b26e5908eeac@linutronix.de> In-Reply-To: <20260520-rpi-otp-driver-v5-0-b26e5908eeac@linutronix.de> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list , Eric Anholt , Stefan Wahren , Srinivas Kandagatla , Kees Cook , "Gustavo A. R. Silva" , =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Cc: devicetree@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, Gregor Herburger X-Developer-Signature: v=1; a=ed25519-sha256; t=1779287277; l=1341; i=gregor.herburger@linutronix.de; s=20260226; h=from:subject:message-id; bh=1lpYj5pFLwL7UBmIPyOk1IxVfJCvdzB+umU9I4v0Q0I=; b=sTbqCOrVZ0mMIXlIVQA+XvK13l3B8jyW2pPgQhTSJCm8e9jmGMtZl7stobEtbbPVN1Qw9PhdU fK6ydnW4bwvDm+bUkWqPoZ+Em/CHqTufAuxDmzVvqPGS4pFT1qDpaHv X-Developer-Key: i=gregor.herburger@linutronix.de; a=ed25519; pk=u72Lv7+/lS5CC1hmSrb17lv/6CK7HBh4Lvz77PHA5LM= The stride and word_size attributes in the nvmem_config struct are currently only used when reading/writing through sysfs functions bin_attr_nvmem_read/bin_attr_nvmem_write and in the nvmem_cell api. Reads and writes with nvmem_device_write/nvmem_device_read still allow unaligned access. Add a check to these functions to enforce word_size and stride_length aligned reads and writes. Signed-off-by: Gregor Herburger Reviewed-by: Thomas Wei=C3=9Fschuh --- drivers/nvmem/core.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c index 311cb2e5a5c02..6b313f63d07ef 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -2068,6 +2068,12 @@ int nvmem_device_read(struct nvmem_device *nvmem, if (!nvmem) return -EINVAL; =20 + if (!IS_ALIGNED(offset, nvmem->stride)) + return -EINVAL; + + if (!IS_ALIGNED(bytes, nvmem->word_size)) + return -EINVAL; + rc =3D nvmem_reg_read(nvmem, offset, buf, bytes); =20 if (rc) @@ -2096,6 +2102,12 @@ int nvmem_device_write(struct nvmem_device *nvmem, if (!nvmem) return -EINVAL; =20 + if (!IS_ALIGNED(offset, nvmem->stride)) + return -EINVAL; + + if (!IS_ALIGNED(bytes, nvmem->word_size)) + return -EINVAL; + rc =3D nvmem_reg_write(nvmem, offset, buf, bytes); =20 if (rc) --=20 2.47.3 From nobody Sun May 24 23:31:54 2026 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (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 4FD453EAC65; Wed, 20 May 2026 14:28:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779287285; cv=none; b=qevqd1cBqjPL4O8zW1WUeWOkQ9EtYbCX+K4kB4rPpY4hw1YcpVeKhOfCWYkhU9UAib+waHJyQKVPnu3OCuRg9rO+qHaOdKlM3fWS+zjO0XGV0Cs/gcz/iwv9leM+I2QNUIb6BVRp/lzhmK0eKadmy60P5kBVOUOUkEIRdJQiDVQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779287285; c=relaxed/simple; bh=qD30315sFDKvQ1zxeTxTP4/+d92pYx/4B3/nMfkSHxk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YoFCsRn3e9h0HAa9Feciz5qRBLLmJsR36vCqrZoQ35xghgZbA06t4q9WQ5vWvGk3/7uQxiJonff0up9LNYLDoQ4OP1dEIHzLnViArCpCjDxDouASxf2bnO/88Wfy8pJLxapmEE6RU4o5S5vcpleOT3ct/gfWz7sQ/KSOXw7rWjA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=oNTElRVC; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=Acyq32Sx; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="oNTElRVC"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="Acyq32Sx" From: Gregor Herburger DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1779287279; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=e571YxZZj8gyO1yRbMno9e5ALDgboYntuW/WsLJaO3E=; b=oNTElRVCn3Zo5y9+5yf4vVdXM7p28ceyqblaAkoqqRKRWeifhf0OOI8fcUug2OIi4Sx9HO UeT6L45PEwkisezXk5zIvC2mfOu35S6qPc0ZPfN44TI5US6enPFOwlQSQYDK8y9qrWxp91 f9zq3T9me1/tgXEPktZFXONFZ04Y3uRVfHwyK0wzeB5QOmLe7INbukE8WKqRDH5FXY/5vF oaVsw9cu8puhqZ00PVmdWZBPadAUdllZN/AOJjDbKDsG2PWrbsCvxIO1k9pbn/WMnK5Avc T00Pa/f7g91VNwnWc7Nyln35U4hqFUwWVurAuyYZhGONH/9Duxwf9H+3b3JMpw== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1779287279; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=e571YxZZj8gyO1yRbMno9e5ALDgboYntuW/WsLJaO3E=; b=Acyq32SxloBcxK4bsKM+fb4Ko1aUu3gA2mDrufqE2XQ5/e6941jIafOWJDaMXbkf27zdkz Sn/XIttrLCIVdJDA== Date: Wed, 20 May 2026 16:27:55 +0200 Subject: [PATCH v5 3/8] dt-bindings: raspberrypi,bcm2835-firmware: Add bcm2712-firmware compatible 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: <20260520-rpi-otp-driver-v5-3-b26e5908eeac@linutronix.de> References: <20260520-rpi-otp-driver-v5-0-b26e5908eeac@linutronix.de> In-Reply-To: <20260520-rpi-otp-driver-v5-0-b26e5908eeac@linutronix.de> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list , Eric Anholt , Stefan Wahren , Srinivas Kandagatla , Kees Cook , "Gustavo A. R. Silva" , =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Cc: devicetree@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, Conor Dooley , Gregor Herburger X-Developer-Signature: v=1; a=ed25519-sha256; t=1779287277; l=1250; i=gregor.herburger@linutronix.de; s=20260226; h=from:subject:message-id; bh=qD30315sFDKvQ1zxeTxTP4/+d92pYx/4B3/nMfkSHxk=; b=pP3sMH+GfIvQZo2Z/qoVDeXOtg9aLy3uuiGqYKTpnSEZoapRWg2ersIzCur+Aiiw2MzW0iqYj Pj/G4Vir2NeCCDbFP25O4ry8cPggf3pk07gQXf32gLyOj3oqcEfEhEL X-Developer-Key: i=gregor.herburger@linutronix.de; a=ed25519; pk=u72Lv7+/lS5CC1hmSrb17lv/6CK7HBh4Lvz77PHA5LM= Add a compatible string for the bcm2712 firmware. The bcm2712-firmware is compatible with the bcm2835-firmware so allow the bcm2835-firmware as fallback. Acked-by: Conor Dooley Signed-off-by: Gregor Herburger --- .../bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml | 11 +++++++= +--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-= firmware.yaml b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm28= 35-firmware.yaml index 983ea80eaec97..a3a5243b91706 100644 --- a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmwar= e.yaml +++ b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmwar= e.yaml @@ -21,9 +21,14 @@ select: =20 properties: compatible: - items: - - const: raspberrypi,bcm2835-firmware - - const: simple-mfd + oneOf: + - items: + - const: raspberrypi,bcm2835-firmware + - const: simple-mfd + - items: + - const: raspberrypi,bcm2712-firmware + - const: raspberrypi,bcm2835-firmware + - const: simple-mfd =20 mboxes: maxItems: 1 --=20 2.47.3 From nobody Sun May 24 23:31:54 2026 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (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 CF4653E9C31; Wed, 20 May 2026 14:28:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779287284; cv=none; b=F1/gbvUV9ZUVZsBt83WAl/rUzkNpPYzXXAVILSEYFKi42mi3ToTUABAlr1IO/XNByBmMpAq58y8qwAT3G36o/A7sp7Ucozq785T7Bf4tI/zsUHuup8wQ53npiPjRub8c7AWtyuwcHEoRJJ/flvrj5gFki9218s3GC2OkwTup4Dw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779287284; c=relaxed/simple; bh=44vsq62BXmxm5DD/Mf45AeUdUhlngPNqkasmsMcLuAY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=E/3GJ5t4+jzVz0X0NpVXKw53pObLNqpDDlNs8C2NVoZdfC0CQQ+YuF+1QCoagH8+SsVz42HTB+yTANjd6c7qY3MJoA/ncEsVXnsKJ4juTxxVqzvUPK3U0UTldleydMEMgahH6nlIw5oRkkNQq95dnZIJTX1kud1ubuOA4cd5CCA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=smNHlfK8; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=AomRJzVb; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="smNHlfK8"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="AomRJzVb" From: Gregor Herburger DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1779287279; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=G1YNHb3LOG+O3mj3dxg0peIN/0mukMKiCJXG9hO5Z9g=; b=smNHlfK80kalgenYuYXyvDa6qlc/QFmboKRlFCwVeJ8UIaR9HsoYbGH4MV613gyHG7oBVL xM6v0iBR8+FV/SQmvMjY+0Aw9ACNQLGNTlTtLsevcINzM9tQukXwbnjVWIaVLK9HdFHuSk qgDBtD1kPEi6h/psDOX2fdGwEosHWVLEOsUUMfAey7Nl7FJl4g0jwlX2XzT5TzLkRGp4Pp YReok2WRZP275NpgO+5hjWLI3KaWv+WLXuS42BHVMsOxlrKF8ybeJVtiZOz9flB2QxmDWj PSNV5YUTCM720FuRZznTq+nKzAxWvu1xZZ80ipJiX1hrRenO2VYGD4w66+ZA6A== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1779287279; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=G1YNHb3LOG+O3mj3dxg0peIN/0mukMKiCJXG9hO5Z9g=; b=AomRJzVboxRhCO6c9bS3jZTfeW+diHLJrYuhb1xJHhm+wvmaN7yqIuLNz0NILAZORyMERd IqSnVaBivP/83AAQ== Date: Wed, 20 May 2026 16:27:56 +0200 Subject: [PATCH v5 4/8] nvmem: Add the Raspberry Pi OTP driver 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: <20260520-rpi-otp-driver-v5-4-b26e5908eeac@linutronix.de> References: <20260520-rpi-otp-driver-v5-0-b26e5908eeac@linutronix.de> In-Reply-To: <20260520-rpi-otp-driver-v5-0-b26e5908eeac@linutronix.de> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list , Eric Anholt , Stefan Wahren , Srinivas Kandagatla , Kees Cook , "Gustavo A. R. Silva" , =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Cc: devicetree@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, Gregor Herburger X-Developer-Signature: v=1; a=ed25519-sha256; t=1779287277; l=6300; i=gregor.herburger@linutronix.de; s=20260226; h=from:subject:message-id; bh=44vsq62BXmxm5DD/Mf45AeUdUhlngPNqkasmsMcLuAY=; b=cSY4n0owFSg+WnJ0SNZYWEtjzB9du6p8BHXCvhH22lwxJvj3WrvUsuE3nxN1j0yu1VuVNKwQB OQRdgr49HReBpIRlxcbUStyGv0B/7FIqHAM0EvkbBZoNlid8mUfef/d X-Developer-Key: i=gregor.herburger@linutronix.de; a=ed25519; pk=u72Lv7+/lS5CC1hmSrb17lv/6CK7HBh4Lvz77PHA5LM= Raspberry Pis have OTP registers which can be accessed through the videocore firmware. Add a nvmem driver to support these OTP registers. Reviewed-by: Stefan Wahren Signed-off-by: Gregor Herburger Reviewed-by: Thomas Wei=C3=9Fschuh --- drivers/nvmem/Kconfig | 11 +++ drivers/nvmem/Makefile | 1 + drivers/nvmem/raspberrypi-otp.c | 130 +++++++++++++++++++++++++= ++++ include/soc/bcm2835/raspberrypi-firmware.h | 10 +++ 4 files changed, 152 insertions(+) diff --git a/drivers/nvmem/Kconfig b/drivers/nvmem/Kconfig index 74ddbd0f79b0e..a1922b48d0c2e 100644 --- a/drivers/nvmem/Kconfig +++ b/drivers/nvmem/Kconfig @@ -483,4 +483,15 @@ config NVMEM_QORIQ_EFUSE This driver can also be built as a module. If so, the module will be called nvmem_qoriq_efuse. =20 +config NVMEM_RASPBERRYPI_OTP + tristate "Raspberry Pi OTP support" + depends on RASPBERRYPI_FIRMWARE || COMPILE_TEST + help + This driver provides access to the Raspberry Pi OTP memory via the + nvmem subsystem. The driver supports the customer OTP as well as the + device specific private key OTP (BCM2712 only). + + This driver can also be built as a module. If so, the module + will be called raspberrypi-otp. + endif diff --git a/drivers/nvmem/Makefile b/drivers/nvmem/Makefile index 7252b8ec88d46..8ca2095e068f3 100644 --- a/drivers/nvmem/Makefile +++ b/drivers/nvmem/Makefile @@ -95,3 +95,4 @@ obj-$(CONFIG_NVMEM_ZYNQMP) +=3D nvmem_zynqmp_nvmem.o nvmem_zynqmp_nvmem-y :=3D zynqmp_nvmem.o obj-$(CONFIG_NVMEM_QORIQ_EFUSE) +=3D nvmem-qoriq-efuse.o nvmem-qoriq-efuse-y :=3D qoriq-efuse.o +obj-$(CONFIG_NVMEM_RASPBERRYPI_OTP) +=3D raspberrypi-otp.o diff --git a/drivers/nvmem/raspberrypi-otp.c b/drivers/nvmem/raspberrypi-ot= p.c new file mode 100644 index 0000000000000..3c24548267219 --- /dev/null +++ b/drivers/nvmem/raspberrypi-otp.c @@ -0,0 +1,130 @@ +// SPDX-License-Identifier: GPL-2.0-only + +#include +#include +#include +#include +#include +#include + +struct rpi_otp_priv { + struct rpi_firmware *fw; + u32 read_tag; + u32 write_tag; +}; + +struct rpi_otp_header { + __le32 start; + __le32 count; + __le32 data[] __counted_by_le(count); +}; + +static int rpi_otp_read(void *context, unsigned int offset, void *buf, siz= e_t bytes) +{ + struct rpi_otp_priv *priv =3D context; + struct rpi_otp_header *fwbuf; + u32 count; + int ret; + + count =3D bytes / 4; + + fwbuf =3D kzalloc(struct_size(fwbuf, data, count), GFP_KERNEL); + if (!fwbuf) + return -ENOMEM; + + fwbuf->start =3D cpu_to_le32(offset / 4); + fwbuf->count =3D cpu_to_le32(count); + + ret =3D rpi_firmware_property(priv->fw, priv->read_tag, fwbuf, + sizeof(struct rpi_otp_header) + bytes); + if (ret) + goto out; + + memcpy(buf, fwbuf->data, bytes); + +out: + kfree(fwbuf); + return ret; +} + +static int rpi_otp_write(void *context, unsigned int offset, void *val, si= ze_t bytes) +{ + struct rpi_otp_priv *priv =3D context; + struct rpi_otp_header *fwbuf; + u32 count; + int ret; + + count =3D bytes / 4; + + fwbuf =3D kzalloc(struct_size(fwbuf, data, count), GFP_KERNEL); + if (!fwbuf) + return -ENOMEM; + + fwbuf->start =3D cpu_to_le32(offset / 4); + fwbuf->count =3D cpu_to_le32(count); + memcpy(fwbuf->data, val, bytes); + + ret =3D rpi_firmware_property(priv->fw, priv->write_tag, fwbuf, + sizeof(struct rpi_otp_header) + bytes); + + kfree(fwbuf); + return ret; +} + +static int rpi_otp_probe(struct platform_device *pdev) +{ + struct device *dev =3D &pdev->dev; + struct nvmem_device *nvmem; + struct rpi_otp_priv *priv; + const struct rpi_otp_driver_data *data; + struct nvmem_config config =3D { + .read_only =3D false, + .word_size =3D 4, + .stride =3D 4, + .reg_read =3D rpi_otp_read, + .reg_write =3D rpi_otp_write, + .id =3D NVMEM_DEVID_NONE, + }; + + data =3D dev_get_platdata(dev); + if (!data) + return -ENODEV; + + priv =3D devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + + priv->fw =3D dev_get_drvdata(dev->parent); + priv->read_tag =3D data->read_tag; + priv->write_tag =3D data->write_tag; + config.dev =3D dev; + config.priv =3D priv; + config.name =3D data->name; + config.size =3D data->size; + config.root_only =3D data->root_only; + + nvmem =3D devm_nvmem_register(dev, &config); + if (IS_ERR(nvmem)) + return dev_err_probe(dev, PTR_ERR(nvmem), "error registering nvmem confi= g\n"); + + return 0; +} + +static const struct platform_device_id raspberrypi_otp_id[] =3D { + { "raspberrypi-otp" }, + {}, +}; +MODULE_DEVICE_TABLE(platform, raspberrypi_otp_id); + +static struct platform_driver raspberrypi_otp_driver =3D { + .probe =3D rpi_otp_probe, + .driver =3D { + .name =3D "raspberrypi-otp", + }, + .id_table =3D raspberrypi_otp_id, +}; +module_platform_driver(raspberrypi_otp_driver); + +MODULE_AUTHOR("Gregor Herburger "); +MODULE_DESCRIPTION("Raspberry Pi OTP driver"); +MODULE_LICENSE("GPL"); diff --git a/include/soc/bcm2835/raspberrypi-firmware.h b/include/soc/bcm28= 35/raspberrypi-firmware.h index eb33838e0cd10..1e5e5f7e378d0 100644 --- a/include/soc/bcm2835/raspberrypi-firmware.h +++ b/include/soc/bcm2835/raspberrypi-firmware.h @@ -92,6 +92,8 @@ enum rpi_firmware_property_tag { RPI_FIRMWARE_SET_POE_HAT_VAL =3D 0x00030050, RPI_FIRMWARE_NOTIFY_XHCI_RESET =3D 0x00030058, RPI_FIRMWARE_NOTIFY_DISPLAY_DONE =3D 0x00030066, + RPI_FIRMWARE_GET_PRIVATE_OTP =3D 0x00030081, + RPI_FIRMWARE_SET_PRIVATE_OTP =3D 0x00038081, =20 /* Dispmanx TAGS */ RPI_FIRMWARE_FRAMEBUFFER_ALLOCATE =3D 0x00040001, @@ -174,6 +176,14 @@ struct rpi_firmware_clk_rate_request { .id =3D cpu_to_le32(_id), \ } =20 +struct rpi_otp_driver_data { + const char *name; + u32 read_tag; + u32 write_tag; + int size; + bool root_only; +}; + #if IS_REACHABLE(CONFIG_RASPBERRYPI_FIRMWARE) int rpi_firmware_property(struct rpi_firmware *fw, u32 tag, void *data, size_t len); --=20 2.47.3 From nobody Sun May 24 23:31:54 2026 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (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 A77743ECBF1; Wed, 20 May 2026 14:28:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779287291; cv=none; b=E9jLeKBpjCHCmV+H0rU1JxVnU7ZLA65qI+f0eBcUDqXBgadY9nhr225aIn3s+5FgZ6RUTXvmG+vvggjYWqd9aHfVW7O4/7I+BwTpXpI/6wSS5vdhAKclLsrHjSOEDaDB6CQXIWrPf8NKweCRB8IKnIH0ZoqlnhX2jYmpEwQQWLE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779287291; c=relaxed/simple; bh=CDIVDhOk4ON9KWuQ43DgtrVFkocDXkewtwVp7vh7Kpc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bTUPUqpCfV31W1t4Z9qmh3+GeKVzC8u4pHHV3qv4P4EKmCPWSyBSZ3Jwgp3cnHoC3Yb/VkkueO17Hm9HdSyErJtxRfszzBRdlhyF1XJCzcp1/1QuZNz6VxzVT8zg+hG3xWE121u+v4KlAUsMexuLM7tdItxvVuxGhO+Bp+OX0+E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=GYB0tIzW; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=o0QxCQjW; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="GYB0tIzW"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="o0QxCQjW" From: Gregor Herburger DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1779287280; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=o6mdhsvI4hIi3tPHrJUT1ybE/u6JolVxG1/ueikfamc=; b=GYB0tIzWpg/Fs5m1h2a8rss7Kcqbo2eHr5HGgqaPgOW9ggBhlMD4i4AOOuogOxRB8awS8W SlOcCngBFsibKrLoBE+PxH1B99O4mgEqKj/+GqsT5t7XnZ8aOmmLuhgUVhgt+Xsjoqc2sp bCcEUL4hOMIneR6pzBBA3dkmsxFn1lP1CVsvBeIUOh13VrwB6vJU6bwpOM18EmrJluFs+7 Kyeb5D5y3YlToKnxM0MBn7Y0ChXSaYpUDS1K/F6GBnQTKidLfwjGTL+aoA83HIKjXXLImT YWfBjBnD1MerNfm9HuN69Vyy045kyCuJWvl9mBXmSVYww6jtGdcCtxafpBTgsw== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1779287280; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=o6mdhsvI4hIi3tPHrJUT1ybE/u6JolVxG1/ueikfamc=; b=o0QxCQjWypGKGfgMG4238DslgLvt5pmq8bhe8fi5hio0QSQNq5f7rNRtcrSugdRYiBmTHM A2veLQJORB1f6eBg== Date: Wed, 20 May 2026 16:27:57 +0200 Subject: [PATCH v5 5/8] firmware: raspberrypi: register nvmem driver 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: <20260520-rpi-otp-driver-v5-5-b26e5908eeac@linutronix.de> References: <20260520-rpi-otp-driver-v5-0-b26e5908eeac@linutronix.de> In-Reply-To: <20260520-rpi-otp-driver-v5-0-b26e5908eeac@linutronix.de> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list , Eric Anholt , Stefan Wahren , Srinivas Kandagatla , Kees Cook , "Gustavo A. R. Silva" , =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Cc: devicetree@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, Gregor Herburger X-Developer-Signature: v=1; a=ed25519-sha256; t=1779287277; l=4265; i=gregor.herburger@linutronix.de; s=20260226; h=from:subject:message-id; bh=CDIVDhOk4ON9KWuQ43DgtrVFkocDXkewtwVp7vh7Kpc=; b=NCflzkagOX/cm7M1s9vNFHOnH/nJbCfz8oAxfY6EDN1t5NGrkFk5h67eA5dSuTuVp2YSEZRfh dWe8Y5zqA3NDxkyJiTsBJxEhH8AKFALczM/mGAYnRpZJ7JwQ6r0mDSK X-Developer-Key: i=gregor.herburger@linutronix.de; a=ed25519; pk=u72Lv7+/lS5CC1hmSrb17lv/6CK7HBh4Lvz77PHA5LM= The Raspberry Pi firmware exposes two regions with otp registers. The first region called "customer otp" is available on all Raspberry Pi models. The second is only available on the Raspberry Pi 5 (bcm2712). Signed-off-by: Gregor Herburger Reviewed-by: Thomas Wei=C3=9Fschuh --- drivers/firmware/raspberrypi.c | 59 ++++++++++++++++++++++++++= +++- include/soc/bcm2835/raspberrypi-firmware.h | 5 +++ 2 files changed, 63 insertions(+), 1 deletion(-) diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c index 0aa322e9a2e73..e24636feae0ea 100644 --- a/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c @@ -24,12 +24,15 @@ =20 static struct platform_device *rpi_hwmon; static struct platform_device *rpi_clk; +static struct platform_device *rpi_otp_customer; +static struct platform_device *rpi_otp_private; =20 struct rpi_firmware { struct mbox_client cl; struct mbox_chan *chan; /* The property channel. */ struct completion c; u32 enabled; + enum rpi_firmware_soc soc; =20 struct kref consumers; }; @@ -231,6 +234,47 @@ static void rpi_register_clk_driver(struct device *dev) -1, NULL, 0); } =20 +static const struct rpi_otp_driver_data rpi_otp_customer_data =3D { + .name =3D "rpi-otp-customer", + .read_tag =3D RPI_FIRMWARE_GET_CUSTOMER_OTP, + .write_tag =3D RPI_FIRMWARE_SET_CUSTOMER_OTP, + .size =3D 32, + .root_only =3D false, +}; + +static const struct rpi_otp_driver_data rpi_otp_private_data =3D { + .name =3D "rpi-otp-private", + .read_tag =3D RPI_FIRMWARE_GET_PRIVATE_OTP, + .write_tag =3D RPI_FIRMWARE_SET_PRIVATE_OTP, + .size =3D 32, + .root_only =3D true, +}; + +static void rpi_register_otp_driver(struct device *dev) +{ + struct rpi_firmware *fw =3D dev_get_drvdata(dev); + + rpi_otp_customer =3D platform_device_register_data(dev, "raspberrypi-otp", + PLATFORM_DEVID_AUTO, + &rpi_otp_customer_data, + sizeof(rpi_otp_customer_data)); + + if (IS_ERR(rpi_otp_customer)) + dev_err(dev, "Failed to register customer OTP device: %ld\n", + PTR_ERR(rpi_otp_customer)); + + if (fw->soc =3D=3D RPI_FIRMWARE_SOC_BCM2712) { + rpi_otp_private =3D platform_device_register_data(dev, "raspberrypi-otp", + PLATFORM_DEVID_AUTO, + &rpi_otp_private_data, + sizeof(rpi_otp_private_data)); + + if (IS_ERR(rpi_otp_private)) + dev_err(dev, "Failed to register private OTP device: %ld\n", + PTR_ERR(rpi_otp_private)); + } +} + unsigned int rpi_firmware_clk_get_max_rate(struct rpi_firmware *fw, unsign= ed int id) { struct rpi_firmware_clk_rate_request msg =3D @@ -299,12 +343,14 @@ static int rpi_firmware_probe(struct platform_device = *pdev) =20 init_completion(&fw->c); kref_init(&fw->consumers); + fw->soc =3D (uintptr_t)device_get_match_data(dev); =20 platform_set_drvdata(pdev, fw); =20 rpi_firmware_print_firmware_revision(fw); rpi_register_hwmon_driver(dev, fw); rpi_register_clk_driver(dev); + rpi_register_otp_driver(dev); =20 return 0; } @@ -327,12 +373,23 @@ static void rpi_firmware_remove(struct platform_devic= e *pdev) rpi_hwmon =3D NULL; platform_device_unregister(rpi_clk); rpi_clk =3D NULL; + platform_device_unregister(rpi_otp_customer); + rpi_otp_customer =3D NULL; + platform_device_unregister(rpi_otp_private); + rpi_otp_private =3D NULL; =20 rpi_firmware_put(fw); } =20 static const struct of_device_id rpi_firmware_of_match[] =3D { - { .compatible =3D "raspberrypi,bcm2835-firmware", }, + { + .compatible =3D "raspberrypi,bcm2835-firmware", + .data =3D (void *)RPI_FIRMWARE_SOC_BCM2835, + }, + { + .compatible =3D "raspberrypi,bcm2712-firmware", + .data =3D (void *)RPI_FIRMWARE_SOC_BCM2712, + }, {}, }; MODULE_DEVICE_TABLE(of, rpi_firmware_of_match); diff --git a/include/soc/bcm2835/raspberrypi-firmware.h b/include/soc/bcm28= 35/raspberrypi-firmware.h index 1e5e5f7e378d0..a4c94b85b7aa9 100644 --- a/include/soc/bcm2835/raspberrypi-firmware.h +++ b/include/soc/bcm2835/raspberrypi-firmware.h @@ -9,6 +9,11 @@ #include #include =20 +enum rpi_firmware_soc { + RPI_FIRMWARE_SOC_BCM2835, + RPI_FIRMWARE_SOC_BCM2712, +}; + struct rpi_firmware; =20 enum rpi_firmware_property_status { --=20 2.47.3 From nobody Sun May 24 23:31:54 2026 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (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 AA5993ED10F; Wed, 20 May 2026 14:28:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779287291; cv=none; b=U2iG2qvj6/9lloFjRnCProdcW4jFBiC59OLlsrYNnAYxTeC0MANa2HVxgoscWsJtw4MpfQW9GJDIegZXIfi40mBAsYQVJjYlEaYl48QPOK5FvZVHMluosYwCDxLu5s/v8co3lUdwR5Fs8uJ+u/S/XfdDeC/HXis28/ynUCcn70g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779287291; c=relaxed/simple; bh=dbam25rkEbN6V1TXAKuie6Ogixkx8DZyxneAOo0kOp4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Q/aD7ifJsR+HMACh2EtfqyZQkJYqWuLSLH7g472T/A27io+4u08V4nKuNJcoSFeisz29s6IZWe4yEz6LWpLui9t5T/y6TO4yymm6uer0AP3IP+hO3KNAiYXAlT9U7y2w3k9n/8I6idFWHv83aDrIBKfO5d5EDPNZtuncj29F+J0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=MWr+SSIf; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=w+VZkkti; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="MWr+SSIf"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="w+VZkkti" From: Gregor Herburger DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1779287280; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tfKfhvP2du3rzKmOjT1cyHP3hfhMUxY9/nQXytvqksg=; b=MWr+SSIfl/GFmT/lyU/BzH2ad/u65ERrep5CT3oMVi6HwjWJKZs4XNzxj4JH75HkpTb6xs xSlrAkTqzh23twmFC5NGENIUut62qfYavrlLXRgm1p5Gh8//QFEYt05YeR5cIrQ5+Jmuaq bA9x1KkfFGAFLgJ0hpl3xgZrNsd9vtF/n7AsWfALn4U8jbXfs6Qys/qP+2vAPdEhyU4zRZ JOGH/H7bNDQwnJPmLqhQ0S5WptG1BNwTyHwam6bEYlAFpT6aVJOfbQzTq4gpSRcMWkjsUp h9VpOx2VPlxQ5xyCJeRgKWlU7dZ8ltt7hXBRrMUh+7JbXzoqjt94+qFqpFvzwA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1779287280; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tfKfhvP2du3rzKmOjT1cyHP3hfhMUxY9/nQXytvqksg=; b=w+VZkktiOKTRQjuN5XIhcQOoyQ3PrV0gSyaOq1hUm8ttDeACSBUC8YwtqYtCkr6V3YjrI2 UqA2LTUvnICiS2AQ== Date: Wed, 20 May 2026 16:27:58 +0200 Subject: [PATCH v5 6/8] arm64: dts: broadcom: bcm2712: add raspberrypi,bcm2712-firmware compatible 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: <20260520-rpi-otp-driver-v5-6-b26e5908eeac@linutronix.de> References: <20260520-rpi-otp-driver-v5-0-b26e5908eeac@linutronix.de> In-Reply-To: <20260520-rpi-otp-driver-v5-0-b26e5908eeac@linutronix.de> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list , Eric Anholt , Stefan Wahren , Srinivas Kandagatla , Kees Cook , "Gustavo A. R. Silva" , =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Cc: devicetree@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, Gregor Herburger X-Developer-Signature: v=1; a=ed25519-sha256; t=1779287277; l=1201; i=gregor.herburger@linutronix.de; s=20260226; h=from:subject:message-id; bh=dbam25rkEbN6V1TXAKuie6Ogixkx8DZyxneAOo0kOp4=; b=wPR9/E5m55Q974JVz5+kmMCFpyfF14YKJSH08maRZ27KgCVFliDimNROL8st52w1b4IsJ3nig SuIEpiJ6heoD1OIEWL1NRxqdlRD324f/mQUcp1U2wrLEt6srKqFvNOT X-Developer-Key: i=gregor.herburger@linutronix.de; a=ed25519; pk=u72Lv7+/lS5CC1hmSrb17lv/6CK7HBh4Lvz77PHA5LM= The Raspberry Pi 5 (BCM2712) firmware exposes additional features such as the additional OTP register region called 'private OTP'. Add the raspberrypi,bcm2712-firmware compatible to allow drivers to distinguish this hardware variant while keeping raspberrypi,bcm2835-firmware as a fallback for backward compatibility with existing drivers. Reviewed-by: Stefan Wahren Signed-off-by: Gregor Herburger --- arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b-base.dtsi | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b-base.dtsi b/arch/= arm64/boot/dts/broadcom/bcm2712-rpi-5-b-base.dtsi index b7a6bc34ae1ab..4aa8ec7601b84 100644 --- a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b-base.dtsi +++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b-base.dtsi @@ -46,7 +46,9 @@ power_button: power-button { =20 firmware { firmware: rpi-firmware { - compatible =3D "raspberrypi,bcm2835-firmware", "simple-mfd"; + compatible =3D "raspberrypi,bcm2712-firmware", + "raspberrypi,bcm2835-firmware", + "simple-mfd"; =20 mboxes =3D <&mailbox>; =20 --=20 2.47.3 From nobody Sun May 24 23:31:54 2026 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (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 A78893ECBF3; Wed, 20 May 2026 14:28:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779287289; cv=none; b=b+exxzkMHy9pTzl8p78ehGs1ciclmNMDvqiz7n1Y4sIzUgJGw2rrmNIwKUBlRYqZY1xpLTWk3SCcPnZCO/ZIUYesbhZocRsQvxAJRSAXizzLiIhG2Gx+oO2T4J1e8nITm6QI4/N5FwfnNaf2FutT88ynEkkkTjUm05NXrUDRoHU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779287289; c=relaxed/simple; bh=EBbnYhbRo0d+VU8z2ObRFO0eA0vleo9MiChog9LUENM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AbnRYKflHJXxBXaAc7e/hVqunGPJ1D+d1DA+Trb4f4qrI2x3ZM+cwgkOaHOHN1I9/VtPEPola3h6+QnIOfeBlh5mB68kV3yBXlqeKIIIISF6/stRAGVAOvB5N8fTVZJvoNgoAOncFvYHMmgk1V0ueg8ymfgxHdPfkuZn6mxHVWQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=VB5SP8HA; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=93aGGazX; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="VB5SP8HA"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="93aGGazX" From: Gregor Herburger DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1779287281; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=VFalp3WAgAi9MOnT6TY3HIU2AWIehrVMXUG7sEmV9as=; b=VB5SP8HAKxJ/evHYz2oBI67bD4Q4B/8/aDknPDh+49ym5xX7SNNHixvJe7ajAITDtmfETf 4bHKhXZshsTgz9Ns6IJ1981+EsBMZkfLjU+QYQghpx4/t1lUYgI9gS3oGTxbl1u2fWNgOZ 5JdujQ+ACan9yrn4HJmmZ3315V0kmkD2LLHwTJWB5L8hU37iIIa1diKJla48vU+YPoc6ip TwwX9dbXbYd34n+VPOwkeaQSaJNBGYHR1l8WRcLoueXErJfiPoLCZSkUpBUPl4a7p4R/O6 g1cni8GYE7/Mz/JR/GrqG0ejWb8G0kPZwjc5LcTagHVu7d13XqMpKve4gcL/gw== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1779287281; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=VFalp3WAgAi9MOnT6TY3HIU2AWIehrVMXUG7sEmV9as=; b=93aGGazXPspBydCnunlRZnMXyodGbB+A0V7J/LIqRoA9uDbf97loaRRX9gnizP6M5ZQf6R Eq7EIdK9eLlqx2BQ== Date: Wed, 20 May 2026 16:27:59 +0200 Subject: [PATCH v5 7/8] dt-bindings: raspberrypi,bcm2835-firmware: Drop unnecessary select 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: <20260520-rpi-otp-driver-v5-7-b26e5908eeac@linutronix.de> References: <20260520-rpi-otp-driver-v5-0-b26e5908eeac@linutronix.de> In-Reply-To: <20260520-rpi-otp-driver-v5-0-b26e5908eeac@linutronix.de> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list , Eric Anholt , Stefan Wahren , Srinivas Kandagatla , Kees Cook , "Gustavo A. R. Silva" , =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Cc: devicetree@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, Conor Dooley , Gregor Herburger X-Developer-Signature: v=1; a=ed25519-sha256; t=1779287277; l=1155; i=gregor.herburger@linutronix.de; s=20260226; h=from:subject:message-id; bh=EBbnYhbRo0d+VU8z2ObRFO0eA0vleo9MiChog9LUENM=; b=WAZcB6652Pc0oNVqoPMUj/u63sly+g4T3QqAjDQ7gY96y3i2SFqOAkUh8POAmm6VgLYtcP4uh OlOxSnxvXl5CEgPETwSxHnx69opdnkzn3IQ67hNX5Dy9NfMVhKaQJA0 X-Developer-Key: i=gregor.herburger@linutronix.de; a=ed25519; pk=u72Lv7+/lS5CC1hmSrb17lv/6CK7HBh4Lvz77PHA5LM= The select schema is not necessary because the raspberrypi,bcm2835-firmware compatible is already matched by the compatible string values. The documentation says "Most bindings should not need select", so remove it. Acked-by: Conor Dooley Signed-off-by: Gregor Herburger --- .../bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml | 9 -----= ---- 1 file changed, 9 deletions(-) diff --git a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-= firmware.yaml b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm28= 35-firmware.yaml index a3a5243b91706..7cf9a6fa1e5be 100644 --- a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmwar= e.yaml +++ b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmwar= e.yaml @@ -10,15 +10,6 @@ maintainers: - Eric Anholt - Stefan Wahren =20 -select: - properties: - compatible: - contains: - const: raspberrypi,bcm2835-firmware - - required: - - compatible - properties: compatible: oneOf: --=20 2.47.3 From nobody Sun May 24 23:31:54 2026 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (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 A19CC3EAC87; Wed, 20 May 2026 14:28:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779287289; cv=none; b=PnOmCJiVW2c5nYD3+NX+frSfAP1hKC4CYt5rG5Es5FhAdIYo1i7Nc4u9zlco/NEK+GcAhKu8pwqMbmRhqFZqdfdk0BrDnpsRh6Sa0cw6isqbLWaRNiYMp8BeYJocFOGy5hCBleT7Rq3n4Vhl6b2sPLtIS5j0Zl+s111DXgRBtJs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779287289; c=relaxed/simple; bh=sxQGCV9Bg6Vz0Ph0j26x9ZfnN5Zu1SLYraSm4g3fJ2A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DeqOqkQZ7WiI92j4c1a/MD6o272G794wqI+jgs/6hBNwzP7yb080BE8A7hX+mieDu/D6a5b6C8trjqprY3Kd+NbmmF941heYEoN/stfGHr2o0K3AeRzoIqvZp4M4d2vagdpQwXXVG4nQnW98xnp/M9qTj8msRNZ0lv9o6orn8eY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=PIAvbeo2; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=p1QkB7/X; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="PIAvbeo2"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="p1QkB7/X" From: Gregor Herburger DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1779287281; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=oIg0eXBcEZ1WbS9twEGYQ0DKLtIZsDqQu16FcfETBjc=; b=PIAvbeo2slSRFIm4bEvFlsDU0yhrl2ye94bZe0Wevq1YcnHq0DfNzxtvpGfBmtnXwUL9ro W0FYEu6ndLKTOa3PyjjpebtbtMP9eCoFCNOne62NOtDutTXNoGaCydbPeyZPRJfPmCW0uO dUtKaOZ1+iGC0Xuhy6z1UvEYNyhMZeNJnCdZKhBdH1CqxkE3VJEXWAwJ/lAQxi7fgbCVHm 0srzRXqbUclykB47OioTatGvPbXmFMyizqhsT4Jzw4QobxJlGXseRQ7wULg2aN4LX0BC5k SnvD9ykRLVP27UrSu2xJKahLMRcnb2dx5JHWPjZ9mWxmqztIXBrXJV5IKKzVxw== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1779287281; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=oIg0eXBcEZ1WbS9twEGYQ0DKLtIZsDqQu16FcfETBjc=; b=p1QkB7/XhCF6iMMCWfcVcWhXyu3avpuT37ei72veI4LttLUgbS0gcIw1FZr16t4IjoHerk rcH5TLUafbkROzAA== Date: Wed, 20 May 2026 16:28:00 +0200 Subject: [PATCH v5 8/8] arm64: defconfig: Enable the raspberrypi otp driver as module 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: <20260520-rpi-otp-driver-v5-8-b26e5908eeac@linutronix.de> References: <20260520-rpi-otp-driver-v5-0-b26e5908eeac@linutronix.de> In-Reply-To: <20260520-rpi-otp-driver-v5-0-b26e5908eeac@linutronix.de> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Florian Fainelli , Ray Jui , Scott Branden , Broadcom internal kernel review list , Eric Anholt , Stefan Wahren , Srinivas Kandagatla , Kees Cook , "Gustavo A. R. Silva" , =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Cc: devicetree@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, Gregor Herburger X-Developer-Signature: v=1; a=ed25519-sha256; t=1779287277; l=689; i=gregor.herburger@linutronix.de; s=20260226; h=from:subject:message-id; bh=sxQGCV9Bg6Vz0Ph0j26x9ZfnN5Zu1SLYraSm4g3fJ2A=; b=O7JTUaJejsAQjydEYZ5zW7PCjzoARjdxd349iIcPWPsReeRusOdJ75TtqkMzzA55Z3QsDwONc xyLgJkuS2LqBD7vL5cJxVnM9eeURsAbhDN3v3dZ6LVhI88zsqMbrVox X-Developer-Key: i=gregor.herburger@linutronix.de; a=ed25519; pk=u72Lv7+/lS5CC1hmSrb17lv/6CK7HBh4Lvz77PHA5LM= Enable the newly add Raspberry Pi OTP driver as module to allow access to the otp registers. Signed-off-by: Gregor Herburger --- arch/arm64/configs/defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig index e44e83bc57812..3abb3ca34c708 100644 --- a/arch/arm64/configs/defconfig +++ b/arch/arm64/configs/defconfig @@ -1849,6 +1849,7 @@ CONFIG_NVMEM_SPMI_SDAM=3Dm CONFIG_NVMEM_SUNXI_SID=3Dy CONFIG_NVMEM_UNIPHIER_EFUSE=3Dy CONFIG_NVMEM_ZYNQMP=3Dm +CONFIG_NVMEM_RASPBERRYPI_OTP=3Dm CONFIG_FPGA=3Dy CONFIG_FPGA_MGR_ALTERA_CVP=3Dm CONFIG_FPGA_MGR_STRATIX10_SOC=3Dm --=20 2.47.3