1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * tegra210_sfc.h - Definitions for Tegra210 SFC driver 4 * 5 * Copyright (c) 2021 NVIDIA CORPORATION. All rights reserved. 6 * 7 */ 8 9 #ifndef __TEGRA210_SFC_H__ 10 #define __TEGRA210_SFC_H__ 11 12 /* 13 * SFC_RX registers are with respect to XBAR. 14 * The data comes from XBAR to SFC. 15 */ 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 23 24 /* 25 * SFC_TX registers are with respect to XBAR. 26 * The data goes out of SFC. 27 */ 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 35 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 45 46 /* Fields in TEGRA210_SFC_ENABLE */ 47 #define TEGRA210_SFC_EN_SHIFT 0 48 #define TEGRA210_SFC_EN (1 << TEGRA210_SFC_EN_SHIFT) 49 50 #define TEGRA210_SFC_NUM_RATES 12 51 52 /* Fields in TEGRA210_SFC_COEF_RAM */ 53 #define TEGRA210_SFC_COEF_RAM_EN BIT(0) 54 55 #define TEGRA210_SFC_SOFT_RESET_EN BIT(0) 56 57 /* Coefficients */ 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) 62 63 64 enum tegra210_sfc_path { 65 SFC_RX_PATH, 66 SFC_TX_PATH, 67 SFC_PATHS, 68 }; 69 70 struct tegra210_sfc { 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; 76 }; 77 78 #endif 79