From 85a333db74aa1642db6aaadfececbe29dd82e115 Mon Sep 17 00:00:00 2001 From: Slawomir Blauciak Date: Wed, 2 Oct 2019 13:12:21 +0200 Subject: [PATCH] tigerlake: enable alh and supply headers This change adds ALH support for Tiger Lake platforms and enables it by default. Signed-off-by: Slawomir Blauciak --- src/arch/xtensa/configs/tigerlake_defconfig | 1 + .../tigerlake/include/platform/drivers/alh.h | 92 +++++++++++++++++++ .../tigerlake/include/platform/lib/dai.h | 8 ++ .../tigerlake/include/platform/lib/memory.h | 6 ++ 4 files changed, 107 insertions(+) create mode 100644 src/platform/tigerlake/include/platform/drivers/alh.h diff --git a/src/arch/xtensa/configs/tigerlake_defconfig b/src/arch/xtensa/configs/tigerlake_defconfig index 35d820516..18e9e22d9 100644 --- a/src/arch/xtensa/configs/tigerlake_defconfig +++ b/src/arch/xtensa/configs/tigerlake_defconfig @@ -1,6 +1,7 @@ CONFIG_TIGERLAKE=y CONFIG_CAVS_DMIC=y CONFIG_CAVS_SSP=y +CONFIG_CAVS_ALH=y CONFIG_CORE_COUNT=4 CONFIG_LP_MEMORY_BANKS=1 CONFIG_HP_MEMORY_BANKS=46 diff --git a/src/platform/tigerlake/include/platform/drivers/alh.h b/src/platform/tigerlake/include/platform/drivers/alh.h new file mode 100644 index 000000000..c2380eba4 --- /dev/null +++ b/src/platform/tigerlake/include/platform/drivers/alh.h @@ -0,0 +1,92 @@ +// SPDX-License-Identifier: BSD-3-Clause +// +// Copyright(c) 2019 Intel Corporation. All rights reserved. +// +// Author: Slawomir Blauciak + +#ifdef __SOF_DRIVERS_ALH__ + +#ifndef __PLATFORM_DRIVERS_ALH__ +#define __PLATFORM_DRIVERS_ALH__ + +#include + +/** + * \brief ALH Handshakes for audio I/O + * Stream ID -> DMA Handshake map + * -1 identifies invalid handshakes/streams + */ +static const uint8_t alh_handshake_map[64] = { + -1, /* 0 - INVALID */ + -1, /* 1 - INVALID */ + -1, /* 2 - INVALID */ + -1, /* 3 - INVALID */ + -1, /* 4 - INVALID */ + -1, /* 5 - INVALID */ + -1, /* 6 - INVALID */ + 22, /* 7 - BIDIRECTIONAL */ + 23, /* 8 - BIDIRECTIONAL */ + 24, /* 9 - BIDIRECTIONAL */ + 25, /* 10 - BIDIRECTIONAL */ + -1, /* 5 - INVALID */ + -1, /* 6 - INVALID */ + -1, /* 13 - INVALID */ + -1, /* 14 - INVALID */ + -1, /* 15 - INVALID */ + -1, /* 16 - INVALID */ + -1, /* 17 - INVALID */ + -1, /* 18 - INVALID */ + -1, /* 19 - INVALID */ + -1, /* 20 - INVALID */ + -1, /* 21 - INVALID */ + -1, /* 22 - INVALID */ + 32, /* 23 - BIDIRECTIONAL */ + 33, /* 24 - BIDIRECTIONAL */ + 34, /* 25 - BIDIRECTIONAL */ + 35, /* 26 - BIDIRECTIONAL */ + -1, /* 5 - INVALID */ + -1, /* 6 - INVALID */ + -1, /* 29 - INVALID */ + -1, /* 30 - INVALID */ + -1, /* 31 - INVALID */ + -1, /* 32 - INVALID */ + -1, /* 33 - INVALID */ + -1, /* 34 - INVALID */ + -1, /* 35 - INVALID */ + -1, /* 36 - INVALID */ + -1, /* 37 - INVALID */ + -1, /* 38 - INVALID */ + 42, /* 39 - BIDIRECTIONAL */ + 43, /* 40 - BIDIRECTIONAL */ + 44, /* 41 - BIDIRECTIONAL */ + 45, /* 42 - BIDIRECTIONAL */ + -1, /* 5 - INVALID */ + -1, /* 6 - INVALID */ + -1, /* 45 - INVALID */ + -1, /* 46 - INVALID */ + -1, /* 47 - INVALID */ + -1, /* 48 - INVALID */ + -1, /* 49 - INVALID */ + -1, /* 50 - INVALID */ + -1, /* 51 - INVALID */ + -1, /* 52 - INVALID */ + -1, /* 53 - INVALID */ + -1, /* 54 - INVALID */ + 52, /* 55 - BIDIRECTIONAL */ + 53, /* 56 - BIDIRECTIONAL */ + 54, /* 57 - BIDIRECTIONAL */ + 55, /* 58 - BIDIRECTIONAL */ + -1, /* 5 - INVALID */ + -1, /* 6 - INVALID */ + -1, /* 61 - INVALID */ + -1, /* 62 - INVALID */ + -1, /* 63 - INVALID */ +}; + +#endif /* __PLATFORM_DRIVERS_ALH__ */ + +#else + +#error "This file shouldn't be included from outside of sof/drivers/alh.h" + +#endif diff --git a/src/platform/tigerlake/include/platform/lib/dai.h b/src/platform/tigerlake/include/platform/lib/dai.h index 3601accac..cf6e85086 100644 --- a/src/platform/tigerlake/include/platform/lib/dai.h +++ b/src/platform/tigerlake/include/platform/lib/dai.h @@ -34,6 +34,14 @@ /** \brief Number of HD/A Link Inputs */ #define DAI_NUM_HDA_IN 7 +/* ALH */ + +/** \brief Number of ALH bi-directional links */ +#define DAI_NUM_ALH_BI_DIR_LINKS 16 + +/** \brief Number of contiguous ALH bi-dir links */ +#define DAI_NUM_ALH_BI_DIR_LINKS_GROUP 4 + int dai_init(void); #endif /* __PLATFORM_LIB_DAI_H__ */ diff --git a/src/platform/tigerlake/include/platform/lib/memory.h b/src/platform/tigerlake/include/platform/lib/memory.h index 07f9a2f90..75fb4f42d 100644 --- a/src/platform/tigerlake/include/platform/lib/memory.h +++ b/src/platform/tigerlake/include/platform/lib/memory.h @@ -101,6 +101,12 @@ #define SSP_BASE(x) (0x00077000 + x * SSP_SIZE) #define SSP_SIZE 0x0000200 +/* ALH */ +#define ALH_BASE 0x000071000 +#define ALH_TXDA_OFFSET 0x000000400 +#define ALH_RXDA_OFFSET 0x000000500 +#define ALH_STREAM_OFFSET 0x000000004 + /* low power DMACs */ #define LP_GP_DMA_SIZE 0x00001000 #define LP_GP_DMA_BASE(x) (0x0007C000 + x * LP_GP_DMA_SIZE)