[RFC 0/6] drm: Add support for userspace drivers
Noralf Trønnes
noralf at tronnes.org
Wed Jan 4 13:34:36 UTC 2017
Hi,
I was previously working on tinydrm as a replacement for staging/fbtft.
During a break from that work, I started to think about if it would be
possible to move the drivers to userspace instead. No point in having
them in the kernel if it's not necessary.
This patchset includes all the pieces necessary to get a userspace
driver[1] working that is compatible with the fbtft/fb_ili9341 driver.
It is tested with a SPI interfaced display hat/shield for the Raspberry Pi,
which has an eeprom with a Device Tree fragment on it (merged by the
bootloader). With the help of udev and systemd, the driver is able to
autoload when the display is connected.
Performance wise, the kernel driver can do ~19fps on a 320x240 spi at 32MHz
display, whereas the userspace version does ~18fps. So performance is not
an argument to keep the driver in the kernel.
What do you think about this approach?
Note: This patchset is based on 4.9
[1] https://github.com/notro/udrm
Noralf.
Noralf Trønnes (6):
drm/modes: Export drm_mode_convert_umode()
drm: Add support for userspace drivers
dma-buf: Support generic userspace allocations
spi: Let clients do scatter/gather transfers
spi: spidev: Add dma-buf support
spi: spidev: Add userspace driver support
drivers/dma-buf/Makefile | 2 +-
drivers/dma-buf/dev.c | 211 ++++++++++++++++++
drivers/gpu/drm/Kconfig | 2 +
drivers/gpu/drm/Makefile | 1 +
drivers/gpu/drm/drm_modes.c | 1 +
drivers/gpu/drm/udrm/Kconfig | 9 +
drivers/gpu/drm/udrm/Makefile | 4 +
drivers/gpu/drm/udrm/udrm-dev.c | 276 ++++++++++++++++++++++++
drivers/gpu/drm/udrm/udrm-drv.c | 324 ++++++++++++++++++++++++++++
drivers/gpu/drm/udrm/udrm-fb.c | 369 ++++++++++++++++++++++++++++++++
drivers/gpu/drm/udrm/udrm-pipe.c | 170 +++++++++++++++
drivers/gpu/drm/udrm/udrm.h | 84 ++++++++
drivers/spi/Kconfig | 1 +
drivers/spi/spi.c | 24 ++-
drivers/spi/spidev.c | 447 ++++++++++++++++++++++++++++++++++++++-
include/linux/spi/spi.h | 4 +
include/uapi/drm/udrm.h | 78 +++++++
include/uapi/linux/dma-buf-dev.h | 35 +++
include/uapi/linux/spi/spidev.h | 8 +
19 files changed, 2032 insertions(+), 18 deletions(-)
create mode 100644 drivers/dma-buf/dev.c
create mode 100644 drivers/gpu/drm/udrm/Kconfig
create mode 100644 drivers/gpu/drm/udrm/Makefile
create mode 100644 drivers/gpu/drm/udrm/udrm-dev.c
create mode 100644 drivers/gpu/drm/udrm/udrm-drv.c
create mode 100644 drivers/gpu/drm/udrm/udrm-fb.c
create mode 100644 drivers/gpu/drm/udrm/udrm-pipe.c
create mode 100644 drivers/gpu/drm/udrm/udrm.h
create mode 100644 include/uapi/drm/udrm.h
create mode 100644 include/uapi/linux/dma-buf-dev.h
--
2.10.2
More information about the dri-devel
mailing list