169b23b39SCezary Rojewski // SPDX-License-Identifier: GPL-2.0-only 269b23b39SCezary Rojewski // 394001147SPierre-Louis Bossart // Copyright(c) 2021-2022 Intel Corporation 469b23b39SCezary Rojewski // 569b23b39SCezary Rojewski // Author: Cezary Rojewski <cezary.rojewski@intel.com> 669b23b39SCezary Rojewski // Amadeusz Slawinski <amadeuszx.slawinski@linux.intel.com> 769b23b39SCezary Rojewski // 869b23b39SCezary Rojewski 969b23b39SCezary Rojewski #include <linux/types.h> 1069b23b39SCezary Rojewski 1169b23b39SCezary Rojewski #define CREATE_TRACE_POINTS 1269b23b39SCezary Rojewski #include "trace.h" 1369b23b39SCezary Rojewski 1469b23b39SCezary Rojewski #define BYTES_PER_LINE 16 1569b23b39SCezary Rojewski #define MAX_CHUNK_SIZE ((PAGE_SIZE - 150) /* Place for trace header */ \ 1669b23b39SCezary Rojewski / (2 * BYTES_PER_LINE + 4) /* chars per line */ \ 1769b23b39SCezary Rojewski * BYTES_PER_LINE) 1869b23b39SCezary Rojewski trace_avs_msg_payload(const void * data,size_t size)1969b23b39SCezary Rojewskivoid trace_avs_msg_payload(const void *data, size_t size) 2069b23b39SCezary Rojewski { 2169b23b39SCezary Rojewski size_t remaining = size; 2269b23b39SCezary Rojewski size_t offset = 0; 2369b23b39SCezary Rojewski 2469b23b39SCezary Rojewski while (remaining > 0) { 2569b23b39SCezary Rojewski u32 chunk; 2669b23b39SCezary Rojewski 274a1b1b65SAmadeusz Sławiński chunk = min_t(size_t, remaining, MAX_CHUNK_SIZE); 2869b23b39SCezary Rojewski trace_avs_ipc_msg_payload(data, chunk, offset, size); 2969b23b39SCezary Rojewski 3069b23b39SCezary Rojewski remaining -= chunk; 3169b23b39SCezary Rojewski offset += chunk; 3269b23b39SCezary Rojewski } 3369b23b39SCezary Rojewski } 34