|
13 | 13 | #include <linux/vmalloc.h> |
14 | 14 | #include <linux/uuid.h> |
15 | 15 |
|
16 | | -#define XRT_MD_INVALID_LENGTH (~0UL) |
| 16 | +#define XRT_MD_INVALID_LENGTH (~0U) |
17 | 17 |
|
18 | 18 | /* metadata properties */ |
19 | 19 | #define XRT_MD_PROP_BAR_IDX "pcie_bar_mapping" |
|
38 | 38 | * AF: AXI Firewall |
39 | 39 | * CMC: Card Management Controller |
40 | 40 | * ERT: Embedded Runtime |
| 41 | + * EP: End Point |
41 | 42 | * PLP: Provider Reconfigurable Partition |
42 | 43 | * ULP: User Reconfigurable Partition |
43 | 44 | */ |
|
47 | 48 | #define XRT_MD_NODE_AF_CTRL_DEBUG "ep_firewall_ctrl_debug_00" |
48 | 49 | #define XRT_MD_NODE_AF_CTRL_MGMT "ep_firewall_ctrl_mgmt_00" |
49 | 50 | #define XRT_MD_NODE_AF_CTRL_USER "ep_firewall_ctrl_user_00" |
50 | | -#define XRT_MD_NODE_AF_DATA_C2H "ep_firewall_data_c2h_00" |
51 | | -#define XRT_MD_NODE_AF_DATA_H2C "ep_firewall_data_h2c_00" |
| 51 | +#define XRT_MD_NODE_AF_DATA_C2H "ep_firewall_data_c2h_00" /* c2h: card to host */ |
| 52 | +#define XRT_MD_NODE_AF_DATA_H2C "ep_firewall_data_h2c_00" /* h2c: host to card */ |
52 | 53 | #define XRT_MD_NODE_AF_DATA_M2M "ep_firewall_data_m2m_00" |
53 | 54 | #define XRT_MD_NODE_AF_DATA_P2P "ep_firewall_data_p2p_00" |
54 | | -#define XRT_MD_NODE_CLKFREQ_HBM "ep_freq_cnt_aclk_hbm_00" |
| 55 | +#define XRT_MD_NODE_CLKFREQ_HBM "ep_freq_cnt_aclk_hbm_00" /* hbm: High Bandwidth Memory */ |
55 | 56 | #define XRT_MD_NODE_CLKFREQ_K1 "ep_freq_cnt_aclk_kernel_00" |
56 | 57 | #define XRT_MD_NODE_CLKFREQ_K2 "ep_freq_cnt_aclk_kernel_01" |
57 | 58 | #define XRT_MD_NODE_CLK_KERNEL1 "ep_aclk_kernel_00" |
|
95 | 96 | #define XRT_MD_NODE_XVC_PRI "ep_debug_bscan_mgmt_00" |
96 | 97 | #define XRT_MD_NODE_UCS_CONTROL_STATUS "ep_ucs_control_status_00" |
97 | 98 |
|
98 | | -/* endpoint regmaps */ |
99 | | -#define XRT_MD_REGMAP_DDR_SRSR "drv_ddr_srsr" |
100 | | -#define XRT_MD_REGMAP_CLKFREQ "freq_cnt" |
| 99 | +/* endpoint compatible string */ |
| 100 | +#define XRT_MD_COMPAT_DDR_SRSR "drv_ddr_srsr" |
| 101 | +#define XRT_MD_COMPAT_CLKFREQ "freq_cnt" |
101 | 102 |
|
102 | 103 | /* driver defined endpoints */ |
103 | 104 | #define XRT_MD_NODE_BLP_ROM "drv_ep_blp_rom_00" |
|
123 | 124 |
|
124 | 125 | struct xrt_md_endpoint { |
125 | 126 | const char *ep_name; |
126 | | - u32 bar; |
| 127 | + u32 bar_index; |
127 | 128 | u64 bar_off; |
128 | | - ulong size; |
129 | | - char *regmap; |
130 | | - char *regmap_ver; |
| 129 | + u64 size; |
| 130 | + char *compat; |
| 131 | + char *compat_ver; |
131 | 132 | }; |
132 | 133 |
|
133 | 134 | /* Note: res_id is defined by leaf driver and must start with 0. */ |
@@ -162,29 +163,29 @@ xrt_md_res_id2name(const struct xrt_iores_map *res_map, int entry_num, int id) |
162 | 163 | return NULL; |
163 | 164 | } |
164 | 165 |
|
165 | | -unsigned long xrt_md_size(struct device *dev, const char *blob); |
| 166 | +u32 xrt_md_size(struct device *dev, const char *blob); |
166 | 167 | int xrt_md_create(struct device *dev, char **blob); |
167 | 168 | char *xrt_md_dup(struct device *dev, const char *blob); |
168 | 169 | int xrt_md_add_endpoint(struct device *dev, char *blob, |
169 | 170 | struct xrt_md_endpoint *ep); |
170 | 171 | int xrt_md_del_endpoint(struct device *dev, char *blob, const char *ep_name, |
171 | | - const char *regmap_name); |
| 172 | + const char *compat); |
172 | 173 | int xrt_md_get_prop(struct device *dev, const char *blob, const char *ep_name, |
173 | | - const char *regmap_name, const char *prop, |
| 174 | + const char *compat, const char *prop, |
174 | 175 | const void **val, int *size); |
175 | 176 | int xrt_md_set_prop(struct device *dev, char *blob, const char *ep_name, |
176 | | - const char *regmap_name, const char *prop, |
| 177 | + const char *compat, const char *prop, |
177 | 178 | const void *val, int size); |
178 | 179 | int xrt_md_copy_endpoint(struct device *dev, char *blob, const char *src_blob, |
179 | | - const char *ep_name, const char *regmap_name, |
| 180 | + const char *ep_name, const char *compat, |
180 | 181 | const char *new_ep_name); |
181 | 182 | int xrt_md_get_next_endpoint(struct device *dev, const char *blob, |
182 | | - const char *ep_name, const char *regmap_name, |
183 | | - char **next_ep, char **next_regmap); |
| 183 | + const char *ep_name, const char *compat, |
| 184 | + char **next_ep, char **next_compat); |
184 | 185 | int xrt_md_get_compatible_endpoint(struct device *dev, const char *blob, |
185 | | - const char *regmap_name, const char **ep_name); |
| 186 | + const char *compat, const char **ep_name); |
186 | 187 | int xrt_md_find_endpoint(struct device *dev, const char *blob, |
187 | | - const char *ep_name, const char *regmap_name, |
| 188 | + const char *ep_name, const char *compat, |
188 | 189 | const char **epname); |
189 | 190 | int xrt_md_pack(struct device *dev, char *blob); |
190 | 191 | int xrt_md_get_interface_uuids(struct device *dev, const char *blob, |
@@ -214,7 +215,9 @@ static inline int xrt_md_trans_str2uuid(struct device *dev, const char *uuidstr, |
214 | 215 | char tmp[3] = { 0 }; |
215 | 216 | int i, ret; |
216 | 217 |
|
217 | | - BUILD_BUG_ON(UUID_SIZE != 16); |
| 218 | + if (strlen(uuidstr) != UUID_SIZE * 2) |
| 219 | + return -EINVAL; |
| 220 | + |
218 | 221 | str = uuidstr + strlen(uuidstr) - 2; |
219 | 222 |
|
220 | 223 | for (i = 0; i < sizeof(*p_uuid) && str >= uuidstr; i++) { |
|
0 commit comments