ctmixer.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /**
  2. * Copyright (C) 2008, Creative Technology Ltd. All Rights Reserved.
  3. *
  4. * This source file is released under GPL v2 license (no other versions).
  5. * See the COPYING file included in the main directory of this source
  6. * distribution for the license terms and conditions.
  7. *
  8. * @File ctmixer.h
  9. *
  10. * @Brief
  11. * This file contains the definition of the mixer device functions.
  12. *
  13. * @Author Liu Chun
  14. * @Date Mar 28 2008
  15. *
  16. */
  17. #ifndef CTMIXER_H
  18. #define CTMIXER_H
  19. #include "ctatc.h"
  20. #include "ctresource.h"
  21. #define INIT_VOL 0x1c00
  22. enum MIXER_PORT_T {
  23. MIX_WAVE_FRONT,
  24. MIX_WAVE_REAR,
  25. MIX_WAVE_CENTLFE,
  26. MIX_WAVE_SURROUND,
  27. MIX_SPDIF_OUT,
  28. MIX_PCMO_FRONT,
  29. MIX_MIC_IN,
  30. MIX_LINE_IN,
  31. MIX_SPDIF_IN,
  32. MIX_PCMI_FRONT,
  33. MIX_PCMI_REAR,
  34. MIX_PCMI_CENTLFE,
  35. MIX_PCMI_SURROUND,
  36. NUM_MIX_PORTS
  37. };
  38. /* alsa mixer descriptor */
  39. struct ct_mixer {
  40. struct ct_atc *atc;
  41. void **amixers; /* amixer resources for volume control */
  42. void **sums; /* sum resources for signal collection */
  43. unsigned int switch_state; /* A bit-map to indicate state of switches */
  44. int (*get_output_ports)(struct ct_mixer *mixer, enum MIXER_PORT_T type,
  45. struct rsc **rleft, struct rsc **rright);
  46. int (*set_input_left)(struct ct_mixer *mixer,
  47. enum MIXER_PORT_T type, struct rsc *rsc);
  48. int (*set_input_right)(struct ct_mixer *mixer,
  49. enum MIXER_PORT_T type, struct rsc *rsc);
  50. #ifdef CONFIG_PM_SLEEP
  51. int (*resume)(struct ct_mixer *mixer);
  52. #endif
  53. };
  54. int ct_alsa_mix_create(struct ct_atc *atc,
  55. enum CTALSADEVS device,
  56. const char *device_name);
  57. int ct_mixer_create(struct ct_atc *atc, struct ct_mixer **rmixer);
  58. int ct_mixer_destroy(struct ct_mixer *mixer);
  59. #endif /* CTMIXER_H */