The patch number 9765 was added via Mauro Carvalho Chehab <[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: Mauro Carvalho Chehab <[EMAIL PROTECTED]>
em28xx: move tuner gpio's to the cards struct
Priority: normal
Signed-off-by: Mauro Carvalho Chehab <[EMAIL PROTECTED]>
---
linux/drivers/media/video/em28xx/em28xx-cards.c | 35 ++++++++++++----
linux/drivers/media/video/em28xx/em28xx.h | 5 --
2 files changed, 29 insertions(+), 11 deletions(-)
diff -r bdf1741d91e1 -r f255f7e1ca7d
linux/drivers/media/video/em28xx/em28xx-cards.c
--- a/linux/drivers/media/video/em28xx/em28xx-cards.c Thu Nov 27 10:10:40
2008 -0200
+++ b/linux/drivers/media/video/em28xx/em28xx-cards.c Thu Nov 27 10:21:55
2008 -0200
@@ -107,7 +107,7 @@ static struct em28xx_reg_seq em2870_kwor
#endif
/* Callback for the most boards */
-static struct em28xx_reg_seq default_callback[] = {
+static struct em28xx_reg_seq default_tuner_gpio[] = {
{EM28XX_R08_GPIO, EM_GPIO_4, EM_GPIO_4, 10},
{EM28XX_R08_GPIO, 0, EM_GPIO_4, 10},
{EM28XX_R08_GPIO, EM_GPIO_4, EM_GPIO_4, 10},
@@ -473,7 +473,9 @@ struct em28xx_board em28xx_boards[] = {
.name = "Terratec Cinergy A Hybrid XS",
.valid = EM28XX_BOARD_NOT_VALIDATED,
.tuner_type = TUNER_XC2028,
- .decoder = EM28XX_TVP5150,
+ .tuner_gpio = default_tuner_gpio,
+ .decoder = EM28XX_TVP5150,
+
#if 0 /* FIXME: add an entry at em28xx-dvb */
.has_dvb = 1,
.dvb_gpio = hauppauge_wintv_hvr_900_digital,
@@ -499,6 +501,7 @@ struct em28xx_board em28xx_boards[] = {
.name = "KWorld PVRTV 300U",
.valid = EM28XX_BOARD_NOT_VALIDATED,
.tuner_type = TUNER_XC2028,
+ .tuner_gpio = default_tuner_gpio,
.decoder = EM28XX_TVP5150,
.input = { {
.type = EM28XX_VMUX_TELEVISION,
@@ -559,6 +562,7 @@ struct em28xx_board em28xx_boards[] = {
.name = "Terratec Cinergy T XS",
.valid = EM28XX_BOARD_NOT_VALIDATED,
.tuner_type = TUNER_XC2028,
+ .tuner_gpio = default_tuner_gpio,
#if 0 /* FIXME: add an entry at em28xx-dvb */
.has_dvb = 1,
.dvb_gpio = default_digital,
@@ -573,6 +577,7 @@ struct em28xx_board em28xx_boards[] = {
.name = "Kworld 350 U DVB-T",
.valid = EM28XX_BOARD_NOT_VALIDATED,
.tuner_type = TUNER_XC2028,
+ .tuner_gpio = default_tuner_gpio,
#if 0 /* FIXME: add an entry at em28xx-dvb */
.has_dvb = 1,
.dvb_gpio = default_digital,
@@ -605,6 +610,7 @@ struct em28xx_board em28xx_boards[] = {
.valid = EM28XX_BOARD_NOT_VALIDATED,
.has_msp34xx = 1,
.tuner_type = TUNER_XC2028,
+ .tuner_gpio = default_tuner_gpio,
.decoder = EM28XX_TVP5150,
#if 0 /* FIXME: add an entry at em28xx-dvb */
.has_dvb = 1,
@@ -631,6 +637,7 @@ struct em28xx_board em28xx_boards[] = {
.name = "Hauppauge WinTV HVR 900",
.tda9887_conf = TDA9887_PRESENT,
.tuner_type = TUNER_XC2028,
+ .tuner_gpio = default_tuner_gpio,
.mts_firmware = 1,
.has_dvb = 1,
.dvb_gpio = hauppauge_wintv_hvr_900_digital,
@@ -656,6 +663,7 @@ struct em28xx_board em28xx_boards[] = {
.name = "Hauppauge WinTV HVR 900 (R2)",
.tda9887_conf = TDA9887_PRESENT,
.tuner_type = TUNER_XC2028,
+ .tuner_gpio = default_tuner_gpio,
.mts_firmware = 1,
.decoder = EM28XX_TVP5150,
#if 0 /* FIXME: add an entry at em28xx-dvb */
@@ -682,6 +690,7 @@ struct em28xx_board em28xx_boards[] = {
[EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950] = {
.name = "Hauppauge WinTV HVR 950",
.tuner_type = TUNER_XC2028,
+ .tuner_gpio = default_tuner_gpio,
.mts_firmware = 1,
.has_dvb = 1,
.dvb_gpio = hauppauge_wintv_hvr_900_digital,
@@ -707,6 +716,7 @@ struct em28xx_board em28xx_boards[] = {
[EM2880_BOARD_PINNACLE_PCTV_HD_PRO] = {
.name = "Pinnacle PCTV HD Pro Stick",
.tuner_type = TUNER_XC2028,
+ .tuner_gpio = default_tuner_gpio,
.mts_firmware = 1,
.has_dvb = 1,
.dvb_gpio = hauppauge_wintv_hvr_900_digital,
@@ -732,6 +742,7 @@ struct em28xx_board em28xx_boards[] = {
[EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600] = {
.name = "AMD ATI TV Wonder HD 600",
.tuner_type = TUNER_XC2028,
+ .tuner_gpio = default_tuner_gpio,
.mts_firmware = 1,
.has_dvb = 1,
.dvb_gpio = hauppauge_wintv_hvr_900_digital,
@@ -757,6 +768,7 @@ struct em28xx_board em28xx_boards[] = {
[EM2880_BOARD_TERRATEC_HYBRID_XS] = {
.name = "Terratec Hybrid XS",
.tuner_type = TUNER_XC2028,
+ .tuner_gpio = default_tuner_gpio,
.decoder = EM28XX_TVP5150,
.has_dvb = 1,
.dvb_gpio = default_analog,
@@ -783,6 +795,7 @@ struct em28xx_board em28xx_boards[] = {
[EM2880_BOARD_TERRATEC_PRODIGY_XS] = {
.name = "Terratec Prodigy XS",
.tuner_type = TUNER_XC2028,
+ .tuner_gpio = default_tuner_gpio,
.decoder = EM28XX_TVP5150,
#if 0 /* FIXME: add an entry at em28xx-dvb */
.has_dvb = 1,
@@ -973,6 +986,7 @@ struct em28xx_board em28xx_boards[] = {
.name = "MSI DigiVox A/D",
.valid = EM28XX_BOARD_NOT_VALIDATED,
.tuner_type = TUNER_XC2028,
+ .tuner_gpio = default_tuner_gpio,
.decoder = EM28XX_TVP5150,
#if 0 /* FIXME: add an entry at em28xx-dvb */
.has_dvb = 1,
@@ -999,6 +1013,7 @@ struct em28xx_board em28xx_boards[] = {
.name = "MSI DigiVox A/D II",
.valid = EM28XX_BOARD_NOT_VALIDATED,
.tuner_type = TUNER_XC2028,
+ .tuner_gpio = default_tuner_gpio,
.decoder = EM28XX_TVP5150,
#if 0 /* FIXME: add an entry at em28xx-dvb */
.has_dvb = 1,
@@ -1025,6 +1040,7 @@ struct em28xx_board em28xx_boards[] = {
.name = "KWorld DVB-T 305U",
.valid = EM28XX_BOARD_NOT_VALIDATED,
.tuner_type = TUNER_XC2028,
+ .tuner_gpio = default_tuner_gpio,
.decoder = EM28XX_TVP5150,
.input = { {
.type = EM28XX_VMUX_TELEVISION,
@@ -1043,6 +1059,7 @@ struct em28xx_board em28xx_boards[] = {
[EM2880_BOARD_KWORLD_DVB_310U] = {
.name = "KWorld DVB-T 310U",
.tuner_type = TUNER_XC2028,
+ .tuner_gpio = default_tuner_gpio,
.has_dvb = 1,
.dvb_gpio = default_digital,
.mts_firmware = 1,
@@ -1068,6 +1085,7 @@ struct em28xx_board em28xx_boards[] = {
.name = "DNT DA2 Hybrid",
.valid = EM28XX_BOARD_NOT_VALIDATED,
.tuner_type = TUNER_XC2028,
+ .tuner_gpio = default_tuner_gpio,
.decoder = EM28XX_TVP5150,
#if 0 /* FIXME: add an entry at em28xx-dvb */
.has_dvb = 1,
@@ -1094,6 +1112,7 @@ struct em28xx_board em28xx_boards[] = {
.name = "Pinnacle Hybrid Pro",
.valid = EM28XX_BOARD_NOT_VALIDATED,
.tuner_type = TUNER_XC2028,
+ .tuner_gpio = default_tuner_gpio,
.decoder = EM28XX_TVP5150,
#if 0 /* FIXME: add an entry at em28xx-dvb */
.has_dvb = 1,
@@ -1120,6 +1139,7 @@ struct em28xx_board em28xx_boards[] = {
.name = "Pinnacle Hybrid Pro (2)",
.valid = EM28XX_BOARD_NOT_VALIDATED,
.tuner_type = TUNER_XC2028,
+ .tuner_gpio = default_tuner_gpio,
.mts_firmware = 1,
.decoder = EM28XX_TVP5150,
#if 0 /* FIXME: add an entry at em28xx-dvb */
@@ -1147,6 +1167,7 @@ struct em28xx_board em28xx_boards[] = {
.name = "Kworld VS-DVB-T 323UR",
.valid = EM28XX_BOARD_NOT_VALIDATED,
.tuner_type = TUNER_XC2028,
+ .tuner_gpio = default_tuner_gpio,
.decoder = EM28XX_TVP5150,
.input = { {
.type = EM28XX_VMUX_TELEVISION,
@@ -1166,6 +1187,7 @@ struct em28xx_board em28xx_boards[] = {
.name = "Terratec Hybrid XS (em2882)",
.valid = EM28XX_BOARD_NOT_VALIDATED,
.tuner_type = TUNER_XC2028,
+ .tuner_gpio = default_tuner_gpio,
.decoder = EM28XX_TVP5150,
#if 0 /* FIXME: add an entry at em28xx-dvb */
.has_dvb = 1,
@@ -1192,6 +1214,7 @@ struct em28xx_board em28xx_boards[] = {
.name = "Kworld PlusTV HD Hybrid 330",
.valid = EM28XX_BOARD_NOT_VALIDATED,
.tuner_type = TUNER_XC2028,
+ .tuner_gpio = default_tuner_gpio,
.decoder = EM28XX_TVP5150,
#if 0 /* FIXME: add an entry at em28xx-dvb */
.has_dvb = 1,
@@ -1384,7 +1407,7 @@ int em28xx_tuner_callback(void *ptr, int
if (command != XC2028_TUNER_RESET)
return 0;
- rc = em28xx_gpio_set(dev, dev->tuner_gpio);
+ rc = em28xx_gpio_set(dev, dev->board.tuner_gpio);
return rc;
}
@@ -1521,11 +1544,7 @@ void em28xx_pre_card_setup(struct em28xx
break;
}
- /* Sets the default callback. Used only for certain tuners */
- if (!dev->tuner_gpio)
- dev->tuner_gpio = default_callback;
-
- em28xx_gpio_set(dev, dev->tuner_gpio);
+ em28xx_gpio_set(dev, dev->board.tuner_gpio);
em28xx_set_mode(dev, EM28XX_ANALOG_MODE);
/* Unlock device */
diff -r bdf1741d91e1 -r f255f7e1ca7d linux/drivers/media/video/em28xx/em28xx.h
--- a/linux/drivers/media/video/em28xx/em28xx.h Thu Nov 27 10:10:40 2008 -0200
+++ b/linux/drivers/media/video/em28xx/em28xx.h Thu Nov 27 10:21:55 2008 -0200
@@ -336,8 +336,10 @@ struct em28xx_board {
/* i2c flags */
unsigned int tda9887_conf;
+ /* GPIO sequences */
struct em28xx_reg_seq *dvb_gpio;
struct em28xx_reg_seq *suspend_gpio;
+ struct em28xx_reg_seq *tuner_gpio;
unsigned int is_em2800:1;
unsigned int has_msp34xx:1;
@@ -440,9 +442,6 @@ struct em28xx {
/* Some older em28xx chips needs a waiting time after writing */
unsigned int wait_after_write;
-
- /* GPIO sequences for tuner callbacks */
- struct em28xx_reg_seq *tuner_gpio;
struct list_head devlist;
---
Patch is available at:
http://linuxtv.org/hg/v4l-dvb/rev/f255f7e1ca7daea56061851e11654c19b5824d4c
_______________________________________________
linuxtv-commits mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits