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

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
...@@ -32,6 +32,16 @@ static int udl_usb_resume(struct usb_interface *interface) ...@@ -32,6 +32,16 @@ static int udl_usb_resume(struct usb_interface *interface)
return drm_mode_config_helper_resume(dev); 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. * FIXME: Dma-buf sharing requires DMA support by the importing device.
* This function is a workaround to make USB devices work as well. * This function is a workaround to make USB devices work as well.
...@@ -140,6 +150,7 @@ static struct usb_driver udl_driver = { ...@@ -140,6 +150,7 @@ static struct usb_driver udl_driver = {
.disconnect = udl_usb_disconnect, .disconnect = udl_usb_disconnect,
.suspend = udl_usb_suspend, .suspend = udl_usb_suspend,
.resume = udl_usb_resume, .resume = udl_usb_resume,
.reset_resume = udl_usb_reset_resume,
.id_table = id_table, .id_table = id_table,
}; };
module_usb_driver(udl_driver); module_usb_driver(udl_driver);
......
...@@ -95,6 +95,7 @@ int udl_render_hline(struct drm_device *dev, int log_bpp, struct urb **urb_ptr, ...@@ -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); u32 byte_offset, u32 device_byte_offset, u32 byte_width);
int udl_drop_usb(struct drm_device *dev); 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_RAW8 "\xAF\x60" /**< 8 bit raw write command. */
#define CMD_WRITE_RL8 "\xAF\x61" /**< 8 bit run length command. */ #define CMD_WRITE_RL8 "\xAF\x61" /**< 8 bit run length command. */
......
...@@ -92,7 +92,7 @@ static int udl_parse_vendor_descriptor(struct udl_device *udl) ...@@ -92,7 +92,7 @@ static int udl_parse_vendor_descriptor(struct udl_device *udl)
/* /*
* Need to ensure a channel is selected before submitting URBs * 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, static const u8 set_def_chn[] = {0x57, 0xCD, 0xDC, 0xA7,
0x1C, 0x88, 0x5E, 0x15, 0x1C, 0x88, 0x5E, 0x15,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment