Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/evbarm/n900 Improved n900acad(4) with:
details: https://anonhg.NetBSD.org/src/rev/5e055d2f9fcb
branches: trunk
changeset: 786142:5e055d2f9fcb
user: khorben <khorben%NetBSD.org@localhost>
date: Wed Apr 17 01:10:28 2013 +0000
description:
Improved n900acad(4) with:
- more readable dmesg output;
- unmapping the GPIO pin upon failure to establish an interrupt;
- some additional cosmetics.
diffstat:
sys/arch/evbarm/n900/n900_acad.c | 32 +++++++++++++++++++++++---------
1 files changed, 23 insertions(+), 9 deletions(-)
diffs (92 lines):
diff -r 06bdcb4d5907 -r 5e055d2f9fcb sys/arch/evbarm/n900/n900_acad.c
--- a/sys/arch/evbarm/n900/n900_acad.c Wed Apr 17 01:06:13 2013 +0000
+++ b/sys/arch/evbarm/n900/n900_acad.c Wed Apr 17 01:10:28 2013 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: n900_acad.c,v 1.2 2013/04/14 20:18:17 khorben Exp $ */
+/* $NetBSD: n900_acad.c,v 1.3 2013/04/17 01:10:28 khorben Exp $ */
/*
* AC adapter driver for the Nokia N900.
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: n900_acad.c,v 1.2 2013/04/14 20:18:17 khorben Exp $");
+__KERNEL_RCSID(0, "$NetBSD: n900_acad.c,v 1.3 2013/04/17 01:10:28 khorben Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -73,6 +73,8 @@
CFATTACH_DECL_NEW(n900acad, sizeof(struct n900acad_softc),
n900acad_match, n900acad_attach, n900acad_detach, NULL);
+static void n900acad_refresh(struct n900acad_softc *);
+
static int n900acad_intr(void *v);
@@ -111,7 +113,7 @@
sc->sc_map.pm_map = sc->sc_map_pins;
if (gpio_pin_map(sc->sc_gpio, ga->ga_offset, ga->ga_mask,
&sc->sc_map)) {
- aprint_error(": can't map pins\n");
+ aprint_error(": could not map the pins\n");
return;
}
@@ -129,19 +131,23 @@
IST_EDGE_BOTH, IPL_VM, n900acad_intr, sc);
if (sc->sc_intr == NULL) {
aprint_error(": could not establish interrupt\n");
+ gpio_pin_unmap(sc->sc_gpio, &sc->sc_map);
return;
}
- aprint_normal("N900 AC adapter sensor\n");
- aprint_naive("N900 AC adapter sensor\n");
+ aprint_normal(": N900 AC adapter sensor\n");
+ aprint_naive(": N900 AC adapter sensor\n");
- if (!pmf_device_register(sc->sc_dev, NULL, NULL))
+ if (!pmf_device_register(sc->sc_dev, NULL, NULL)) {
aprint_error_dev(sc->sc_dev,
"could not establish power handler\n");
+ }
sc->sc_smpsw.smpsw_name = device_xname(self);
sc->sc_smpsw.smpsw_type = PSWITCH_TYPE_ACADAPTER;
sysmon_pswitch_register(&sc->sc_smpsw);
+
+ n900acad_refresh(sc);
}
static int
@@ -155,6 +161,7 @@
gpio_pin_unmap(sc->sc_gpio, &sc->sc_map);
pmf_device_deregister(self);
+
return 0;
}
@@ -162,10 +169,17 @@
n900acad_intr(void *v)
{
struct n900acad_softc *sc = v;
+
+ n900acad_refresh(sc);
+ return 1;
+}
+
+static void
+n900acad_refresh(struct n900acad_softc *sc)
+{
int i;
i = gpio_pin_read(sc->sc_gpio, &sc->sc_map, N900ACAD_PIN_INPUT);
- sysmon_pswitch_event(&sc->sc_smpsw,
- i ? PSWITCH_EVENT_RELEASED : PSWITCH_EVENT_PRESSED);
- return 1;
+ sysmon_pswitch_event(&sc->sc_smpsw, (i == GPIO_PIN_HIGH)
+ ? PSWITCH_EVENT_RELEASED : PSWITCH_EVENT_PRESSED);
}
Home |
Main Index |
Thread Index |
Old Index