[PATCH v6 3/3] drm: Add GUD USB Display driver
Noralf Trønnes
noralf at tronnes.org
Sun Feb 28 21:04:38 UTC 2021
Den 28.02.2021 02.52, skrev Peter Stuge:
> Noralf Trønnes wrote:
>> Peter, please have a look at this diff and see if I'm on the right track
>> here: https://gist.github.com/notro/a43a93a3aa0cc75d930890b7b254fc0a
>
> Yes that's exactly what I meant; this way the possibility for contradicting
> sizes is eliminated by protocol and not just by implementation - very nice!
>
> Some more comments, sorry if this is just because of ongoing work:
>
> Perhaps the functions taking usb_device + ifnum could take usb_interface
> instead - but I don't know if that would simplify or complicate things.
> Alan mentioned this idea in similar circumstances in another thread.
> I don't feel strongly, but perhaps it's cleaner.
>
I agree it's cleaner, this way I don't have to store the interface
number in gdrm.
> gud_usb_control_msg() now seems almost redundant, maybe it could be removed.
>
There are 4 callers so I think it makes sense still.
> In gud_usb_set() if NULL == buf then that's passed to usb_control_msg()
> along with len, which likely crashes if len > 0, so it may be good to
> check or enforce that, maybe with else len=0; before the gud_usb_transfer()
> call.
>
Ok.
> Finally a small style note that I'd personally change a few if (ret > 0) {
> blocks to have one indent level less and do each check right away, e.g. in
> gud_connector_get_modes():
>
> ret = gud_usb_get()
> if (ret % EDID_LENGTH) {
> drm_err();
> } else if (ret > 0) {
> edid_ctx.len = ret;
> edid = drm_do_get_edid();
> }
>
> and later on in the function by the display modes one indent level
> could be saved with a goto:
>
> if (ret <= 0)
> goto out;
>
> but obviously no huge deal.
>
It makes for a better read so I'll do that.
>
> In general it's really helpful for device development to see error messages
> when the device behaves incorrectly, the "Invalid .. size" errors are great
> examples of this, but e.g. gud_get_display_descriptor() returns -EIO without
> a message. Maybe there are opportunities for further helpful error messages?
>
The message is printed by the caller:
ret = gud_get_display_descriptor(intf, &desc);
if (ret) {
DRM_DEV_DEBUG_DRIVER(dev, "Not a display interface: ret=%d\n", ret);
return -ENODEV;
}
It's a debug message enabled by writing to /sys/module/drm/parameters/debug.
The reason for not making it an error message, is that I want the driver
to just ignore non-display vendor class interfaces so they can co-exist
on the device. Someone might make an open protocol gpio (vendor class)
interface driver some day, or adc, i2c, spi, rtc, or...
Thanks,
Noralf.
More information about the dri-devel
mailing list