Files
linux-nv-oot/sound/soc/tegra-virt-alt/tegra210_adsp_virt_alt.h
Jon Hunter 1bdabd6286 ASoC: tegra-virt-alt: Fix build for Linux v6.13
Building the tegra-virt-alt driver with Linux v6.13 fails because some
of the header files are not found ...

 sound/soc/tegra-virt-alt/tegra210_virt_alt_admaif.c:17:10: fatal error:
  tegra_pcm_alt.h: No such file or directory
   17 | #include "tegra_pcm_alt.h"
      |          ^~~~~~~~~~~~~~~~~

The 'tegra_pcm_alt.h' header is located in a 'include' sub-directory and
although the cflags add this path for find headers, the header is not
found because the '#include' of the file uses double-quotes and not
"<>". This could be fixed by simply updating the file with
'#include <tegra_pcm_alt.h>'. However, reviewing the code it simplifies
the Makefile to remove the 'include' sub-directory and directly include
the header files. Similarly, we can remove the search path of the
'nvaudio_ivc' headers and directly include these.

Bug 4991705

Change-Id: I1993d1f619698f33fc9edab05ad9235334fd3b5b
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3260938
Reviewed-by: Sameer Pujar <spujar@nvidia.com>
GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
2025-07-24 10:19:11 +00:00

229 lines
6.7 KiB
C

// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2021-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
*
* tegra210_adsp_virt_alt.h - Tegra210 ADSP header
*
*/
#ifndef __TEGRA210_ADSP_ALT_H__
#define __TEGRA210_ADSP_ALT_H__
/* This enum is linked with tegra210_adsp_mux_texts array.*/
/* Anything changed in enum define should be also reflected in text array */
enum tegra210_adsp_virt_regs {
TEGRA210_ADSP_NONE,
/* End-point virtual regs */
TEGRA210_ADSP_FRONT_END1,
TEGRA210_ADSP_FRONT_END2,
TEGRA210_ADSP_FRONT_END3,
TEGRA210_ADSP_FRONT_END4,
TEGRA210_ADSP_FRONT_END5,
TEGRA210_ADSP_FRONT_END6,
TEGRA210_ADSP_FRONT_END7,
TEGRA210_ADSP_FRONT_END8,
TEGRA210_ADSP_FRONT_END9,
TEGRA210_ADSP_FRONT_END10,
TEGRA210_ADSP_FRONT_END11,
TEGRA210_ADSP_FRONT_END12,
TEGRA210_ADSP_FRONT_END13,
TEGRA210_ADSP_FRONT_END14,
TEGRA210_ADSP_FRONT_END15,
TEGRA210_ADSP_EAVB,
TEGRA210_ADSP_ADMAIF1,
TEGRA210_ADSP_ADMAIF2,
TEGRA210_ADSP_ADMAIF3,
TEGRA210_ADSP_ADMAIF4,
TEGRA210_ADSP_ADMAIF5,
TEGRA210_ADSP_ADMAIF6,
TEGRA210_ADSP_ADMAIF7,
TEGRA210_ADSP_ADMAIF8,
TEGRA210_ADSP_ADMAIF9,
TEGRA210_ADSP_ADMAIF10,
TEGRA210_ADSP_ADMAIF11,
TEGRA210_ADSP_ADMAIF12,
TEGRA210_ADSP_ADMAIF13,
TEGRA210_ADSP_ADMAIF14,
TEGRA210_ADSP_ADMAIF15,
TEGRA210_ADSP_ADMAIF16,
TEGRA210_ADSP_ADMAIF17,
TEGRA210_ADSP_ADMAIF18,
TEGRA210_ADSP_ADMAIF19,
TEGRA210_ADSP_ADMAIF20,
TEGRA210_ADSP_ADMAIF21,
TEGRA210_ADSP_ADMAIF22,
TEGRA210_ADSP_ADMAIF23,
TEGRA210_ADSP_ADMAIF24,
TEGRA210_ADSP_ADMAIF25,
TEGRA210_ADSP_ADMAIF26,
TEGRA210_ADSP_ADMAIF27,
TEGRA210_ADSP_ADMAIF28,
TEGRA210_ADSP_ADMAIF29,
TEGRA210_ADSP_ADMAIF30,
TEGRA210_ADSP_ADMAIF31,
TEGRA210_ADSP_ADMAIF32,
/* Virtual regs for apps */
TEGRA210_ADSP_APM_IN1,
TEGRA210_ADSP_APM_IN2,
TEGRA210_ADSP_APM_IN3,
TEGRA210_ADSP_APM_IN4,
TEGRA210_ADSP_APM_IN5,
TEGRA210_ADSP_APM_IN6,
TEGRA210_ADSP_APM_IN7,
TEGRA210_ADSP_APM_IN8,
TEGRA210_ADSP_APM_IN9,
TEGRA210_ADSP_APM_IN10,
TEGRA210_ADSP_APM_IN11,
TEGRA210_ADSP_APM_IN12,
TEGRA210_ADSP_APM_IN13,
TEGRA210_ADSP_APM_IN14,
TEGRA210_ADSP_APM_IN15,
TEGRA210_ADSP_APM_OUT1,
TEGRA210_ADSP_APM_OUT2,
TEGRA210_ADSP_APM_OUT3,
TEGRA210_ADSP_APM_OUT4,
TEGRA210_ADSP_APM_OUT5,
TEGRA210_ADSP_APM_OUT6,
TEGRA210_ADSP_APM_OUT7,
TEGRA210_ADSP_APM_OUT8,
TEGRA210_ADSP_APM_OUT9,
TEGRA210_ADSP_APM_OUT10,
TEGRA210_ADSP_APM_OUT11,
TEGRA210_ADSP_APM_OUT12,
TEGRA210_ADSP_APM_OUT13,
TEGRA210_ADSP_APM_OUT14,
TEGRA210_ADSP_APM_OUT15,
TEGRA210_ADSP_PLUGIN_ADMA1,
TEGRA210_ADSP_PLUGIN_ADMA2,
TEGRA210_ADSP_PLUGIN_ADMA3,
TEGRA210_ADSP_PLUGIN_ADMA4,
TEGRA210_ADSP_PLUGIN_ADMA5,
TEGRA210_ADSP_PLUGIN_ADMA6,
TEGRA210_ADSP_PLUGIN_ADMA7,
TEGRA210_ADSP_PLUGIN_ADMA8,
TEGRA210_ADSP_PLUGIN_ADMA9,
TEGRA210_ADSP_PLUGIN_ADMA10,
TEGRA210_ADSP_PLUGIN_ADMA11,
TEGRA210_ADSP_PLUGIN_ADMA12,
TEGRA210_ADSP_PLUGIN_ADMA13,
TEGRA210_ADSP_PLUGIN_ADMA14,
TEGRA210_ADSP_PLUGIN_ADMA15,
TEGRA210_ADSP_PLUGIN_ADMA1_TX,
TEGRA210_ADSP_PLUGIN_ADMA2_TX,
TEGRA210_ADSP_PLUGIN_ADMA3_TX,
TEGRA210_ADSP_PLUGIN_ADMA4_TX,
TEGRA210_ADSP_PLUGIN_ADMA5_TX,
TEGRA210_ADSP_PLUGIN_ADMA6_TX,
TEGRA210_ADSP_PLUGIN_ADMA7_TX,
TEGRA210_ADSP_PLUGIN_ADMA8_TX,
TEGRA210_ADSP_PLUGIN_ADMA9_TX,
TEGRA210_ADSP_PLUGIN_ADMA10_TX,
TEGRA210_ADSP_PLUGIN_ADMA11_TX,
TEGRA210_ADSP_PLUGIN_ADMA12_TX,
TEGRA210_ADSP_PLUGIN_ADMA13_TX,
TEGRA210_ADSP_PLUGIN_ADMA14_TX,
TEGRA210_ADSP_PLUGIN_ADMA15_TX,
TEGRA210_ADSP_PLUGIN1,
TEGRA210_ADSP_PLUGIN2,
TEGRA210_ADSP_PLUGIN3,
TEGRA210_ADSP_PLUGIN4,
TEGRA210_ADSP_PLUGIN5,
TEGRA210_ADSP_PLUGIN6,
TEGRA210_ADSP_PLUGIN7,
TEGRA210_ADSP_PLUGIN8,
TEGRA210_ADSP_PLUGIN9,
TEGRA210_ADSP_PLUGIN10,
TEGRA210_ADSP_PLUGIN11,
TEGRA210_ADSP_PLUGIN12,
TEGRA210_ADSP_PLUGIN13,
TEGRA210_ADSP_PLUGIN14,
TEGRA210_ADSP_PLUGIN15,
TEGRA210_ADSP_PLUGIN16,
TEGRA210_ADSP_PLUGIN17,
TEGRA210_ADSP_PLUGIN18,
TEGRA210_ADSP_PLUGIN19,
TEGRA210_ADSP_PLUGIN20,
TEGRA210_ADSP_VIRT_REG_MAX,
};
/* Supports widget id 0x0 - 0xFF */
#define TEGRA210_ADSP_WIDGET_SOURCE_SHIFT 0
#define TEGRA210_ADSP_WIDGET_SOURCE_MASK (0xff << \
TEGRA210_ADSP_WIDGET_SOURCE_SHIFT)
#define TEGRA210_ADSP_WIDGET_EN_SHIFT 31
#define TEGRA210_ADSP_WIDGET_EN_MASK (0x1 << \
TEGRA210_ADSP_WIDGET_EN_SHIFT)
/* TODO : Check if we can remove these macros */
#define ADSP_FE_START TEGRA210_ADSP_FRONT_END1
#define ADSP_FE_END TEGRA210_ADSP_FRONT_END15
#define ADSP_ADMAIF_START TEGRA210_ADSP_ADMAIF1
#define ADSP_ADMAIF_END TEGRA210_ADSP_ADMAIF32
#define ADSP_EAVB_START TEGRA210_ADSP_EAVB
#define ADSP_FE_COUNT ADSP_EAVB_START
#define APM_IN_START TEGRA210_ADSP_APM_IN1
#define APM_IN_END TEGRA210_ADSP_APM_IN15
#define APM_OUT_START TEGRA210_ADSP_APM_OUT1
#define APM_OUT_END TEGRA210_ADSP_APM_OUT15
#define ADMA_START TEGRA210_ADSP_PLUGIN_ADMA1
#define ADMA_END TEGRA210_ADSP_PLUGIN_ADMA15
#define ADMA_TX_START TEGRA210_ADSP_PLUGIN_ADMA1_TX
#define ADMA_TX_END TEGRA210_ADSP_PLUGIN_ADMA15_TX
#define PLUGIN_START TEGRA210_ADSP_PLUGIN1
#define PLUGIN_END TEGRA210_ADSP_PLUGIN20
#define PLUGIN_NUM ((PLUGIN_END - PLUGIN_START) + 1)
#define IS_APM_IN(reg) ((reg >= APM_IN_START) && (reg <= APM_IN_END))
#define IS_APM_OUT(reg) ((reg >= APM_OUT_START) && (reg <= APM_OUT_END))
#define IS_APM(reg) (IS_APM_IN(reg) | IS_APM_OUT(reg))
#define IS_PLUGIN(reg) ((reg >= PLUGIN_START) && (reg <= PLUGIN_END))
#define IS_ADMA_RX(reg) ((reg >= ADMA_START) && (reg <= ADMA_END))
#define IS_ADMA_TX(reg) ((reg >= ADMA_TX_START) && (reg <= ADMA_TX_END))
#define IS_ADMA(reg) (IS_ADMA_RX(reg) || IS_ADMA_TX(reg))
#define IS_ADSP_APP(reg) (IS_APM(reg) | IS_PLUGIN(reg) | IS_ADMA(reg))
#define IS_ADSP_FE(reg) (((reg >= ADSP_FE_START) \
&& (reg <= ADSP_FE_END)) || \
(reg == ADSP_EAVB_START))
#define IS_ADSP_ADMAIF(reg) ((reg >= ADSP_ADMAIF_START) \
&& (reg <= ADSP_ADMAIF_END))
/* ADSP_MSG_FLAGs */
#define TEGRA210_ADSP_MSG_FLAG_SEND 0x0
#define TEGRA210_ADSP_MSG_FLAG_HOLD 0x1
#define TEGRA210_ADSP_MSG_FLAG_NEED_ACK 0x2
/* TODO : Remove hard-coding and get data from DTS */
#define TEGRA210_ADSP_ADMA_CHANNEL_START 10
#define TEGRA210_ADSP_ADMA_CHANNEL_COUNT 10
#define TEGRA210_ADSP_ADMA_BITMAP_COUNT 64
#define TEGRA210_MAX_ADMA_CHANNEL 22
#define TEGRA186_MAX_ADMA_CHANNEL 32
#define TEGRA264_MAX_ADMA_CHANNEL 64
#define TEGRA210_ADSP_ADMA_CHANNEL_START_HV 16
/* ADSP base index for widget name update */
#define TEGRA210_ADSP_ROUTE_BASE ((TEGRA210_ADSP_ADMAIF32 * 18) + \
(15 * TEGRA210_ADSP_APM_OUT1))
#define TEGRA210_ADSP_WIDGET_BASE \
((TEGRA210_ADSP_ADMAIF32 * 3) + \
(TEGRA210_ADSP_PLUGIN1 - TEGRA210_ADSP_APM_IN1) * 2)
#define IS_MMAP_ACCESS(access) \
((access == SNDRV_PCM_ACCESS_MMAP_INTERLEAVED) || \
(access == SNDRV_PCM_ACCESS_MMAP_NONINTERLEAVED) || \
(access == SNDRV_PCM_ACCESS_MMAP_COMPLEX))
#endif
#define ADSP_BACKEND_TO_ADMAIF(be_reg) (be_reg - ADSP_ADMAIF_START)