| @@ -1,33 +1,33 @@ | | | @@ -1,33 +1,33 @@ |
1 | /* $NetBSD: lom.c,v 1.10 2012/06/02 21:36:42 dsl Exp $ */ | | 1 | /* $NetBSD: lom.c,v 1.11 2013/01/24 11:06:20 nakayama 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.10 2012/06/02 21:36:42 dsl Exp $"); | | 20 | __KERNEL_RCSID(0, "$NetBSD: lom.c,v 1.11 2013/01/24 11:06:20 nakayama 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> |
| @@ -847,27 +847,27 @@ lom2_intr(void *arg) | | | @@ -847,27 +847,27 @@ lom2_intr(void *arg) |
847 | if (lc == NULL) { | | 847 | if (lc == NULL) { |
848 | mutex_exit(&sc->sc_queue_mtx); | | 848 | mutex_exit(&sc->sc_queue_mtx); |
849 | return (0); | | 849 | return (0); |
850 | } | | 850 | } |
851 | | | 851 | |
852 | if (lc->lc_cmd & LOM_IDX_WRITE) { | | 852 | if (lc->lc_cmd & LOM_IDX_WRITE) { |
853 | bus_space_write_1(sc->sc_iot, sc->sc_ioh, | | 853 | bus_space_write_1(sc->sc_iot, sc->sc_ioh, |
854 | LOM2_DATA, lc->lc_data); | | 854 | LOM2_DATA, lc->lc_data); |
855 | lc->lc_cmd &= ~LOM_IDX_WRITE; | | 855 | lc->lc_cmd &= ~LOM_IDX_WRITE; |
856 | mutex_exit(&sc->sc_queue_mtx); | | 856 | mutex_exit(&sc->sc_queue_mtx); |
857 | return (1); | | 857 | return (1); |
858 | } | | 858 | } |
859 | | | 859 | |
860 | KASSERT(sc->sc_state = LOM_STATE_DATA); | | 860 | KASSERT(sc->sc_state == LOM_STATE_DATA); |
861 | lc->lc_data = obr; | | 861 | lc->lc_data = obr; |
862 | | | 862 | |
863 | TAILQ_REMOVE(&sc->sc_queue, lc, lc_next); | | 863 | TAILQ_REMOVE(&sc->sc_queue, lc, lc_next); |
864 | | | 864 | |
865 | wakeup(lc); | | 865 | wakeup(lc); |
866 | | | 866 | |
867 | sc->sc_state = LOM_STATE_IDLE; | | 867 | sc->sc_state = LOM_STATE_IDLE; |
868 | | | 868 | |
869 | if (!TAILQ_EMPTY(&sc->sc_queue)) { | | 869 | if (!TAILQ_EMPTY(&sc->sc_queue)) { |
870 | str = bus_space_read_1(sc->sc_iot, sc->sc_ioh, LOM2_STATUS); | | 870 | str = bus_space_read_1(sc->sc_iot, sc->sc_ioh, LOM2_STATUS); |
871 | if ((str & LOM2_STATUS_IBF) == 0) { | | 871 | if ((str & LOM2_STATUS_IBF) == 0) { |
872 | bus_space_write_1(sc->sc_iot, sc->sc_ioh, | | 872 | bus_space_write_1(sc->sc_iot, sc->sc_ioh, |
873 | LOM2_CMD, lc->lc_cmd); | | 873 | LOM2_CMD, lc->lc_cmd); |