From nobody Mon Jun 15 08:21:18 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 4430B358381; Fri, 8 May 2026 14:42:52 +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=1778251373; cv=none; b=BCcJYI+XLAJN2yOh69AARw0VehWrzZjPz4A8Ro5ttfgCmzZQuJgvw23Ad8K6E1sO9dQvzNLZ3GQhkyYX3z22Tf+xkkOb/9UfcDgiLskxODl5I4y0RKwZUn7TxO1xvEVeIfpqLOLVcY6wywNqIlaZtDY6BUPRnLczjAqdFwI1XDQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778251373; c=relaxed/simple; bh=+kkWUzDTio/ByhdKzh2wtj7KRg3wTOQXzmfdrn64Jf8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gkuvH2CZAGSqfDPIhVVcEoY5oiDHQaowOVoNOA71oczTZSdrq+thkz1XQHfK0XvO+c5JvYdwHhUu6SLqVFH8A73qgII5TDkvtXRF5FIXjgSuXPDzFZXwgm+zxiVdNMhKmXv6FUcd0hBCHZJwbqYZT2u6mLHBK2CdzHzcnOv3oGA= 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=Hq7fIZZp; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=T4JTklaJ; 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="Hq7fIZZp"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="T4JTklaJ" From: Gregor Herburger DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1778251370; 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=ZQFNt+9a4A5dfeMowDT9WSpy81hGD3mNS+Yhz4JhQsc=; b=Hq7fIZZpmdqb/0DbT5BBcTSNGjtFgSTBhapTssZ7MaUZC35grTfpkmLjNWc8S2wr2j2ZLu b3ud3HyomsKJ8pO6VoPikbRrxntV8P2jfYaYk7v0jnr1GW76Ay3S3Hlht0lXaUCzHFaHgT PVyCU3aZncDC+GbKKi+7wASTgcdBNB9Gd98ZaqnzEYhiFA8+ZWqMy0GqJC8F7Ob2Dz88Wm Kigs3xtw5LzNqCa9OfTLcRxN8Na9RAHC2t5saL3jLUG13/IvemAVFsFNlFuPslQZyl9ext 5vj6l4rIl4hHCoxp/3knf9Fvq1MJtWz8Cmr0nu18asRuzn3xTzLRDmnd6Rg+XQ== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1778251370; 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=ZQFNt+9a4A5dfeMowDT9WSpy81hGD3mNS+Yhz4JhQsc=; b=T4JTklaJWumJ4Zp9TUC52vo/VxxPnfwanI+f+aw79NywQc0k6ARI/r5eU/En80tqA2zxL7 GFOarnerbeMtcYDQ== Date: Fri, 08 May 2026 16:42:44 +0200 Subject: [PATCH v4 1/5] 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: <20260508-rpi-otp-driver-v4-1-cf8d725d8821@linutronix.de> References: <20260508-rpi-otp-driver-v4-0-cf8d725d8821@linutronix.de> In-Reply-To: <20260508-rpi-otp-driver-v4-0-cf8d725d8821@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" 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=1778251369; l=1195; i=gregor.herburger@linutronix.de; s=20260226; h=from:subject:message-id; bh=+kkWUzDTio/ByhdKzh2wtj7KRg3wTOQXzmfdrn64Jf8=; b=Wd7sEwtQi7ou5NUNCMPp2Z0xVIUb98/tB4VL5L+NVc3h29Sho7Ys9p6ou3E5srJeBtKO6KK8V ME/ebRQiq7BAytj+Ac4LWlRVnZgqnaSHBbIEqfZVgtFxScXCyO4G/E6 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. Signed-off-by: Gregor Herburger Acked-by: Conor Dooley --- .../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 983ea80eaec9..a3a5243b9170 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 Mon Jun 15 08:21:18 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 4E674370D55; Fri, 8 May 2026 14:42:52 +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=1778251373; cv=none; b=ZSxb/PtyWYBrjuLee13XAofs7q3Njr24NOo5dI4R041MDFWHVf7SjBp5c7Gj7y8qIl57+IjDNcFtQoPfrKc03PQOH4kliKxyGZdz/wnB0aqOKYWKYtq32hXazJAK+QwOf5N9pkcu5ecfMfKnVLSfk38q9hzM4iSjAi1ptc0K9FY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778251373; c=relaxed/simple; bh=EjES1XEygtPXkwHaHI9jOn7A/SxUhDKIHpEOH2m20vQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=V1wp8TzPMPzVWkMUf7NnTKVWFE2/BICfhLSGH3BiE+EisEmQl6mPCnxGXjvV0NHylV+1agcXIK5+hpmWigMOd9P1W7g5J88qti1gquHhUY+xjW93H/cwxEwBkgFVfXlpOlZ4qYpjjiK93mxdfNU+ZeeUpj2erhtpvH5jH0VmOkY= 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=mltTOxbV; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=h1cYHxen; 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="mltTOxbV"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="h1cYHxen" From: Gregor Herburger DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1778251371; 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=lwLlIN9bmdi06YYaoE05BeuZZOwpbQwFr+MoFtTri9w=; b=mltTOxbVKVwERijCiDPfpWEPIBA+tU6eWfGvk202pBAaoodtff5jcwRI+rx2zJo4AC47aC 49o66rCvC7/1iKz8N5IXsCz8STnJAbqkYyEh273HgdRiL7KdpkAjk8PkQKSZRihHvC8EG4 tG9xZVXZYNxRVkMRYoKKSjvlqVtSigu9JhUd4SlZaWTy2pHAodeVG3ZmlEciul4cpWUc8b siiVCVAvUYx9AVh5UY4GcDQcq2yXaHtl/cGsQGR1SsCbQEtAlqGbKOjBlINMN4wGs3WA4k sUKvx35pONgPNQy2p+PSaBFPcEnbUIcoT0dGIupajy7osYAdNXiSvAb0FoGkyg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1778251371; 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=lwLlIN9bmdi06YYaoE05BeuZZOwpbQwFr+MoFtTri9w=; b=h1cYHxenfB3G+UYpXlfi1NeCC5EMyaRJCo121I9tMgPuGjtYPRtfPTHZYuXJnZhDsztBQX +fn+vWWUBAddQxCQ== Date: Fri, 08 May 2026 16:42:45 +0200 Subject: [PATCH v4 2/5] 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: <20260508-rpi-otp-driver-v4-2-cf8d725d8821@linutronix.de> References: <20260508-rpi-otp-driver-v4-0-cf8d725d8821@linutronix.de> In-Reply-To: <20260508-rpi-otp-driver-v4-0-cf8d725d8821@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" 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=1778251369; l=6220; i=gregor.herburger@linutronix.de; s=20260226; h=from:subject:message-id; bh=EjES1XEygtPXkwHaHI9jOn7A/SxUhDKIHpEOH2m20vQ=; b=Nwnl1wUXZEiozxJYdx18Yl8z5fw1OaHPBp42kIgyuuiEX2czgZwrTaeHPfekwBoDPM5ITM6yI bUNsYM866KlDrwBVLxxyBUBoHGBJifdBEYNwelIvgSd8frxrOyo5QHM 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. Signed-off-by: Gregor Herburger Reviewed-by: Stefan Wahren --- drivers/nvmem/Kconfig | 10 +++ drivers/nvmem/Makefile | 1 + drivers/nvmem/raspberrypi-otp.c | 130 +++++++++++++++++++++++++= ++++ include/soc/bcm2835/raspberrypi-firmware.h | 9 ++ 4 files changed, 150 insertions(+) diff --git a/drivers/nvmem/Kconfig b/drivers/nvmem/Kconfig index 74ddbd0f79b0..aac31f43385e 100644 --- a/drivers/nvmem/Kconfig +++ b/drivers/nvmem/Kconfig @@ -483,4 +483,14 @@ 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 && !RASPBERRYPI_FIRMWARE) + 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 7252b8ec88d4..8ca2095e068f 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 000000000000..393640cb9e32 --- /dev/null +++ b/drivers/nvmem/raspberrypi-otp.c @@ -0,0 +1,130 @@ +// SPDX-License-Identifier: GPL-2.0-only + +#include +#include +#include +#include +#include + +struct rpi_otp_priv { + struct rpi_firmware *fw; + struct device *dev; + 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; + + if (!IS_ALIGNED(offset, 4) || !IS_ALIGNED(bytes, 4)) + return -EINVAL; + + 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; + + if (!IS_ALIGNED(offset, 4) || !IS_ALIGNED(bytes, 4)) + return -EINVAL; + + 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, + }; + + priv =3D devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + + data =3D dev_get_platdata(dev); + if (!data) + return -ENODEV; + + priv->fw =3D dev_get_drvdata(dev->parent); + priv->dev =3D dev; + 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; + + 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 struct platform_driver raspberry_otp_driver =3D { + .probe =3D rpi_otp_probe, + .driver =3D { + .name =3D "raspberrypi-otp", + }, +}; +module_platform_driver(raspberry_otp_driver); + +MODULE_AUTHOR("Gregor Herburger "); +MODULE_DESCRIPTION("Raspberry Pi OTP driver"); +MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:raspberrypi-otp"); diff --git a/include/soc/bcm2835/raspberrypi-firmware.h b/include/soc/bcm28= 35/raspberrypi-firmware.h index e1f87fbfe554..ae73c9cd19ba 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,13 @@ 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; +}; + #if IS_ENABLED(CONFIG_RASPBERRYPI_FIRMWARE) int rpi_firmware_property(struct rpi_firmware *fw, u32 tag, void *data, size_t len); --=20 2.47.3 From nobody Mon Jun 15 08:21:18 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 DA4F23E5EFA; Fri, 8 May 2026 14:42:52 +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=1778251374; cv=none; b=ICBnIva1GqQXOjivuvb5DzCmwhlfY+RNDzeDKbZicUQU9q3srlRPNPxbMbMvucdV42lK1uShuflY+N7qUcv5EPMUxLz2nH+xHj+FYS1ib0L2qaZab+ShLaKEY2nuTlu8VUATXSD+S610mRnm+YYckXtjLKV+yvIv1h23eZuwLhA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778251374; c=relaxed/simple; bh=rr5QjJVjuZvNPD8Qs2aGQvMUMttlLqqHNodH4QGCTqA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nwPQFEn761Mn9Z5ZJG8rAKnUDZ7DgCmT3iy+gd+h38dC78i340Kun+vDMVyiIazRyH1qsK5PHhEGzOmBv1KB0ZVBY0bYStuUjzWw8EQQsZal5zdDUtBCjHEcVXGFKLXISnCWiEpTFWFNTC9LM0cTQV1vy8VIe/gpgoregpAmLr4= 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=vDc937Ko; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=C5CSG5NZ; 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="vDc937Ko"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="C5CSG5NZ" From: Gregor Herburger DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1778251371; 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=gwcLabDXoFYL8fo3t2f3I5h6exflydXeBx0CmYLbbns=; b=vDc937KoKJZf2pfpbODxuALmEdnSqr6NR+KqyDmZwJrhsz9Wn6FmS44UIUwG6sljkrG8LN 9XAvK6HMR4gSQRwjxKWvKYvVITQAoS170lYxEjeAOCZjUQsA+W+VWgZASkNnDtP0bhwrJV MO1m1GnjHUJnWmeYZyDelK5grokuGvHg5yPwWXzPsCaUiMMhaR62JxPRqLIevvVGE3Y+Gw k1CjUZOfL8xdqaNH3lMktvP9ICwRfaXitXg0fM0ZT2SNqvfiMf5AerlmwldRr8eJa62Mz4 QS7gUURdgnOoBPnQqQgqmgMqNcoIcErTcwEb9uT9YGjCh+nRnqM/YeDXpSJgMA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1778251371; 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=gwcLabDXoFYL8fo3t2f3I5h6exflydXeBx0CmYLbbns=; b=C5CSG5NZFqubHOig/1SUD+p//lV4ixq8ujI3GSFLte8C0EvPBlN/AUc/LMGM0Q1zBZSWWp B4C9UGIg77fBe+DA== Date: Fri, 08 May 2026 16:42:46 +0200 Subject: [PATCH v4 3/5] 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: <20260508-rpi-otp-driver-v4-3-cf8d725d8821@linutronix.de> References: <20260508-rpi-otp-driver-v4-0-cf8d725d8821@linutronix.de> In-Reply-To: <20260508-rpi-otp-driver-v4-0-cf8d725d8821@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" 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=1778251369; l=4244; i=gregor.herburger@linutronix.de; s=20260226; h=from:subject:message-id; bh=rr5QjJVjuZvNPD8Qs2aGQvMUMttlLqqHNodH4QGCTqA=; b=1rlwc6Yg4qity1EJiiyqSYkFCHC7jSvCQKnyiqibhtbU58U5UIKDyyen/1lcMD3YbvMZ9sczp 5OTTP5BiYcyCww/wPaFxsFH20qT4TLMMcTCI40Aw7nBOuEOh8sQq7kS 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 --- 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 0aa322e9a2e7..b363ec7bc5b4 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,45 @@ 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, +}; + +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, +}; + +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 +341,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 +371,25 @@ 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; + if (rpi_otp_private) + 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 ae73c9cd19ba..17595a96e90b 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 Mon Jun 15 08:21:18 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 641C23ED12A; Fri, 8 May 2026 14:42:53 +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=1778251374; cv=none; b=E3/fyZfAuS0SUULjlLvlqb2CslWGtOpGO1fsAvS2WKdOqiiIziqsPBBxWwNpcVnQyTpW2sS12tccdUuF/j70lcBzwMTYX2v05J5onli6KsNGdJjHh1DlSGItXyBCX44qWFASRpC4NvuZAxPKry16sm0QUO1fRbH1wS0Da5o1Z/0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778251374; c=relaxed/simple; bh=gyTIyYto7tzKXHDd6kMNK0OhSiLeThERn6mhwt9FF3w=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ndtrdZaDbPUiE9l6bfqvHcf+dQb6QYVR9+mKk94F25t5FsnRg8KUFjJ+j3//eSdGDAkbfiGm4DZgtmwO+p5MLUBN//v+ftmmNodFypJo57aHsdJ/i1ovnjZ8GuEQ6PTMhBAzICW/6ZmK6GfLZGDCmSDEs9XQeHx56gxQl3TVNu0= 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=vfhgSZiC; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=Kd/8eig3; 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="vfhgSZiC"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="Kd/8eig3" From: Gregor Herburger DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1778251372; 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=81MPp/cPmY31f4oil6TsY2E5xHh8dQK79p3Ch11N/PI=; b=vfhgSZiCZi0GULsQBjuOZxGx7VZZW+2K1xRRZ9Wrehfsz958B3cDMUfgy52z+QXr7c4v7v QBSa3FLZAMveG6F/8819BdgueVUVEtyw5+zSVG6BoaUt0SQHLjIpsPU42qKawCUzhPAR3x rEgWmFp+Rpto89fRF5+PLBxVmJLWWoKphEKH8vtGSlAfsJdmN8+XJ/EtxCntZYn4/yCX3/ JbfveMiKO6Kh+w02i7jwGsxqNmoZCn+wrnToRNqR6Nz//cwUo4kHQGpOqtDsgDs8oyf//p fGHKsVOfolmE+XEQpmmMYH5djbQzZIHQlXwii2svYvhId2yBebvYZ9lKKYpYbA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1778251372; 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=81MPp/cPmY31f4oil6TsY2E5xHh8dQK79p3Ch11N/PI=; b=Kd/8eig3QYkQ/+RelaacDc4SOX7exZhk8eD+91IHQ5IqaE2CI58nkia2XQhHeyGYCSYG1k RVSdacbkdbmpqJBA== Date: Fri, 08 May 2026 16:42:47 +0200 Subject: [PATCH v4 4/5] 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: <20260508-rpi-otp-driver-v4-4-cf8d725d8821@linutronix.de> References: <20260508-rpi-otp-driver-v4-0-cf8d725d8821@linutronix.de> In-Reply-To: <20260508-rpi-otp-driver-v4-0-cf8d725d8821@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" 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=1778251369; l=1152; i=gregor.herburger@linutronix.de; s=20260226; h=from:subject:message-id; bh=gyTIyYto7tzKXHDd6kMNK0OhSiLeThERn6mhwt9FF3w=; b=XnMQTKXSNyFtzEfMdOy4cZ5OMhxyyHp8g4rtPATiw58N1+t/QJgcqRZTlpGzHgvYsf5fPIv4g YhHgTXzLPzXDVT0Yev8Ye0wQnUF/xQBGrBj0rLcB2tIVXMdOcLHKnvu 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. Signed-off-by: Gregor Herburger Reviewed-by: Stefan Wahren --- 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 b7a6bc34ae1a..4aa8ec7601b8 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 Mon Jun 15 08:21:18 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 088ED3F7AA6; Fri, 8 May 2026 14:42:54 +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=1778251376; cv=none; b=c+EHefpWJEJYThP6H3nrQd9Z50HVl4fagq1W6ZnLLb3BIYIA0vCSpXmG0QN113SobBzfEK1TDUXb7mbB1SsPn0LbdU0UCNPTHGpMTxe3tnjsxB4iDvQ8M6miubm6wMCrqJNpOS9V4hVm4OEL+xr0LD/pOAu6eFvOZB9izN7cDBc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778251376; c=relaxed/simple; bh=DABsoMXDk2P+S/P+yyf588Zuvkfjmm33Pz1/j6lJE/4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RHrjnahHMUpsnYT9zwyQe7IUpuCcAWKvKobUCU/hxzY67YYPI25SslXbcFqH7qpJmCNExNj/dRBHotMaFhZE1u2OF8DSnf2sWZxIh6SN+zO/XamKkjPNv5GG59k8SrhYDPX1O0lftFcWbFflui/vFQUo6GmBL/sERodLco6u7es= 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=CHSB4s5a; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=niIffQua; 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="CHSB4s5a"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="niIffQua" From: Gregor Herburger DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1778251372; 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=dKIj7vjKy9Y9Vae3A4dMKPMfxiFmPnyG5vDmw/Z5sss=; b=CHSB4s5aYDs7S4QMCOXnymg7ULPR08n77kPrYl+rsyga2SQhoLt6+G8ang6TfCWAXlUURk 4KIhUhrNMEYYg8ukdH7FLvMTto85iAereEMV9t3Nb6xs7DCGRHQyNdLwROHVtzzUrQr0EZ TOCKb8zVFOFqXP/DKHGCA0PVXaeGZZAxJnKKd8xwxjpooMXmKM6yIzVNesUskGeNZM9hcM j3CwN5pSVSIpGaEkrF+/ZHCUcO2Q8cJ+Hwdmbbs5qkahsullsXOlnBRMJxdsXz3nvMdiUI M/d6oU8roGTn2tQCrkv6Y5fcdBrkEQSIiwprt32tdbXdSTyjROssNrobnirHmg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1778251372; 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=dKIj7vjKy9Y9Vae3A4dMKPMfxiFmPnyG5vDmw/Z5sss=; b=niIffQua2d/AOucZGbFiN67+AiliRCE5LWjHdcmrq444/SZ7Cy1/SOd1CVHws80K/FwYRs BxY1nWHmhLtJgdDg== Date: Fri, 08 May 2026 16:42:48 +0200 Subject: [PATCH v4 5/5] 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: <20260508-rpi-otp-driver-v4-5-cf8d725d8821@linutronix.de> References: <20260508-rpi-otp-driver-v4-0-cf8d725d8821@linutronix.de> In-Reply-To: <20260508-rpi-otp-driver-v4-0-cf8d725d8821@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" 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=1778251369; l=1100; i=gregor.herburger@linutronix.de; s=20260226; h=from:subject:message-id; bh=DABsoMXDk2P+S/P+yyf588Zuvkfjmm33Pz1/j6lJE/4=; b=gPPKOgDjiowGSTTjFyrQ567SKtkM82Nof41P9IAw2e6PGA7Hc+THk5vpI8G6BT21JUkoEUzRG 1z16YPnGfaTCWUAVsYhlgIuHDvZLNqsttQ7yM9NZMsjWlOD8v/JzsHO 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. Signed-off-by: Gregor Herburger Acked-by: Conor Dooley --- .../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 a3a5243b9170..7cf9a6fa1e5b 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