summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryokota <yokota@FreeBSD.org>2001-06-30 10:02:32 +0000
committeryokota <yokota@FreeBSD.org>2001-06-30 10:02:32 +0000
commit33d7ab4772689f5be1053406c1508b005b416269 (patch)
tree99765e0b6d606fe48d9c02a515750685c8614441
parentb6823c37643e5db8e2302c5b397253b4e9c47211 (diff)
downloadFreeBSD-src-33d7ab4772689f5be1053406c1508b005b416269.zip
FreeBSD-src-33d7ab4772689f5be1053406c1508b005b416269.tar.gz
Add the device resume method to keyboard drivers.
MFC after: 4 weeks
-rw-r--r--sys/dev/atkbdc/atkbd_atkbdc.c14
-rw-r--r--sys/dev/atkbdc/atkbd_isa.c14
-rw-r--r--sys/dev/usb/ukbd.c15
-rw-r--r--sys/isa/atkbd_isa.c14
4 files changed, 56 insertions, 1 deletions
diff --git a/sys/dev/atkbdc/atkbd_atkbdc.c b/sys/dev/atkbdc/atkbd_atkbdc.c
index 65f0b23..1941612 100644
--- a/sys/dev/atkbdc/atkbd_atkbdc.c
+++ b/sys/dev/atkbdc/atkbd_atkbdc.c
@@ -53,11 +53,13 @@ devclass_t atkbd_devclass;
static int atkbdprobe(device_t dev);
static int atkbdattach(device_t dev);
+static int atkbdresume(device_t dev);
static void atkbd_isa_intr(void *arg);
static device_method_t atkbd_methods[] = {
DEVMETHOD(device_probe, atkbdprobe),
DEVMETHOD(device_attach, atkbdattach),
+ DEVMETHOD(device_resume, atkbdresume),
{ 0, 0 }
};
@@ -116,6 +118,18 @@ atkbdattach(device_t dev)
return 0;
}
+static int
+atkbdresume(device_t dev)
+{
+ keyboard_t *kbd;
+
+ kbd = kbd_get_keyboard(kbd_find_keyboard(ATKBD_DRIVER_NAME,
+ device_get_unit(dev)));
+ if (kbd)
+ (*kbdsw[kbd->kb_index]->clear_state)(kbd);
+ return 0;
+}
+
static void
atkbd_isa_intr(void *arg)
{
diff --git a/sys/dev/atkbdc/atkbd_isa.c b/sys/dev/atkbdc/atkbd_isa.c
index 65f0b23..1941612 100644
--- a/sys/dev/atkbdc/atkbd_isa.c
+++ b/sys/dev/atkbdc/atkbd_isa.c
@@ -53,11 +53,13 @@ devclass_t atkbd_devclass;
static int atkbdprobe(device_t dev);
static int atkbdattach(device_t dev);
+static int atkbdresume(device_t dev);
static void atkbd_isa_intr(void *arg);
static device_method_t atkbd_methods[] = {
DEVMETHOD(device_probe, atkbdprobe),
DEVMETHOD(device_attach, atkbdattach),
+ DEVMETHOD(device_resume, atkbdresume),
{ 0, 0 }
};
@@ -116,6 +118,18 @@ atkbdattach(device_t dev)
return 0;
}
+static int
+atkbdresume(device_t dev)
+{
+ keyboard_t *kbd;
+
+ kbd = kbd_get_keyboard(kbd_find_keyboard(ATKBD_DRIVER_NAME,
+ device_get_unit(dev)));
+ if (kbd)
+ (*kbdsw[kbd->kb_index]->clear_state)(kbd);
+ return 0;
+}
+
static void
atkbd_isa_intr(void *arg)
{
diff --git a/sys/dev/usb/ukbd.c b/sys/dev/usb/ukbd.c
index 9f3143a..b127b8a 100644
--- a/sys/dev/usb/ukbd.c
+++ b/sys/dev/usb/ukbd.c
@@ -113,10 +113,11 @@ typedef struct ukbd_softc {
typedef void usbd_intr_t(usbd_xfer_handle, usbd_private_handle, usbd_status);
typedef void usbd_disco_t(void *);
+Static int ukbd_resume(device_t self);
Static usbd_intr_t ukbd_intr;
Static int ukbd_driver_load(module_t mod, int what, void *arg);
-USB_DECLARE_DRIVER(ukbd);
+USB_DECLARE_DRIVER_INIT(ukbd, DEVMETHOD(device_resume, ukbd_resume));
USB_MATCH(ukbd)
{
@@ -207,6 +208,18 @@ ukbd_detach(device_t self)
return (0);
}
+Static int
+ukbd_resume(device_t self)
+{
+ keyboard_t *kbd;
+
+ kbd = kbd_get_keyboard(kbd_find_keyboard(DRIVER_NAME,
+ device_get_unit(self)));
+ if (kbd)
+ (*kbdsw[kbd->kb_index]->clear_state)(kbd);
+ return (0);
+}
+
void
ukbd_intr(usbd_xfer_handle xfer, usbd_private_handle addr, usbd_status status)
{
diff --git a/sys/isa/atkbd_isa.c b/sys/isa/atkbd_isa.c
index 65f0b23..1941612 100644
--- a/sys/isa/atkbd_isa.c
+++ b/sys/isa/atkbd_isa.c
@@ -53,11 +53,13 @@ devclass_t atkbd_devclass;
static int atkbdprobe(device_t dev);
static int atkbdattach(device_t dev);
+static int atkbdresume(device_t dev);
static void atkbd_isa_intr(void *arg);
static device_method_t atkbd_methods[] = {
DEVMETHOD(device_probe, atkbdprobe),
DEVMETHOD(device_attach, atkbdattach),
+ DEVMETHOD(device_resume, atkbdresume),
{ 0, 0 }
};
@@ -116,6 +118,18 @@ atkbdattach(device_t dev)
return 0;
}
+static int
+atkbdresume(device_t dev)
+{
+ keyboard_t *kbd;
+
+ kbd = kbd_get_keyboard(kbd_find_keyboard(ATKBD_DRIVER_NAME,
+ device_get_unit(dev)));
+ if (kbd)
+ (*kbdsw[kbd->kb_index]->clear_state)(kbd);
+ return 0;
+}
+
static void
atkbd_isa_intr(void *arg)
{
OpenPOWER on IntegriCloud