| @@ -1,33 +1,33 @@ | | | @@ -1,33 +1,33 @@ |
1 | /* $NetBSD: lom.c,v 1.11 2013/01/24 11:06:20 nakayama Exp $ */ | | 1 | /* $NetBSD: lom.c,v 1.12 2014/02/20 11:00:40 joerg Exp $ */ |
2 | /* $OpenBSD: lom.c,v 1.21 2010/02/28 20:44:39 kettenis Exp $ */ | | 2 | /* $OpenBSD: lom.c,v 1.21 2010/02/28 20:44:39 kettenis Exp $ */ |
3 | /* | | 3 | /* |
4 | * Copyright (c) 2009 Mark Kettenis | | 4 | * Copyright (c) 2009 Mark Kettenis |
5 | * | | 5 | * |
6 | * Permission to use, copy, modify, and distribute this software for any | | 6 | * Permission to use, copy, modify, and distribute this software for any |
7 | * purpose with or without fee is hereby granted, provided that the above | | 7 | * purpose with or without fee is hereby granted, provided that the above |
8 | * copyright notice and this permission notice appear in all copies. | | 8 | * copyright notice and this permission notice appear in all copies. |
9 | * | | 9 | * |
10 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | | 10 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
11 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | | 11 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
12 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | | 12 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
13 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | | 13 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
14 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | | 14 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
15 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | | 15 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
16 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | | 16 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
17 | */ | | 17 | */ |
18 | | | 18 | |
19 | #include <sys/cdefs.h> | | 19 | #include <sys/cdefs.h> |
20 | __KERNEL_RCSID(0, "$NetBSD: lom.c,v 1.11 2013/01/24 11:06:20 nakayama Exp $"); | | 20 | __KERNEL_RCSID(0, "$NetBSD: lom.c,v 1.12 2014/02/20 11:00:40 joerg Exp $"); |
21 | | | 21 | |
22 | #include <sys/param.h> | | 22 | #include <sys/param.h> |
23 | #include <sys/device.h> | | 23 | #include <sys/device.h> |
24 | #include <sys/kernel.h> | | 24 | #include <sys/kernel.h> |
25 | #include <sys/proc.h> | | 25 | #include <sys/proc.h> |
26 | #include <sys/envsys.h> | | 26 | #include <sys/envsys.h> |
27 | #include <sys/systm.h> | | 27 | #include <sys/systm.h> |
28 | #include <sys/callout.h> | | 28 | #include <sys/callout.h> |
29 | #include <sys/sysctl.h> | | 29 | #include <sys/sysctl.h> |
30 | | | 30 | |
31 | #include <machine/autoconf.h> | | 31 | #include <machine/autoconf.h> |
32 | | | 32 | |
33 | #include <dev/ebus/ebusreg.h> | | 33 | #include <dev/ebus/ebusreg.h> |
| @@ -342,28 +342,32 @@ lom_attach(device_t parent, device_t sel | | | @@ -342,28 +342,32 @@ lom_attach(device_t parent, device_t sel |
342 | } | | 342 | } |
343 | | | 343 | |
344 | /* Setup our sysctl subtree, hw.lomN */ | | 344 | /* Setup our sysctl subtree, hw.lomN */ |
345 | if (hw_node != CTL_EOL) | | 345 | if (hw_node != CTL_EOL) |
346 | sysctl_createv(NULL, 0, NULL, &node, | | 346 | sysctl_createv(NULL, 0, NULL, &node, |
347 | 0, CTLTYPE_NODE, device_xname(self), NULL, | | 347 | 0, CTLTYPE_NODE, device_xname(self), NULL, |
348 | NULL, 0, NULL, 0, CTL_HW, CTL_CREATE, CTL_EOL); | | 348 | NULL, 0, NULL, 0, CTL_HW, CTL_CREATE, CTL_EOL); |
349 | | | 349 | |
350 | /* Initialize sensor data. */ | | 350 | /* Initialize sensor data. */ |
351 | sc->sc_sme = sysmon_envsys_create(); | | 351 | sc->sc_sme = sysmon_envsys_create(); |
352 | for (i = 0; i < sc->sc_num_alarm; i++) { | | 352 | for (i = 0; i < sc->sc_num_alarm; i++) { |
353 | sc->sc_alarm[i].units = ENVSYS_INDICATOR; | | 353 | sc->sc_alarm[i].units = ENVSYS_INDICATOR; |
354 | sc->sc_alarm[i].state = ENVSYS_SINVALID; | | 354 | sc->sc_alarm[i].state = ENVSYS_SINVALID; |
355 | snprintf(sc->sc_alarm[i].desc, sizeof(sc->sc_alarm[i].desc), | | 355 | if (i == 0) |
356 | i == 0 ? "Fault LED" : "Alarm%d", i); | | 356 | strlcpy(sc->sc_alarm[i].desc, "Fault LED", |
| | | 357 | sizeof(sc->sc_alarm[i].desc)); |
| | | 358 | else |
| | | 359 | snprintf(sc->sc_alarm[i].desc, |
| | | 360 | sizeof(sc->sc_alarm[i].desc), "Alarm%d", i); |
357 | if (sysmon_envsys_sensor_attach(sc->sc_sme, &sc->sc_alarm[i])) { | | 361 | if (sysmon_envsys_sensor_attach(sc->sc_sme, &sc->sc_alarm[i])) { |
358 | sysmon_envsys_destroy(sc->sc_sme); | | 362 | sysmon_envsys_destroy(sc->sc_sme); |
359 | aprint_error_dev(self, "can't attach alarm sensor\n"); | | 363 | aprint_error_dev(self, "can't attach alarm sensor\n"); |
360 | return; | | 364 | return; |
361 | } | | 365 | } |
362 | if (node != NULL) { | | 366 | if (node != NULL) { |
363 | sysctl_createv(NULL, 0, NULL, &newnode, | | 367 | sysctl_createv(NULL, 0, NULL, &newnode, |
364 | CTLFLAG_READWRITE, CTLTYPE_INT, nodename[i], | | 368 | CTLFLAG_READWRITE, CTLTYPE_INT, nodename[i], |
365 | SYSCTL_DESCR(nodedesc[i]), | | 369 | SYSCTL_DESCR(nodedesc[i]), |
366 | lom_sysctl_alarm, 0, (void *)sc, 0, | | 370 | lom_sysctl_alarm, 0, (void *)sc, 0, |
367 | CTL_HW, node->sysctl_num, CTL_CREATE, CTL_EOL); | | 371 | CTL_HW, node->sysctl_num, CTL_CREATE, CTL_EOL); |
368 | if (newnode != NULL) | | 372 | if (newnode != NULL) |
369 | sc->sc_sysctl_num[i] = newnode->sysctl_num; | | 373 | sc->sc_sysctl_num[i] = newnode->sysctl_num; |