Mailbox property: RPI_FIRMWARE_GET_CUSTOMER_OTP

Stefan Wahren stefan.wahren at i2se.com
Tue Jan 2 08:49:45 PST 2018


Hi Phil,

> Phil Elwell <phil at raspberrypi.org> hat am 2. Januar 2018 um 15:10 geschrieben:
> 
> 
> Hi Stefan,
> 
> On 28/12/2017 17:50, Stefan Wahren wrote:
> > Hi,
> > 
> > i made an attempt to write an NVMEM / OTP driver for the Raspberry Pi [1]. Instead of accessing the registers from the ARM core i decided to use the Mailbox property interface of the GPU firmware. Unfortunately a documentation of property RPI_FIRMWARE_GET_CUSTOMER_OTP isn't available here [2].
> 
> I don't see any reason why that property couldn't be documented - consider it an oversight.
> 
> > So the following questions comes to my mind:
> > What is the proper definition of Request/Response?
> 
> The request takes two parameters - an index and a length, both in 32-bit word
> units. The response contains the index and length, and adds the requested number
> of words as read from the customer area of the OTP, such that the buffer should
> be at least (2 + length) * 4 bytes long. Attempts to read outside the customer
> area will fail, returning the usual error code (0x80000000).

Looks like the enum definition in /include/soc/bcm2835/raspberrypi-firmware.h is wrong (maybe coming from the wrong documentation):

RPI_FIRMWARE_STATUS_SUCCESS = 0x80000000,
RPI_FIRMWARE_STATUS_ERROR =   0x80000001,

Btw does this struct also applies to RPI_FIRMWARE_SET_CUSTOMER_OTP?

> 
> > How long is the OTP register range in bytes?
> 
> The customer area of the OTP is 8 words long, addressable using index values 0 to 7.
> It is intended for customer applications, and will contains zeroes in an off-the-shelf
> Pi.
> 
> > Can anyone help?
> 
> I hope so.

Thank you very much, it work ...

> 
> Phil
> 
> > Best regards
> > Stefan
> > 
> > [1] - https://github.com/lategoodbye/rpi-zero/tree/bcm2835-otp
> > [2] - https://github.com/raspberrypi/firmware/wiki/Mailbox-property-interface
> >



More information about the linux-rpi-kernel mailing list