mbox series

[v3,0/3] Initial support for One-Time Programmable Memory (OTP) in BCM2835

Message ID 20240519094106.2142896-1-rayhan.faizel@gmail.com (mailing list archive)
Headers show
Series Initial support for One-Time Programmable Memory (OTP) in BCM2835 | expand

Message

Rayhan Faizel May 19, 2024, 9:41 a.m. UTC
All BCM2835 boards have on-board OTP memory with 66 32-bit rows. Usually,
its contents are accessible via mailbox commands.

[Changes in v3]

- Forgot to replace constant with macro in one particular spot.

[Changes in v2]

- Replace read/write with get/set in bcm2835_otp.c.
- Use impl instead of valid in bcm2835_otp.c.
- Replace all constant values with macros defined in bcm2835_otp.h.
- Change memory region size of OTP device to 0x80.
- After further testing on a real Raspberry Pi 3, I noticed a few things
contrary to my initial assumptions:
-- The customer OTP lock bit is bit 6 of row 32, NOT bit 30 of row 30. This is
currently undocumented to my knowledge.
-- The above lock indeed applies to the private key as well.

Rayhan Faizel (3):
  hw/nvram: Add BCM2835 OTP device
  hw/arm: Connect OTP device to BCM2835
  hw/misc: Implement mailbox properties for customer OTP and device
    specific private keys

 hw/arm/bcm2835_peripherals.c         |  15 ++-
 hw/misc/bcm2835_property.c           |  87 +++++++++++++
 hw/nvram/bcm2835_otp.c               | 187 +++++++++++++++++++++++++++
 hw/nvram/meson.build                 |   1 +
 include/hw/arm/bcm2835_peripherals.h |   3 +-
 include/hw/arm/raspberrypi-fw-defs.h |   2 +
 include/hw/misc/bcm2835_property.h   |   2 +
 include/hw/nvram/bcm2835_otp.h       |  68 ++++++++++
 8 files changed, 363 insertions(+), 2 deletions(-)
 create mode 100644 hw/nvram/bcm2835_otp.c
 create mode 100644 include/hw/nvram/bcm2835_otp.h

Comments

Peter Maydell May 30, 2024, 1:27 p.m. UTC | #1
On Sun, 19 May 2024 at 10:42, Rayhan Faizel <rayhan.faizel@gmail.com> wrote:
>
> All BCM2835 boards have on-board OTP memory with 66 32-bit rows. Usually,
> its contents are accessible via mailbox commands.
>
> [Changes in v3]
>
> - Forgot to replace constant with macro in one particular spot.
>
> [Changes in v2]
>
> - Replace read/write with get/set in bcm2835_otp.c.
> - Use impl instead of valid in bcm2835_otp.c.
> - Replace all constant values with macros defined in bcm2835_otp.h.
> - Change memory region size of OTP device to 0x80.
> - After further testing on a real Raspberry Pi 3, I noticed a few things
> contrary to my initial assumptions:
> -- The customer OTP lock bit is bit 6 of row 32, NOT bit 30 of row 30. This is
> currently undocumented to my knowledge.
> -- The above lock indeed applies to the private key as well.
>
> Rayhan Faizel (3):
>   hw/nvram: Add BCM2835 OTP device
>   hw/arm: Connect OTP device to BCM2835
>   hw/misc: Implement mailbox properties for customer OTP and device
>     specific private keys



Applied to target-arm.next, thanks.

-- PMM
Rayhan Faizel June 24, 2024, 9:12 a.m. UTC | #2
Hi,

The patch series is still not merged.

On Thu, May 30, 2024 at 6:57 PM Peter Maydell <peter.maydell@linaro.org> wrote:
>
> On Sun, 19 May 2024 at 10:42, Rayhan Faizel <rayhan.faizel@gmail.com> wrote:
> >
> > All BCM2835 boards have on-board OTP memory with 66 32-bit rows. Usually,
> > its contents are accessible via mailbox commands.
> >
> > [Changes in v3]
> >
> > - Forgot to replace constant with macro in one particular spot.
> >
> > [Changes in v2]
> >
> > - Replace read/write with get/set in bcm2835_otp.c.
> > - Use impl instead of valid in bcm2835_otp.c.
> > - Replace all constant values with macros defined in bcm2835_otp.h.
> > - Change memory region size of OTP device to 0x80.
> > - After further testing on a real Raspberry Pi 3, I noticed a few things
> > contrary to my initial assumptions:
> > -- The customer OTP lock bit is bit 6 of row 32, NOT bit 30 of row 30. This is
> > currently undocumented to my knowledge.
> > -- The above lock indeed applies to the private key as well.
> >
> > Rayhan Faizel (3):
> >   hw/nvram: Add BCM2835 OTP device
> >   hw/arm: Connect OTP device to BCM2835
> >   hw/misc: Implement mailbox properties for customer OTP and device
> >     specific private keys
>
>
>
> Applied to target-arm.next, thanks.
>
> -- PMM
Peter Maydell June 24, 2024, 10:22 a.m. UTC | #3
On Mon, 24 Jun 2024 at 10:12, Rayhan Faizel <rayhan.faizel@gmail.com> wrote:
>
> Hi,
>
> The patch series is still not merged.

Oops, sorry about that -- not sure how it got lost. I have
applied it to target-arm.next for real this time...

-- PMM
Rayhan Faizel June 24, 2024, 5:36 p.m. UTC | #4
No worries, and thanks!

On Mon, Jun 24, 2024 at 3:52 PM Peter Maydell <peter.maydell@linaro.org> wrote:
>
> On Mon, 24 Jun 2024 at 10:12, Rayhan Faizel <rayhan.faizel@gmail.com> wrote:
> >
> > Hi,
> >
> > The patch series is still not merged.
>
> Oops, sorry about that -- not sure how it got lost. I have
> applied it to target-arm.next for real this time...
>
> -- PMM