Lines Matching refs:rt
23 struct tb_retimer *rt = tb_to_retimer(nvm->dev); in tb_retimer_nvm_read() local
26 pm_runtime_get_sync(&rt->dev); in tb_retimer_nvm_read()
28 if (!mutex_trylock(&rt->tb->lock)) { in tb_retimer_nvm_read()
33 ret = usb4_port_retimer_nvm_read(rt->port, rt->index, offset, val, bytes); in tb_retimer_nvm_read()
34 mutex_unlock(&rt->tb->lock); in tb_retimer_nvm_read()
37 pm_runtime_mark_last_busy(&rt->dev); in tb_retimer_nvm_read()
38 pm_runtime_put_autosuspend(&rt->dev); in tb_retimer_nvm_read()
47 struct tb_retimer *rt = tb_to_retimer(nvm->dev); in tb_retimer_nvm_write() local
50 if (!mutex_trylock(&rt->tb->lock)) in tb_retimer_nvm_write()
54 mutex_unlock(&rt->tb->lock); in tb_retimer_nvm_write()
59 static int tb_retimer_nvm_add(struct tb_retimer *rt) in tb_retimer_nvm_add() argument
65 nvm = tb_nvm_alloc(&rt->dev); in tb_retimer_nvm_add()
69 ret = usb4_port_retimer_nvm_read(rt->port, rt->index, NVM_VERSION, &val, in tb_retimer_nvm_add()
77 ret = usb4_port_retimer_nvm_read(rt->port, rt->index, NVM_FLASH_SIZE, in tb_retimer_nvm_add()
93 rt->nvm = nvm; in tb_retimer_nvm_add()
101 static int tb_retimer_nvm_validate_and_write(struct tb_retimer *rt) in tb_retimer_nvm_validate_and_write() argument
104 const u8 *buf = rt->nvm->buf; in tb_retimer_nvm_validate_and_write()
107 image_size = rt->nvm->buf_data_size; in tb_retimer_nvm_validate_and_write()
136 if (device != rt->device) in tb_retimer_nvm_validate_and_write()
143 return usb4_port_retimer_nvm_write(rt->port, rt->index, 0, buf, in tb_retimer_nvm_validate_and_write()
150 struct tb_retimer *rt = tb_to_retimer(dev); in device_show() local
152 return sprintf(buf, "%#x\n", rt->device); in device_show()
159 struct tb_retimer *rt = tb_to_retimer(dev); in nvm_authenticate_show() local
162 if (!mutex_trylock(&rt->tb->lock)) in nvm_authenticate_show()
165 if (!rt->nvm) in nvm_authenticate_show()
168 ret = sprintf(buf, "%#x\n", rt->auth_status); in nvm_authenticate_show()
170 mutex_unlock(&rt->tb->lock); in nvm_authenticate_show()
178 struct tb_retimer *rt = tb_to_retimer(dev); in nvm_authenticate_store() local
182 pm_runtime_get_sync(&rt->dev); in nvm_authenticate_store()
184 if (!mutex_trylock(&rt->tb->lock)) { in nvm_authenticate_store()
189 if (!rt->nvm) { in nvm_authenticate_store()
199 rt->auth_status = 0; in nvm_authenticate_store()
202 if (!rt->nvm->buf) { in nvm_authenticate_store()
207 ret = tb_retimer_nvm_validate_and_write(rt); in nvm_authenticate_store()
211 ret = usb4_port_retimer_nvm_authenticate(rt->port, rt->index); in nvm_authenticate_store()
215 mutex_unlock(&rt->tb->lock); in nvm_authenticate_store()
217 pm_runtime_mark_last_busy(&rt->dev); in nvm_authenticate_store()
218 pm_runtime_put_autosuspend(&rt->dev); in nvm_authenticate_store()
229 struct tb_retimer *rt = tb_to_retimer(dev); in nvm_version_show() local
232 if (!mutex_trylock(&rt->tb->lock)) in nvm_version_show()
235 if (!rt->nvm) in nvm_version_show()
238 ret = sprintf(buf, "%x.%x\n", rt->nvm->major, rt->nvm->minor); in nvm_version_show()
240 mutex_unlock(&rt->tb->lock); in nvm_version_show()
248 struct tb_retimer *rt = tb_to_retimer(dev); in vendor_show() local
250 return sprintf(buf, "%#x\n", rt->vendor); in vendor_show()
273 struct tb_retimer *rt = tb_to_retimer(dev); in tb_retimer_release() local
275 kfree(rt); in tb_retimer_release()
286 struct tb_retimer *rt; in tb_retimer_add() local
323 rt = kzalloc(sizeof(*rt), GFP_KERNEL); in tb_retimer_add()
324 if (!rt) in tb_retimer_add()
327 rt->index = index; in tb_retimer_add()
328 rt->vendor = vendor; in tb_retimer_add()
329 rt->device = device; in tb_retimer_add()
330 rt->auth_status = auth_status; in tb_retimer_add()
331 rt->port = port; in tb_retimer_add()
332 rt->tb = port->sw->tb; in tb_retimer_add()
334 rt->dev.parent = &port->sw->dev; in tb_retimer_add()
335 rt->dev.bus = &tb_bus_type; in tb_retimer_add()
336 rt->dev.type = &tb_retimer_type; in tb_retimer_add()
337 dev_set_name(&rt->dev, "%s:%u.%u", dev_name(&port->sw->dev), in tb_retimer_add()
340 ret = device_register(&rt->dev); in tb_retimer_add()
342 dev_err(&rt->dev, "failed to register retimer: %d\n", ret); in tb_retimer_add()
343 put_device(&rt->dev); in tb_retimer_add()
347 ret = tb_retimer_nvm_add(rt); in tb_retimer_add()
349 dev_err(&rt->dev, "failed to add NVM devices: %d\n", ret); in tb_retimer_add()
350 device_unregister(&rt->dev); in tb_retimer_add()
354 dev_info(&rt->dev, "new retimer found, vendor=%#x device=%#x\n", in tb_retimer_add()
355 rt->vendor, rt->device); in tb_retimer_add()
357 pm_runtime_no_callbacks(&rt->dev); in tb_retimer_add()
358 pm_runtime_set_active(&rt->dev); in tb_retimer_add()
359 pm_runtime_enable(&rt->dev); in tb_retimer_add()
360 pm_runtime_set_autosuspend_delay(&rt->dev, TB_AUTOSUSPEND_DELAY); in tb_retimer_add()
361 pm_runtime_mark_last_busy(&rt->dev); in tb_retimer_add()
362 pm_runtime_use_autosuspend(&rt->dev); in tb_retimer_add()
367 static void tb_retimer_remove(struct tb_retimer *rt) in tb_retimer_remove() argument
369 dev_info(&rt->dev, "retimer disconnected\n"); in tb_retimer_remove()
370 tb_nvm_free(rt->nvm); in tb_retimer_remove()
371 device_unregister(&rt->dev); in tb_retimer_remove()
382 struct tb_retimer *rt = tb_to_retimer(dev); in retimer_match() local
384 return rt && rt->port == lookup->port && rt->index == lookup->index; in retimer_match()
449 struct tb_retimer *rt; in tb_retimer_scan() local
451 rt = tb_port_find_retimer(port, i); in tb_retimer_scan()
452 if (rt) { in tb_retimer_scan()
453 put_device(&rt->dev); in tb_retimer_scan()
466 struct tb_retimer *rt = tb_to_retimer(dev); in remove_retimer() local
469 if (rt && rt->port == port) in remove_retimer()
470 tb_retimer_remove(rt); in remove_retimer()