Den 29.04.2020 14.48, skrev Noralf Trønnes: > This adds a generic USB display driver with the intention that it can be > used with future USB interfaced low end displays/adapters. The Linux > gadget device driver will serve as the canonical device implementation. > > The following DRM properties are supported: > - Plane rotation > - Connector TV properties > > There is also support for backlight brightness exposed as a backlight > device. > > Display modes can be made available to the host driver either as DRM > display modes or through EDID. If both are present, EDID is just passed > on to userspace. > > Performance is preferred over color depth, so if the device supports > RGB565, DRM_CAP_DUMB_PREFERRED_DEPTH will return 16. > > If the device transfer buffer can't fit an uncompressed framebuffer > update, the update is split up into parts that do fit. > > Optimal user experience is achieved by providing damage reports either by > setting FB_DAMAGE_CLIPS on pageflips or calling DRM_IOCTL_MODE_DIRTYFB. > > LZ4 compression is used if the device supports it. > > The driver supports a one bit monochrome transfer format: R1. This is not > implemented in the gadget driver. It is added in preparation for future > monochrome e-ink displays. > > The driver is MIT licensed to smooth the path for any BSD port of the > driver. > > Signed-off-by: Noralf Trønnes <noralf@xxxxxxxxxxx> > --- > diff --git a/drivers/gpu/drm/gud/gud_drm_drv.c b/drivers/gpu/drm/gud/gud_drm_drv.c > +static int gud_drm_probe(struct usb_interface *interface, > + const struct usb_device_id *id) > +{ <snip> > + gdrm = kzalloc(sizeof(*gdrm), GFP_KERNEL); > + if (!gdrm) > + return -ENOMEM; > + > + gdrm->usb = usb; > + gdrm->ifnum = interface->cur_altsetting->desc.bInterfaceNumber; > + gdrm->compression = desc.bCompression & GUD_DRM_COMPRESSION_LZ4; > + > + drm = &gdrm->drm; > + ret = devm_drm_dev_init(dev, drm, &gud_drm_driver); > + if (ret) { > + kfree(gdrm); > + return ret; > + } I see that Daniel's series has landed now, so I will use devm_drm_dev_alloc() and drmm_mode_config_init() in the next version. <snip> > + drm_fbdev_generic_setup(drm, 16); This should be: drm_fbdev_generic_setup(drm, 0); Noralf. > + > + return 0; > +}