tegra186_dspk.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * tegra186_dspk.h - Definitions for Tegra186 DSPK driver
  4. *
  5. * Copyright (c) 2020 NVIDIA CORPORATION. All rights reserved.
  6. *
  7. */
  8. #ifndef __TEGRA186_DSPK_H__
  9. #define __TEGRA186_DSPK_H__
  10. /* Register offsets from DSPK BASE */
  11. #define TEGRA186_DSPK_RX_STATUS 0x0c
  12. #define TEGRA186_DSPK_RX_INT_STATUS 0x10
  13. #define TEGRA186_DSPK_RX_INT_MASK 0x14
  14. #define TEGRA186_DSPK_RX_INT_SET 0x18
  15. #define TEGRA186_DSPK_RX_INT_CLEAR 0x1c
  16. #define TEGRA186_DSPK_RX_CIF_CTRL 0x20
  17. #define TEGRA186_DSPK_ENABLE 0x40
  18. #define TEGRA186_DSPK_SOFT_RESET 0x44
  19. #define TEGRA186_DSPK_CG 0x48
  20. #define TEGRA186_DSPK_STATUS 0x4c
  21. #define TEGRA186_DSPK_INT_STATUS 0x50
  22. #define TEGRA186_DSPK_CORE_CTRL 0x60
  23. #define TEGRA186_DSPK_CODEC_CTRL 0x64
  24. /* DSPK CORE CONTROL fields */
  25. #define CH_SEL_SHIFT 8
  26. #define TEGRA186_DSPK_CHANNEL_SELECT_MASK (0x3 << CH_SEL_SHIFT)
  27. #define DSPK_OSR_SHIFT 4
  28. #define TEGRA186_DSPK_OSR_MASK (0x3 << DSPK_OSR_SHIFT)
  29. #define LRSEL_POL_SHIFT 0
  30. #define TEGRA186_DSPK_CTRL_LRSEL_POLARITY_MASK (0x1 << LRSEL_POL_SHIFT)
  31. #define TEGRA186_DSPK_RX_FIFO_DEPTH 64
  32. #define DSPK_OSR_FACTOR 32
  33. /* DSPK interface clock ratio */
  34. #define DSPK_CLK_RATIO 4
  35. enum tegra_dspk_osr {
  36. DSPK_OSR_32,
  37. DSPK_OSR_64,
  38. DSPK_OSR_128,
  39. DSPK_OSR_256,
  40. };
  41. enum tegra_dspk_ch_sel {
  42. DSPK_CH_SELECT_LEFT,
  43. DSPK_CH_SELECT_RIGHT,
  44. DSPK_CH_SELECT_STEREO,
  45. };
  46. enum tegra_dspk_lrsel {
  47. DSPK_LRSEL_LEFT,
  48. DSPK_LRSEL_RIGHT,
  49. };
  50. struct tegra186_dspk {
  51. unsigned int rx_fifo_th;
  52. unsigned int osr_val;
  53. unsigned int lrsel;
  54. unsigned int ch_sel;
  55. unsigned int mono_to_stereo;
  56. unsigned int stereo_to_mono;
  57. struct clk *clk_dspk;
  58. struct regmap *regmap;
  59. };
  60. #endif