From nobody Thu Aug 3 16:12:04 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4RGv4P0Qlhz3cNvd; Thu, 3 Aug 2023 16:12:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4RGv4N4khWz4Www; Thu, 3 Aug 2023 16:12:04 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1691079124; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jpx8EDvbGvsuFtfo3vrYx+xBQyYolaFY3VlRuA3Quew=; b=OzwpK1eNJoIbvvUNc3QRx6L2YbBiHgAyfqB/AQIgL+S5kNfPBJgzk4PDRm/t+t/2lhTRbT bTpV0Z5YkrMRy5S8/PsJhvOo68K122E2+JJL/nDWF+Qc6ic4vnLeJ3qSqX3CcEMNo7FWXG RyH6JbSAyjdZFEVvpU/eu+xr1AyBqRoQjWsnnsjeREkZJKJtJ6YiMOLjk2x5jjliI8UTRK j80AiotHsfxV00l+57ThqfQ9SHIK9lNFBFi/okF49VmrlhqKVegKYAW0lyYxh3xFPMZ+op gVc/fhdFyBsgLsJxoH/20mXjcBlV5neZEc55/V7okkFdntCyHGKM8tV1gNDb5g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1691079124; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jpx8EDvbGvsuFtfo3vrYx+xBQyYolaFY3VlRuA3Quew=; b=YRWDFCYRRv1eO+H7G1Id0ZYKJDoGkFVOlGWzMoxKAn1cKwWZHgWUxnVVcEFAXwXyqJYMs1 cTevr8ZMpsAPpwGBUHhN/Fyo3UiSD9euinxJaTL9X4A7yB70N9Ik075qhdLyJr5VRfHpUo G7UwtjIerp6WsyJI2/FG5mxfEdjSe5+rraOdMzxcrtBYbQ6QwUcKMYHaqROcXWWO/Amzid JtR9Hzeq/KDe/lB4819uEvASSKM+707xO5VRQQUnFYEJvRf9/iZDhVWPm+OqRFAK8NXGJm CX9XIlbICb0MD6N7B5zuO4D/0EmA8Itp4/scOJ8k69oZff7uTJfRh5lBSqM3ag== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1691079124; a=rsa-sha256; cv=none; b=T4U299pmD/cOxPXlnQbbvfjRQxATKUq4pyjrruKhsDftxZ72+zhbPeuZXtm8jtRwzAfLro NvOUMyYcwlOZH8q0JCyHLaOVMOvA7rXG+oTwPHN6sjg/eFHMn5i4mDPEl5mgzz3+teCPlf KbPqjzg7ob7OtzjFqpwNemW4/rAnCliBwQMuAx5GM70HIiiqgAMfsTGbMs7m1i2mJ0zx5j 6J3ssMj3YrVtxP32mYIj1jY10oyn0/iAAnvvi/mzi2ppHOC+kQ1i3Trv9TsWWvI8ItvWuC nN9GKwGY4avfDcBsw248zzTrVTdjGlzw+ljgfed3AeiqPMg/kH8gDglSQ86xsg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4RGv4N3qsdzC2T; Thu, 3 Aug 2023 16:12:04 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 373GC4s0006126; Thu, 3 Aug 2023 16:12:04 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 373GC4Os006125; Thu, 3 Aug 2023 16:12:04 GMT (envelope-from git) Date: Thu, 3 Aug 2023 16:12:04 GMT Message-Id: <202308031612.373GC4Os006125@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Vladimir Kondratyev Subject: git: 4151ac9f1292 - main - hidbus(4): Use generic hid methods to start and stop interrupts List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: wulf X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4151ac9f1292b524ae3eeb6f6c9561913bbe444c Auto-Submitted: auto-generated The branch main has been updated by wulf: URL: https://cgit.FreeBSD.org/src/commit/?id=4151ac9f1292b524ae3eeb6f6c9561913bbe444c commit 4151ac9f1292b524ae3eeb6f6c9561913bbe444c Author: Vladimir Kondratyev AuthorDate: 2023-08-03 16:10:50 +0000 Commit: Vladimir Kondratyev CommitDate: 2023-08-03 16:10:50 +0000 hidbus(4): Use generic hid methods to start and stop interrupts --- sys/dev/hid/bcm5974.c | 4 ++-- sys/dev/hid/hid.c | 18 ++++++++++++++++++ sys/dev/hid/hid.h | 3 +++ sys/dev/hid/hidbus.c | 27 ++++++++++++++------------- sys/dev/hid/hidbus.h | 3 --- sys/dev/hid/hidmap.c | 4 ++-- sys/dev/hid/hidraw.c | 4 ++-- sys/dev/hid/hkbd.c | 6 +++--- sys/dev/hid/hmt.c | 4 ++-- sys/dev/hid/ietp.c | 8 ++++---- 10 files changed, 50 insertions(+), 31 deletions(-) diff --git a/sys/dev/hid/bcm5974.c b/sys/dev/hid/bcm5974.c index fdfc29e6b678..9a927aaffc5b 100644 --- a/sys/dev/hid/bcm5974.c +++ b/sys/dev/hid/bcm5974.c @@ -837,7 +837,7 @@ bcm5974_ev_open(struct evdev_dev *evdev) return (err); } - return (hidbus_intr_start(sc->sc_dev)); + return (hid_intr_start(sc->sc_dev)); } static int @@ -846,7 +846,7 @@ bcm5974_ev_close(struct evdev_dev *evdev) struct bcm5974_softc *sc = evdev_get_softc(evdev); int err; - err = hidbus_intr_stop(sc->sc_dev); + err = hid_intr_stop(sc->sc_dev); if (err != 0) return (err); diff --git a/sys/dev/hid/hid.c b/sys/dev/hid/hid.c index 7fa6e34be22a..6ed72dbe5a00 100644 --- a/sys/dev/hid/hid.c +++ b/sys/dev/hid/hid.c @@ -1028,6 +1028,24 @@ hid_quirk_unload(void *arg) pause("WAIT", hz); } +int +hid_intr_start(device_t dev) +{ + return (HID_INTR_START(device_get_parent(dev), dev)); +} + +int +hid_intr_stop(device_t dev) +{ + return (HID_INTR_STOP(device_get_parent(dev), dev)); +} + +void +hid_intr_poll(device_t dev) +{ + HID_INTR_POLL(device_get_parent(dev), dev); +} + int hid_get_rdesc(device_t dev, void *data, hid_size_t len) { diff --git a/sys/dev/hid/hid.h b/sys/dev/hid/hid.h index 5af470df61d1..a267207e49db 100644 --- a/sys/dev/hid/hid.h +++ b/sys/dev/hid/hid.h @@ -333,6 +333,9 @@ int hid_add_dynamic_quirk(struct hid_device_info *dev_info, uint16_t quirk); void hid_quirk_unload(void *arg); +int hid_intr_start(device_t); +int hid_intr_stop(device_t); +void hid_intr_poll(device_t); int hid_get_rdesc(device_t, void *, hid_size_t); int hid_read(device_t, void *, hid_size_t, hid_size_t *); int hid_write(device_t, const void *, hid_size_t); diff --git a/sys/dev/hid/hidbus.c b/sys/dev/hid/hidbus.c index fe6c4df060a3..6dd8ff9b8e6f 100644 --- a/sys/dev/hid/hidbus.c +++ b/sys/dev/hid/hidbus.c @@ -604,10 +604,10 @@ hidbus_set_intr(device_t child, hid_intr_t *handler, void *context) tlc->intr_ctx = context; } -int -hidbus_intr_start(device_t child) +static int +hidbus_intr_start(device_t bus, device_t child) { - device_t bus = device_get_parent(child); + MPASS(bus = device_get_parent(child)); struct hidbus_softc *sc = device_get_softc(bus); struct hidbus_ivars *ivar = device_get_ivars(child); struct hidbus_ivars *tlc; @@ -624,16 +624,16 @@ hidbus_intr_start(device_t child) mtx_unlock(tlc->mtx); } } - error = refcnted ? 0 : HID_INTR_START(device_get_parent(bus), bus); + error = refcnted ? 0 : hid_intr_start(bus); sx_unlock(&sc->sx); return (error); } -int -hidbus_intr_stop(device_t child) +static int +hidbus_intr_stop(device_t bus, device_t child) { - device_t bus = device_get_parent(child); + MPASS(bus = device_get_parent(child)); struct hidbus_softc *sc = device_get_softc(bus); struct hidbus_ivars *ivar = device_get_ivars(child); struct hidbus_ivars *tlc; @@ -651,18 +651,16 @@ hidbus_intr_stop(device_t child) } refcnted |= (tlc->refcnt != 0); } - error = refcnted ? 0 : HID_INTR_STOP(device_get_parent(bus), bus); + error = refcnted ? 0 : hid_intr_stop(bus); sx_unlock(&sc->sx); return (error); } -void -hidbus_intr_poll(device_t child) +static void +hidbus_intr_poll(device_t bus, device_t child __unused) { - device_t bus = device_get_parent(child); - - HID_INTR_POLL(device_get_parent(bus), bus); + hid_intr_poll(bus); } struct hid_rdesc_info * @@ -954,6 +952,9 @@ static device_method_t hidbus_methods[] = { DEVMETHOD(bus_child_location, hidbus_child_location), /* hid interface */ + DEVMETHOD(hid_intr_start, hidbus_intr_start), + DEVMETHOD(hid_intr_stop, hidbus_intr_stop), + DEVMETHOD(hid_intr_poll, hidbus_intr_poll), DEVMETHOD(hid_get_rdesc, hidbus_get_rdesc), DEVMETHOD(hid_read, hidbus_read), DEVMETHOD(hid_write, hidbus_write), diff --git a/sys/dev/hid/hidbus.h b/sys/dev/hid/hidbus.h index b2744add8658..3de4a6291511 100644 --- a/sys/dev/hid/hidbus.h +++ b/sys/dev/hid/hidbus.h @@ -160,9 +160,6 @@ struct hid_rdesc_info *hidbus_get_rdesc_info(device_t); int hidbus_lookup_driver_info(device_t, const struct hid_device_id *, int); void hidbus_set_intr(device_t, hid_intr_t*, void *); -int hidbus_intr_start(device_t); -int hidbus_intr_stop(device_t); -void hidbus_intr_poll(device_t); void hidbus_set_desc(device_t, const char *); device_t hidbus_find_child(device_t, int32_t); diff --git a/sys/dev/hid/hidmap.c b/sys/dev/hid/hidmap.c index 8951f14a2361..b97558ad33ef 100644 --- a/sys/dev/hid/hidmap.c +++ b/sys/dev/hid/hidmap.c @@ -118,13 +118,13 @@ _hidmap_set_debug_var(struct hidmap *hm, int *debug_var) static int hidmap_ev_close(struct evdev_dev *evdev) { - return (hidbus_intr_stop(evdev_get_softc(evdev))); + return (hid_intr_stop(evdev_get_softc(evdev))); } static int hidmap_ev_open(struct evdev_dev *evdev) { - return (hidbus_intr_start(evdev_get_softc(evdev))); + return (hid_intr_start(evdev_get_softc(evdev))); } void diff --git a/sys/dev/hid/hidraw.c b/sys/dev/hid/hidraw.c index dd20aba3e588..c18d039286ee 100644 --- a/sys/dev/hid/hidraw.c +++ b/sys/dev/hid/hidraw.c @@ -379,7 +379,7 @@ hidraw_open(struct cdev *dev, int flag, int mode, struct thread *td) sc->sc_head = sc->sc_tail = 0; sc->sc_fflags = flag; - hidbus_intr_start(sc->sc_dev); + hid_intr_start(sc->sc_dev); return (0); } @@ -392,7 +392,7 @@ hidraw_dtor(void *data) DPRINTF("sc=%p\n", sc); /* Disable interrupts. */ - hidbus_intr_stop(sc->sc_dev); + hid_intr_stop(sc->sc_dev); sc->sc_tail = sc->sc_head = 0; sc->sc_async = 0; diff --git a/sys/dev/hid/hkbd.c b/sys/dev/hid/hkbd.c index 922256a8f23b..b0aa5be11a1e 100644 --- a/sys/dev/hid/hkbd.c +++ b/sys/dev/hid/hkbd.c @@ -435,7 +435,7 @@ hkbd_do_poll(struct hkbd_softc *sc, uint8_t wait) } while (sc->sc_inputhead == sc->sc_inputtail) { - hidbus_intr_poll(sc->sc_dev); + hid_intr_poll(sc->sc_dev); /* Delay-optimised support for repetition of keys */ if (hkbd_any_key_pressed(sc)) { @@ -1004,7 +1004,7 @@ hkbd_attach(device_t dev) } /* start the keyboard */ - hidbus_intr_start(dev); + hid_intr_start(dev); return (0); /* success */ @@ -1035,7 +1035,7 @@ hkbd_detach(device_t dev) /* kill any stuck keys */ if (sc->sc_flags & HKBD_FLAG_ATTACHED) { /* stop receiving events from the USB keyboard */ - hidbus_intr_stop(dev); + hid_intr_stop(dev); /* release all leftover keys, if any */ memset(&sc->sc_ndata, 0, bitstr_size(HKBD_NKEYCODE)); diff --git a/sys/dev/hid/hmt.c b/sys/dev/hid/hmt.c index cb9de6f24f88..b190772e2498 100644 --- a/sys/dev/hid/hmt.c +++ b/sys/dev/hid/hmt.c @@ -252,13 +252,13 @@ static const struct hid_device_id hmt_devs[] = { static int hmt_ev_close(struct evdev_dev *evdev) { - return (hidbus_intr_stop(evdev_get_softc(evdev))); + return (hid_intr_stop(evdev_get_softc(evdev))); } static int hmt_ev_open(struct evdev_dev *evdev) { - return (hidbus_intr_start(evdev_get_softc(evdev))); + return (hid_intr_start(evdev_get_softc(evdev))); } static int diff --git a/sys/dev/hid/ietp.c b/sys/dev/hid/ietp.c index cdc5491b2c6d..1eaf95f17364 100644 --- a/sys/dev/hid/ietp.c +++ b/sys/dev/hid/ietp.c @@ -220,13 +220,13 @@ static const struct evdev_methods ietp_evdev_methods = { static int ietp_ev_open(struct evdev_dev *evdev) { - return (hidbus_intr_start(evdev_get_softc(evdev))); + return (hid_intr_start(evdev_get_softc(evdev))); } static int ietp_ev_close(struct evdev_dev *evdev) { - return (hidbus_intr_stop(evdev_get_softc(evdev))); + return (hid_intr_stop(evdev_get_softc(evdev))); } static int @@ -595,7 +595,7 @@ ietp_iic_set_absolute_mode(device_t dev, bool enable) } } - if (require_wakeup && hidbus_intr_start(dev) != 0) { + if (require_wakeup && hid_intr_start(dev) != 0) { device_printf(dev, "failed writing poweron command\n"); return (EIO); } @@ -606,7 +606,7 @@ ietp_iic_set_absolute_mode(device_t dev, bool enable) error = EIO; } - if (require_wakeup && hidbus_intr_stop(dev) != 0) { + if (require_wakeup && hid_intr_stop(dev) != 0) { device_printf(dev, "failed writing poweroff command\n"); error = EIO; }