DCE-KMD: Add support for logging infra

- Allocate DMA mapped buffer from DCE-KMD and pass it to DCE FW through
  admin-cmd calls.
- Add debugfs node to retrieve buffer data and print through seq file.
- Add support to clear log buffer

JIRA TDS-15963

Change-Id: Ied4ffe1df14c8db61cfe15e6442f55e8306530b8
Signed-off-by: jaiyasha <jaiyasha@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3117241
GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
Reviewed-by: Mahesh Kumar <mahkumar@nvidia.com>
Tested-by: Mahesh Kumar <mahkumar@nvidia.com>
Reviewed-by: Vinod Gopalakrishnakurup <vinodg@nvidia.com>
This commit is contained in:
jaiyasha
2024-04-16 11:02:26 +00:00
committed by Jon Hunter
parent d9679931aa
commit c89da8defd
10 changed files with 498 additions and 1 deletions

View File

@@ -200,6 +200,19 @@ struct dce_firmware {
u64 dma_handle;
};
/**
* struct dce_log_buffer - Contains dce log buffer info
*
* @iova_addr : iova address of the buffer
* @size : size of the buffer
* @base : cpu base address of the buffer
*/
struct dce_log_buffer {
dma_addr_t iova_addr;
size_t size;
void *cpu_base;
};
/**
* struct tegra_dce - Primary OS independent tegra dce structure to hold dce
* cluster's and it's element's runtime info.
@@ -287,6 +300,10 @@ struct tegra_dce {
* @fw_data - Stores info regardign firmware to be used runtime.
*/
struct dce_firmware *fw_data;
/**
* @dce_log_buffer_struct - Stores info regarding DCE log buffer
*/
struct dce_log_buffer dce_log_buff;
/**
* @dce_admin_ch_cl_buff - Stores admin channel client buffers.
*/
@@ -424,6 +441,8 @@ int dce_admin_send_cmd_clear_perf_events(struct tegra_dce *d,
struct dce_ipc_message *msg);
int dce_admin_ipc_wait(struct tegra_dce *d);
void dce_admin_ipc_handle_signal(struct tegra_dce *d, u32 ch_type);
int dce_admin_set_log_info(struct tegra_dce *d, struct dce_ipc_message *msg);
int dce_admin_get_log_info(struct tegra_dce *d, struct dce_ipc_message *msg);
bool dce_fw_boot_complete(struct tegra_dce *d);
void dce_request_fw_boot_complete(struct tegra_dce *d);