lm4549.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /*
  2. * LM4549 Audio Codec Interface
  3. *
  4. * Copyright (c) 2011
  5. * Written by Mathieu Sonet - www.elasticsheep.com
  6. *
  7. * This code is licensed under the GPL.
  8. *
  9. * *****************************************************************
  10. */
  11. #ifndef HW_LM4549_H
  12. #define HW_LM4549_H
  13. #include "audio/audio.h"
  14. #include "exec/hwaddr.h"
  15. typedef void (*lm4549_callback)(void *opaque);
  16. #define LM4549_BUFFER_SIZE (512 * 2) /* 512 16-bit stereo samples */
  17. typedef struct {
  18. QEMUSoundCard card;
  19. SWVoiceOut *voice;
  20. uint32_t voice_is_active;
  21. uint16_t regfile[128];
  22. lm4549_callback data_req_cb;
  23. void *opaque;
  24. uint16_t buffer[LM4549_BUFFER_SIZE];
  25. uint32_t buffer_level;
  26. } lm4549_state;
  27. extern const VMStateDescription vmstate_lm4549_state;
  28. void lm4549_init(lm4549_state *s, lm4549_callback data_req, void *opaque);
  29. uint32_t lm4549_read(lm4549_state *s, hwaddr offset);
  30. void lm4549_write(lm4549_state *s, hwaddr offset, uint32_t value);
  31. uint32_t lm4549_write_samples(lm4549_state *s, uint32_t left, uint32_t right);
  32. #endif /* HW_LM4549_H */