Re: [PATCH 2/3] nvmem: Add the Raspberry Pi OTP driver
From: Stefan Wahren
Date: Thu Apr 09 2026 - 11:21:18 EST
Am 09.04.26 um 10:05 schrieb Gregor Herburger:
On Wed, Apr 08, 2026 at 10:03:47PM +0200, Stefan Wahren wrote:There is a long history of different approaches how to implement the VideoCore firmware interface for the Raspberry Pi and not all of them are good from today's perspective.
Am 08.04.26 um 21:47 schrieb Gregor Herburger:I think it does represent real hardware. Although it is hidden through the
Hi Stefan,This binding doesn't represent some kind of hardware, it's just some
thanks for the review.
Is there any reason, why we cannot register this driver inThe private OTP registers are not available on all Raspberries. Afaik
rpi_firmware_probe() like hwmon and clk driver?
I like to avoid the complete dt-binding from patch 1.
only on 4 and 5. So I think these registers must be described through
the device tree. Therefore the bindings are needed.
firmware interface. A proper DT binding would describe the MMIO address
range for OTP access.
firmware. Not all hardware must be MMIO addresses.
The only driver that does not have a DT node is the hwmon driver. All
other drivers (clock, gpio, touchscreeen, reset, pwm) do have a DT
binding. Looking at the comment in rpi_register_clk_driver this
seems to be some legacy behaviour for older DTs for the clock driver.
One big problem with DT binding is that the kernel must be compatible with all mainline DTS versions. This sounds trivial, but it's not. Since we cannot assume that kernel & DTB are updated at the same time. So we need to keep these bad solutions from the past.
Your driver already use firmware tags to access the OTPs via firmware. You can ask the Raspberry Pi guys, how to do the distinction in a efficient/maintainable way.If you need some distinction between the Raspberry Pi generations there areSo what is your suggestion? What tags do you mean?
firmware tags to do this.
My suggestion would be to look at https://github.com/raspberrypi/firmware/wiki/Mailbox-property-interface#get-board-model
and
https://github.com/u-boot/u-boot/blob/master/board/raspberrypi/rpi/rpi.c#L95
The compatible "raspberrypi,bcm2712-firmware" approach is more straight forward, but requires a newer DTB. See above.
Best regards