Lines Matching +full:integer +full:- +full:n
1 // SPDX-License-Identifier: GPL-2.0
116 return container_of(file->private_data, struct pfru_device, miscdev); in to_pfru_dev()
122 acpi_handle handle = ACPI_HANDLE(pfru_dev->parent_dev); in query_capability()
124 int ret = -EINVAL; in query_capability()
127 pfru_dev->rev_id, in query_capability()
133 if (out_obj->package.count < CAP_NR_IDX || in query_capability()
134 out_obj->package.elements[CAP_STATUS_IDX].type != ACPI_TYPE_INTEGER || in query_capability()
135 out_obj->package.elements[CAP_UPDATE_IDX].type != ACPI_TYPE_INTEGER || in query_capability()
136 out_obj->package.elements[CAP_CODE_TYPE_IDX].type != ACPI_TYPE_BUFFER || in query_capability()
137 out_obj->package.elements[CAP_FW_VER_IDX].type != ACPI_TYPE_INTEGER || in query_capability()
138 out_obj->package.elements[CAP_CODE_RT_VER_IDX].type != ACPI_TYPE_INTEGER || in query_capability()
139 out_obj->package.elements[CAP_DRV_TYPE_IDX].type != ACPI_TYPE_BUFFER || in query_capability()
140 out_obj->package.elements[CAP_DRV_RT_VER_IDX].type != ACPI_TYPE_INTEGER || in query_capability()
141 out_obj->package.elements[CAP_DRV_SVN_IDX].type != ACPI_TYPE_INTEGER || in query_capability()
142 out_obj->package.elements[CAP_PLAT_ID_IDX].type != ACPI_TYPE_BUFFER || in query_capability()
143 out_obj->package.elements[CAP_OEM_ID_IDX].type != ACPI_TYPE_BUFFER || in query_capability()
144 out_obj->package.elements[CAP_OEM_INFO_IDX].type != ACPI_TYPE_BUFFER) in query_capability()
147 cap_hdr->status = out_obj->package.elements[CAP_STATUS_IDX].integer.value; in query_capability()
148 if (cap_hdr->status != DSM_SUCCEED) { in query_capability()
149 ret = -EBUSY; in query_capability()
150 dev_dbg(pfru_dev->parent_dev, "Error Status:%d\n", cap_hdr->status); in query_capability()
154 cap_hdr->update_cap = out_obj->package.elements[CAP_UPDATE_IDX].integer.value; in query_capability()
155 memcpy(&cap_hdr->code_type, in query_capability()
156 out_obj->package.elements[CAP_CODE_TYPE_IDX].buffer.pointer, in query_capability()
157 out_obj->package.elements[CAP_CODE_TYPE_IDX].buffer.length); in query_capability()
158 cap_hdr->fw_version = in query_capability()
159 out_obj->package.elements[CAP_FW_VER_IDX].integer.value; in query_capability()
160 cap_hdr->code_rt_version = in query_capability()
161 out_obj->package.elements[CAP_CODE_RT_VER_IDX].integer.value; in query_capability()
162 memcpy(&cap_hdr->drv_type, in query_capability()
163 out_obj->package.elements[CAP_DRV_TYPE_IDX].buffer.pointer, in query_capability()
164 out_obj->package.elements[CAP_DRV_TYPE_IDX].buffer.length); in query_capability()
165 cap_hdr->drv_rt_version = in query_capability()
166 out_obj->package.elements[CAP_DRV_RT_VER_IDX].integer.value; in query_capability()
167 cap_hdr->drv_svn = in query_capability()
168 out_obj->package.elements[CAP_DRV_SVN_IDX].integer.value; in query_capability()
169 memcpy(&cap_hdr->platform_id, in query_capability()
170 out_obj->package.elements[CAP_PLAT_ID_IDX].buffer.pointer, in query_capability()
171 out_obj->package.elements[CAP_PLAT_ID_IDX].buffer.length); in query_capability()
172 memcpy(&cap_hdr->oem_id, in query_capability()
173 out_obj->package.elements[CAP_OEM_ID_IDX].buffer.pointer, in query_capability()
174 out_obj->package.elements[CAP_OEM_ID_IDX].buffer.length); in query_capability()
175 cap_hdr->oem_info_len = in query_capability()
176 out_obj->package.elements[CAP_OEM_INFO_IDX].buffer.length; in query_capability()
189 acpi_handle handle = ACPI_HANDLE(pfru_dev->parent_dev); in query_buffer()
191 int ret = -EINVAL; in query_buffer()
194 pfru_dev->rev_id, PFRU_FUNC_QUERY_BUF, in query_buffer()
199 if (out_obj->package.count < BUF_NR_IDX || in query_buffer()
200 out_obj->package.elements[BUF_STATUS_IDX].type != ACPI_TYPE_INTEGER || in query_buffer()
201 out_obj->package.elements[BUF_EXT_STATUS_IDX].type != ACPI_TYPE_INTEGER || in query_buffer()
202 out_obj->package.elements[BUF_ADDR_LOW_IDX].type != ACPI_TYPE_INTEGER || in query_buffer()
203 out_obj->package.elements[BUF_ADDR_HI_IDX].type != ACPI_TYPE_INTEGER || in query_buffer()
204 out_obj->package.elements[BUF_SIZE_IDX].type != ACPI_TYPE_INTEGER) in query_buffer()
207 info->status = out_obj->package.elements[BUF_STATUS_IDX].integer.value; in query_buffer()
208 info->ext_status = in query_buffer()
209 out_obj->package.elements[BUF_EXT_STATUS_IDX].integer.value; in query_buffer()
210 if (info->status != DSM_SUCCEED) { in query_buffer()
211 ret = -EBUSY; in query_buffer()
212 dev_dbg(pfru_dev->parent_dev, "Error Status:%d\n", info->status); in query_buffer()
213 dev_dbg(pfru_dev->parent_dev, "Error Extended Status:%d\n", info->ext_status); in query_buffer()
218 info->addr_lo = in query_buffer()
219 out_obj->package.elements[BUF_ADDR_LOW_IDX].integer.value; in query_buffer()
220 info->addr_hi = in query_buffer()
221 out_obj->package.elements[BUF_ADDR_HI_IDX].integer.value; in query_buffer()
222 info->buf_size = out_obj->package.elements[BUF_SIZE_IDX].integer.value; in query_buffer()
235 const efi_guid_t *image_type_id = &img_hdr->image_type_id; in get_image_type()
244 return -EINVAL; in get_image_type()
258 switch (img_hdr->ver) { in adjust_efi_size()
260 return size - 2 * sizeof(u64); in adjust_efi_size()
263 return size - sizeof(u64); in adjust_efi_size()
267 return -EINVAL; in adjust_efi_size()
287 size = cap_hdr->headersize; in applicable_image()
294 (m_hdr->emb_drv_cnt + m_hdr->payload_cnt) * sizeof(u64); in applicable_image()
306 size += sizeof(u64) + auth->auth_info.hdr.len; in applicable_image()
311 return payload_hdr->rt_ver >= cap->code_rt_version; in applicable_image()
313 return payload_hdr->rt_ver >= cap->drv_rt_version; in applicable_image()
319 dev_dbg(pfru_dev->parent_dev, "Update result:\n"); in print_update_debug_info()
320 dev_dbg(pfru_dev->parent_dev, "Authentication Time Low:%lld\n", in print_update_debug_info()
321 result->low_auth_time); in print_update_debug_info()
322 dev_dbg(pfru_dev->parent_dev, "Authentication Time High:%lld\n", in print_update_debug_info()
323 result->high_auth_time); in print_update_debug_info()
324 dev_dbg(pfru_dev->parent_dev, "Execution Time Low:%lld\n", in print_update_debug_info()
325 result->low_exec_time); in print_update_debug_info()
326 dev_dbg(pfru_dev->parent_dev, "Execution Time High:%lld\n", in print_update_debug_info()
327 result->high_exec_time); in print_update_debug_info()
335 int ret = -EINVAL; in start_update()
343 in_buf.integer.value = action; in start_update()
345 handle = ACPI_HANDLE(pfru_dev->parent_dev); in start_update()
347 pfru_dev->rev_id, PFRU_FUNC_START, in start_update()
352 if (out_obj->package.count < UPDATE_NR_IDX || in start_update()
353 out_obj->package.elements[UPDATE_STATUS_IDX].type != ACPI_TYPE_INTEGER || in start_update()
354 out_obj->package.elements[UPDATE_EXT_STATUS_IDX].type != ACPI_TYPE_INTEGER || in start_update()
355 out_obj->package.elements[UPDATE_AUTH_TIME_LOW_IDX].type != ACPI_TYPE_INTEGER || in start_update()
356 out_obj->package.elements[UPDATE_AUTH_TIME_HI_IDX].type != ACPI_TYPE_INTEGER || in start_update()
357 out_obj->package.elements[UPDATE_EXEC_TIME_LOW_IDX].type != ACPI_TYPE_INTEGER || in start_update()
358 out_obj->package.elements[UPDATE_EXEC_TIME_HI_IDX].type != ACPI_TYPE_INTEGER) in start_update()
362 out_obj->package.elements[UPDATE_STATUS_IDX].integer.value; in start_update()
364 out_obj->package.elements[UPDATE_EXT_STATUS_IDX].integer.value; in start_update()
367 ret = -EBUSY; in start_update()
368 dev_dbg(pfru_dev->parent_dev, "Error Status:%d\n", update_result.status); in start_update()
369 dev_dbg(pfru_dev->parent_dev, "Error Extended Status:%d\n", in start_update()
376 out_obj->package.elements[UPDATE_AUTH_TIME_LOW_IDX].integer.value; in start_update()
378 out_obj->package.elements[UPDATE_AUTH_TIME_HI_IDX].integer.value; in start_update()
380 out_obj->package.elements[UPDATE_EXEC_TIME_LOW_IDX].integer.value; in start_update()
382 out_obj->package.elements[UPDATE_EXEC_TIME_HI_IDX].integer.value; in start_update()
408 return -EFAULT; in pfru_ioctl()
414 return -EFAULT; in pfru_ioctl()
417 return -EINVAL; in pfru_ioctl()
419 pfru_dev->rev_id = rev; in pfru_ioctl()
433 return -ENOTTY; in pfru_ioctl()
454 return -EINVAL; in pfru_write()
464 return -ENOMEM; in pfru_write()
467 ret = -EINVAL; in pfru_write()
477 ret = -EINVAL; in pfru_write()
496 misc_deregister(&pfru_dev->miscdev); in acpi_pfru_remove()
503 ida_free(&pfru_ida, pfru_dev->index); in pfru_put_idx()
508 acpi_handle handle = ACPI_HANDLE(&pdev->dev); in acpi_pfru_probe()
513 dev_dbg(&pdev->dev, "Missing _DSM\n"); in acpi_pfru_probe()
514 return -ENODEV; in acpi_pfru_probe()
517 pfru_dev = devm_kzalloc(&pdev->dev, sizeof(*pfru_dev), GFP_KERNEL); in acpi_pfru_probe()
519 return -ENOMEM; in acpi_pfru_probe()
525 pfru_dev->index = ret; in acpi_pfru_probe()
526 ret = devm_add_action_or_reset(&pdev->dev, pfru_put_idx, pfru_dev); in acpi_pfru_probe()
530 pfru_dev->rev_id = PFRU_DEFAULT_REV_ID; in acpi_pfru_probe()
531 pfru_dev->parent_dev = &pdev->dev; in acpi_pfru_probe()
533 pfru_dev->miscdev.minor = MISC_DYNAMIC_MINOR; in acpi_pfru_probe()
534 pfru_dev->miscdev.name = devm_kasprintf(&pdev->dev, GFP_KERNEL, in acpi_pfru_probe()
535 "pfru%d", pfru_dev->index); in acpi_pfru_probe()
536 if (!pfru_dev->miscdev.name) in acpi_pfru_probe()
537 return -ENOMEM; in acpi_pfru_probe()
539 pfru_dev->miscdev.nodename = devm_kasprintf(&pdev->dev, GFP_KERNEL, in acpi_pfru_probe()
540 "acpi_pfr_update%d", pfru_dev->index); in acpi_pfru_probe()
541 if (!pfru_dev->miscdev.nodename) in acpi_pfru_probe()
542 return -ENOMEM; in acpi_pfru_probe()
544 pfru_dev->miscdev.fops = &acpi_pfru_fops; in acpi_pfru_probe()
545 pfru_dev->miscdev.parent = &pdev->dev; in acpi_pfru_probe()
547 ret = misc_register(&pfru_dev->miscdev); in acpi_pfru_probe()