/* Copyright (c) 2022 Intel Corporation
 * SPDX-License-Identifier: Apache-2.0
 */
#ifndef ZEPHYR_TESTS_INTEL_ADSP_TESTS_H
#define ZEPHYR_TESTS_INTEL_ADSP_TESTS_H

#include <zephyr/sys_clock.h>
#include <intel_adsp_ipc.h>
#include <cavstool.h>
#include <stdint.h>
#include <zephyr/device.h>
#include <zephyr/ztest.h>

/* Turn this define on to see register dumps after each step */
#define INTEL_ADSP_HDA_DBG 0

#define CONCAT3(x, y, z) x ## y ## z

#define STREAM_SET_BASE(stream_set) CONCAT3(HDA_, stream_set, _BASE)
#define STREAM_SET_NAME(stream_set) STRINGIFY(stream_set)

#if INTEL_ADSP_HDA_DBG
#define hda_dump_regs(stream_set, regblock_size, stream_id, ...) \
	printk(__VA_ARGS__); printk(": ");        \
	intel_adsp_hda_dbg(STREAM_SET_NAME(stream_set), STREAM_SET_BASE(stream_set), \
		regblock_size, stream_id)
#else
#define hda_dump_regs(stream_set, regblock_size, stream_id, msg, ...) do {} while (0)
#endif

static inline void hda_ipc_msg(const struct device *dev, uint32_t data,
			       uint32_t ext, k_timeout_t timeout)
{
	zassert_true(intel_adsp_ipc_send_message_sync(dev, data, ext, timeout),
		"Unexpected ipc send message failure, try increasing IPC_TIMEOUT");
}

#endif /* ZEPHYR_TESTS_INTEL_ADSP_TESTS_H */
