The patch number 9475 was added via Andy Walls <[EMAIL PROTECTED]>
to http://linuxtv.org/hg/v4l-dvb master development tree.
Kernel patches in this development tree may be modified to be backward
compatible with older kernels. Compatibility modifications will be
removed before inclusion into the mainstream Kernel
If anyone has any objections, please let us know by sending a message to:
[EMAIL PROTECTED]
------
From: Andy Walls <[EMAIL PROTECTED]>
cx18: Disable write retries for registers that always change - part 1.
cx18: Disable write retries for registers that always change - part 1.
Interrupt related registers will likely not read back the value we just wrote.
Disable retries for these registers for now to avoid accidently discarding
interrupts. More intelligent read back verification criteria are needed for
these and other registers (e.g. GPIO line registers), which will be addressed in
subsequent changes.
Priority: high
Signed-off-by: Andy Walls <[EMAIL PROTECTED]>
---
linux/drivers/media/video/cx18/cx18-io.c | 4 ++--
linux/drivers/media/video/cx18/cx18-irq.c | 6 +++---
linux/drivers/media/video/cx18/cx18-mailbox.c | 4 ++--
3 files changed, 7 insertions(+), 7 deletions(-)
diff -r 780e1a52449f -r 6ddc560136dd linux/drivers/media/video/cx18/cx18-io.c
--- a/linux/drivers/media/video/cx18/cx18-io.c Sat Oct 25 20:33:22 2008 -0400
+++ b/linux/drivers/media/video/cx18/cx18-io.c Sat Oct 25 22:27:06 2008 -0400
@@ -218,7 +218,7 @@ void cx18_sw1_irq_enable(struct cx18 *cx
void cx18_sw1_irq_enable(struct cx18 *cx, u32 val)
{
u32 r;
- cx18_write_reg(cx, val, SW1_INT_STATUS);
+ cx18_write_reg_noretry(cx, val, SW1_INT_STATUS);
r = cx18_read_reg(cx, SW1_INT_ENABLE_PCI);
cx18_write_reg(cx, r | val, SW1_INT_ENABLE_PCI);
}
@@ -233,7 +233,7 @@ void cx18_sw2_irq_enable(struct cx18 *cx
void cx18_sw2_irq_enable(struct cx18 *cx, u32 val)
{
u32 r;
- cx18_write_reg(cx, val, SW2_INT_STATUS);
+ cx18_write_reg_noretry(cx, val, SW2_INT_STATUS);
r = cx18_read_reg(cx, SW2_INT_ENABLE_PCI);
cx18_write_reg(cx, r | val, SW2_INT_ENABLE_PCI);
}
diff -r 780e1a52449f -r 6ddc560136dd linux/drivers/media/video/cx18/cx18-irq.c
--- a/linux/drivers/media/video/cx18/cx18-irq.c Sat Oct 25 20:33:22 2008 -0400
+++ b/linux/drivers/media/video/cx18/cx18-irq.c Sat Oct 25 22:27:06 2008 -0400
@@ -153,9 +153,9 @@ irqreturn_t cx18_irq_handler(int irq, vo
sw1_mask = cx18_read_reg(cx, SW1_INT_ENABLE_PCI) | IRQ_EPU_TO_HPU;
sw1 = cx18_read_reg(cx, SW1_INT_STATUS) & sw1_mask;
- cx18_write_reg(cx, sw2&sw2_mask, SW2_INT_STATUS);
- cx18_write_reg(cx, sw1&sw1_mask, SW1_INT_STATUS);
- cx18_write_reg(cx, hw2&hw2_mask, HW2_INT_CLR_STATUS);
+ cx18_write_reg_noretry(cx, sw2&sw2_mask, SW2_INT_STATUS);
+ cx18_write_reg_noretry(cx, sw1&sw1_mask, SW1_INT_STATUS);
+ cx18_write_reg_noretry(cx, hw2&hw2_mask, HW2_INT_CLR_STATUS);
if (sw1 || sw2 || hw2)
CX18_DEBUG_HI_IRQ("SW1: %x SW2: %x HW2: %x\n", sw1, sw2, hw2);
diff -r 780e1a52449f -r 6ddc560136dd
linux/drivers/media/video/cx18/cx18-mailbox.c
--- a/linux/drivers/media/video/cx18/cx18-mailbox.c Sat Oct 25 20:33:22
2008 -0400
+++ b/linux/drivers/media/video/cx18/cx18-mailbox.c Sat Oct 25 22:27:06
2008 -0400
@@ -176,7 +176,7 @@ long cx18_mb_ack(struct cx18 *cx, const
cx18_setup_page(cx, SCB_OFFSET);
cx18_write_sync(cx, mb->request, &ack_mb->ack);
- cx18_write_reg(cx, ack_irq, SW2_INT_SET);
+ cx18_write_reg_noretry(cx, ack_irq, SW2_INT_SET);
return 0;
}
@@ -225,7 +225,7 @@ static int cx18_api_call(struct cx18 *cx
}
if (info->flags & API_FAST)
timeout /= 2;
- cx18_write_reg(cx, irq, SW1_INT_SET);
+ cx18_write_reg_noretry(cx, irq, SW1_INT_SET);
while (!sig && cx18_readl(cx, &mb->ack) != cx18_readl(cx, &mb->request)
&& cnt < 660) {
---
Patch is available at:
http://linuxtv.org/hg/v4l-dvb/rev/6ddc560136dd42db052d68652d05f9ff644bba11
_______________________________________________
linuxtv-commits mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits