1* Import drivers using VCHI.
2
3VCHI is just a tool to let drivers talk to the firmware.  Here are
4some of the ones we want:
5
6  - vc_mem (https://github.com/raspberrypi/linux/blob/rpi-4.4.y/drivers/char/broadcom/vc_mem.c)
7
8  This driver is what the vcdbg userspace program uses to set up its
9  requests to the firmware, which are transmitted across VCHIQ.  vcdbg
10  is really useful for debugging firmware interactions.
11
12  - VCSM (https://github.com/raspberrypi/linux/tree/rpi-4.4.y/drivers/char/broadcom/vc_sm)
13
14  This driver is used for talking about regions of VC memory across
15  firmware protocols including VCHI.  We'll want to extend this driver
16  to manage these buffers as dmabufs so that we can zero-copy import
17  camera images into vc4 for rendering/display.
18
19* Documentation
20
21A short top-down description of this driver's architecture (function of
22kthreads, userspace, limitations) could be very helpful for reviewers.
23
24* Reformat core code with more sane indentations
25
26The code follows the 80 characters limitation yet tends to go 3 or 4 levels of
27indentation deep making it very unpleasant to read. This is specially relevant
28in the character driver ioctl code and in the core thread functions.
29
30* Clean up Sparse warnings from __user annotations. See
31vchiq_irq_queue_bulk_tx_rx(). Ensure that the address of "&waiter->bulk_waiter"
32is never disclosed to userspace.
33
34* Fix behavior of message handling
35
36The polling behavior of vchiq_bulk_transmit(), vchiq_bulk_receive() and
37vchiq_queue_kernel_message() looks broken. A possible signal should be
38propagated back to user space to let the calling task handle it before
39retrying. Hopefully these msleep(1) shouldn't be necessary anymore.
40
41https://lore.kernel.org/linux-staging/CAK8P3a3HGm1cPo4sW9fOY4E8AN8yAq3tevXxU5m8bmtmsU8WKw@mail.gmail.com/
42