1/* SPDX-License-Identifier: GPL-2.0-only
2 *
3 * Copyright (C) 2020-2021 Intel Corporation.
4 */
5
6#ifndef _IOSM_IPC_COREDUMP_H_
7#define _IOSM_IPC_COREDUMP_H_
8
9#include "iosm_ipc_devlink.h"
10
11/* Max number of bytes to receive for Coredump list structure */
12#define MAX_CD_LIST_SIZE  0x1000
13
14/* Max buffer allocated to receive coredump data */
15#define MAX_DATA_SIZE 0x00010000
16
17/* Max length */
18#define MAX_SIZE_LEN 32
19
20/**
21 * struct iosm_cd_list_entry - Structure to hold coredump file info.
22 * @size:       Number of bytes for the entry
23 * @filename:   Coredump filename to be generated on host
24 */
25struct iosm_cd_list_entry {
26	__le32 size;
27	char filename[IOSM_MAX_FILENAME_LEN];
28} __packed;
29
30/**
31 * struct iosm_cd_list - Structure to hold list of coredump files
32 *                      to be collected.
33 * @num_entries:        Number of entries to be received
34 * @entry:              Contains File info
35 */
36struct iosm_cd_list {
37	__le32 num_entries;
38	struct iosm_cd_list_entry entry[];
39} __packed;
40
41/**
42 * struct iosm_cd_table - Common Coredump table
43 * @version:            Version of coredump structure
44 * @list:               Coredump list structure
45 */
46struct iosm_cd_table {
47	__le32 version;
48	struct iosm_cd_list list;
49} __packed;
50
51int ipc_coredump_collect(struct iosm_devlink *devlink, u8 **data, int entry,
52			 u32 region_size);
53
54int ipc_coredump_get_list(struct iosm_devlink *devlink, u16 cmd);
55
56#endif /* _IOSM_IPC_COREDUMP_H_ */
57