Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

V4L/DVB (6969): Avoid causing regressions for non-HVR950 boards

Only HVR950 has analog_gpio configured. It makes no sense to set gpio to 0 for
other boards. Better to add a test, while this var is not set for all xc3028
devices.

Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>

+19 -15
+19 -15
drivers/media/video/em28xx/em28xx-cards.c
··· 485 485 switch (command) { 486 486 case XC2028_TUNER_RESET: 487 487 { 488 - char gpio0, gpio1, gpio4; 489 - 490 - /* GPIO and initialization codes for analog TV */ 491 - gpio0 = dev->analog_gpio & 0xff; 492 - gpio1 = (dev->analog_gpio >> 8) & 0xff; 493 - gpio4 = dev->analog_gpio >> 24; 488 + /* GPIO and initialization codes for analog TV and radio 489 + This code should be complemented for DTV, since reset 490 + codes are different. 491 + */ 494 492 495 493 dev->em28xx_write_regs_req(dev, 0x00, 0x48, "\x00", 1); 496 494 dev->em28xx_write_regs_req(dev, 0x00, 0x12, "\x67", 1); 497 495 498 - if (gpio4) { 499 - dev->em28xx_write_regs(dev, 0x04, &gpio4, 1); 500 - msleep(140); 501 - } 496 + if (dev->analog_gpio) { 497 + char gpio0 = dev->analog_gpio & 0xff; 498 + char gpio1 = (dev->analog_gpio >> 8) & 0xff; 499 + char gpio4 = dev->analog_gpio >> 24; 502 500 503 - msleep(6); 504 - dev->em28xx_write_regs(dev, 0x08, &gpio0, 1); 505 - msleep(10); 506 - dev->em28xx_write_regs(dev, 0x08, &gpio1, 1); 507 - msleep(5); 501 + if (gpio4) { 502 + dev->em28xx_write_regs(dev, 0x04, &gpio4, 1); 503 + msleep(140); 504 + } 505 + 506 + msleep(6); 507 + dev->em28xx_write_regs(dev, 0x08, &gpio0, 1); 508 + msleep(10); 509 + dev->em28xx_write_regs(dev, 0x08, &gpio1, 1); 510 + msleep(5); 511 + } 508 512 509 513 break; 510 514 }