xref: /OK3568_Linux_fs/kernel/include/linux/soc/rockchip/rk_vendor_storage.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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