提交 a5e4aa4d 编写于 作者: D Daniel Mack 提交者: Felipe Balbi

usb: musb: cppi41: tweak hrtimer values

Intensive tests with USB audio devices connected to a musb host port
have shown reproducible pops and clicks in both the playback and the
capture stream.

These are related to how the early_tx hrtimer is set up, and it turns
out they can be fixed by reducing the timer's slack value from 40 to
25 us. Also, when the callback is ran without taking action, it should
be rescheduled 20 us later instead of 50 us.
Reported-and-tested-by: NSven Neumann <neumann@teufel.de>
Signed-off-by: NDaniel Mack <daniel@zonque.org>
Signed-off-by: NFelipe Balbi <balbi@ti.com>
上级 eb11adab
...@@ -200,7 +200,7 @@ static enum hrtimer_restart cppi41_recheck_tx_req(struct hrtimer *timer) ...@@ -200,7 +200,7 @@ static enum hrtimer_restart cppi41_recheck_tx_req(struct hrtimer *timer)
if (!list_empty(&controller->early_tx_list)) { if (!list_empty(&controller->early_tx_list)) {
ret = HRTIMER_RESTART; ret = HRTIMER_RESTART;
hrtimer_forward_now(&controller->early_tx, hrtimer_forward_now(&controller->early_tx,
ktime_set(0, 50 * NSEC_PER_USEC)); ktime_set(0, 20 * NSEC_PER_USEC));
} }
spin_unlock_irqrestore(&musb->lock, flags); spin_unlock_irqrestore(&musb->lock, flags);
...@@ -278,7 +278,7 @@ static void cppi41_dma_callback(void *private_data) ...@@ -278,7 +278,7 @@ static void cppi41_dma_callback(void *private_data)
hrtimer_start_range_ns(&controller->early_tx, hrtimer_start_range_ns(&controller->early_tx,
ktime_set(0, usecs * NSEC_PER_USEC), ktime_set(0, usecs * NSEC_PER_USEC),
40 * NSEC_PER_USEC, 20 * NSEC_PER_USEC,
HRTIMER_MODE_REL); HRTIMER_MODE_REL);
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册