From: Devin Heitmueller Date: Sun, 13 Mar 2011 05:04:53 +0000 (-0300) Subject: [media] em28xx: fix GPIO problem with HVR-900R2 getting out of sync with drx-d X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=7030f52bbee5edafd408f985696516a0dc735ca7;p=mv-sheeva.git [media] em28xx: fix GPIO problem with HVR-900R2 getting out of sync with drx-d The em28xx bridge strobes the reset pin on the drx-d on every ts_ctrl call. This results in the state of the chip getting out of the sync with the state of the driver (and hence all tuning requests after the first one fail). Make sure the drx-d is not being held in reset, but don't actually perform a hardware reset on the chip. The GPIO block has been split out from the other HVR-9x0 variants to reduce the risk of regression, although in theory they would not have any issues since none of those cases have the frontend driver managing any internal state. Signed-off-by: Devin Heitmueller Signed-off-by: Mauro Carvalho Chehab --- diff --git a/drivers/media/video/em28xx/em28xx-cards.c b/drivers/media/video/em28xx/em28xx-cards.c index 5bdecb36ca2..b4c322d1609 100644 --- a/drivers/media/video/em28xx/em28xx-cards.c +++ b/drivers/media/video/em28xx/em28xx-cards.c @@ -100,6 +100,13 @@ static struct em28xx_reg_seq hauppauge_wintv_hvr_900_digital[] = { { -1, -1, -1, -1}, }; +/* Board Hauppauge WinTV HVR 900 (R2) digital */ +static struct em28xx_reg_seq hauppauge_wintv_hvr_900R2_digital[] = { + {EM28XX_R08_GPIO, 0x2e, ~EM_GPIO_4, 10}, + {EM2880_R04_GPO, 0x0c, 0x0f, 10}, + { -1, -1, -1, -1}, +}; + /* Boards - EM2880 MSI DIGIVOX AD and EM2880_BOARD_MSI_DIGIVOX_AD_II */ static struct em28xx_reg_seq em2880_msi_digivox_ad_analog[] = { {EM28XX_R08_GPIO, 0x69, ~EM_GPIO_4, 10}, @@ -860,7 +867,7 @@ struct em28xx_board em28xx_boards[] = { .tuner_gpio = default_tuner_gpio, .mts_firmware = 1, .has_dvb = 1, - .dvb_gpio = hauppauge_wintv_hvr_900_digital, + .dvb_gpio = hauppauge_wintv_hvr_900R2_digital, .ir_codes = RC_MAP_HAUPPAUGE, .decoder = EM28XX_TVP5150, .input = { {