Lines Matching refs:tdev

53 	struct mbox_test_device *tdev = filp->private_data;  in mbox_test_signal_write()  local
55 if (!tdev->tx_channel) { in mbox_test_signal_write()
56 dev_err(tdev->dev, "Channel cannot do Tx\n"); in mbox_test_signal_write()
61 dev_err(tdev->dev, in mbox_test_signal_write()
68 if (!tdev->signal) { in mbox_test_signal_write()
69 tdev->signal = kzalloc(MBOX_MAX_SIG_LEN, GFP_KERNEL); in mbox_test_signal_write()
70 if (!tdev->signal) in mbox_test_signal_write()
74 if (copy_from_user(tdev->signal, userbuf, count)) { in mbox_test_signal_write()
75 kfree(tdev->signal); in mbox_test_signal_write()
76 tdev->signal = NULL; in mbox_test_signal_write()
91 struct mbox_test_device *tdev = filp->private_data; in mbox_test_message_fasync() local
93 return fasync_helper(fd, filp, on, &tdev->async_queue); in mbox_test_message_fasync()
100 struct mbox_test_device *tdev = filp->private_data; in mbox_test_message_write() local
105 if (!tdev->tx_channel) { in mbox_test_message_write()
106 dev_err(tdev->dev, "Channel cannot do Tx\n"); in mbox_test_message_write()
111 dev_err(tdev->dev, in mbox_test_message_write()
121 mutex_lock(&tdev->mutex); in mbox_test_message_write()
123 tdev->message = message; in mbox_test_message_write()
124 ret = copy_from_user(tdev->message, userbuf, count); in mbox_test_message_write()
134 if (tdev->tx_mmio && tdev->signal) { in mbox_test_message_write()
136 tdev->signal, MBOX_MAX_SIG_LEN); in mbox_test_message_write()
138 data = tdev->signal; in mbox_test_message_write()
140 data = tdev->message; in mbox_test_message_write()
143 tdev->message, MBOX_MAX_MSG_LEN); in mbox_test_message_write()
145 ret = mbox_send_message(tdev->tx_channel, data); in mbox_test_message_write()
147 dev_err(tdev->dev, "Failed to send message via mailbox\n"); in mbox_test_message_write()
150 kfree(tdev->signal); in mbox_test_message_write()
151 kfree(tdev->message); in mbox_test_message_write()
152 tdev->signal = NULL; in mbox_test_message_write()
154 mutex_unlock(&tdev->mutex); in mbox_test_message_write()
159 static bool mbox_test_message_data_ready(struct mbox_test_device *tdev) in mbox_test_message_data_ready() argument
164 spin_lock_irqsave(&tdev->lock, flags); in mbox_test_message_data_ready()
166 spin_unlock_irqrestore(&tdev->lock, flags); in mbox_test_message_data_ready()
174 struct mbox_test_device *tdev = filp->private_data; in mbox_test_message_read() local
186 if (!tdev->rx_channel) { in mbox_test_message_read()
193 add_wait_queue(&tdev->waitq, &wait); in mbox_test_message_read()
198 if (mbox_test_message_data_ready(tdev)) in mbox_test_message_read()
214 spin_lock_irqsave(&tdev->lock, flags); in mbox_test_message_read()
216 ptr = tdev->rx_buffer; in mbox_test_message_read()
229 memset(tdev->rx_buffer, 0, MBOX_MAX_MSG_LEN); in mbox_test_message_read()
232 spin_unlock_irqrestore(&tdev->lock, flags); in mbox_test_message_read()
237 remove_wait_queue(&tdev->waitq, &wait); in mbox_test_message_read()
246 struct mbox_test_device *tdev = filp->private_data; in mbox_test_message_poll() local
248 poll_wait(filp, &tdev->waitq, wait); in mbox_test_message_poll()
250 if (mbox_test_message_data_ready(tdev)) in mbox_test_message_poll()
265 struct mbox_test_device *tdev) in mbox_test_add_debugfs() argument
270 tdev->root_debugfs_dir = debugfs_create_dir(dev_name(&pdev->dev), NULL); in mbox_test_add_debugfs()
271 if (!tdev->root_debugfs_dir) { in mbox_test_add_debugfs()
276 debugfs_create_file("message", 0600, tdev->root_debugfs_dir, in mbox_test_add_debugfs()
277 tdev, &mbox_test_message_ops); in mbox_test_add_debugfs()
279 debugfs_create_file("signal", 0200, tdev->root_debugfs_dir, in mbox_test_add_debugfs()
280 tdev, &mbox_test_signal_ops); in mbox_test_add_debugfs()
287 struct mbox_test_device *tdev = dev_get_drvdata(client->dev); in mbox_test_receive_message() local
290 spin_lock_irqsave(&tdev->lock, flags); in mbox_test_receive_message()
291 if (tdev->rx_mmio) { in mbox_test_receive_message()
292 memcpy_fromio(tdev->rx_buffer, tdev->rx_mmio, MBOX_MAX_MSG_LEN); in mbox_test_receive_message()
294 tdev->rx_buffer, MBOX_MAX_MSG_LEN); in mbox_test_receive_message()
298 memcpy(tdev->rx_buffer, message, MBOX_MAX_MSG_LEN); in mbox_test_receive_message()
301 spin_unlock_irqrestore(&tdev->lock, flags); in mbox_test_receive_message()
303 wake_up_interruptible(&tdev->waitq); in mbox_test_receive_message()
305 kill_fasync(&tdev->async_queue, SIGIO, POLL_IN); in mbox_test_receive_message()
310 struct mbox_test_device *tdev = dev_get_drvdata(client->dev); in mbox_test_prepare_message() local
312 if (tdev->tx_mmio) { in mbox_test_prepare_message()
313 if (tdev->signal) in mbox_test_prepare_message()
314 memcpy_toio(tdev->tx_mmio, tdev->message, MBOX_MAX_MSG_LEN); in mbox_test_prepare_message()
316 memcpy_toio(tdev->tx_mmio, message, MBOX_MAX_MSG_LEN); in mbox_test_prepare_message()
360 struct mbox_test_device *tdev; in mbox_test_probe() local
365 tdev = devm_kzalloc(&pdev->dev, sizeof(*tdev), GFP_KERNEL); in mbox_test_probe()
366 if (!tdev) in mbox_test_probe()
370 tdev->tx_mmio = devm_platform_get_and_ioremap_resource(pdev, 0, &res); in mbox_test_probe()
371 if (PTR_ERR(tdev->tx_mmio) == -EBUSY) { in mbox_test_probe()
374 tdev->tx_mmio = devm_ioremap(&pdev->dev, res->start, size); in mbox_test_probe()
375 } else if (IS_ERR(tdev->tx_mmio)) { in mbox_test_probe()
376 tdev->tx_mmio = NULL; in mbox_test_probe()
380 tdev->rx_mmio = devm_platform_get_and_ioremap_resource(pdev, 1, &res); in mbox_test_probe()
381 if (PTR_ERR(tdev->rx_mmio) == -EBUSY) { in mbox_test_probe()
383 tdev->rx_mmio = devm_ioremap(&pdev->dev, res->start, size); in mbox_test_probe()
384 } else if (IS_ERR(tdev->rx_mmio)) { in mbox_test_probe()
385 tdev->rx_mmio = tdev->tx_mmio; in mbox_test_probe()
388 tdev->tx_channel = mbox_test_request_channel(pdev, "tx"); in mbox_test_probe()
389 tdev->rx_channel = mbox_test_request_channel(pdev, "rx"); in mbox_test_probe()
391 if (IS_ERR_OR_NULL(tdev->tx_channel) && IS_ERR_OR_NULL(tdev->rx_channel)) in mbox_test_probe()
395 if (!tdev->rx_channel && (tdev->rx_mmio != tdev->tx_mmio)) in mbox_test_probe()
396 tdev->rx_channel = tdev->tx_channel; in mbox_test_probe()
398 tdev->dev = &pdev->dev; in mbox_test_probe()
399 platform_set_drvdata(pdev, tdev); in mbox_test_probe()
401 spin_lock_init(&tdev->lock); in mbox_test_probe()
402 mutex_init(&tdev->mutex); in mbox_test_probe()
404 if (tdev->rx_channel) { in mbox_test_probe()
405 tdev->rx_buffer = devm_kzalloc(&pdev->dev, in mbox_test_probe()
407 if (!tdev->rx_buffer) in mbox_test_probe()
411 ret = mbox_test_add_debugfs(pdev, tdev); in mbox_test_probe()
415 init_waitqueue_head(&tdev->waitq); in mbox_test_probe()
423 struct mbox_test_device *tdev = platform_get_drvdata(pdev); in mbox_test_remove() local
425 debugfs_remove_recursive(tdev->root_debugfs_dir); in mbox_test_remove()
427 if (tdev->tx_channel) in mbox_test_remove()
428 mbox_free_channel(tdev->tx_channel); in mbox_test_remove()
429 if (tdev->rx_channel) in mbox_test_remove()
430 mbox_free_channel(tdev->rx_channel); in mbox_test_remove()