Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F160417333
D16614.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
10 KB
Referenced Files
None
Subscribers
None
D16614.diff
View Options
Index: head/sys/arm/broadcom/bcm2835/bcm2835_ft5406.c
===================================================================
--- head/sys/arm/broadcom/bcm2835/bcm2835_ft5406.c
+++ head/sys/arm/broadcom/bcm2835/bcm2835_ft5406.c
@@ -172,20 +172,22 @@
callout_reset(&sc->sc_callout, sc->sc_tick, ft5406ts_callout, sc);
}
-static void
-ft5406ts_ev_close(struct evdev_dev *evdev, void *data)
+static int
+ft5406ts_ev_close(struct evdev_dev *evdev)
{
- struct ft5406ts_softc *sc = (struct ft5406ts_softc *)data;
+ struct ft5406ts_softc *sc = evdev_get_softc(evdev);
FT5406_LOCK_ASSERT(sc);
callout_stop(&sc->sc_callout);
+
+ return (0);
}
static int
-ft5406ts_ev_open(struct evdev_dev *evdev, void *data)
+ft5406ts_ev_open(struct evdev_dev *evdev)
{
- struct ft5406ts_softc *sc = (struct ft5406ts_softc *)data;
+ struct ft5406ts_softc *sc = evdev_get_softc(evdev);
FT5406_LOCK_ASSERT(sc);
Index: head/sys/dev/atkbdc/psm.c
===================================================================
--- head/sys/dev/atkbdc/psm.c
+++ head/sys/dev/atkbdc/psm.c
@@ -2023,9 +2023,9 @@
#ifdef EVDEV_SUPPORT
static int
-psm_ev_open_r(struct evdev_dev *evdev, void *ev_softc)
+psm_ev_open_r(struct evdev_dev *evdev)
{
- struct psm_softc *sc = (struct psm_softc *)ev_softc;
+ struct psm_softc *sc = evdev_get_softc(evdev);
int err = 0;
/* Get device data */
@@ -2043,24 +2043,27 @@
return (err);
}
-static void
-psm_ev_close_r(struct evdev_dev *evdev, void *ev_softc)
+static int
+psm_ev_close_r(struct evdev_dev *evdev)
{
- struct psm_softc *sc = (struct psm_softc *)ev_softc;
+ struct psm_softc *sc = evdev_get_softc(evdev);
+ int err = 0;
sc->state &= ~PSM_EV_OPEN_R;
if (sc->state & (PSM_OPEN | PSM_EV_OPEN_A))
- return;
+ return (0);
if (sc->state & PSM_VALID)
- psmclose(sc);
+ err = psmclose(sc);
+
+ return (err);
}
static int
-psm_ev_open_a(struct evdev_dev *evdev, void *ev_softc)
+psm_ev_open_a(struct evdev_dev *evdev)
{
- struct psm_softc *sc = (struct psm_softc *)ev_softc;
+ struct psm_softc *sc = evdev_get_softc(evdev);
int err = 0;
/* Get device data */
@@ -2078,18 +2081,21 @@
return (err);
}
-static void
-psm_ev_close_a(struct evdev_dev *evdev, void *ev_softc)
+static int
+psm_ev_close_a(struct evdev_dev *evdev)
{
- struct psm_softc *sc = (struct psm_softc *)ev_softc;
+ struct psm_softc *sc = evdev_get_softc(evdev);
+ int err = 0;
sc->state &= ~PSM_EV_OPEN_A;
if (sc->state & (PSM_OPEN | PSM_EV_OPEN_R))
- return;
+ return (0);
if (sc->state & PSM_VALID)
- psmclose(sc);
+ err = psmclose(sc);
+
+ return (err);
}
#endif
Index: head/sys/dev/evdev/cdev.c
===================================================================
--- head/sys/dev/evdev/cdev.c
+++ head/sys/dev/evdev/cdev.c
@@ -419,7 +419,7 @@
return (ENOTSUP);
ke = (struct input_keymap_entry *)data;
- evdev->ev_methods->ev_get_keycode(evdev, evdev->ev_softc, ke);
+ evdev->ev_methods->ev_get_keycode(evdev, ke);
return (0);
case EVIOCSKEYCODE:
@@ -432,7 +432,7 @@
return (ENOTSUP);
ke = (struct input_keymap_entry *)data;
- evdev->ev_methods->ev_set_keycode(evdev, evdev->ev_softc, ke);
+ evdev->ev_methods->ev_set_keycode(evdev, ke);
return (0);
case EVIOCGABS(0) ... EVIOCGABS(ABS_MAX):
Index: head/sys/dev/evdev/evdev.h
===================================================================
--- head/sys/dev/evdev/evdev.h
+++ head/sys/dev/evdev/evdev.h
@@ -38,11 +38,10 @@
struct evdev_dev;
-typedef int (evdev_open_t)(struct evdev_dev *, void *);
-typedef void (evdev_close_t)(struct evdev_dev *, void *);
-typedef void (evdev_event_t)(struct evdev_dev *, void *, uint16_t,
- uint16_t, int32_t);
-typedef void (evdev_keycode_t)(struct evdev_dev *, void *,
+typedef int (evdev_open_t)(struct evdev_dev *);
+typedef int (evdev_close_t)(struct evdev_dev *);
+typedef void (evdev_event_t)(struct evdev_dev *, uint16_t, uint16_t, int32_t);
+typedef void (evdev_keycode_t)(struct evdev_dev *,
struct input_keymap_entry *);
/*
@@ -126,6 +125,7 @@
void evdev_set_repeat_params(struct evdev_dev *, uint16_t, int);
int evdev_set_report_size(struct evdev_dev *, size_t);
void evdev_set_flag(struct evdev_dev *, uint16_t);
+void *evdev_get_softc(struct evdev_dev *);
/* Multitouch related functions: */
int32_t evdev_get_mt_slot_by_tracking_id(struct evdev_dev *, int32_t);
Index: head/sys/dev/evdev/evdev.c
===================================================================
--- head/sys/dev/evdev/evdev.c
+++ head/sys/dev/evdev/evdev.c
@@ -337,6 +337,13 @@
evdev->ev_softc = softc;
}
+inline void *
+evdev_get_softc(struct evdev_dev *evdev)
+{
+
+ return (evdev->ev_softc);
+}
+
inline void
evdev_support_prop(struct evdev_dev *evdev, uint16_t prop)
{
@@ -798,8 +805,7 @@
case EV_FF:
if (evdev->ev_methods != NULL &&
evdev->ev_methods->ev_event != NULL)
- evdev->ev_methods->ev_event(evdev, evdev->ev_softc,
- type, code, value);
+ evdev->ev_methods->ev_event(evdev, type, code, value);
/*
* Leds and driver repeats should be reported in ev_event
* method body to interoperate with kbdmux states and rates
@@ -842,7 +848,7 @@
evdev->ev_methods->ev_open != NULL) {
debugf(evdev, "calling ev_open() on device %s",
evdev->ev_shortname);
- ret = evdev->ev_methods->ev_open(evdev, evdev->ev_softc);
+ ret = evdev->ev_methods->ev_open(evdev);
}
if (ret == 0)
LIST_INSERT_HEAD(&evdev->ev_clients, client, ec_link);
@@ -860,7 +866,7 @@
if (LIST_EMPTY(&evdev->ev_clients)) {
if (evdev->ev_methods != NULL &&
evdev->ev_methods->ev_close != NULL)
- evdev->ev_methods->ev_close(evdev, evdev->ev_softc);
+ (void)evdev->ev_methods->ev_close(evdev);
if (evdev_event_supported(evdev, EV_REP) &&
bit_test(evdev->ev_flags, EVDEV_FLAG_SOFTREPEAT))
evdev_stop_repeat(evdev);
Index: head/sys/dev/evdev/evdev_utils.c
===================================================================
--- head/sys/dev/evdev/evdev_utils.c
+++ head/sys/dev/evdev/evdev_utils.c
@@ -301,10 +301,10 @@
}
void
-evdev_ev_kbd_event(struct evdev_dev *evdev, void *softc, uint16_t type,
- uint16_t code, int32_t value)
+evdev_ev_kbd_event(struct evdev_dev *evdev, uint16_t type, uint16_t code,
+ int32_t value)
{
- keyboard_t *kbd = (keyboard_t *)softc;
+ keyboard_t *kbd = (keyboard_t *)evdev_get_softc(evdev);
int delay[2], leds, oleds;
size_t i;
Index: head/sys/dev/evdev/uinput.c
===================================================================
--- head/sys/dev/evdev/uinput.c
+++ head/sys/dev/evdev/uinput.c
@@ -159,10 +159,10 @@
}
static void
-uinput_ev_event(struct evdev_dev *evdev, void *softc, uint16_t type,
- uint16_t code, int32_t value)
+uinput_ev_event(struct evdev_dev *evdev, uint16_t type, uint16_t code,
+ int32_t value)
{
- struct uinput_cdev_state *state = softc;
+ struct uinput_cdev_state *state = evdev_get_softc(evdev);
if (type == EV_LED)
evdev_push_event(evdev, type, code, value);
Index: head/sys/dev/usb/input/uep.c
===================================================================
--- head/sys/dev/usb/input/uep.c
+++ head/sys/dev/usb/input/uep.c
@@ -430,19 +430,21 @@
#ifdef EVDEV_SUPPORT
-static void
-uep_ev_close(struct evdev_dev *evdev, void *ev_softc)
+static int
+uep_ev_close(struct evdev_dev *evdev)
{
- struct uep_softc *sc = (struct uep_softc *)ev_softc;
+ struct uep_softc *sc = evdev_get_softc(evdev);
mtx_assert(&sc->mtx, MA_OWNED);
usbd_transfer_stop(sc->xfer[UEP_INTR_DT]);
+
+ return (0);
}
static int
-uep_ev_open(struct evdev_dev *evdev, void *ev_softc)
+uep_ev_open(struct evdev_dev *evdev)
{
- struct uep_softc *sc = (struct uep_softc *)ev_softc;
+ struct uep_softc *sc = evdev_get_softc(evdev);
mtx_assert(&sc->mtx, MA_OWNED);
usbd_transfer_start(sc->xfer[UEP_INTR_DT]);
Index: head/sys/dev/usb/input/ums.c
===================================================================
--- head/sys/dev/usb/input/ums.c
+++ head/sys/dev/usb/input/ums.c
@@ -950,9 +950,9 @@
#ifdef EVDEV_SUPPORT
static int
-ums_ev_open(struct evdev_dev *evdev, void *ev_softc)
+ums_ev_open(struct evdev_dev *evdev)
{
- struct ums_softc *sc = (struct ums_softc *)ev_softc;
+ struct ums_softc *sc = evdev_get_softc(evdev);
mtx_assert(&sc->sc_mtx, MA_OWNED);
@@ -966,10 +966,10 @@
return (0);
}
-static void
-ums_ev_close(struct evdev_dev *evdev, void *ev_softc)
+static int
+ums_ev_close(struct evdev_dev *evdev)
{
- struct ums_softc *sc = (struct ums_softc *)ev_softc;
+ struct ums_softc *sc = evdev_get_softc(evdev);
mtx_assert(&sc->sc_mtx, MA_OWNED);
@@ -977,6 +977,8 @@
if (sc->sc_fflags == 0)
ums_stop_rx(sc);
+
+ return (0);
}
#endif
Index: head/sys/dev/usb/input/wmt.c
===================================================================
--- head/sys/dev/usb/input/wmt.c
+++ head/sys/dev/usb/input/wmt.c
@@ -226,12 +226,22 @@
static device_attach_t wmt_attach;
static device_detach_t wmt_detach;
+#if __FreeBSD_version >= 1200077
static evdev_open_t wmt_ev_open;
static evdev_close_t wmt_ev_close;
+#else
+static evdev_open_t wmt_ev_open_11;
+static evdev_close_t wmt_ev_close_11;
+#endif
static const struct evdev_methods wmt_evdev_methods = {
+#if __FreeBSD_version >= 1200077
.ev_open = &wmt_ev_open,
.ev_close = &wmt_ev_close,
+#else
+ .ev_open = &wmt_ev_open_11,
+ .ev_close = &wmt_ev_close_11,
+#endif
};
static const struct usb_config wmt_config[WMT_N_TRANSFER] = {
@@ -525,24 +535,45 @@
}
static void
-wmt_ev_close(struct evdev_dev *evdev, void *ev_softc)
+wmt_ev_close_11(struct evdev_dev *evdev, void *ev_softc)
{
- struct wmt_softc *sc = (struct wmt_softc *)ev_softc;
+ struct wmt_softc *sc = ev_softc;
mtx_assert(&sc->mtx, MA_OWNED);
usbd_transfer_stop(sc->xfer[WMT_INTR_DT]);
}
static int
-wmt_ev_open(struct evdev_dev *evdev, void *ev_softc)
+wmt_ev_open_11(struct evdev_dev *evdev, void *ev_softc)
{
- struct wmt_softc *sc = (struct wmt_softc *)ev_softc;
+ struct wmt_softc *sc = ev_softc;
mtx_assert(&sc->mtx, MA_OWNED);
usbd_transfer_start(sc->xfer[WMT_INTR_DT]);
return (0);
}
+
+#if __FreeBSD_version >= 1200077
+static int
+wmt_ev_close(struct evdev_dev *evdev)
+{
+ struct wmt_softc *sc = evdev_get_softc(evdev);
+
+ wmt_ev_close_11(evdev, sc);
+
+ return (0);
+}
+
+static int
+wmt_ev_open(struct evdev_dev *evdev)
+{
+ struct wmt_softc *sc = evdev_get_softc(evdev);
+
+ return (wmt_ev_open_11(evdev, sc));
+
+}
+#endif
/* port of userland hid_report_size() from usbhid(3) to kernel */
static int
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Jun 25, 7:01 AM (8 h, 4 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34309887
Default Alt Text
D16614.diff (10 KB)
Attached To
Mode
D16614: [evdev]: Minor KPI changes
Attached
Detach File
Event Timeline
Log In to Comment