Lines Matching refs:i2c
41 struct amdgpu_i2c_chan *i2c = i2c_get_adapdata(i2c_adap); in amdgpu_i2c_pre_xfer() local
42 struct amdgpu_device *adev = i2c->dev->dev_private; in amdgpu_i2c_pre_xfer()
43 struct amdgpu_i2c_bus_rec *rec = &i2c->rec; in amdgpu_i2c_pre_xfer()
46 mutex_lock(&i2c->mutex); in amdgpu_i2c_pre_xfer()
83 struct amdgpu_i2c_chan *i2c = i2c_get_adapdata(i2c_adap); in amdgpu_i2c_post_xfer() local
84 struct amdgpu_device *adev = i2c->dev->dev_private; in amdgpu_i2c_post_xfer()
85 struct amdgpu_i2c_bus_rec *rec = &i2c->rec; in amdgpu_i2c_post_xfer()
97 mutex_unlock(&i2c->mutex); in amdgpu_i2c_post_xfer()
102 struct amdgpu_i2c_chan *i2c = i2c_priv; in amdgpu_i2c_get_clock() local
103 struct amdgpu_device *adev = i2c->dev->dev_private; in amdgpu_i2c_get_clock()
104 struct amdgpu_i2c_bus_rec *rec = &i2c->rec; in amdgpu_i2c_get_clock()
117 struct amdgpu_i2c_chan *i2c = i2c_priv; in amdgpu_i2c_get_data() local
118 struct amdgpu_device *adev = i2c->dev->dev_private; in amdgpu_i2c_get_data()
119 struct amdgpu_i2c_bus_rec *rec = &i2c->rec; in amdgpu_i2c_get_data()
131 struct amdgpu_i2c_chan *i2c = i2c_priv; in amdgpu_i2c_set_clock() local
132 struct amdgpu_device *adev = i2c->dev->dev_private; in amdgpu_i2c_set_clock()
133 struct amdgpu_i2c_bus_rec *rec = &i2c->rec; in amdgpu_i2c_set_clock()
144 struct amdgpu_i2c_chan *i2c = i2c_priv; in amdgpu_i2c_set_data() local
145 struct amdgpu_device *adev = i2c->dev->dev_private; in amdgpu_i2c_set_data()
146 struct amdgpu_i2c_bus_rec *rec = &i2c->rec; in amdgpu_i2c_set_data()
164 struct amdgpu_i2c_chan *i2c; in amdgpu_i2c_create() local
171 i2c = kzalloc(sizeof(struct amdgpu_i2c_chan), GFP_KERNEL); in amdgpu_i2c_create()
172 if (i2c == NULL) in amdgpu_i2c_create()
175 i2c->rec = *rec; in amdgpu_i2c_create()
176 i2c->adapter.owner = THIS_MODULE; in amdgpu_i2c_create()
177 i2c->adapter.class = I2C_CLASS_DDC; in amdgpu_i2c_create()
178 i2c->adapter.dev.parent = &dev->pdev->dev; in amdgpu_i2c_create()
179 i2c->dev = dev; in amdgpu_i2c_create()
180 i2c_set_adapdata(&i2c->adapter, i2c); in amdgpu_i2c_create()
181 mutex_init(&i2c->mutex); in amdgpu_i2c_create()
185 snprintf(i2c->adapter.name, sizeof(i2c->adapter.name), in amdgpu_i2c_create()
187 i2c->adapter.algo = &amdgpu_atombios_i2c_algo; in amdgpu_i2c_create()
188 ret = i2c_add_adapter(&i2c->adapter); in amdgpu_i2c_create()
193 snprintf(i2c->adapter.name, sizeof(i2c->adapter.name), in amdgpu_i2c_create()
195 i2c->adapter.algo_data = &i2c->bit; in amdgpu_i2c_create()
196 i2c->bit.pre_xfer = amdgpu_i2c_pre_xfer; in amdgpu_i2c_create()
197 i2c->bit.post_xfer = amdgpu_i2c_post_xfer; in amdgpu_i2c_create()
198 i2c->bit.setsda = amdgpu_i2c_set_data; in amdgpu_i2c_create()
199 i2c->bit.setscl = amdgpu_i2c_set_clock; in amdgpu_i2c_create()
200 i2c->bit.getsda = amdgpu_i2c_get_data; in amdgpu_i2c_create()
201 i2c->bit.getscl = amdgpu_i2c_get_clock; in amdgpu_i2c_create()
202 i2c->bit.udelay = 10; in amdgpu_i2c_create()
203 i2c->bit.timeout = usecs_to_jiffies(2200); /* from VESA */ in amdgpu_i2c_create()
204 i2c->bit.data = i2c; in amdgpu_i2c_create()
205 ret = i2c_bit_add_bus(&i2c->adapter); in amdgpu_i2c_create()
212 return i2c; in amdgpu_i2c_create()
214 kfree(i2c); in amdgpu_i2c_create()
219 void amdgpu_i2c_destroy(struct amdgpu_i2c_chan *i2c) in amdgpu_i2c_destroy() argument
221 if (!i2c) in amdgpu_i2c_destroy()
223 WARN_ON(i2c->has_aux); in amdgpu_i2c_destroy()
224 i2c_del_adapter(&i2c->adapter); in amdgpu_i2c_destroy()
225 kfree(i2c); in amdgpu_i2c_destroy()