Lines Matching refs:port

47 	struct nvkm_i2c_port *port = bit->data;  in nvkm_i2c_pre_xfer()  local
48 return nvkm_i2c(port)->acquire(port, bit->timeout); in nvkm_i2c_pre_xfer()
55 struct nvkm_i2c_port *port = bit->data; in nvkm_i2c_post_xfer() local
56 return nvkm_i2c(port)->release(port); in nvkm_i2c_post_xfer()
62 struct nvkm_i2c_port *port = data; in nvkm_i2c_setscl() local
63 port->func->drive_scl(port, state); in nvkm_i2c_setscl()
69 struct nvkm_i2c_port *port = data; in nvkm_i2c_setsda() local
70 port->func->drive_sda(port, state); in nvkm_i2c_setsda()
76 struct nvkm_i2c_port *port = data; in nvkm_i2c_getscl() local
77 return port->func->sense_scl(port); in nvkm_i2c_getscl()
83 struct nvkm_i2c_port *port = data; in nvkm_i2c_getsda() local
84 return port->func->sense_sda(port); in nvkm_i2c_getsda()
94 struct nvkm_i2c_port *port = (void *)object; in _nvkm_i2c_port_fini() local
95 struct nvkm_i2c_pad *pad = nvkm_i2c_pad(port); in _nvkm_i2c_port_fini()
97 return nvkm_object_fini(&port->base, suspend); in _nvkm_i2c_port_fini()
103 struct nvkm_i2c_port *port = (void *)object; in _nvkm_i2c_port_dtor() local
104 i2c_del_adapter(&port->adapter); in _nvkm_i2c_port_dtor()
105 nvkm_object_destroy(&port->base); in _nvkm_i2c_port_dtor()
117 struct nvkm_i2c_port *port; in nvkm_i2c_port_create_() local
121 port = *pobject; in nvkm_i2c_port_create_()
125 snprintf(port->adapter.name, sizeof(port->adapter.name), in nvkm_i2c_port_create_()
127 port->adapter.owner = THIS_MODULE; in nvkm_i2c_port_create_()
128 port->adapter.dev.parent = nv_device_base(device); in nvkm_i2c_port_create_()
129 port->index = index; in nvkm_i2c_port_create_()
130 port->aux = -1; in nvkm_i2c_port_create_()
131 port->func = func; in nvkm_i2c_port_create_()
132 mutex_init(&port->mutex); in nvkm_i2c_port_create_()
144 bit->data = port; in nvkm_i2c_port_create_()
152 port->adapter.algo_data = bit; in nvkm_i2c_port_create_()
153 ret = i2c_bit_add_bus(&port->adapter); in nvkm_i2c_port_create_()
155 port->adapter.algo_data = port; in nvkm_i2c_port_create_()
156 port->adapter.algo = algo; in nvkm_i2c_port_create_()
157 ret = i2c_add_adapter(&port->adapter); in nvkm_i2c_port_create_()
161 list_add_tail(&port->head, &i2c->ports); in nvkm_i2c_port_create_()
173 struct nvkm_i2c_port *port; in nvkm_i2c_find() local
190 list_for_each_entry(port, &i2c->ports, head) { in nvkm_i2c_find()
191 if (port->index == index) in nvkm_i2c_find()
192 return port; in nvkm_i2c_find()
201 struct nvkm_i2c_port *port; in nvkm_i2c_find_type() local
203 list_for_each_entry(port, &i2c->ports, head) { in nvkm_i2c_find_type()
204 if (nv_hclass(port) == type) in nvkm_i2c_find_type()
205 return port; in nvkm_i2c_find_type()
212 nvkm_i2c_release_pad(struct nvkm_i2c_port *port) in nvkm_i2c_release_pad() argument
214 struct nvkm_i2c_pad *pad = nvkm_i2c_pad(port); in nvkm_i2c_release_pad()
215 struct nvkm_i2c *i2c = nvkm_i2c(port); in nvkm_i2c_release_pad()
224 nvkm_i2c_try_acquire_pad(struct nvkm_i2c_port *port) in nvkm_i2c_try_acquire_pad() argument
226 struct nvkm_i2c_pad *pad = nvkm_i2c_pad(port); in nvkm_i2c_try_acquire_pad()
229 struct nvkm_object *owner = (void *)pad->port; in nvkm_i2c_try_acquire_pad()
231 if (owner == (void *)port) in nvkm_i2c_try_acquire_pad()
235 nvkm_i2c_release_pad(port); in nvkm_i2c_try_acquire_pad()
239 pad->next = port; in nvkm_i2c_try_acquire_pad()
245 nvkm_i2c_acquire_pad(struct nvkm_i2c_port *port, unsigned long timeout) in nvkm_i2c_acquire_pad() argument
247 struct nvkm_i2c *i2c = nvkm_i2c(port); in nvkm_i2c_acquire_pad()
251 nvkm_i2c_try_acquire_pad(port) == 0, in nvkm_i2c_acquire_pad()
255 wait_event(i2c->wait, nvkm_i2c_try_acquire_pad(port) == 0); in nvkm_i2c_acquire_pad()
262 nvkm_i2c_release(struct nvkm_i2c_port *port) in nvkm_i2c_release() argument
265 nvkm_i2c(port)->release_pad(port); in nvkm_i2c_release()
266 mutex_unlock(&port->mutex); in nvkm_i2c_release()
270 nvkm_i2c_acquire(struct nvkm_i2c_port *port, unsigned long timeout) in nvkm_i2c_acquire() argument
274 mutex_lock(&port->mutex); in nvkm_i2c_acquire()
275 if ((ret = nvkm_i2c(port)->acquire_pad(port, timeout))) in nvkm_i2c_acquire()
276 mutex_unlock(&port->mutex); in nvkm_i2c_acquire()
286 struct nvkm_i2c_port *port = nvkm_i2c_find(i2c, index); in nvkm_i2c_identify() local
289 if (!port) { in nvkm_i2c_identify()
294 nv_debug(i2c, "probing %ss on bus: %d\n", what, port->index); in nvkm_i2c_identify()
298 if ((port->adapter.algo == &i2c_bit_algo) && in nvkm_i2c_identify()
300 struct i2c_algo_bit_data *algo = port->adapter.algo_data; in nvkm_i2c_identify()
307 if (nv_probe_i2c(port, info[i].dev.addr) && in nvkm_i2c_identify()
308 (!match || match(port, &info[i].dev, data))) { in nvkm_i2c_identify()
315 struct i2c_algo_bit_data *algo = port->adapter.algo_data; in nvkm_i2c_identify()
328 struct nvkm_i2c_port *port = i2c->find(i2c, index); in nvkm_i2c_intr_fini() local
330 if (port && port->aux >= 0) in nvkm_i2c_intr_fini()
331 impl->aux_mask(i2c, type, 1 << port->aux, 0); in nvkm_i2c_intr_fini()
338 struct nvkm_i2c_port *port = i2c->find(i2c, index); in nvkm_i2c_intr_init() local
340 if (port && port->aux >= 0) in nvkm_i2c_intr_init()
341 impl->aux_mask(i2c, type, 1 << port->aux, 1 << port->aux); in nvkm_i2c_intr_init()
352 notify->index = req->port; in nvkm_i2c_intr_ctor()
363 struct nvkm_i2c_port *port; in nvkm_i2c_intr() local
369 list_for_each_entry(port, &i2c->ports, head) { in nvkm_i2c_intr()
370 if (e = 0, port->aux < 0) in nvkm_i2c_intr()
373 if (hi & (1 << port->aux)) e |= NVKM_I2C_PLUG; in nvkm_i2c_intr()
374 if (lo & (1 << port->aux)) e |= NVKM_I2C_UNPLUG; in nvkm_i2c_intr()
375 if (rq & (1 << port->aux)) e |= NVKM_I2C_IRQ; in nvkm_i2c_intr()
376 if (tx & (1 << port->aux)) e |= NVKM_I2C_DONE; in nvkm_i2c_intr()
382 port->index, &rep, in nvkm_i2c_intr()
402 struct nvkm_i2c_port *port; in _nvkm_i2c_fini() local
406 list_for_each_entry(port, &i2c->ports, head) { in _nvkm_i2c_fini()
407 ret = nv_ofuncs(port)->fini(nv_object(port), suspend); in _nvkm_i2c_fini()
419 list_for_each_entry_continue_reverse(port, &i2c->ports, head) { in _nvkm_i2c_fini()
420 nv_ofuncs(port)->init(nv_object(port)); in _nvkm_i2c_fini()
430 struct nvkm_i2c_port *port; in _nvkm_i2c_init() local
435 list_for_each_entry(port, &i2c->ports, head) { in _nvkm_i2c_init()
436 ret = nv_ofuncs(port)->init(nv_object(port)); in _nvkm_i2c_init()
444 list_for_each_entry_continue_reverse(port, &i2c->ports, head) { in _nvkm_i2c_init()
445 nv_ofuncs(port)->fini(nv_object(port), false); in _nvkm_i2c_init()
455 struct nvkm_i2c_port *port, *temp; in _nvkm_i2c_dtor() local
459 list_for_each_entry_safe(port, temp, &i2c->ports, head) { in _nvkm_i2c_dtor()
460 nvkm_object_ref(NULL, (struct nvkm_object **)&port); in _nvkm_i2c_dtor()