Lines Matching full:fw

21 static bool mdt_header_valid(const struct firmware *fw)
27 if (fw->size < sizeof(*ehdr))
30 ehdr = (struct elf32_hdr *)fw->data;
39 if (phend > fw->size)
46 if (shend > fw->size)
103 * @fw: firmware object for the mdt file
107 ssize_t qcom_mdt_get_size(const struct firmware *fw)
116 if (!mdt_header_valid(fw))
119 ehdr = (struct elf32_hdr *)fw->data;
120 phdrs = (struct elf32_phdr *)(fw->data + ehdr->e_phoff);
141 * @fw: firmware of mdt header or mbn
158 void *qcom_mdt_read_metadata(const struct firmware *fw, size_t *data_len,
171 if (!mdt_header_valid(fw))
174 ehdr = (struct elf32_hdr *)fw->data;
175 phdrs = (struct elf32_phdr *)(fw->data + ehdr->e_phoff);
203 memcpy(data, fw->data, ehdr_size);
205 if (ehdr_size + hash_size == fw->size) {
208 memcpy(data + ehdr_size, fw->data + hash_offset, hash_size);
209 } else if (phdrs[hash_segment].p_offset + hash_size <= fw->size) {
212 memcpy(data + ehdr_size, fw->data + hash_offset, hash_size);
231 * @fw: firmware object for the mdt file
239 int qcom_mdt_pas_init(struct device *dev, const struct firmware *fw,
254 if (!mdt_header_valid(fw))
257 ehdr = (struct elf32_hdr *)fw->data;
258 phdrs = (struct elf32_phdr *)(fw->data + ehdr->e_phoff);
276 metadata = qcom_mdt_read_metadata(fw, &metadata_len, fw_name, dev);
305 static bool qcom_mdt_bins_are_split(const struct firmware *fw, const char *fw_name)
312 ehdr = (struct elf32_hdr *)fw->data;
313 phdrs = (struct elf32_phdr *)(fw->data + ehdr->e_phoff);
326 if (seg_start > fw->size || seg_end > fw->size)
333 static int __qcom_mdt_load(struct device *dev, const struct firmware *fw,
350 if (!fw || !mem_region || !mem_phys || !mem_size)
353 if (!mdt_header_valid(fw))
356 is_split = qcom_mdt_bins_are_split(fw, fw_name);
357 ehdr = (struct elf32_hdr *)fw->data;
358 phdrs = (struct elf32_phdr *)(fw->data + ehdr->e_phoff);
412 if (phdr->p_offset + phdr->p_filesz > fw->size) {
419 memcpy(ptr, fw->data + phdr->p_offset, phdr->p_filesz);
438 * qcom_mdt_load() - load the firmware which header is loaded as fw
440 * @fw: firmware object for the mdt file
450 int qcom_mdt_load(struct device *dev, const struct firmware *fw,
457 ret = qcom_mdt_pas_init(dev, fw, firmware, pas_id, mem_phys, NULL);
461 return __qcom_mdt_load(dev, fw, firmware, pas_id, mem_region, mem_phys,
467 * qcom_mdt_load_no_init() - load the firmware which header is loaded as fw
469 * @fw: firmware object for the mdt file
479 int qcom_mdt_load_no_init(struct device *dev, const struct firmware *fw,
484 return __qcom_mdt_load(dev, fw, firmware, pas_id, mem_region, mem_phys,