atkbdc_subr.c (46836) | atkbdc_subr.c (47296) |
---|---|
1/*- 2 * Copyright (c) 1999 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, 19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * | 1/*- 2 * Copyright (c) 1999 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, 19 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * |
26 * $Id: atkbdc_isa.c,v 1.4 1999/05/08 21:59:29 dfr Exp $ | 26 * $Id: atkbdc_isa.c,v 1.5 1999/05/09 20:45:53 peter Exp $ |
27 */ 28 29#include "atkbdc.h" 30#include "opt_kbd.h" 31 32#if NATKBDC > 0 33 34#include <sys/param.h> --- 25 unchanged lines hidden (view full) --- 60static int atkbdc_read_ivar(device_t bus, device_t dev, int index, 61 u_long *val); 62static int atkbdc_write_ivar(device_t bus, device_t dev, int index, 63 u_long val); 64 65static device_method_t atkbdc_methods[] = { 66 DEVMETHOD(device_probe, atkbdc_probe), 67 DEVMETHOD(device_attach, atkbdc_attach), | 27 */ 28 29#include "atkbdc.h" 30#include "opt_kbd.h" 31 32#if NATKBDC > 0 33 34#include <sys/param.h> --- 25 unchanged lines hidden (view full) --- 60static int atkbdc_read_ivar(device_t bus, device_t dev, int index, 61 u_long *val); 62static int atkbdc_write_ivar(device_t bus, device_t dev, int index, 63 u_long val); 64 65static device_method_t atkbdc_methods[] = { 66 DEVMETHOD(device_probe, atkbdc_probe), 67 DEVMETHOD(device_attach, atkbdc_attach), |
68 DEVMETHOD(device_suspend, bus_generic_suspend), 69 DEVMETHOD(device_resume, bus_generic_resume), |
|
68 69 DEVMETHOD(bus_print_child, atkbdc_print_child), 70 DEVMETHOD(bus_read_ivar, atkbdc_read_ivar), 71 DEVMETHOD(bus_write_ivar, atkbdc_write_ivar), 72 DEVMETHOD(bus_alloc_resource, bus_generic_alloc_resource), 73 DEVMETHOD(bus_release_resource, bus_generic_release_resource), 74 DEVMETHOD(bus_activate_resource, bus_generic_activate_resource), 75 DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource), --- 7 unchanged lines hidden (view full) --- 83 ATKBDC_DRIVER_NAME, 84 atkbdc_methods, 85 sizeof(atkbdc_softc_t *), 86}; 87 88static int 89atkbdc_probe(device_t dev) 90{ | 70 71 DEVMETHOD(bus_print_child, atkbdc_print_child), 72 DEVMETHOD(bus_read_ivar, atkbdc_read_ivar), 73 DEVMETHOD(bus_write_ivar, atkbdc_write_ivar), 74 DEVMETHOD(bus_alloc_resource, bus_generic_alloc_resource), 75 DEVMETHOD(bus_release_resource, bus_generic_release_resource), 76 DEVMETHOD(bus_activate_resource, bus_generic_activate_resource), 77 DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource), --- 7 unchanged lines hidden (view full) --- 85 ATKBDC_DRIVER_NAME, 86 atkbdc_methods, 87 sizeof(atkbdc_softc_t *), 88}; 89 90static int 91atkbdc_probe(device_t dev) 92{ |
91 atkbdc_softc_t *sc; 92 int unit; | |
93 int error; 94 | 93 int error; 94 |
95 unit = device_get_unit(dev); 96 sc = *(atkbdc_softc_t **)device_get_softc(dev); 97 if (sc == NULL) { 98 /* 99 * We have to maintain two copies of the kbdc_softc struct, 100 * as the low-level console needs to have access to the 101 * keyboard controller before kbdc is probed and attached. 102 * kbdc_soft[] contains the default entry for that purpose. 103 * See atkbdc.c. XXX 104 */ 105 sc = atkbdc_get_softc(unit); 106 if (sc == NULL) 107 return ENOMEM; 108 } 109 | |
110 device_set_desc(dev, "keyboard controller (i8042)"); | 95 device_set_desc(dev, "keyboard controller (i8042)"); |
111 112 error = atkbdc_probe_unit(sc, unit, isa_get_port(dev)); | 96 error = atkbdc_probe_unit(device_get_unit(dev), isa_get_port(dev)); |
113 if (error == 0) | 97 if (error == 0) |
114 *(atkbdc_softc_t **)device_get_softc(dev) = sc; 115 | 98 isa_set_portsize(dev, IO_KBDSIZE); |
116 return error; 117} 118 119static void 120atkbdc_add_device(device_t dev, const char *name, int unit) 121{ 122 atkbdc_softc_t *sc = *(atkbdc_softc_t **)device_get_softc(dev); 123 atkbdc_device_t *kdev; --- 19 unchanged lines hidden (view full) --- 143 144 child = device_add_child(dev, name, unit, kdev); 145} 146 147static int 148atkbdc_attach(device_t dev) 149{ 150 atkbdc_softc_t *sc; | 99 return error; 100} 101 102static void 103atkbdc_add_device(device_t dev, const char *name, int unit) 104{ 105 atkbdc_softc_t *sc = *(atkbdc_softc_t **)device_get_softc(dev); 106 atkbdc_device_t *kdev; --- 19 unchanged lines hidden (view full) --- 126 127 child = device_add_child(dev, name, unit, kdev); 128} 129 130static int 131atkbdc_attach(device_t dev) 132{ 133 atkbdc_softc_t *sc; |
134 int unit; 135 int error; |
|
151 int i; 152 | 136 int i; 137 |
138 unit = device_get_unit(dev); |
|
153 sc = *(atkbdc_softc_t **)device_get_softc(dev); | 139 sc = *(atkbdc_softc_t **)device_get_softc(dev); |
154 if ((sc == NULL) || (sc->port <= 0)) 155 return ENXIO; | 140 if (sc == NULL) { 141 /* 142 * We have to maintain two copies of the kbdc_softc struct, 143 * as the low-level console needs to have access to the 144 * keyboard controller before kbdc is probed and attached. 145 * kbdc_soft[] contains the default entry for that purpose. 146 * See atkbdc.c. XXX 147 */ 148 sc = atkbdc_get_softc(unit); 149 if (sc == NULL) 150 return ENOMEM; 151 } |
156 | 152 |
153 error = atkbdc_attach_unit(unit, sc, isa_get_port(dev)); 154 if (error) 155 return error; 156 *(atkbdc_softc_t **)device_get_softc(dev) = sc; 157 |
|
157 /* 158 * Add all devices configured to be attached to atkbdc0. 159 */ 160 for (i = resource_query_string(-1, "at", "atkbdc0"); 161 i != -1; 162 i = resource_query_string(i, "at", "atkbdc0")) { 163 atkbdc_add_device(dev, resource_query_name(i), 164 resource_query_unit(i)); --- 79 unchanged lines hidden --- | 158 /* 159 * Add all devices configured to be attached to atkbdc0. 160 */ 161 for (i = resource_query_string(-1, "at", "atkbdc0"); 162 i != -1; 163 i = resource_query_string(i, "at", "atkbdc0")) { 164 atkbdc_add_device(dev, resource_query_name(i), 165 resource_query_unit(i)); --- 79 unchanged lines hidden --- |