nvmem: rockchip-otp: Move read-offset into variant-data
authorHeiko Stuebner <heiko@sntech.de>
Fri, 11 Apr 2025 11:22:39 +0000 (12:22 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 11 Apr 2025 12:41:20 +0000 (14:41 +0200)
The RK3588 has an offset into the OTP area where the readable area begins
and automatically adds this to the start address.
Other variants are very much similar to rk3588, just with a different
offset, so move that value into variant-data.

To match the size in bytes, store this value also in bytes and not in
number of blocks.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Tested-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20250411112251.68002-2-srinivas.kandagatla@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/nvmem/rockchip-otp.c

index ebc3f0b24166bcd962f3a6d3c64d7acd5d1d4b69..3edfbfc2d7220f077bc4dd72311176adc4f9f527 100644 (file)
@@ -59,7 +59,6 @@
 #define RK3588_OTPC_AUTO_EN            0x08
 #define RK3588_OTPC_INT_ST             0x84
 #define RK3588_OTPC_DOUT0              0x20
-#define RK3588_NO_SECURE_OFFSET                0x300
 #define RK3588_NBYTES                  4
 #define RK3588_BURST_NUM               1
 #define RK3588_BURST_SHIFT             8
@@ -69,6 +68,7 @@
 
 struct rockchip_data {
        int size;
+       int read_offset;
        const char * const *clks;
        int num_clks;
        nvmem_reg_read_t reg_read;
@@ -196,7 +196,7 @@ static int rk3588_otp_read(void *context, unsigned int offset,
        addr_start = round_down(offset, RK3588_NBYTES) / RK3588_NBYTES;
        addr_end = round_up(offset + bytes, RK3588_NBYTES) / RK3588_NBYTES;
        addr_len = addr_end - addr_start;
-       addr_start += RK3588_NO_SECURE_OFFSET;
+       addr_start += otp->data->read_offset / RK3588_NBYTES;
 
        buf = kzalloc(array_size(addr_len, RK3588_NBYTES), GFP_KERNEL);
        if (!buf)
@@ -280,6 +280,7 @@ static const char * const rk3588_otp_clocks[] = {
 
 static const struct rockchip_data rk3588_data = {
        .size = 0x400,
+       .read_offset = 0xc00,
        .clks = rk3588_otp_clocks,
        .num_clks = ARRAY_SIZE(rk3588_otp_clocks),
        .reg_read = rk3588_otp_read,