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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to