Commit 1ceef996 authored by Thomas Zimmermann's avatar Thomas Zimmermann
Browse files

drm/udl: Add reset_resume



Implement the reset_resume callback of struct usb_driver. Set the
standard channel when called.

Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20220908095115.23396-3-tiwai@suse.de
parent 6d6e7328
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -32,6 +32,16 @@ static int udl_usb_resume(struct usb_interface *interface)
	return drm_mode_config_helper_resume(dev);
}

static int udl_usb_reset_resume(struct usb_interface *interface)
{
	struct drm_device *dev = usb_get_intfdata(interface);
	struct udl_device *udl = to_udl(dev);

	udl_select_std_channel(udl);

	return drm_mode_config_helper_resume(dev);
}

/*
 * FIXME: Dma-buf sharing requires DMA support by the importing device.
 *        This function is a workaround to make USB devices work as well.
@@ -140,6 +150,7 @@ static struct usb_driver udl_driver = {
	.disconnect = udl_usb_disconnect,
	.suspend = udl_usb_suspend,
	.resume = udl_usb_resume,
	.reset_resume = udl_usb_reset_resume,
	.id_table = id_table,
};
module_usb_driver(udl_driver);
+1 −0
Original line number Diff line number Diff line
@@ -95,6 +95,7 @@ int udl_render_hline(struct drm_device *dev, int log_bpp, struct urb **urb_ptr,
		     u32 byte_offset, u32 device_byte_offset, u32 byte_width);

int udl_drop_usb(struct drm_device *dev);
int udl_select_std_channel(struct udl_device *udl);

#define CMD_WRITE_RAW8   "\xAF\x60" /**< 8 bit raw write command. */
#define CMD_WRITE_RL8    "\xAF\x61" /**< 8 bit run length command. */
+1 −1
Original line number Diff line number Diff line
@@ -92,7 +92,7 @@ static int udl_parse_vendor_descriptor(struct udl_device *udl)
/*
 * Need to ensure a channel is selected before submitting URBs
 */
static int udl_select_std_channel(struct udl_device *udl)
int udl_select_std_channel(struct udl_device *udl)
{
	static const u8 set_def_chn[] = {0x57, 0xCD, 0xDC, 0xA7,
					 0x1C, 0x88, 0x5E, 0x15,