Module Name: src Committed By: riastradh Date: Mon Mar 28 12:45:04 UTC 2022
Modified Files: src/sys/dev/usb: uatp.c Log Message: uatp(4): Use usbd_get/set_report for Geyser 3/4 reset. To generate a diff of this commit: cvs rdiff -u -r1.30 -r1.31 src/sys/dev/usb/uatp.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/usb/uatp.c diff -u src/sys/dev/usb/uatp.c:1.30 src/sys/dev/usb/uatp.c:1.31 --- src/sys/dev/usb/uatp.c:1.30 Mon Mar 28 12:44:54 2022 +++ src/sys/dev/usb/uatp.c Mon Mar 28 12:45:04 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: uatp.c,v 1.30 2022/03/28 12:44:54 riastradh Exp $ */ +/* $NetBSD: uatp.c,v 1.31 2022/03/28 12:45:04 riastradh Exp $ */ /*- * Copyright (c) 2011-2014 The NetBSD Foundation, Inc. @@ -146,7 +146,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: uatp.c,v 1.30 2022/03/28 12:44:54 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uatp.c,v 1.31 2022/03/28 12:45:04 riastradh Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" @@ -489,6 +489,7 @@ struct uatp_softc { device_t sc_dev; struct uhidev *sc_hdev; /* uhidev(9) parent. */ struct usbd_device *sc_udev; /* USB device. */ + struct usbd_interface *sc_iface0; /* Geyser 3/4 reset interface. */ device_t sc_wsmousedev; /* Attached wsmouse device. */ const struct uatp_parameters *sc_parameters; struct uatp_knobs sc_knobs; @@ -1295,19 +1296,12 @@ uatp_ioctl(void *v, unsigned long cmd, v static void geyser34_enable_raw_mode(struct uatp_softc *sc) { - struct usbd_device *udev = sc->sc_udev; - usb_device_request_t req; - usbd_status status; uint8_t report[GEYSER34_MODE_PACKET_SIZE]; - - req.bmRequestType = UT_READ_CLASS_INTERFACE; - req.bRequest = UR_GET_REPORT; - USETW2(req.wValue, UHID_FEATURE_REPORT, GEYSER34_MODE_REPORT_ID); - USETW(req.wIndex, GEYSER34_MODE_INTERFACE); - USETW(req.wLength, GEYSER34_MODE_PACKET_SIZE); + usbd_status status; DPRINTF(sc, UATP_DEBUG_RESET, ("get feature report\n")); - status = usbd_do_request(udev, &req, report); + status = usbd_get_report(sc->sc_iface0, UHID_FEATURE_REPORT, + GEYSER34_MODE_REPORT_ID, report, sizeof(report)); if (status != USBD_NORMAL_COMPLETION) { aprint_error_dev(uatp_dev(sc), "error reading feature report: %s\n", usbd_errstr(status)); @@ -1333,14 +1327,9 @@ geyser34_enable_raw_mode(struct uatp_sof report[0] = GEYSER34_RAW_MODE; - req.bmRequestType = UT_WRITE_CLASS_INTERFACE; - req.bRequest = UR_SET_REPORT; - USETW2(req.wValue, UHID_FEATURE_REPORT, GEYSER34_MODE_REPORT_ID); - USETW(req.wIndex, GEYSER34_MODE_INTERFACE); - USETW(req.wLength, GEYSER34_MODE_PACKET_SIZE); - DPRINTF(sc, UATP_DEBUG_RESET, ("set feature report\n")); - status = usbd_do_request(udev, &req, report); + status = usbd_set_report(sc->sc_iface0, UHID_FEATURE_REPORT, + GEYSER34_MODE_REPORT_ID, report, sizeof(report)); if (status != USBD_NORMAL_COMPLETION) { aprint_error_dev(uatp_dev(sc), "error writing feature report: %s\n", usbd_errstr(status)); @@ -1356,8 +1345,11 @@ geyser34_enable_raw_mode(struct uatp_sof static void geyser34_initialize(struct uatp_softc *sc) { + usbd_status err __diagused; DPRINTF(sc, UATP_DEBUG_MISC, ("initializing\n")); + err = usbd_device2interface_handle(sc->sc_udev, 0, &sc->sc_iface0); + KASSERT(err == 0); /* always an interface 0 if attached */ geyser34_enable_raw_mode(sc); usb_init_task(&sc->sc_reset_task, &geyser34_reset_task, sc, 0); }