Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 270405
b: refs/heads/master
c: 2e61027
h: refs/heads/master
i:
  270403: 5996e1f
v: v3
  • Loading branch information
Adrian Knoth authored and Takashi Iwai committed Aug 15, 2011
1 parent e3e1ec3 commit 175cfc6
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 6 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 7cb155ff3e4645188c42d707300e36cfce44e28a
refs/heads/master: 2e61027079ed70f54fec41ddb8fa8af37d79d8d8
25 changes: 20 additions & 5 deletions trunk/sound/pci/rme9652/hdspm.c
Original file line number Diff line number Diff line change
Expand Up @@ -1323,12 +1323,27 @@ static int hdspm_set_interrupt_interval(struct hdspm *s, unsigned int frames)

spin_lock_irq(&s->lock);

frames >>= 7;
n = 0;
while (frames) {
n++;
frames >>= 1;
if (32 == frames) {
/* Special case for new RME cards like RayDAT/AIO which
* support period sizes of 32 samples. Since latency is
* encoded in the three bits of HDSP_LatencyMask, we can only
* have values from 0 .. 7. While 0 still means 64 samples and
* 6 represents 4096 samples on all cards, 7 represents 8192
* on older cards and 32 samples on new cards.
*
* In other words, period size in samples is calculated by
* 2^(n+6) with n ranging from 0 .. 7.
*/
n = 7;
} else {
frames >>= 7;
n = 0;
while (frames) {
n++;
frames >>= 1;
}
}

s->control_register &= ~HDSPM_LatencyMask;
s->control_register |= hdspm_encode_latency(n);

Expand Down

0 comments on commit 175cfc6

Please sign in to comment.