ux500_msp_dai.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /*
  2. * Copyright (C) ST-Ericsson SA 2012
  3. *
  4. * Author: Ola Lilja <ola.o.lilja@stericsson.com>,
  5. * Roger Nilsson <roger.xr.nilsson@stericsson.com>
  6. * for ST-Ericsson.
  7. *
  8. * License terms:
  9. *
  10. * This program is free software; you can redistribute it and/or modify
  11. * it under the terms of the GNU General Public License version 2 as published
  12. * by the Free Software Foundation.
  13. */
  14. #ifndef UX500_msp_dai_H
  15. #define UX500_msp_dai_H
  16. #include <linux/types.h>
  17. #include <linux/spinlock.h>
  18. #include "ux500_msp_i2s.h"
  19. #define UX500_NBR_OF_DAI 4
  20. #define UX500_I2S_RATES (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 | \
  21. SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000)
  22. #define UX500_I2S_FORMATS (SNDRV_PCM_FMTBIT_S16_LE)
  23. #define FRAME_PER_SINGLE_SLOT_8_KHZ 31
  24. #define FRAME_PER_SINGLE_SLOT_16_KHZ 124
  25. #define FRAME_PER_SINGLE_SLOT_44_1_KHZ 63
  26. #define FRAME_PER_SINGLE_SLOT_48_KHZ 49
  27. #define FRAME_PER_2_SLOTS 31
  28. #define FRAME_PER_8_SLOTS 138
  29. #define FRAME_PER_16_SLOTS 277
  30. #ifndef CONFIG_SND_SOC_UX500_AB5500
  31. #define UX500_MSP_INTERNAL_CLOCK_FREQ 40000000
  32. #define UX500_MSP1_INTERNAL_CLOCK_FREQ UX500_MSP_INTERNAL_CLOCK_FREQ
  33. #else
  34. #define UX500_MSP_INTERNAL_CLOCK_FREQ 13000000
  35. #define UX500_MSP1_INTERNAL_CLOCK_FREQ (UX500_MSP_INTERNAL_CLOCK_FREQ * 2)
  36. #endif
  37. #define UX500_MSP_MIN_CHANNELS 1
  38. #define UX500_MSP_MAX_CHANNELS 8
  39. #define PLAYBACK_CONFIGURED 1
  40. #define CAPTURE_CONFIGURED 2
  41. enum ux500_msp_clock_id {
  42. UX500_MSP_MASTER_CLOCK,
  43. };
  44. struct ux500_msp_i2s_drvdata {
  45. struct ux500_msp *msp;
  46. struct regulator *reg_vape;
  47. struct ux500_msp_dma_params playback_dma_data;
  48. struct ux500_msp_dma_params capture_dma_data;
  49. unsigned int fmt;
  50. unsigned int tx_mask;
  51. unsigned int rx_mask;
  52. int slots;
  53. int slot_width;
  54. u8 configured;
  55. int data_delay;
  56. /* Clocks */
  57. unsigned int master_clk;
  58. struct clk *clk;
  59. struct clk *pclk;
  60. /* Regulators */
  61. int vape_opp_constraint;
  62. };
  63. int ux500_msp_dai_set_data_delay(struct snd_soc_dai *dai, int delay);
  64. #endif