1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * tegra210_sfc.h - Definitions for Tegra210 SFC driver
5 * Copyright (c) 2021 NVIDIA CORPORATION. All rights reserved.
9 #ifndef __TEGRA210_SFC_H__
10 #define __TEGRA210_SFC_H__
13 * SFC_RX registers are with respect to XBAR.
14 * The data comes from XBAR to SFC.
16 #define TEGRA210_SFC_RX_STATUS 0x0c
17 #define TEGRA210_SFC_RX_INT_STATUS 0x10
18 #define TEGRA210_SFC_RX_INT_MASK 0x14
19 #define TEGRA210_SFC_RX_INT_SET 0x18
20 #define TEGRA210_SFC_RX_INT_CLEAR 0x1c
21 #define TEGRA210_SFC_RX_CIF_CTRL 0x20
22 #define TEGRA210_SFC_RX_FREQ 0x24
25 * SFC_TX registers are with respect to XBAR.
26 * The data goes out of SFC.
28 #define TEGRA210_SFC_TX_STATUS 0x4c
29 #define TEGRA210_SFC_TX_INT_STATUS 0x50
30 #define TEGRA210_SFC_TX_INT_MASK 0x54
31 #define TEGRA210_SFC_TX_INT_SET 0x58
32 #define TEGRA210_SFC_TX_INT_CLEAR 0x5c
33 #define TEGRA210_SFC_TX_CIF_CTRL 0x60
34 #define TEGRA210_SFC_TX_FREQ 0x64
36 /* Register offsets from TEGRA210_SFC*_BASE */
37 #define TEGRA210_SFC_ENABLE 0x80
38 #define TEGRA210_SFC_SOFT_RESET 0x84
39 #define TEGRA210_SFC_CG 0x88
40 #define TEGRA210_SFC_STATUS 0x8c
41 #define TEGRA210_SFC_INT_STATUS 0x90
42 #define TEGRA210_SFC_COEF_RAM 0xbc
43 #define TEGRA210_SFC_CFG_RAM_CTRL 0xc0
44 #define TEGRA210_SFC_CFG_RAM_DATA 0xc4
46 /* Fields in TEGRA210_SFC_ENABLE */
47 #define TEGRA210_SFC_EN_SHIFT 0
48 #define TEGRA210_SFC_EN (1 << TEGRA210_SFC_EN_SHIFT)
50 #define TEGRA210_SFC_NUM_RATES 12
52 /* Fields in TEGRA210_SFC_COEF_RAM */
53 #define TEGRA210_SFC_COEF_RAM_EN BIT(0)
55 #define TEGRA210_SFC_SOFT_RESET_EN BIT(0)
58 #define TEGRA210_SFC_COEF_RAM_DEPTH 64
59 #define TEGRA210_SFC_RAM_CTRL_RW_WRITE (1 << 14)
60 #define TEGRA210_SFC_RAM_CTRL_ADDR_INIT_EN (1 << 13)
61 #define TEGRA210_SFC_RAM_CTRL_SEQ_ACCESS_EN (1 << 12)
64 enum tegra210_sfc_path {
71 unsigned int mono_to_stereo[SFC_PATHS];
72 unsigned int stereo_to_mono[SFC_PATHS];
73 unsigned int srate_out;
74 unsigned int srate_in;
75 struct regmap *regmap;