Lines Matching refs:tdev

54 	struct mbox_test_device *tdev = filp->private_data;  in mbox_test_signal_write()  local
56 if (!tdev->tx_channel) { in mbox_test_signal_write()
57 dev_err(tdev->dev, "Channel cannot do Tx\n"); in mbox_test_signal_write()
62 dev_err(tdev->dev, in mbox_test_signal_write()
69 if (!tdev->signal) { in mbox_test_signal_write()
70 tdev->signal = kzalloc(MBOX_MAX_SIG_LEN, GFP_KERNEL); in mbox_test_signal_write()
71 if (!tdev->signal) in mbox_test_signal_write()
75 if (copy_from_user(tdev->signal, userbuf, count)) { in mbox_test_signal_write()
76 kfree(tdev->signal); in mbox_test_signal_write()
77 tdev->signal = NULL; in mbox_test_signal_write()
92 struct mbox_test_device *tdev = filp->private_data; in mbox_test_message_fasync() local
94 return fasync_helper(fd, filp, on, &tdev->async_queue); in mbox_test_message_fasync()
101 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()
117 tdev->message = kzalloc(MBOX_MAX_MSG_LEN, GFP_KERNEL); in mbox_test_message_write()
118 if (!tdev->message) in mbox_test_message_write()
121 ret = copy_from_user(tdev->message, userbuf, count); in mbox_test_message_write()
131 if (tdev->tx_mmio && tdev->signal) { in mbox_test_message_write()
133 tdev->signal, MBOX_MAX_SIG_LEN); in mbox_test_message_write()
135 data = tdev->signal; in mbox_test_message_write()
137 data = tdev->message; in mbox_test_message_write()
140 tdev->message, MBOX_MAX_MSG_LEN); in mbox_test_message_write()
142 ret = mbox_send_message(tdev->tx_channel, data); in mbox_test_message_write()
144 dev_err(tdev->dev, "Failed to send message via mailbox\n"); in mbox_test_message_write()
147 kfree(tdev->signal); in mbox_test_message_write()
148 kfree(tdev->message); in mbox_test_message_write()
149 tdev->signal = NULL; in mbox_test_message_write()
154 static bool mbox_test_message_data_ready(struct mbox_test_device *tdev) in mbox_test_message_data_ready() argument
159 spin_lock_irqsave(&tdev->lock, flags); in mbox_test_message_data_ready()
161 spin_unlock_irqrestore(&tdev->lock, flags); in mbox_test_message_data_ready()
169 struct mbox_test_device *tdev = filp->private_data; in mbox_test_message_read() local
181 if (!tdev->rx_channel) { in mbox_test_message_read()
188 add_wait_queue(&tdev->waitq, &wait); in mbox_test_message_read()
193 if (mbox_test_message_data_ready(tdev)) in mbox_test_message_read()
209 spin_lock_irqsave(&tdev->lock, flags); in mbox_test_message_read()
211 ptr = tdev->rx_buffer; in mbox_test_message_read()
224 memset(tdev->rx_buffer, 0, MBOX_MAX_MSG_LEN); in mbox_test_message_read()
227 spin_unlock_irqrestore(&tdev->lock, flags); in mbox_test_message_read()
232 remove_wait_queue(&tdev->waitq, &wait); in mbox_test_message_read()
241 struct mbox_test_device *tdev = filp->private_data; in mbox_test_message_poll() local
243 poll_wait(filp, &tdev->waitq, wait); in mbox_test_message_poll()
245 if (mbox_test_message_data_ready(tdev)) in mbox_test_message_poll()
260 struct mbox_test_device *tdev) in mbox_test_add_debugfs() argument
272 tdev, &mbox_test_message_ops); in mbox_test_add_debugfs()
275 tdev, &mbox_test_signal_ops); in mbox_test_add_debugfs()
282 struct mbox_test_device *tdev = dev_get_drvdata(client->dev); in mbox_test_receive_message() local
285 spin_lock_irqsave(&tdev->lock, flags); in mbox_test_receive_message()
286 if (tdev->rx_mmio) { in mbox_test_receive_message()
287 memcpy_fromio(tdev->rx_buffer, tdev->rx_mmio, MBOX_MAX_MSG_LEN); in mbox_test_receive_message()
289 tdev->rx_buffer, MBOX_MAX_MSG_LEN); in mbox_test_receive_message()
293 memcpy(tdev->rx_buffer, message, MBOX_MAX_MSG_LEN); in mbox_test_receive_message()
296 spin_unlock_irqrestore(&tdev->lock, flags); in mbox_test_receive_message()
298 wake_up_interruptible(&tdev->waitq); in mbox_test_receive_message()
300 kill_fasync(&tdev->async_queue, SIGIO, POLL_IN); in mbox_test_receive_message()
305 struct mbox_test_device *tdev = dev_get_drvdata(client->dev); in mbox_test_prepare_message() local
307 if (tdev->tx_mmio) { in mbox_test_prepare_message()
308 if (tdev->signal) in mbox_test_prepare_message()
309 memcpy_toio(tdev->tx_mmio, tdev->message, MBOX_MAX_MSG_LEN); in mbox_test_prepare_message()
311 memcpy_toio(tdev->tx_mmio, message, MBOX_MAX_MSG_LEN); in mbox_test_prepare_message()
355 struct mbox_test_device *tdev; in mbox_test_probe() local
360 tdev = devm_kzalloc(&pdev->dev, sizeof(*tdev), GFP_KERNEL); in mbox_test_probe()
361 if (!tdev) in mbox_test_probe()
367 tdev->tx_mmio = devm_ioremap_resource(&pdev->dev, res); in mbox_test_probe()
368 if (PTR_ERR(tdev->tx_mmio) == -EBUSY) in mbox_test_probe()
370 tdev->tx_mmio = devm_ioremap(&pdev->dev, res->start, size); in mbox_test_probe()
371 else if (IS_ERR(tdev->tx_mmio)) in mbox_test_probe()
372 tdev->tx_mmio = NULL; in mbox_test_probe()
377 tdev->rx_mmio = devm_ioremap_resource(&pdev->dev, res); in mbox_test_probe()
378 if (PTR_ERR(tdev->rx_mmio) == -EBUSY) in mbox_test_probe()
379 tdev->rx_mmio = devm_ioremap(&pdev->dev, res->start, size); in mbox_test_probe()
380 else if (IS_ERR(tdev->rx_mmio)) in mbox_test_probe()
381 tdev->rx_mmio = tdev->tx_mmio; in mbox_test_probe()
383 tdev->tx_channel = mbox_test_request_channel(pdev, "tx"); in mbox_test_probe()
384 tdev->rx_channel = mbox_test_request_channel(pdev, "rx"); in mbox_test_probe()
386 if (!tdev->tx_channel && !tdev->rx_channel) in mbox_test_probe()
390 if (!tdev->rx_channel && (tdev->rx_mmio != tdev->tx_mmio)) in mbox_test_probe()
391 tdev->rx_channel = tdev->tx_channel; in mbox_test_probe()
393 tdev->dev = &pdev->dev; in mbox_test_probe()
394 platform_set_drvdata(pdev, tdev); in mbox_test_probe()
396 spin_lock_init(&tdev->lock); in mbox_test_probe()
398 if (tdev->rx_channel) { in mbox_test_probe()
399 tdev->rx_buffer = devm_kzalloc(&pdev->dev, in mbox_test_probe()
401 if (!tdev->rx_buffer) in mbox_test_probe()
405 ret = mbox_test_add_debugfs(pdev, tdev); in mbox_test_probe()
409 init_waitqueue_head(&tdev->waitq); in mbox_test_probe()
417 struct mbox_test_device *tdev = platform_get_drvdata(pdev); in mbox_test_remove() local
421 if (tdev->tx_channel) in mbox_test_remove()
422 mbox_free_channel(tdev->tx_channel); in mbox_test_remove()
423 if (tdev->rx_channel) in mbox_test_remove()
424 mbox_free_channel(tdev->rx_channel); in mbox_test_remove()