Lines Matching +full:fifo +full:- +full:size

1 // SPDX-License-Identifier: GPL-2.0-only
3 * Sample fifo dma implementation
12 #include <linux/dma-mapping.h>
15 * This module shows how to handle fifo dma operations.
18 /* fifo size in elements (bytes) */
21 static struct kfifo fifo; variable
30 printk(KERN_INFO "DMA fifo test start\n"); in example_init()
32 if (kfifo_alloc(&fifo, FIFO_SIZE, GFP_KERNEL)) { in example_init()
34 return -ENOMEM; in example_init()
37 printk(KERN_INFO "queue size: %u\n", kfifo_size(&fifo)); in example_init()
39 kfifo_in(&fifo, "test", 4); in example_init()
42 kfifo_put(&fifo, i); in example_init()
45 kfifo_skip(&fifo); in example_init()
47 printk(KERN_INFO "queue len: %u\n", kfifo_len(&fifo)); in example_init()
52 * .--------------------------------------. in example_init()
54 * |---|------------------|---------------| in example_init()
65 nents = kfifo_dma_in_prepare(&fifo, sg, ARRAY_SIZE(sg), FIFO_SIZE); in example_init()
68 /* fifo is full and no sgl was created */ in example_init()
70 return -EIO; in example_init()
77 "sg[%d] -> " in example_init()
92 kfifo_dma_in_finish(&fifo, ret); in example_init()
95 nents = kfifo_dma_out_prepare(&fifo, sg, ARRAY_SIZE(sg), 8); in example_init()
100 return -EIO; in example_init()
106 "sg[%d] -> " in example_init()
121 kfifo_dma_out_finish(&fifo, ret); in example_init()
123 ret = kfifo_len(&fifo); in example_init()
124 printk(KERN_INFO "queue len: %u\n", kfifo_len(&fifo)); in example_init()
127 printk(KERN_WARNING "size mismatch: test failed"); in example_init()
128 return -EIO; in example_init()
137 kfifo_free(&fifo); in example_exit()
142 MODULE_DESCRIPTION("Sample fifo dma implementation");