1 /*
2 * Copyright (c) 2016, Fuzhou Rockchip Electronics Co., Ltd
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or (at
7 * your option) any later version.
8 */
9
10 #ifndef __PLAT_RK_VENDOR_STORAGE_H
11 #define __PLAT_RK_VENDOR_STORAGE_H
12
13 #define RSV_ID 0
14 #define SN_ID 1
15 #define WIFI_MAC_ID 2
16 #define LAN_MAC_ID 3
17 #define BT_MAC_ID 4
18 #define HDCP_14_HDMI_ID 5
19 #define HDCP_14_DP_ID 6
20 #define HDCP_2X_ID 7
21 #define DRM_KEY_ID 8
22 #define PLAYREADY_CERT_ID 9
23 #define ATTENTION_KEY_ID 10
24 #define PLAYREADY_ROOT_KEY_0_ID 11
25 #define PLAYREADY_ROOT_KEY_1_ID 12
26 #define HDCP_14_HDMIRX_ID 13
27 #define SENSOR_CALIBRATION_ID 14
28 #define IMEI_ID 15
29 #define LAN_RGMII_DL_ID 16
30 #define EINK_VCOM_ID 17
31
32 #define VENDOR_HEAD_TAG 0x524B5644
33 #define FLASH_VENDOR_PART_SIZE 8
34 #define VENDOR_PART_SIZE 128
35
36 struct vendor_item {
37 u16 id;
38 u16 offset;
39 u16 size;
40 u16 flag;
41 };
42
43 struct vendor_info {
44 u32 tag;
45 u32 version;
46 u16 next_index;
47 u16 item_num;
48 u16 free_offset;
49 u16 free_size;
50 struct vendor_item item[126]; /* 126 * 8 */
51 u8 data[VENDOR_PART_SIZE * 512 - 1024 - 8];
52 u32 hash;
53 u32 version2;
54 };
55
56 struct flash_vendor_info {
57 u32 tag;
58 u32 version;
59 u16 next_index;
60 u16 item_num;
61 u16 free_offset;
62 u16 free_size;
63 struct vendor_item item[62]; /* 62 * 8 */
64 u8 data[FLASH_VENDOR_PART_SIZE * 512 - 512 - 8];
65 u32 hash;
66 u32 version2;
67 };
68
69 #if IS_REACHABLE(CONFIG_ROCKCHIP_VENDOR_STORAGE)
70 int rk_vendor_read(u32 id, void *pbuf, u32 size);
71 int rk_vendor_write(u32 id, void *pbuf, u32 size);
72 int rk_vendor_register(void *read, void *write);
73 bool is_rk_vendor_ready(void);
74 #else
rk_vendor_read(u32 id,void * pbuf,u32 size)75 static inline int rk_vendor_read(u32 id, void *pbuf, u32 size)
76 {
77 return -1;
78 }
79
rk_vendor_write(u32 id,void * pbuf,u32 size)80 static inline int rk_vendor_write(u32 id, void *pbuf, u32 size)
81 {
82 return -1;
83 }
84
rk_vendor_register(void * read,void * write)85 static inline int rk_vendor_register(void *read, void *write)
86 {
87 return -1;
88 }
89
is_rk_vendor_ready(void)90 static inline bool is_rk_vendor_ready(void)
91 {
92 return false;
93 }
94 #endif
95
96 #endif
97