159 static int kb8042_wsrv();
160
161 struct module_info kb8042_sinfo = {
162 42, /* Module ID */
163 module_name,
164 0, 32, /* Minimum and maximum packet sizes */
165 256, 128 /* High and low water marks */
166 };
167
168 static struct qinit kb8042_rinit = {
169 NULL, NULL, kb8042_open, kb8042_close, NULL, &kb8042_sinfo, NULL
170 };
171
172 static struct qinit kb8042_winit = {
173 putq, kb8042_wsrv, kb8042_open, kb8042_close, NULL, &kb8042_sinfo, NULL
174 };
175
176 struct streamtab
177 kb8042_str_info = { &kb8042_rinit, &kb8042_winit, NULL, NULL };
178
179 struct kb8042 Kdws = {0};
180 static dev_info_t *kb8042_dip = NULL;
181
182 static int kb8042_getinfo(dev_info_t *dip, ddi_info_cmd_t infocmd, void *arg,
183 void **result);
184 static int kb8042_attach(dev_info_t *, ddi_attach_cmd_t);
185 static int kb8042_detach(dev_info_t *, ddi_detach_cmd_t);
186
187 static struct cb_ops cb_kb8042_ops = {
188 nulldev, /* cb_open */
189 nulldev, /* cb_close */
190 nodev, /* cb_strategy */
191 nodev, /* cb_print */
192 nodev, /* cb_dump */
193 nodev, /* cb_read */
194 nodev, /* cb_write */
195 nodev, /* cb_ioctl */
196 nodev, /* cb_devmap */
197 nodev, /* cb_mmap */
198 nodev, /* cb_segmap */
199 nochpoll, /* cb_chpoll */
217 ddi_quiesce_not_needed, /* devo_quiesce */
218 };
219
220
221 /*
222 * This is the loadable module wrapper.
223 */
224 #include <sys/modctl.h>
225
226 /*
227 * Module linkage information for the kernel.
228 */
229 static struct modldrv modldrv = {
230 &mod_driverops, /* Type of module. This one is a driver */
231 "PS/2 keyboard driver",
232 &kb8042_ops, /* driver ops */
233 };
234
235 static struct modlinkage modlinkage = {
236 MODREV_1,
237 (void *) &modldrv,
238 NULL
239 };
240
241 int
242 _init(void)
243 {
244 int rv;
245
246 rv = mod_install(&modlinkage);
247 return (rv);
248 }
249
250
251 int
252 _fini(void)
253 {
254 return (mod_remove(&modlinkage));
255 }
256
257 int
258 _info(struct modinfo *modinfop)
|
159 static int kb8042_wsrv();
160
161 struct module_info kb8042_sinfo = {
162 42, /* Module ID */
163 module_name,
164 0, 32, /* Minimum and maximum packet sizes */
165 256, 128 /* High and low water marks */
166 };
167
168 static struct qinit kb8042_rinit = {
169 NULL, NULL, kb8042_open, kb8042_close, NULL, &kb8042_sinfo, NULL
170 };
171
172 static struct qinit kb8042_winit = {
173 putq, kb8042_wsrv, kb8042_open, kb8042_close, NULL, &kb8042_sinfo, NULL
174 };
175
176 struct streamtab
177 kb8042_str_info = { &kb8042_rinit, &kb8042_winit, NULL, NULL };
178
179 struct kb8042 Kdws = {{{NULL}}};
180 static dev_info_t *kb8042_dip = NULL;
181
182 static int kb8042_getinfo(dev_info_t *dip, ddi_info_cmd_t infocmd, void *arg,
183 void **result);
184 static int kb8042_attach(dev_info_t *, ddi_attach_cmd_t);
185 static int kb8042_detach(dev_info_t *, ddi_detach_cmd_t);
186
187 static struct cb_ops cb_kb8042_ops = {
188 nulldev, /* cb_open */
189 nulldev, /* cb_close */
190 nodev, /* cb_strategy */
191 nodev, /* cb_print */
192 nodev, /* cb_dump */
193 nodev, /* cb_read */
194 nodev, /* cb_write */
195 nodev, /* cb_ioctl */
196 nodev, /* cb_devmap */
197 nodev, /* cb_mmap */
198 nodev, /* cb_segmap */
199 nochpoll, /* cb_chpoll */
217 ddi_quiesce_not_needed, /* devo_quiesce */
218 };
219
220
221 /*
222 * This is the loadable module wrapper.
223 */
224 #include <sys/modctl.h>
225
226 /*
227 * Module linkage information for the kernel.
228 */
229 static struct modldrv modldrv = {
230 &mod_driverops, /* Type of module. This one is a driver */
231 "PS/2 keyboard driver",
232 &kb8042_ops, /* driver ops */
233 };
234
235 static struct modlinkage modlinkage = {
236 MODREV_1,
237 { (void *) &modldrv, NULL }
238 };
239
240 int
241 _init(void)
242 {
243 int rv;
244
245 rv = mod_install(&modlinkage);
246 return (rv);
247 }
248
249
250 int
251 _fini(void)
252 {
253 return (mod_remove(&modlinkage));
254 }
255
256 int
257 _info(struct modinfo *modinfop)
|