tegra210_peq.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * tegra210_peq.h - Definitions for Tegra210 PEQ driver
  4. *
  5. * Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved.
  6. *
  7. */
  8. #ifndef __TEGRA210_PEQ_H__
  9. #define __TEGRA210_PEQ_H__
  10. #include <linux/platform_device.h>
  11. #include <linux/regmap.h>
  12. #include <sound/soc.h>
  13. /* Register offsets from PEQ base */
  14. #define TEGRA210_PEQ_SOFT_RESET 0x0
  15. #define TEGRA210_PEQ_CG 0x4
  16. #define TEGRA210_PEQ_STATUS 0x8
  17. #define TEGRA210_PEQ_CFG 0xc
  18. #define TEGRA210_PEQ_CFG_RAM_CTRL 0x10
  19. #define TEGRA210_PEQ_CFG_RAM_DATA 0x14
  20. #define TEGRA210_PEQ_CFG_RAM_SHIFT_CTRL 0x18
  21. #define TEGRA210_PEQ_CFG_RAM_SHIFT_DATA 0x1c
  22. /* Fields in TEGRA210_PEQ_CFG */
  23. #define TEGRA210_PEQ_CFG_BIQUAD_STAGES_SHIFT 2
  24. #define TEGRA210_PEQ_CFG_BIQUAD_STAGES_MASK (0xf << TEGRA210_PEQ_CFG_BIQUAD_STAGES_SHIFT)
  25. #define TEGRA210_PEQ_CFG_MODE_SHIFT 0
  26. #define TEGRA210_PEQ_CFG_MODE_MASK (0x1 << TEGRA210_PEQ_CFG_MODE_SHIFT)
  27. #define TEGRA210_PEQ_RAM_CTRL_RW_READ 0
  28. #define TEGRA210_PEQ_RAM_CTRL_RW_WRITE (1 << 14)
  29. #define TEGRA210_PEQ_RAM_CTRL_ADDR_INIT_EN (1 << 13)
  30. #define TEGRA210_PEQ_RAM_CTRL_SEQ_ACCESS_EN (1 << 12)
  31. #define TEGRA210_PEQ_RAM_CTRL_RAM_ADDR_MASK 0x1ff
  32. /* PEQ register definition ends here */
  33. #define TEGRA210_PEQ_MAX_BIQUAD_STAGES 12
  34. #define TEGRA210_PEQ_MAX_CHANNELS 8
  35. #define TEGRA210_PEQ_BIQUAD_INIT_STAGE 5
  36. #define TEGRA210_PEQ_GAIN_PARAM_SIZE_PER_CH (2 + TEGRA210_PEQ_MAX_BIQUAD_STAGES * 5)
  37. #define TEGRA210_PEQ_SHIFT_PARAM_SIZE_PER_CH (2 + TEGRA210_PEQ_MAX_BIQUAD_STAGES)
  38. int tegra210_peq_regmap_init(struct platform_device *pdev);
  39. int tegra210_peq_component_init(struct snd_soc_component *cmpnt);
  40. void tegra210_peq_restore(struct regmap *regmap, u32 *biquad_gains,
  41. u32 *biquad_shifts);
  42. void tegra210_peq_save(struct regmap *regmap, u32 *biquad_gains,
  43. u32 *biquad_shifts);
  44. #endif