Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 160176 Details for
Bug 231451
sys-kernel/gentoo-sources-2.6.25-r6: sound output broken with saa7134 tv tuner
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
fix for 2.6.25
saa7134-setup-2.6.25.patch (text/plain), 6.35 KB, created by
Ambroz Bizjak
on 2008-07-12 07:45:26 UTC
(
hide
)
Description:
fix for 2.6.25
Filename:
MIME Type:
Creator:
Ambroz Bizjak
Created:
2008-07-12 07:45:26 UTC
Size:
6.35 KB
patch
obsolete
>diff -urN linux-2.6.25.10.orig/drivers/media/video/saa7134/saa7134-cards.c linux-2.6.25.10/drivers/media/video/saa7134/saa7134-cards.c >--- linux-2.6.25.10.orig/drivers/media/video/saa7134/saa7134-cards.c 2008-07-12 09:34:30.000000000 +0200 >+++ linux-2.6.25.10/drivers/media/video/saa7134/saa7134-cards.c 2008-07-12 09:35:22.000000000 +0200 >@@ -50,7 +50,7 @@ > .tuner_type = TUNER_ABSENT, > .radio_type = UNSET, > .tuner_addr = ADDR_UNSET, >- .radio_addr = ADDR_UNSET, >+ .radio_addr = 0x60, > > .inputs = {{ > .name = "default", >@@ -5176,14 +5176,56 @@ > return 0; > } > >+static void saa7134_tuner_setup(struct saa7134_dev *dev) >+{ >+ struct tuner_setup tun_setup; >+ unsigned int mode_mask = T_RADIO | >+ T_ANALOG_TV | >+ T_DIGITAL_TV; >+ >+ memset(&tun_setup, 0, sizeof(tun_setup)); >+ tun_setup.tuner_callback = saa7134_tuner_callback; >+ >+ if (saa7134_boards[dev->board].radio_type != UNSET) { >+ tun_setup.type = saa7134_boards[dev->board].radio_type; >+ tun_setup.addr = saa7134_boards[dev->board].radio_addr; >+ >+ tun_setup.mode_mask = T_RADIO; >+ >+ saa7134_i2c_call_clients(dev, TUNER_SET_TYPE_ADDR, &tun_setup); >+ mode_mask &= ~T_RADIO; >+ } >+ >+ if ((dev->tuner_type != TUNER_ABSENT) && (dev->tuner_type != UNSET)) { >+ tun_setup.type = dev->tuner_type; >+ tun_setup.addr = dev->tuner_addr; >+ tun_setup.config = saa7134_boards[dev->board].tuner_config; >+ tun_setup.tuner_callback = saa7134_tuner_callback; >+ >+ tun_setup.mode_mask = mode_mask; >+ >+ saa7134_i2c_call_clients(dev, TUNER_SET_TYPE_ADDR, &tun_setup); >+ } >+ >+ if (dev->tda9887_conf) { >+ struct v4l2_priv_tun_config tda9887_cfg; >+ >+ tda9887_cfg.tuner = TUNER_TDA9887; >+ tda9887_cfg.priv = &dev->tda9887_conf; >+ >+ saa7134_i2c_call_clients(dev, TUNER_SET_CONFIG, >+ &tda9887_cfg); >+ } >+} >+ > /* stuff which needs working i2c */ > int saa7134_board_init2(struct saa7134_dev *dev) > { > unsigned char buf; > int board; >- struct tuner_setup tun_setup; >- tun_setup.config = 0; >- tun_setup.tuner_callback = saa7134_tuner_callback; >+ >+ dev->tuner_type = saa7134_boards[dev->board].tuner_type; >+ dev->tuner_addr = saa7134_boards[dev->board].tuner_addr; > > switch (dev->board) { > case SAA7134_BOARD_BMK_MPEX_NOTUNER: >@@ -5198,14 +5240,6 @@ > printk("%s: board type fixup: %s\n", dev->name, > saa7134_boards[dev->board].name); > dev->tuner_type = saa7134_boards[dev->board].tuner_type; >- >- if (TUNER_ABSENT != dev->tuner_type) { >- tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV; >- tun_setup.type = dev->tuner_type; >- tun_setup.addr = ADDR_UNSET; >- >- saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR, &tun_setup); >- } > break; > case SAA7134_BOARD_MD7134: > { >@@ -5261,25 +5295,6 @@ > } > > printk(KERN_INFO "%s Tuner type is %d\n", dev->name, dev->tuner_type); >- if (dev->tuner_type == TUNER_PHILIPS_FMD1216ME_MK3) { >- struct v4l2_priv_tun_config tda9887_cfg; >- >- tda9887_cfg.tuner = TUNER_TDA9887; >- tda9887_cfg.priv = &dev->tda9887_conf; >- >- dev->tda9887_conf = TDA9887_PRESENT | >- TDA9887_PORT1_ACTIVE | >- TDA9887_PORT2_ACTIVE; >- >- saa7134_i2c_call_clients(dev, TUNER_SET_CONFIG, >- &tda9887_cfg); >- } >- >- tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV; >- tun_setup.type = dev->tuner_type; >- tun_setup.addr = ADDR_UNSET; >- >- saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR,&tun_setup); > } > break; > case SAA7134_BOARD_PHILIPS_EUROPA: >@@ -5292,12 +5307,6 @@ > u8 data[] = { 0x07, 0x02}; > struct i2c_msg msg = {.addr=0x08, .flags=0, .buf=data, .len = sizeof(data)}; > i2c_transfer(&dev->i2c_adap, &msg, 1); >- >- tun_setup.mode_mask = T_ANALOG_TV | T_DIGITAL_TV; >- tun_setup.type = dev->tuner_type; >- tun_setup.addr = dev->tuner_addr; >- >- saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR,&tun_setup); > } > break; > case SAA7134_BOARD_PHILIPS_TIGER: >@@ -5310,14 +5319,18 @@ > printk(KERN_INFO "%s: Reconfigured board as %s\n", > dev->name, saa7134_boards[dev->board].name); > } >- if(dev->board == SAA7134_BOARD_PHILIPS_TIGER_S) { >- tun_setup.mode_mask = T_ANALOG_TV | T_DIGITAL_TV; >- tun_setup.type = TUNER_PHILIPS_TDA8290; >- tun_setup.addr = 0x4b; >- tun_setup.config = 2; >+ if (dev->board == SAA7134_BOARD_PHILIPS_TIGER_S) { >+ dev->tuner_type = TUNER_PHILIPS_TDA8290; >+ >+ saa7134_tuner_setup(dev); > >- saa7134_i2c_call_clients (dev, TUNER_SET_TYPE_ADDR,&tun_setup); > data[2] = 0x68; >+ i2c_transfer(&dev->i2c_adap, &msg, 1); >+ >+ /* Tuner setup is handled before I2C transfer. >+ Due to that, there's no need to do it later >+ */ >+ return 0; > } > i2c_transfer(&dev->i2c_adap, &msg, 1); > } >@@ -5403,6 +5416,7 @@ > } > break; > } >+ saa7134_tuner_setup(dev); > return 0; > } > >diff -urN linux-2.6.25.10.orig/drivers/media/video/saa7134/saa7134-i2c.c linux-2.6.25.10/drivers/media/video/saa7134/saa7134-i2c.c >--- linux-2.6.25.10.orig/drivers/media/video/saa7134/saa7134-i2c.c 2008-07-12 09:34:30.000000000 +0200 >+++ linux-2.6.25.10/drivers/media/video/saa7134/saa7134-i2c.c 2008-07-12 09:35:22.000000000 +0200 >@@ -322,8 +322,6 @@ > static int attach_inform(struct i2c_client *client) > { > struct saa7134_dev *dev = client->adapter->algo_data; >- int tuner = dev->tuner_type; >- struct tuner_setup tun_setup; > > d1printk( "%s i2c attach [addr=0x%x,client=%s]\n", > client->driver->driver.name, client->addr, client->name); >@@ -344,46 +342,6 @@ > } > } > >- if (!client->driver->command) >- return 0; >- >- if (saa7134_boards[dev->board].radio_type != UNSET) { >- >- tun_setup.type = saa7134_boards[dev->board].radio_type; >- tun_setup.addr = saa7134_boards[dev->board].radio_addr; >- >- if ((tun_setup.addr == ADDR_UNSET) || (tun_setup.addr == client->addr)) { >- tun_setup.mode_mask = T_RADIO; >- >- client->driver->command(client, TUNER_SET_TYPE_ADDR, &tun_setup); >- } >- } >- >- if (tuner != UNSET) { >- tun_setup.type = tuner; >- tun_setup.addr = saa7134_boards[dev->board].tuner_addr; >- tun_setup.config = saa7134_boards[dev->board].tuner_config; >- tun_setup.tuner_callback = saa7134_tuner_callback; >- >- if ((tun_setup.addr == ADDR_UNSET)||(tun_setup.addr == client->addr)) { >- >- tun_setup.mode_mask = T_ANALOG_TV; >- >- client->driver->command(client,TUNER_SET_TYPE_ADDR, &tun_setup); >- } >- >- if (tuner == TUNER_TDA9887) { >- struct v4l2_priv_tun_config tda9887_cfg; >- >- tda9887_cfg.tuner = TUNER_TDA9887; >- tda9887_cfg.priv = &dev->tda9887_conf; >- >- client->driver->command(client, TUNER_SET_CONFIG, >- &tda9887_cfg); >- } >- } >- >- > return 0; > } >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 231451
: 160176