diff options
author | Chris Pascoe <c.pascoe@itee.uq.edu.au> | 2006-08-10 02:22:21 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2006-09-26 11:30:32 -0400 |
commit | d536e9c41f78c9959c585181f8a1e7fe8b157197 (patch) | |
tree | b6d87415ba6952f80598a773bb937803dfb774ff | |
parent | fc3398d8b317bebe542f57c65572d9b9f52112f7 (diff) |
V4L/DVB (4497): Reset USB part of DViCO Dual Digital during PCI driver attach
If the FX2 does not reset properly during reboot, it can present an
invalid USB device ID and fail to attach. Prevent this situation
from occuring by resetting the USB part of the card when the PCI part
probes.
Also fix the GPIO configurations so that analog capture will not
inadvertantly reset the USB part.
Signed-off-by: Chris Pascoe <c.pascoe@itee.uq.edu.au>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
-rw-r--r-- | drivers/media/video/cx88/cx88-cards.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c index ba3ff57bba75..29ba5d53ce34 100644 --- a/drivers/media/video/cx88/cx88-cards.c +++ b/drivers/media/video/cx88/cx88-cards.c | |||
@@ -1041,11 +1041,11 @@ struct cx88_board cx88_boards[] = { | |||
1041 | .input = {{ | 1041 | .input = {{ |
1042 | .type = CX88_VMUX_COMPOSITE1, | 1042 | .type = CX88_VMUX_COMPOSITE1, |
1043 | .vmux = 1, | 1043 | .vmux = 1, |
1044 | .gpio0 = 0x000027df, | 1044 | .gpio0 = 0x000067df, |
1045 | },{ | 1045 | },{ |
1046 | .type = CX88_VMUX_SVIDEO, | 1046 | .type = CX88_VMUX_SVIDEO, |
1047 | .vmux = 2, | 1047 | .vmux = 2, |
1048 | .gpio0 = 0x000027df, | 1048 | .gpio0 = 0x000067df, |
1049 | }}, | 1049 | }}, |
1050 | .dvb = 1, | 1050 | .dvb = 1, |
1051 | }, | 1051 | }, |
@@ -1759,9 +1759,15 @@ void cx88_card_setup(struct cx88_core *core) | |||
1759 | cx_write(MO_GP0_IO, 0x000007f8); | 1759 | cx_write(MO_GP0_IO, 0x000007f8); |
1760 | cx_write(MO_GP1_IO, 0x00000001); | 1760 | cx_write(MO_GP1_IO, 0x00000001); |
1761 | break; | 1761 | break; |
1762 | case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL: | ||
1763 | /* GPIO0:6 is hooked to FX2 reset pin */ | ||
1764 | cx_set(MO_GP0_IO, 0x00004040); | ||
1765 | cx_clear(MO_GP0_IO, 0x00000040); | ||
1766 | msleep(1000); | ||
1767 | cx_set(MO_GP0_IO, 0x00004040); | ||
1768 | /* FALLTHROUGH */ | ||
1762 | case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1: | 1769 | case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1: |
1763 | case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PLUS: | 1770 | case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PLUS: |
1764 | case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL: | ||
1765 | case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_HYBRID: | 1771 | case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_HYBRID: |
1766 | /* GPIO0:0 is hooked to mt352 reset pin */ | 1772 | /* GPIO0:0 is hooked to mt352 reset pin */ |
1767 | cx_set(MO_GP0_IO, 0x00000101); | 1773 | cx_set(MO_GP0_IO, 0x00000101); |