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()
131 dev_dbg(pfru_dev->parent_dev, in query_capability()
132 "Query cap failed with no object\n"); in query_capability()
136 if (out_obj->package.count < CAP_NR_IDX || in query_capability()
137 out_obj->package.elements[CAP_STATUS_IDX].type != ACPI_TYPE_INTEGER || in query_capability()
138 out_obj->package.elements[CAP_UPDATE_IDX].type != ACPI_TYPE_INTEGER || in query_capability()
139 out_obj->package.elements[CAP_CODE_TYPE_IDX].type != ACPI_TYPE_BUFFER || in query_capability()
140 out_obj->package.elements[CAP_FW_VER_IDX].type != ACPI_TYPE_INTEGER || in query_capability()
141 out_obj->package.elements[CAP_CODE_RT_VER_IDX].type != ACPI_TYPE_INTEGER || in query_capability()
142 out_obj->package.elements[CAP_DRV_TYPE_IDX].type != ACPI_TYPE_BUFFER || in query_capability()
143 out_obj->package.elements[CAP_DRV_RT_VER_IDX].type != ACPI_TYPE_INTEGER || in query_capability()
144 out_obj->package.elements[CAP_DRV_SVN_IDX].type != ACPI_TYPE_INTEGER || in query_capability()
145 out_obj->package.elements[CAP_PLAT_ID_IDX].type != ACPI_TYPE_BUFFER || in query_capability()
146 out_obj->package.elements[CAP_OEM_ID_IDX].type != ACPI_TYPE_BUFFER || in query_capability()
147 out_obj->package.elements[CAP_OEM_INFO_IDX].type != ACPI_TYPE_BUFFER) { in query_capability()
148 dev_dbg(pfru_dev->parent_dev, in query_capability()
149 "Query cap failed with invalid package count/type\n"); in query_capability()
153 cap_hdr->status = out_obj->package.elements[CAP_STATUS_IDX].integer.value; in query_capability()
154 if (cap_hdr->status != DSM_SUCCEED) { in query_capability()
155 ret = -EBUSY; in query_capability()
156 dev_dbg(pfru_dev->parent_dev, "Query cap Error Status:%d\n", in query_capability()
157 cap_hdr->status); in query_capability()
161 cap_hdr->update_cap = out_obj->package.elements[CAP_UPDATE_IDX].integer.value; in query_capability()
162 memcpy(&cap_hdr->code_type, in query_capability()
163 out_obj->package.elements[CAP_CODE_TYPE_IDX].buffer.pointer, in query_capability()
164 out_obj->package.elements[CAP_CODE_TYPE_IDX].buffer.length); in query_capability()
165 cap_hdr->fw_version = in query_capability()
166 out_obj->package.elements[CAP_FW_VER_IDX].integer.value; in query_capability()
167 cap_hdr->code_rt_version = in query_capability()
168 out_obj->package.elements[CAP_CODE_RT_VER_IDX].integer.value; in query_capability()
169 memcpy(&cap_hdr->drv_type, in query_capability()
170 out_obj->package.elements[CAP_DRV_TYPE_IDX].buffer.pointer, in query_capability()
171 out_obj->package.elements[CAP_DRV_TYPE_IDX].buffer.length); in query_capability()
172 cap_hdr->drv_rt_version = in query_capability()
173 out_obj->package.elements[CAP_DRV_RT_VER_IDX].integer.value; in query_capability()
174 cap_hdr->drv_svn = in query_capability()
175 out_obj->package.elements[CAP_DRV_SVN_IDX].integer.value; in query_capability()
176 memcpy(&cap_hdr->platform_id, in query_capability()
177 out_obj->package.elements[CAP_PLAT_ID_IDX].buffer.pointer, in query_capability()
178 out_obj->package.elements[CAP_PLAT_ID_IDX].buffer.length); in query_capability()
179 memcpy(&cap_hdr->oem_id, in query_capability()
180 out_obj->package.elements[CAP_OEM_ID_IDX].buffer.pointer, in query_capability()
181 out_obj->package.elements[CAP_OEM_ID_IDX].buffer.length); in query_capability()
182 cap_hdr->oem_info_len = in query_capability()
183 out_obj->package.elements[CAP_OEM_INFO_IDX].buffer.length; in query_capability()
196 acpi_handle handle = ACPI_HANDLE(pfru_dev->parent_dev); in query_buffer()
198 int ret = -EINVAL; in query_buffer()
201 pfru_dev->rev_id, PFRU_FUNC_QUERY_BUF, in query_buffer()
204 dev_dbg(pfru_dev->parent_dev, in query_buffer()
205 "Query buf failed with no object\n"); in query_buffer()
209 if (out_obj->package.count < BUF_NR_IDX || in query_buffer()
210 out_obj->package.elements[BUF_STATUS_IDX].type != ACPI_TYPE_INTEGER || in query_buffer()
211 out_obj->package.elements[BUF_EXT_STATUS_IDX].type != ACPI_TYPE_INTEGER || in query_buffer()
212 out_obj->package.elements[BUF_ADDR_LOW_IDX].type != ACPI_TYPE_INTEGER || in query_buffer()
213 out_obj->package.elements[BUF_ADDR_HI_IDX].type != ACPI_TYPE_INTEGER || in query_buffer()
214 out_obj->package.elements[BUF_SIZE_IDX].type != ACPI_TYPE_INTEGER) { in query_buffer()
215 dev_dbg(pfru_dev->parent_dev, in query_buffer()
216 "Query buf failed with invalid package count/type\n"); in query_buffer()
220 info->status = out_obj->package.elements[BUF_STATUS_IDX].integer.value; in query_buffer()
221 info->ext_status = in query_buffer()
222 out_obj->package.elements[BUF_EXT_STATUS_IDX].integer.value; in query_buffer()
223 if (info->status != DSM_SUCCEED) { in query_buffer()
224 ret = -EBUSY; in query_buffer()
225 dev_dbg(pfru_dev->parent_dev, in query_buffer()
226 "Query buf failed with Error Status:%d\n", info->status); in query_buffer()
227 dev_dbg(pfru_dev->parent_dev, in query_buffer()
228 "Query buf failed with Error Extended Status:%d\n", info->ext_status); in query_buffer()
233 info->addr_lo = in query_buffer()
234 out_obj->package.elements[BUF_ADDR_LOW_IDX].integer.value; in query_buffer()
235 info->addr_hi = in query_buffer()
236 out_obj->package.elements[BUF_ADDR_HI_IDX].integer.value; in query_buffer()
237 info->buf_size = out_obj->package.elements[BUF_SIZE_IDX].integer.value; in query_buffer()
250 const efi_guid_t *image_type_id = &img_hdr->image_type_id; in get_image_type()
259 return -EINVAL; in get_image_type()
273 switch (img_hdr->ver) { in adjust_efi_size()
275 return size - 2 * sizeof(u64); in adjust_efi_size()
278 return size - sizeof(u64); in adjust_efi_size()
282 return -EINVAL; in adjust_efi_size()
302 size = cap_hdr->headersize; in applicable_image()
309 (m_hdr->emb_drv_cnt + m_hdr->payload_cnt) * sizeof(u64); in applicable_image()
314 dev_dbg(pfru_dev->parent_dev, "Invalid image type\n"); in applicable_image()
320 dev_dbg(pfru_dev->parent_dev, "Invalid image size\n"); in applicable_image()
325 size += sizeof(u64) + auth->auth_info.hdr.len; in applicable_image()
330 return payload_hdr->rt_ver >= cap->code_rt_version; in applicable_image()
332 return payload_hdr->svn_ver >= cap->drv_svn; in applicable_image()
338 dev_dbg(pfru_dev->parent_dev, "Update result:\n"); in print_update_debug_info()
339 dev_dbg(pfru_dev->parent_dev, "Authentication Time Low:%lld\n", in print_update_debug_info()
340 result->low_auth_time); in print_update_debug_info()
341 dev_dbg(pfru_dev->parent_dev, "Authentication Time High:%lld\n", in print_update_debug_info()
342 result->high_auth_time); in print_update_debug_info()
343 dev_dbg(pfru_dev->parent_dev, "Execution Time Low:%lld\n", in print_update_debug_info()
344 result->low_exec_time); in print_update_debug_info()
345 dev_dbg(pfru_dev->parent_dev, "Execution Time High:%lld\n", in print_update_debug_info()
346 result->high_exec_time); in print_update_debug_info()
354 int ret = -EINVAL; in start_update()
362 in_buf.integer.value = action; in start_update()
364 handle = ACPI_HANDLE(pfru_dev->parent_dev); in start_update()
366 pfru_dev->rev_id, PFRU_FUNC_START, in start_update()
369 dev_dbg(pfru_dev->parent_dev, in start_update()
370 "Update failed to start with no object\n"); in start_update()
374 if (out_obj->package.count < UPDATE_NR_IDX || in start_update()
375 out_obj->package.elements[UPDATE_STATUS_IDX].type != ACPI_TYPE_INTEGER || in start_update()
376 out_obj->package.elements[UPDATE_EXT_STATUS_IDX].type != ACPI_TYPE_INTEGER || in start_update()
377 out_obj->package.elements[UPDATE_AUTH_TIME_LOW_IDX].type != ACPI_TYPE_INTEGER || in start_update()
378 out_obj->package.elements[UPDATE_AUTH_TIME_HI_IDX].type != ACPI_TYPE_INTEGER || in start_update()
379 out_obj->package.elements[UPDATE_EXEC_TIME_LOW_IDX].type != ACPI_TYPE_INTEGER || in start_update()
380 out_obj->package.elements[UPDATE_EXEC_TIME_HI_IDX].type != ACPI_TYPE_INTEGER) { in start_update()
381 dev_dbg(pfru_dev->parent_dev, in start_update()
382 "Update failed with invalid package count/type\n"); in start_update()
387 out_obj->package.elements[UPDATE_STATUS_IDX].integer.value; in start_update()
389 out_obj->package.elements[UPDATE_EXT_STATUS_IDX].integer.value; in start_update()
392 ret = -EBUSY; in start_update()
393 dev_dbg(pfru_dev->parent_dev, in start_update()
394 "Update failed with Error Status:%d\n", update_result.status); in start_update()
395 dev_dbg(pfru_dev->parent_dev, in start_update()
396 "Update failed with Error Extended Status:%d\n", in start_update()
403 out_obj->package.elements[UPDATE_AUTH_TIME_LOW_IDX].integer.value; in start_update()
405 out_obj->package.elements[UPDATE_AUTH_TIME_HI_IDX].integer.value; in start_update()
407 out_obj->package.elements[UPDATE_EXEC_TIME_LOW_IDX].integer.value; in start_update()
409 out_obj->package.elements[UPDATE_EXEC_TIME_HI_IDX].integer.value; in start_update()
435 return -EFAULT; in pfru_ioctl()
441 return -EFAULT; in pfru_ioctl()
444 return -EINVAL; in pfru_ioctl()
446 pfru_dev->rev_id = rev; in pfru_ioctl()
460 return -ENOTTY; in pfru_ioctl()
481 dev_dbg(pfru_dev->parent_dev, "Capsule image size too large\n"); in pfru_write()
482 return -EINVAL; in pfru_write()
493 dev_dbg(pfru_dev->parent_dev, "Failed to remap the buffer\n"); in pfru_write()
494 return -ENOMEM; in pfru_write()
498 dev_dbg(pfru_dev->parent_dev, in pfru_write()
499 "Failed to copy the data from the user space buffer\n"); in pfru_write()
500 ret = -EINVAL; in pfru_write()
510 ret = -EINVAL; in pfru_write()
529 misc_deregister(&pfru_dev->miscdev); in acpi_pfru_remove()
536 ida_free(&pfru_ida, pfru_dev->index); in pfru_put_idx()
541 acpi_handle handle = ACPI_HANDLE(&pdev->dev); in acpi_pfru_probe()
546 dev_dbg(&pdev->dev, "Missing _DSM\n"); in acpi_pfru_probe()
547 return -ENODEV; in acpi_pfru_probe()
550 pfru_dev = devm_kzalloc(&pdev->dev, sizeof(*pfru_dev), GFP_KERNEL); in acpi_pfru_probe()
552 return -ENOMEM; in acpi_pfru_probe()
558 pfru_dev->index = ret; in acpi_pfru_probe()
559 ret = devm_add_action_or_reset(&pdev->dev, pfru_put_idx, pfru_dev); in acpi_pfru_probe()
563 pfru_dev->rev_id = PFRU_DEFAULT_REV_ID; in acpi_pfru_probe()
564 pfru_dev->parent_dev = &pdev->dev; in acpi_pfru_probe()
566 pfru_dev->miscdev.minor = MISC_DYNAMIC_MINOR; in acpi_pfru_probe()
567 pfru_dev->miscdev.name = devm_kasprintf(&pdev->dev, GFP_KERNEL, in acpi_pfru_probe()
568 "pfru%d", pfru_dev->index); in acpi_pfru_probe()
569 if (!pfru_dev->miscdev.name) in acpi_pfru_probe()
570 return -ENOMEM; in acpi_pfru_probe()
572 pfru_dev->miscdev.nodename = devm_kasprintf(&pdev->dev, GFP_KERNEL, in acpi_pfru_probe()
573 "acpi_pfr_update%d", pfru_dev->index); in acpi_pfru_probe()
574 if (!pfru_dev->miscdev.nodename) in acpi_pfru_probe()
575 return -ENOMEM; in acpi_pfru_probe()
577 pfru_dev->miscdev.fops = &acpi_pfru_fops; in acpi_pfru_probe()
578 pfru_dev->miscdev.parent = &pdev->dev; in acpi_pfru_probe()
580 ret = misc_register(&pfru_dev->miscdev); in acpi_pfru_probe()