Lines Matching refs:nvp

91 static enum nvram_parser_state brcmf_nvram_handle_idle(struct nvram_parser *nvp)  in brcmf_nvram_handle_idle()  argument
95 c = nvp->data[nvp->pos]; in brcmf_nvram_handle_idle()
103 nvp->entry = nvp->pos; in brcmf_nvram_handle_idle()
107 nvp->line, nvp->column); in brcmf_nvram_handle_idle()
109 nvp->column++; in brcmf_nvram_handle_idle()
110 nvp->pos++; in brcmf_nvram_handle_idle()
114 static enum nvram_parser_state brcmf_nvram_handle_key(struct nvram_parser *nvp) in brcmf_nvram_handle_key() argument
116 enum nvram_parser_state st = nvp->state; in brcmf_nvram_handle_key()
119 c = nvp->data[nvp->pos]; in brcmf_nvram_handle_key()
122 if (strncmp(&nvp->data[nvp->entry], "RAW1", 4) == 0) in brcmf_nvram_handle_key()
126 if (strncmp(&nvp->data[nvp->entry], "devpath", 7) == 0) in brcmf_nvram_handle_key()
127 nvp->multi_dev_v1 = true; in brcmf_nvram_handle_key()
128 if (strncmp(&nvp->data[nvp->entry], "pcie/", 5) == 0) in brcmf_nvram_handle_key()
129 nvp->multi_dev_v2 = true; in brcmf_nvram_handle_key()
132 nvp->line, nvp->column); in brcmf_nvram_handle_key()
136 nvp->column++; in brcmf_nvram_handle_key()
137 nvp->pos++; in brcmf_nvram_handle_key()
142 brcmf_nvram_handle_value(struct nvram_parser *nvp) in brcmf_nvram_handle_value() argument
149 c = nvp->data[nvp->pos]; in brcmf_nvram_handle_value()
152 ekv = (u8 *)&nvp->data[nvp->pos]; in brcmf_nvram_handle_value()
153 skv = (u8 *)&nvp->data[nvp->entry]; in brcmf_nvram_handle_value()
155 if (nvp->nvram_len + cplen + 1 >= BRCMF_FW_MAX_NVRAM_SIZE) in brcmf_nvram_handle_value()
158 memcpy(&nvp->nvram[nvp->nvram_len], skv, cplen); in brcmf_nvram_handle_value()
159 nvp->nvram_len += cplen; in brcmf_nvram_handle_value()
160 nvp->nvram[nvp->nvram_len] = '\0'; in brcmf_nvram_handle_value()
161 nvp->nvram_len++; in brcmf_nvram_handle_value()
164 nvp->pos++; in brcmf_nvram_handle_value()
165 nvp->column++; in brcmf_nvram_handle_value()
170 brcmf_nvram_handle_comment(struct nvram_parser *nvp) in brcmf_nvram_handle_comment() argument
174 sol = (char *)&nvp->data[nvp->pos]; in brcmf_nvram_handle_comment()
183 nvp->line++; in brcmf_nvram_handle_comment()
184 nvp->column = 1; in brcmf_nvram_handle_comment()
185 nvp->pos += (eoc - sol) + 1; in brcmf_nvram_handle_comment()
189 static enum nvram_parser_state brcmf_nvram_handle_end(struct nvram_parser *nvp) in brcmf_nvram_handle_end() argument
196 (*nv_parser_states[])(struct nvram_parser *nvp) = {
204 static int brcmf_init_nvram_parser(struct nvram_parser *nvp, in brcmf_init_nvram_parser() argument
209 memset(nvp, 0, sizeof(*nvp)); in brcmf_init_nvram_parser()
210 nvp->data = data; in brcmf_init_nvram_parser()
218 nvp->nvram = kzalloc(size, GFP_KERNEL); in brcmf_init_nvram_parser()
219 if (!nvp->nvram) in brcmf_init_nvram_parser()
222 nvp->line = 1; in brcmf_init_nvram_parser()
223 nvp->column = 1; in brcmf_init_nvram_parser()
232 static void brcmf_fw_strip_multi_v1(struct nvram_parser *nvp, u16 domain_nr, in brcmf_fw_strip_multi_v1() argument
246 nvram = kzalloc(nvp->nvram_len + 1 + 3 + sizeof(u32), GFP_KERNEL); in brcmf_fw_strip_multi_v1()
251 if (nvp->nvram_len < BRCMF_FW_NVRAM_DEVPATH_LEN + 6) in brcmf_fw_strip_multi_v1()
265 while (i < nvp->nvram_len - BRCMF_FW_NVRAM_DEVPATH_LEN) { in brcmf_fw_strip_multi_v1()
269 if (strncmp(&nvp->nvram[i], "devpath", 7) == 0 && in brcmf_fw_strip_multi_v1()
270 (!strncmp(&nvp->nvram[i + 8], pci_path, pci_len) || in brcmf_fw_strip_multi_v1()
271 !strncmp(&nvp->nvram[i + 8], pcie_path, pcie_len))) { in brcmf_fw_strip_multi_v1()
272 id = nvp->nvram[i + 7] - '0'; in brcmf_fw_strip_multi_v1()
276 while (nvp->nvram[i] != 0) in brcmf_fw_strip_multi_v1()
286 while (i < nvp->nvram_len) { in brcmf_fw_strip_multi_v1()
287 if ((nvp->nvram[i] - '0' == id) && (nvp->nvram[i + 1] == ':')) { in brcmf_fw_strip_multi_v1()
289 while (nvp->nvram[i] != 0) { in brcmf_fw_strip_multi_v1()
290 nvram[j] = nvp->nvram[i]; in brcmf_fw_strip_multi_v1()
297 while (nvp->nvram[i] != 0) in brcmf_fw_strip_multi_v1()
301 kfree(nvp->nvram); in brcmf_fw_strip_multi_v1()
302 nvp->nvram = nvram; in brcmf_fw_strip_multi_v1()
303 nvp->nvram_len = j; in brcmf_fw_strip_multi_v1()
308 nvp->nvram_len = 0; in brcmf_fw_strip_multi_v1()
317 static void brcmf_fw_strip_multi_v2(struct nvram_parser *nvp, u16 domain_nr, in brcmf_fw_strip_multi_v2() argument
325 nvram = kzalloc(nvp->nvram_len + 1 + 3 + sizeof(u32), GFP_KERNEL); in brcmf_fw_strip_multi_v2()
337 while (i < nvp->nvram_len - len) { in brcmf_fw_strip_multi_v2()
338 if (strncmp(&nvp->nvram[i], prefix, len) == 0) { in brcmf_fw_strip_multi_v2()
340 while (nvp->nvram[i] != 0) { in brcmf_fw_strip_multi_v2()
341 nvram[j] = nvp->nvram[i]; in brcmf_fw_strip_multi_v2()
348 while (nvp->nvram[i] != 0) in brcmf_fw_strip_multi_v2()
352 kfree(nvp->nvram); in brcmf_fw_strip_multi_v2()
353 nvp->nvram = nvram; in brcmf_fw_strip_multi_v2()
354 nvp->nvram_len = j; in brcmf_fw_strip_multi_v2()
358 nvp->nvram_len = 0; in brcmf_fw_strip_multi_v2()
369 struct nvram_parser nvp; in brcmf_fw_nvram_strip() local
374 if (brcmf_init_nvram_parser(&nvp, data, data_len) < 0) in brcmf_fw_nvram_strip()
377 while (nvp.pos < data_len) { in brcmf_fw_nvram_strip()
378 nvp.state = nv_parser_states[nvp.state](&nvp); in brcmf_fw_nvram_strip()
379 if (nvp.state == END) in brcmf_fw_nvram_strip()
382 if (nvp.multi_dev_v1) in brcmf_fw_nvram_strip()
383 brcmf_fw_strip_multi_v1(&nvp, domain_nr, bus_nr); in brcmf_fw_nvram_strip()
384 else if (nvp.multi_dev_v2) in brcmf_fw_nvram_strip()
385 brcmf_fw_strip_multi_v2(&nvp, domain_nr, bus_nr); in brcmf_fw_nvram_strip()
387 if (nvp.nvram_len == 0) { in brcmf_fw_nvram_strip()
388 kfree(nvp.nvram); in brcmf_fw_nvram_strip()
392 pad = nvp.nvram_len; in brcmf_fw_nvram_strip()
393 *new_length = roundup(nvp.nvram_len + 1, 4); in brcmf_fw_nvram_strip()
395 nvp.nvram[pad] = 0; in brcmf_fw_nvram_strip()
403 memcpy(&nvp.nvram[*new_length], &token_le, sizeof(token_le)); in brcmf_fw_nvram_strip()
406 return nvp.nvram; in brcmf_fw_nvram_strip()