44 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
| /*
 | |
|  * LM4549 Audio Codec Interface
 | |
|  *
 | |
|  * Copyright (c) 2011
 | |
|  * Written by Mathieu Sonet - www.elasticsheep.com
 | |
|  *
 | |
|  * This code is licensed under the GPL.
 | |
|  *
 | |
|  * *****************************************************************
 | |
|  */
 | |
| 
 | |
| #ifndef HW_LM4549_H
 | |
| #define HW_LM4549_H
 | |
| 
 | |
| #include "audio/audio.h"
 | |
| 
 | |
| typedef void (*lm4549_callback)(void *opaque);
 | |
| 
 | |
| #define LM4549_BUFFER_SIZE (512 * 2) /* 512 16-bit stereo samples */
 | |
| 
 | |
| 
 | |
| typedef struct {
 | |
|     QEMUSoundCard card;
 | |
|     SWVoiceOut *voice;
 | |
|     uint32_t voice_is_active;
 | |
| 
 | |
|     uint16_t regfile[128];
 | |
|     lm4549_callback data_req_cb;
 | |
|     void *opaque;
 | |
| 
 | |
|     uint16_t buffer[LM4549_BUFFER_SIZE];
 | |
|     uint32_t buffer_level;
 | |
| } lm4549_state;
 | |
| 
 | |
| extern const VMStateDescription vmstate_lm4549_state;
 | |
| 
 | |
| 
 | |
| void lm4549_init(lm4549_state *s, lm4549_callback data_req, void *opaque);
 | |
| uint32_t lm4549_read(lm4549_state *s, hwaddr offset);
 | |
| void lm4549_write(lm4549_state *s, hwaddr offset, uint32_t value);
 | |
| uint32_t lm4549_write_samples(lm4549_state *s, uint32_t left, uint32_t right);
 | |
| 
 | |
| #endif /* HW_LM4549_H */
 |