13 #include <linux/module.h>
14 #include <linux/kernel.h>
17 #include <linux/pci.h>
28 static void nvidia_gpio_setscl(
void *
data,
int state)
44 static void nvidia_gpio_setsda(
void *data,
int state)
60 static int nvidia_gpio_getscl(
void *data)
72 static int nvidia_gpio_getsda(
void *data)
85 unsigned int i2c_class)
91 chan->
adapter.class = i2c_class;
93 chan->
adapter.dev.parent = &chan->
par->pci_dev->dev;
94 chan->
algo.setsda = nvidia_gpio_setsda;
95 chan->
algo.setscl = nvidia_gpio_setscl;
96 chan->
algo.getsda = nvidia_gpio_getsda;
97 chan->
algo.getscl = nvidia_gpio_getscl;
98 chan->
algo.udelay = 40;
102 i2c_set_adapdata(&chan->
adapter, chan);
105 nvidia_gpio_setsda(chan, 1);
106 nvidia_gpio_setscl(chan, 1);
112 "I2C bus %s registered.\n", name);
115 "Failed to register I2C bus %s.\n", name);
124 par->
chan[0].par = par;
125 par->
chan[1].par = par;
126 par->
chan[2].par = par;
129 nvidia_setup_i2c_bus(&par->
chan[0],
"nvidia #0",
133 nvidia_setup_i2c_bus(&par->
chan[1],
"nvidia #1",
136 par->
chan[2].ddc_base = 0x50;
137 nvidia_setup_i2c_bus(&par->
chan[2],
"nvidia #2", 0);
144 for (i = 0; i < 3; i++) {
145 if (!par->
chan[i].par)
157 if (par->
chan[conn - 1].par)
160 if (!edid && conn == 1) {
170 return (edid) ? 0 : 1;