summaryrefslogtreecommitdiff
path: root/drivers/net/wwan/iosm/iosm_ipc_coredump.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wwan/iosm/iosm_ipc_coredump.c')
-rw-r--r--drivers/net/wwan/iosm/iosm_ipc_coredump.c110
1 files changed, 0 insertions, 110 deletions
diff --git a/drivers/net/wwan/iosm/iosm_ipc_coredump.c b/drivers/net/wwan/iosm/iosm_ipc_coredump.c
deleted file mode 100644
index fba3c3454e80..000000000000
--- a/drivers/net/wwan/iosm/iosm_ipc_coredump.c
+++ /dev/null
@@ -1,110 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2020-2021 Intel Corporation.
- */
-
-#include "iosm_ipc_coredump.h"
-
-/* Collect coredump data from modem */
-int ipc_coredump_collect(struct iosm_devlink *devlink, u8 **data, int entry,
- u32 region_size)
-{
- int ret, bytes_to_read, bytes_read = 0, i = 0;
- s32 remaining;
- u8 *data_ptr;
-
- data_ptr = vmalloc(region_size);
- if (!data_ptr)
- return -ENOMEM;
-
- remaining = devlink->cd_file_info[entry].actual_size;
- ret = ipc_devlink_send_cmd(devlink, rpsi_cmd_coredump_get, entry);
- if (ret) {
- dev_err(devlink->dev, "Send coredump_get cmd failed");
- goto get_cd_fail;
- }
- while (remaining > 0) {
- bytes_to_read = min(remaining, MAX_DATA_SIZE);
- bytes_read = 0;
- ret = ipc_imem_sys_devlink_read(devlink, data_ptr + i,
- bytes_to_read, &bytes_read);
- if (ret) {
- dev_err(devlink->dev, "CD data read failed");
- goto get_cd_fail;
- }
- remaining -= bytes_read;
- i += bytes_read;
- }
-
- *data = data_ptr;
-
- return ret;
-get_cd_fail:
- vfree(data_ptr);
- return ret;
-}
-
-/* Get coredump list to be collected from modem */
-int ipc_coredump_get_list(struct iosm_devlink *devlink, u16 cmd)
-{
- u32 byte_read, num_entries, file_size;
- struct iosm_cd_table *cd_table;
- u8 size[MAX_SIZE_LEN], i;
- char *filename;
- int ret = 0;
-
- cd_table = kzalloc(MAX_CD_LIST_SIZE, GFP_KERNEL);
- if (!cd_table) {
- ret = -ENOMEM;
- goto cd_init_fail;
- }
-
- ret = ipc_devlink_send_cmd(devlink, cmd, MAX_CD_LIST_SIZE);
- if (ret) {
- dev_err(devlink->dev, "rpsi_cmd_coredump_start failed");
- goto cd_init_fail;
- }
-
- ret = ipc_imem_sys_devlink_read(devlink, (u8 *)cd_table,
- MAX_CD_LIST_SIZE, &byte_read);
- if (ret) {
- dev_err(devlink->dev, "Coredump data is invalid");
- goto cd_init_fail;
- }
-
- if (byte_read != MAX_CD_LIST_SIZE)
- goto cd_init_fail;
-
- if (cmd == rpsi_cmd_coredump_start) {
- num_entries = le32_to_cpu(cd_table->list.num_entries);
- if (num_entries == 0 || num_entries > IOSM_NOF_CD_REGION) {
- ret = -EINVAL;
- goto cd_init_fail;
- }
-
- for (i = 0; i < num_entries; i++) {
- file_size = le32_to_cpu(cd_table->list.entry[i].size);
- filename = cd_table->list.entry[i].filename;
-
- if (file_size > devlink->cd_file_info[i].default_size) {
- ret = -EINVAL;
- goto cd_init_fail;
- }
-
- devlink->cd_file_info[i].actual_size = file_size;
- dev_dbg(devlink->dev, "file: %s actual size %d",
- filename, file_size);
- devlink_flash_update_status_notify(devlink->devlink_ctx,
- filename,
- "FILENAME", 0, 0);
- snprintf(size, sizeof(size), "%d", file_size);
- devlink_flash_update_status_notify(devlink->devlink_ctx,
- size, "FILE SIZE",
- 0, 0);
- }
- }
-
-cd_init_fail:
- kfree(cd_table);
- return ret;
-}