omap-mcpdm.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * omap-mcpdm.h
  4. *
  5. * Copyright (C) 2009 - 2011 Texas Instruments
  6. *
  7. * Contact: Misael Lopez Cruz <misael.lopez@ti.com>
  8. */
  9. #ifndef __OMAP_MCPDM_H__
  10. #define __OMAP_MCPDM_H__
  11. #define MCPDM_REG_REVISION 0x00
  12. #define MCPDM_REG_SYSCONFIG 0x10
  13. #define MCPDM_REG_IRQSTATUS_RAW 0x24
  14. #define MCPDM_REG_IRQSTATUS 0x28
  15. #define MCPDM_REG_IRQENABLE_SET 0x2C
  16. #define MCPDM_REG_IRQENABLE_CLR 0x30
  17. #define MCPDM_REG_IRQWAKE_EN 0x34
  18. #define MCPDM_REG_DMAENABLE_SET 0x38
  19. #define MCPDM_REG_DMAENABLE_CLR 0x3C
  20. #define MCPDM_REG_DMAWAKEEN 0x40
  21. #define MCPDM_REG_CTRL 0x44
  22. #define MCPDM_REG_DN_DATA 0x48
  23. #define MCPDM_REG_UP_DATA 0x4C
  24. #define MCPDM_REG_FIFO_CTRL_DN 0x50
  25. #define MCPDM_REG_FIFO_CTRL_UP 0x54
  26. #define MCPDM_REG_DN_OFFSET 0x58
  27. /*
  28. * MCPDM_IRQ bit fields
  29. * IRQSTATUS_RAW, IRQSTATUS, IRQENABLE_SET, IRQENABLE_CLR
  30. */
  31. #define MCPDM_DN_IRQ (1 << 0)
  32. #define MCPDM_DN_IRQ_EMPTY (1 << 1)
  33. #define MCPDM_DN_IRQ_ALMST_EMPTY (1 << 2)
  34. #define MCPDM_DN_IRQ_FULL (1 << 3)
  35. #define MCPDM_UP_IRQ (1 << 8)
  36. #define MCPDM_UP_IRQ_EMPTY (1 << 9)
  37. #define MCPDM_UP_IRQ_ALMST_FULL (1 << 10)
  38. #define MCPDM_UP_IRQ_FULL (1 << 11)
  39. #define MCPDM_DOWNLINK_IRQ_MASK 0x00F
  40. #define MCPDM_UPLINK_IRQ_MASK 0xF00
  41. /*
  42. * MCPDM_DMAENABLE bit fields
  43. */
  44. #define MCPDM_DMA_DN_ENABLE (1 << 0)
  45. #define MCPDM_DMA_UP_ENABLE (1 << 1)
  46. /*
  47. * MCPDM_CTRL bit fields
  48. */
  49. #define MCPDM_PDM_UPLINK_EN(x) (1 << (x - 1)) /* ch1 is at bit 0 */
  50. #define MCPDM_PDM_DOWNLINK_EN(x) (1 << (x + 2)) /* ch1 is at bit 3 */
  51. #define MCPDM_PDMOUTFORMAT (1 << 8)
  52. #define MCPDM_CMD_INT (1 << 9)
  53. #define MCPDM_STATUS_INT (1 << 10)
  54. #define MCPDM_SW_UP_RST (1 << 11)
  55. #define MCPDM_SW_DN_RST (1 << 12)
  56. #define MCPDM_WD_EN (1 << 14)
  57. #define MCPDM_PDM_UP_MASK 0x7
  58. #define MCPDM_PDM_DN_MASK (0x1f << 3)
  59. #define MCPDM_PDMOUTFORMAT_LJUST (0 << 8)
  60. #define MCPDM_PDMOUTFORMAT_RJUST (1 << 8)
  61. /*
  62. * MCPDM_FIFO_CTRL bit fields
  63. */
  64. #define MCPDM_UP_THRES_MAX 0xF
  65. #define MCPDM_DN_THRES_MAX 0xF
  66. /*
  67. * MCPDM_DN_OFFSET bit fields
  68. */
  69. #define MCPDM_DN_OFST_RX1_EN (1 << 0)
  70. #define MCPDM_DNOFST_RX1(x) ((x & 0x1f) << 1)
  71. #define MCPDM_DN_OFST_RX2_EN (1 << 8)
  72. #define MCPDM_DNOFST_RX2(x) ((x & 0x1f) << 9)
  73. void omap_mcpdm_configure_dn_offsets(struct snd_soc_pcm_runtime *rtd,
  74. u8 rx1, u8 rx2);
  75. #endif /* End of __OMAP_MCPDM_H__ */