@ -18,7 +18,6 @@
*/
# include "qemu/osdep.h"
# include "qemu/atomic.h"
# include "hw/hw.h"
# include "hw/pci/pci.h"
# include "intel-hda.h"
@ -209,7 +208,7 @@ static inline void hda_timer_sync_adjust(HDAAudioStream *st, int64_t target_pos)
}
trace_hda_audio_adjust ( st - > node - > name , target_pos ) ;
atomic_fetch_add ( & st - > buft_start , corr ) ;
st - > buft_start + = corr ;
}
static void hda_audio_input_timer ( void * opaque )
@ -218,9 +217,9 @@ static void hda_audio_input_timer(void *opaque)
int64_t now = qemu_clock_get_ns ( QEMU_CLOCK_VIRTUAL ) ;
int64_t buft_start = atomic_fetch_add ( & st - > buft_start , 0 ) ;
int64_t wpos = atomic_fetch_add ( & st - > wpos , 0 ) ;
int64_t rpos = atomic_fetch_add ( & st - > rpos , 0 ) ;
int64_t buft_start = st - > buft_start ;
int64_t wpos = st - > wpos ;
int64_t rpos = st - > rpos ;
int64_t wanted_rpos = hda_bytes_per_second ( st ) * ( now - buft_start )
/ NANOSECONDS_PER_SECOND ;
@ -242,7 +241,7 @@ static void hda_audio_input_timer(void *opaque)
}
rpos + = chunk ;
to_transfer - = chunk ;
atomic_fetch_add ( & st - > rpos , chunk ) ;
st - > rpos + = chunk ;
}
out_timer :
@ -256,8 +255,8 @@ static void hda_audio_input_cb(void *opaque, int avail)
{
HDAAudioStream * st = opaque ;
int64_t wpos = atomic_fetch_add ( & st - > wpos , 0 ) ;
int64_t rpos = atomic_fetch_add ( & st - > rpos , 0 ) ;
int64_t wpos = st - > wpos ;
int64_t rpos = st - > rpos ;
int64_t to_transfer = audio_MIN ( B_SIZE - ( wpos - rpos ) , avail ) ;
@ -269,7 +268,7 @@ static void hda_audio_input_cb(void *opaque, int avail)
uint32_t read = AUD_read ( st - > voice . in , st - > buf + start , chunk ) ;
wpos + = read ;
to_transfer - = read ;
atomic_fetch_add ( & st - > wpos , read ) ;
st - > wpos + = read ;
if ( chunk ! = read ) {
break ;
}
@ -282,9 +281,9 @@ static void hda_audio_output_timer(void *opaque)
int64_t now = qemu_clock_get_ns ( QEMU_CLOCK_VIRTUAL ) ;
int64_t buft_start = atomic_fetch_add ( & st - > buft_start , 0 ) ;
int64_t wpos = atomic_fetch_add ( & st - > wpos , 0 ) ;
int64_t rpos = atomic_fetch_add ( & st - > rpos , 0 ) ;
int64_t buft_start = st - > buft_start ;
int64_t wpos = st - > wpos ;
int64_t rpos = st - > rpos ;
int64_t wanted_wpos = hda_bytes_per_second ( st ) * ( now - buft_start )
/ NANOSECONDS_PER_SECOND ;
@ -306,7 +305,7 @@ static void hda_audio_output_timer(void *opaque)
}
wpos + = chunk ;
to_transfer - = chunk ;
atomic_fetch_add ( & st - > wpos , chunk ) ;
st - > wpos + = chunk ;
}
out_timer :
@ -320,8 +319,8 @@ static void hda_audio_output_cb(void *opaque, int avail)
{
HDAAudioStream * st = opaque ;
int64_t wpos = atomic_fetch_add ( & st - > wpos , 0 ) ;
int64_t rpos = atomic_fetch_add ( & st - > rpos , 0 ) ;
int64_t wpos = st - > wpos ;
int64_t rpos = st - > rpos ;
int64_t to_transfer = audio_MIN ( wpos - rpos , avail ) ;
@ -342,7 +341,7 @@ static void hda_audio_output_cb(void *opaque, int avail)
uint32_t written = AUD_write ( st - > voice . out , st - > buf + start , chunk ) ;
rpos + = written ;
to_transfer - = written ;
atomic_fetch_add ( & st - > rpos , written ) ;
st - > rpos + = written ;
if ( chunk ! = written ) {
break ;
}