File Index
Files and directories
Sign in
FILE

tas2783.h

File preview with syntax highlighting.

linux-6.19.14/sound/soc/codecs/tas2783.h C
  1/* SPDX-License-Identifier: GPL-2.0
  2 *
  3 * ALSA SoC Texas Instruments TAS2783 Audio Smart Amplifier
  4 *
  5 * Copyright (C) 2025 Texas Instruments Incorporated
  6 * https://www.ti.com
  7 *
  8 * The TAS2783 driver implements a flexible and configurable
  9 * algo coefficient setting for single TAS2783 chips.
 10 *
 11 * Author: Niranjan H Y <niranjanhy@ti.com>
 12 * Author: Baojun Xu <baojun.xu@ti.com>
 13 */
 14#include <linux/workqueue.h>
 15
 16#ifndef __TAS2783_H__
 17#define __TAS2783_H__
 18
 19#define TAS2783_DEVICE_RATES	(SNDRV_PCM_RATE_44100 | \
 20				SNDRV_PCM_RATE_48000 | \
 21				SNDRV_PCM_RATE_96000 | \
 22				SNDRV_PCM_RATE_88200)
 23#define TAS2783_DEVICE_FORMATS	(SNDRV_PCM_FMTBIT_S16_LE | \
 24				SNDRV_PCM_FMTBIT_S24_LE | \
 25				SNDRV_PCM_FMTBIT_S32_LE)
 26
 27/* book, page, register */
 28#define TASDEV_REG_SDW(book, page, reg)	(((book) * 256 * 128) + \
 29		0x800000 + ((page) * 128) + (reg))
 30
 31/* Volume control */
 32#define TAS2783_DVC_LVL		TASDEV_REG_SDW(0x0, 0x00, 0x1A)
 33#define TAS2783_AMP_LEVEL	TASDEV_REG_SDW(0x0, 0x00, 0x03)
 34#define TAS2783_AMP_LEVEL_MASK	GENMASK(5, 1)
 35
 36#define PRAM_ADDR_START		TASDEV_REG_SDW(0x8c, 0x01, 0x8)
 37#define PRAM_ADDR_END		TASDEV_REG_SDW(0x8c, 0xff, 0x7f)
 38#define YRAM_ADDR_START		TASDEV_REG_SDW(0x00, 0x02, 0x8)
 39#define YRAM_ADDR_END		TASDEV_REG_SDW(0x00, 0x37, 0x7f)
 40
 41/* Calibration data */
 42#define TAS2783_CAL_R0		TASDEV_REG_SDW(0, 0x16, 0x4C)
 43#define TAS2783_CAL_INVR0	TASDEV_REG_SDW(0, 0x16, 0x5C)
 44#define TAS2783_CAL_R0LOW	TASDEV_REG_SDW(0, 0x16, 0x64)
 45#define TAS2783_CAL_POWER	TASDEV_REG_SDW(0, 0x15, 0x44)
 46#define TAS2783_CAL_TLIM	TASDEV_REG_SDW(0, 0x17, 0x58)
 47
 48/* TAS2783 SDCA Control - function number */
 49#define FUNC_NUM_SMART_AMP	0x01
 50
 51/* TAS2783 SDCA entity */
 52
 53#define TAS2783_SDCA_ENT_FU21		0x01
 54#define TAS2783_SDCA_ENT_FU23		0x02
 55#define TAS2783_SDCA_ENT_FU26		0x03
 56#define TAS2783_SDCA_ENT_XU22		0x04
 57#define TAS2783_SDCA_ENT_CS24		0x05
 58#define TAS2783_SDCA_ENT_CS21		0x06
 59#define TAS2783_SDCA_ENT_CS25		0x07
 60#define TAS2783_SDCA_ENT_CS26		0x08
 61#define TAS2783_SDCA_ENT_CS28		0x09
 62#define TAS2783_SDCA_ENT_PDE23		0x0C
 63#define TAS2783_SDCA_ENT_UDMPU23	0x0E
 64#define TAS2783_SDCA_ENT_SAPU29		0x0F
 65#define TAS2783_SDCA_ENT_PPU21		0x10
 66#define TAS2783_SDCA_ENT_PPU26		0x11
 67#define TAS2783_SDCA_ENT_TG23		0x12
 68#define TAS2783_SDCA_ENT_IT21		0x13
 69#define TAS2783_SDCA_ENT_IT29		0x14
 70#define TAS2783_SDCA_ENT_IT26		0x15
 71#define TAS2783_SDCA_ENT_IT28		0x16
 72#define TAS2783_SDCA_ENT_OT24		0x17
 73#define TAS2783_SDCA_ENT_OT23		0x18
 74#define TAS2783_SDCA_ENT_OT25		0x19
 75#define TAS2783_SDCA_ENT_OT28		0x1A
 76#define TAS2783_SDCA_ENT_MU26		0x1b
 77#define TAS2783_SDCA_ENT_OT127		0x1E
 78#define TAS2783_SDCA_ENT_FU127		0x1F
 79#define TAS2783_SDCA_ENT_CS127		0x20
 80#define TAS2783_SDCA_ENT_MFPU21		0x22
 81#define TAS2783_SDCA_ENT_MFPU26		0x23
 82
 83/* TAS2783 SDCA control */
 84#define TAS2783_SDCA_CTL_REQ_POW_STATE	0x01
 85#define TAS2783_SDCA_CTL_FU_MUTE	0x01
 86#define TAS2783_SDCA_CTL_UDMPU_CLUSTER	0x10
 87
 88#define TAS2783_DEVICE_CHANNEL_LEFT	1
 89#define TAS2783_DEVICE_CHANNEL_RIGHT	2
 90
 91#define TAS2783_SDCA_POW_STATE_ON 0
 92#define TAS2783_SDCA_POW_STATE_OFF 3
 93
 94/* calibration data */
 95#define TAS2783_CALIB_PARAMS	6 /* 5 + 1 unique id */
 96#define TAS2783_CALIB_MAX_SPK_COUNT	8
 97#define TAS2783_CALIB_HDR_SZ	12
 98#define TAS2783_CALIB_CRC_SZ	4
 99#define TAS2783_CALIB_DATA_SZ	((TAS2783_CALIB_HDR_SZ) + TAS2783_CALIB_CRC_SZ + \
100				((TAS2783_CALIB_PARAMS) * 4 * (TAS2783_CALIB_MAX_SPK_COUNT)))
101
102#if IS_ENABLED(CONFIG_SND_SOC_TAS2783_UTIL)
103int32_t tas25xx_register_misc(struct sdw_slave *peripheral);
104int32_t tas25xx_deregister_misc(void);
105#else
106static void tas25xx_register_misc(struct sdw_slave *peripheral) {}
107static void tas25xx_deregister_misc(void) {}
108#endif
109
110#endif /*__TAS2783_H__ */
~/ Read-only file preview.