Hi,
I'm waiting for comments for the series against alsa-lib regarding this issue...
On Monday 19 July 2010 11:51:41 ext Mark Brown wrote:
On Mon, Jul 19, 2010 at 08:57:05AM +0300, Peter Ujfalusi wrote:
On Friday 16 July 2010 15:33:25 ext Mark Brown wrote:
Isn't this going to get messy when the increments don't line up so that it's easy to overlap the start of one range with the beginning of the next?
Well, I assume however writes the driver knows how to build up a lookup table which is consistent, so I don't really see a problem.
The problem I see is if the hardware step sizes result in discontinuties in the scale so you can't easily join the top end of one set of values with the bottom end of another you're pretty stuck - joining the ranges up will only work if they can be made to overlap which isn't always going to be the case.
Yeah, and the tpa6130a2 is even worst than most of the things that I have ever seen: http://focus.ti.com/lit/ds/symlink/tpa6130a2.pdf, page 20 Basically there are no continuous ranges at all (sometimes it feels, that the steps are chosen via lottery).
For example, something like:
1: 0 2: 2 3: 4 4: 5 5: 7 6: 9
(a bit artificial but you get the idea) is going to be a bit tricky.
I see, but I still don't see problem with this: non-overlapping (A): static const unsigned int nonoverlapping_tlv[] = { TLV_DB_RANGE_HEAD(2), 1, 3, TLV_DB_SCALE_ITEM(0, 200, 0), 4, 6, TLV_DB_SCALE_ITEM(500, 200, 0), };
overlapping (B): static const unsigned int overlapping_tlv[] = { TLV_DB_RANGE_HEAD(3), 1, 3, TLV_DB_SCALE_ITEM(0, 200, 0), /* at raw 3 the dB is 4 */ 3, 4, TLV_DB_SCALE_ITEM(400, 100, 0), /* at raw 4 the dB is 5 */ 4, 6, TLV_DB_SCALE_ITEM(500, 200, 0), };
B covers all ranges, with 3 sub-range. A covers the ranges, which has 2dB steps, and leaves a hole for the 1dB step between raw 3, and 4.
I'll post patches against alsa-lib to fix the _DB_RANGE handling. It will take some time to understand, and fix the code + testing it.
Thanks.
No problem.
With the patches I have sent for alsa-lib both A and B style of array going to be handled correctly.
If you have time, can you take a look at them?
Thanks, Péter