From owner-dev-commits-src-main@freebsd.org Wed Dec 23 22:29:37 2020 Return-Path: Delivered-To: dev-commits-src-main@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id AE9A04CD70E; Wed, 23 Dec 2020 22:29:37 +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 "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4D1SYs4TCxz4ZR6; Wed, 23 Dec 2020 22:29:37 +0000 (UTC) (envelope-from git@FreeBSD.org) 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 8CFC4259D8; Wed, 23 Dec 2020 22:29:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 0BNMTb5k083041; Wed, 23 Dec 2020 22:29:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 0BNMTbVU083040; Wed, 23 Dec 2020 22:29:37 GMT (envelope-from git) Date: Wed, 23 Dec 2020 22:29:37 GMT Message-Id: <202012232229.0BNMTbVU083040@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: c26a34842760 - wmt(4): Use sys/param.h macroses to work with bit fields 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: c26a34842760f522d3b4ba02668fc1cb1c0024d0 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-main@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: "Commit messages for the main branch of the src repository." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 23 Dec 2020 22:29:37 -0000 The branch main has been updated by wulf: URL: https://cgit.FreeBSD.org/src/commit/?id=c26a34842760f522d3b4ba02668fc1cb1c0024d0 commit c26a34842760f522d3b4ba02668fc1cb1c0024d0 Author: Vladimir Kondratyev AuthorDate: 2020-12-23 22:18:18 +0000 Commit: Vladimir Kondratyev CommitDate: 2020-12-23 22:27:17 +0000 wmt(4): Use sys/param.h macroses to work with bit fields Obtained from: sysutils/iichid --- sys/dev/usb/input/wmt.c | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/sys/dev/usb/input/wmt.c b/sys/dev/usb/input/wmt.c index 927d019ea099..788341df288c 100644 --- a/sys/dev/usb/input/wmt.c +++ b/sys/dev/usb/input/wmt.c @@ -222,8 +222,8 @@ struct wmt_softc { struct evdev_dev *evdev; uint32_t slot_data[WMT_N_USAGES]; - uint32_t caps; - uint32_t buttons; + uint8_t caps[howmany(WMT_N_USAGES, 8)]; + uint8_t buttons[howmany(WMT_BTN_MAX, 8)]; uint32_t isize; uint32_t nconts_per_report; uint32_t nconts_todo; @@ -249,10 +249,9 @@ struct wmt_softc { uint8_t buf[WMT_BSIZE] __aligned(4); }; -#define USAGE_SUPPORTED(caps, usage) ((caps) & (1 << (usage))) #define WMT_FOREACH_USAGE(caps, usage) \ for ((usage) = 0; (usage) < WMT_N_USAGES; ++(usage)) \ - if (USAGE_SUPPORTED((caps), (usage))) + if (isset((caps), (usage))) static enum wmt_type wmt_hid_parse(struct wmt_softc *, const void *, uint16_t); static int wmt_set_input_mode(struct wmt_softc *, enum wmt_input_mode); @@ -443,13 +442,17 @@ wmt_attach(device_t dev) evdev_support_event(sc->evdev, EV_MSC); evdev_support_msc(sc->evdev, MSC_TIMESTAMP); } + nbuttons = 0; if (sc->max_button != 0 || sc->has_int_button) { evdev_support_event(sc->evdev, EV_KEY); if (sc->has_int_button) evdev_support_key(sc->evdev, BTN_LEFT); - for (btn = 0; btn < sc->max_button; ++btn) - if (USAGE_SUPPORTED(sc->buttons, btn)) + for (btn = 0; btn < sc->max_button; ++btn) { + if (isset(sc->buttons, btn)) { evdev_support_key(sc->evdev, BTN_MOUSE + btn); + nbuttons++; + } + } } WMT_FOREACH_USAGE(sc->caps, i) { if (wmt_hid_map[i].code != WMT_NO_CODE) @@ -462,7 +465,6 @@ wmt_attach(device_t dev) goto detach; /* Announce information about the touch device */ - nbuttons = bitcount32(sc->buttons); device_printf(sc->dev, "Multitouch %s with %d external button%s%s\n", sc->type == WMT_TYPE_TOUCHSCREEN ? "touchscreen" : "touchpad", nbuttons, nbuttons != 1 ? "s" : "", @@ -470,11 +472,11 @@ wmt_attach(device_t dev) device_printf(sc->dev, "%d contacts and [%s%s%s%s%s]. Report range [%d:%d] - [%d:%d]\n", (int)sc->ai[WMT_SLOT].max + 1, - USAGE_SUPPORTED(sc->caps, WMT_IN_RANGE) ? "R" : "", - USAGE_SUPPORTED(sc->caps, WMT_CONFIDENCE) ? "C" : "", - USAGE_SUPPORTED(sc->caps, WMT_WIDTH) ? "W" : "", - USAGE_SUPPORTED(sc->caps, WMT_HEIGHT) ? "H" : "", - USAGE_SUPPORTED(sc->caps, WMT_PRESSURE) ? "P" : "", + isset(sc->caps, WMT_IN_RANGE) ? "R" : "", + isset(sc->caps, WMT_CONFIDENCE) ? "C" : "", + isset(sc->caps, WMT_WIDTH) ? "W" : "", + isset(sc->caps, WMT_HEIGHT) ? "H" : "", + isset(sc->caps, WMT_PRESSURE) ? "P" : "", (int)sc->ai[WMT_X].min, (int)sc->ai[WMT_Y].min, (int)sc->ai[WMT_X].max, (int)sc->ai[WMT_Y].max); @@ -582,7 +584,7 @@ wmt_process_report(struct wmt_softc *sc, uint8_t *buf, int len) } if (slot_data[WMT_TIP_SWITCH] != 0 && - !(USAGE_SUPPORTED(sc->caps, WMT_CONFIDENCE) && + !(isset(sc->caps, WMT_CONFIDENCE) && slot_data[WMT_CONFIDENCE] == 0)) { /* This finger is in proximity of the sensor */ sc->touch = true; @@ -629,14 +631,13 @@ wmt_process_report(struct wmt_softc *sc, uint8_t *buf, int len) /* Report both the click and external left btns as BTN_LEFT */ if (sc->has_int_button) int_btn = hid_get_data(buf, len, &sc->int_btn_loc); - if (sc->max_button != 0 && (sc->buttons & 1 << 0) != 0) + if (isset(sc->buttons, 0)) left_btn = hid_get_data(buf, len, &sc->btn_loc[0]); - if (sc->has_int_button || - (sc->max_button != 0 && (sc->buttons & 1 << 0) != 0)) + if (sc->has_int_button || isset(sc->buttons, 0)) evdev_push_key(sc->evdev, BTN_LEFT, int_btn != 0 | left_btn != 0); for (btn = 1; btn < sc->max_button; ++btn) { - if ((sc->buttons & 1 << btn) != 0) + if (isset(sc->buttons, btn)) evdev_push_key(sc->evdev, BTN_MOUSE + btn, hid_get_data(buf, len, @@ -904,7 +905,7 @@ wmt_hid_parse(struct wmt_softc *sc, const void *d_ptr, uint16_t d_len) hi.usage >= HID_USAGE2(HUP_BUTTON, left_btn) && hi.usage <= HID_USAGE2(HUP_BUTTON, WMT_BTN_MAX)) { btn = (hi.usage & 0xFFFF) - left_btn; - sc->buttons |= 1 << btn; + setbit(sc->buttons, btn); sc->btn_loc[btn] = hi.loc; if (btn >= sc->max_button) sc->max_button = btn + 1; @@ -950,7 +951,7 @@ wmt_hid_parse(struct wmt_softc *sc, const void *d_ptr, uint16_t d_len) */ if (cont > 0) break; - sc->caps |= 1 << i; + setbit(sc->caps, i); sc->ai[i] = (struct wmt_absinfo) { .max = hi.logical_maximum, .min = hi.logical_minimum, @@ -970,7 +971,7 @@ wmt_hid_parse(struct wmt_softc *sc, const void *d_ptr, uint16_t d_len) if (!cont_count_found || !scan_time_found || cont == 0) return (WMT_TYPE_UNSUPPORTED); for (i = 0; i < WMT_N_USAGES; i++) { - if (wmt_hid_map[i].required && !USAGE_SUPPORTED(sc->caps, i)) + if (wmt_hid_map[i].required && isclr(sc->caps, i)) return (WMT_TYPE_UNSUPPORTED); } @@ -994,9 +995,8 @@ wmt_hid_parse(struct wmt_softc *sc, const void *d_ptr, uint16_t d_len) }; /* Report touch orientation if both width and height are supported */ - if (USAGE_SUPPORTED(sc->caps, WMT_WIDTH) && - USAGE_SUPPORTED(sc->caps, WMT_HEIGHT)) { - sc->caps |= 1 << WMT_ORIENTATION; + if (isset(sc->caps, WMT_WIDTH) && isset(sc->caps, WMT_HEIGHT)) { + setbit(sc->caps, WMT_ORIENTATION); sc->ai[WMT_ORIENTATION].max = 1; }