[alsa-devel] [PATCH 2/2] ALSA: hda: support for wallclock timestamps
Takashi Iwai
tiwai at suse.de
Fri Jun 15 12:34:27 CEST 2012
At Fri, 15 Jun 2012 05:02:38 -0500,
Pierre-Louis Bossart wrote:
>
>
> >> +struct azx_timecounter {
> >> + cycle_t cycle_last;
> >> + cycle_t mask;
> >> + cycle_t elapsed_cycles;
> >> + u64 initial_time_nsec;
> >> + u32 mult;
> >> + u32 shift;
> >> +};
> >
> > Any reason not using the normal struct timecounter stuff?
> > Most of the open codes can be replaced gracefully with functions /
> > macros there, I guess.
>
> Yes there is a reason. The conversion from wall clock cycles to ns is a
> fractional operation (125/3 ratio from 24 MHz to 1 GHz). If you do this
> conversion to ns every time, you will accumulate rounding errors. That
> doesn't seem like a very good design if the precision depends on the
> duration of the track...
Hm, OK. It's a shortcoming in the generic timecounter code, IMO.
It might make more sense to fix there.
BTW, the calculation mult can be simplified with
clocksource_khz2multi().
> On top of this, I couldn't find a way to pass the 'chip' argument in the
> cyclecounter .read() operation to map it to azx_read.
You can use container_of().
Takashi
More information about the Alsa-devel
mailing list