Den 05.03.2021 17.31, skrev Noralf Trønnes: > This adds a 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. > > diff --git a/drivers/gpu/drm/gud/gud_drv.c b/drivers/gpu/drm/gud/gud_drv.c > +static int gud_probe(struct usb_interface *intf, const struct usb_device_id *id) > +{ > + num_formats_dev = ret; > + for (i = 0; i < num_formats_dev; i++) { > + const struct drm_format_info *info; > + size_t fmt_buf_size; > + u32 format; > + > + format = gud_to_fourcc(formats_dev[i]); > + if (!format) { > + drm_dbg(drm, "Unsupported format: 0x%02x\n", formats_dev[i]); > + continue; > + } > + > + if (format == GUD_DRM_FORMAT_R1) > + info = &gud_drm_format_r1; > + else if (format == GUD_DRM_FORMAT_RGB111) > + info = &gud_drm_format_rgb111; > + else > + info = drm_format_info(format); > + > + switch (format) { > + case GUD_DRM_FORMAT_R1: > + fallthrough; > + case GUD_DRM_FORMAT_RGB111: > + xrgb8888_emulation_format = info; > + break; > + case DRM_FORMAT_RGB565: > + rgb565_supported = true; > + if (!xrgb8888_emulation_format) > + xrgb8888_emulation_format = info; > + break; > + case DRM_FORMAT_XRGB8888: > + xrgb8888_supported = true; > + break; > + }; > + > + fmt_buf_size = drm_format_info_min_pitch(info, 0, drm->mode_config.max_width) * > + drm->mode_config.max_height; > + max_buffer_size = max(max_buffer_size, fmt_buf_size); > + > + if (format == GUD_DRM_FORMAT_R1) This line should be: if (format == GUD_DRM_FORMAT_R1 || format == GUD_DRM_FORMAT_RGB111) There's also a bug in the format conversion functions that shows up on transfers with widths that are not pixels per byte aligned. I've fixed R1, I'll look at RGB111 tomorrow. Noralf. > + continue; /* Internal not for userspace */ > + > + formats[num_formats++] = format; > + } _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel