|
From: Perry G. <pe...@gi...> - 2004-06-11 07:46:09
|
Aivils wrote: >Hi All! > > Linux-kernel support only one pci_driver per each pci_dev. >If we load tdfxfb , then voodoo3 device is claimed and disagree >registering of i2c-voodoo3. In this case we should use "dirty hack >of Perrye". > > I add normal i2c-voodoo3 init without tdfxfb. In this case >we cannot use tdfxfb driver, but i2c-voodoo3 found all voodoo3 >devices, which i have 2 on my box (AGP and PCI). Unfortunately >i do not know what i should do with i2c of Voodoo3 PCI :) >Of course fbtv will not work :( > > Is this PCI Voodoo3 the one with tv-out? In theory the v3tv-radio driver should try each ioctl command on both i2c busses, and not care whether a client driver actually used the information passed down the ioctl chain. In practice, the v3tv driver finds the first i2c adapter of the class it wants, I2C_ADAP_CLASS_TV_ANALOG, or with an ID of 'I2C_ALGO_BIT | I2C_HW_B_VOO' and only talks to that adapter. With the 2.4 kernel version of v3tv, the behaviour is a little different, since it uses the voodoo3_call_i2c_client() function. In either case, things might be broken, because the v3tv driver in fact only tries to find one i2c adapter driver, and if the PCI Voodoo3 comes up first, the v3tv driver won't see the AGP card. Can you tell which video card is first in /proc/bus/i2c-? Once the clients are loaded it should be apparent. I think it will be the PCI device. Could you send both 'lspci' and 'lspci -n' to satidfy my curiosity? I'll need to research what all pci_enable_device does for us. If you are familiar with it, would you write back with some comments? I just realized that my patch for the 2.6 version of i2c-voodoo3 causes the function voodoo3_ remove() to not be called, so we get defunct entries in /proc/bus/i2c* Could you add a call to voodoo3_ remove() in i2c_voodoo3_exit() and see if /proc/bus/ gets cleaned up properly? Thanks, Perry |