Lines Matching refs:ss
98 /* mustek_attach: attach special functions to ss */
100 mustek_attach(struct ss_softc *ss, struct scsipibus_attach_args *sa)
107 ss->sio.scan_scanner_type = 0;
109 printf("\n%s: ", device_xname(ss->sc_dev));
113 ss->sio.scan_scanner_type = MUSTEK_06000CX;
118 ss->sio.scan_scanner_type = MUSTEK_12000CX;
124 ss->sio.scan_scanner_type));
127 ss->special = &mustek_special;
133 ss->sio.scan_width = 1200;
134 ss->sio.scan_height = 1200;
135 ss->sio.scan_x_resolution = 99;
136 ss->sio.scan_y_resolution = 99;
137 ss->sio.scan_x_origin = 0;
138 ss->sio.scan_y_origin = 0;
139 ss->sio.scan_brightness = 100;
140 ss->sio.scan_contrast = 100;
141 ss->sio.scan_quality = 100;
142 ss->sio.scan_image_mode = SIM_GRAYSCALE;
144 mustek_compute_sizes(ss);
148 mustek_get_params (struct ss_softc *ss)
159 mustek_set_params(struct ss_softc *ss, struct scan_io *sio)
164 if (ss->flags & SSF_TRIGGERED) {
165 error = mustek_rewind_scanner(ss);
233 sio->scan_scanner_type = ss->sio.scan_scanner_type;
234 memcpy(&ss->sio, sio, sizeof(struct scan_io));
236 mustek_compute_sizes(ss);
249 mustek_minphys(struct ss_softc *ss, struct buf *bp)
252 struct scsipi_periph *periph = ss->sc_periph;
258 ((ss->sio.scan_pixels_per_line * ss->sio.scan_bits_per_pixel) / 8);
269 mustek_trigger_scanner(struct ss_softc *ss)
276 struct scsipi_periph *periph = ss->sc_periph;
280 mustek_compute_sizes(ss);
293 pixel_tlx = ss->sio.scan_x_origin / 150;
294 pixel_tly = ss->sio.scan_y_origin / 150;
295 pixel_brx = pixel_tlx + ss->sio.scan_width / 150;
296 pixel_bry = pixel_tly + ss->sio.scan_height / 150;
298 pixel_tlx = (ss->sio.scan_x_origin * ss->sio.scan_x_resolution) / 1200;
299 pixel_tly = (ss->sio.scan_y_origin * ss->sio.scan_y_resolution) / 1200;
301 (ss->sio.scan_width * ss->sio.scan_x_resolution) / 1200;
303 (ss->sio.scan_height * ss->sio.scan_y_resolution) / 1200;
333 if (ss->sio.scan_x_resolution <= 300)
334 mode_data.resolution = ss->sio.scan_x_resolution / 3;
341 ((ss->sio.scan_x_resolution - 1) % 100) + 1;
343 mode_data.brightness = (ss->sio.scan_brightness - 64) / 3;
344 mode_data.contrast = (ss->sio.scan_contrast - 16) / 7;
346 mode_data.velocity = ss->sio.scan_quality / 20 - 1;
350 paperlength = 14 * ss->sio.scan_y_resolution; /* 14" */
368 if (ss->sio.scan_x_resolution <= 300)
372 switch (ss->sio.scan_image_mode) {
406 error = mustek_get_status(ss, 60, 1);
415 mustek_rewind_scanner(struct ss_softc *ss)
418 struct scsipi_periph *periph = ss->sc_periph;
421 if (ss->sio.scan_window_size != 0) {
448 mustek_read(struct ss_softc *ss, struct buf *bp)
452 struct scsipi_periph *periph = ss->sc_periph;
463 ((ss->sio.scan_pixels_per_line * ss->sio.scan_bits_per_pixel) / 8);
479 callout_reset(&ss->sc_callout, hz / 2, ssrestart,
484 if (bufq_get(ss->buf_queue) != bp)
487 bufq_get(ss->buf_queue);
492 ss->sio.scan_lines -= lines_to_read;
494 if (ss->sio.scan_lines < 0)
495 ss->sio.scan_lines = 0;
497 ss->sio.scan_window_size -= bp->b_bcount;
499 if (ss->sio.scan_window_size < 0)
500 ss->sio.scan_window_size = 0;
513 mustek_get_status(struct ss_softc *ss, int timeout, int update)
517 struct scsipi_periph *periph = ss->sc_periph;
541 if (lines != ss->sio.scan_lines) {
543 lines, ss->sio.scan_lines);
546 if (bytes_per_line * lines != ss->sio.scan_window_size) {
548 bytes_per_line * lines, ss->sio.scan_window_size);
554 (ss->sio.scan_pixels_per_line * ss->sio.scan_bits_per_pixel)
555 / 8, ss->sio.scan_lines));
557 ss->sio.scan_window_size));
572 mustek_compute_sizes(struct ss_softc *ss)
575 switch (ss->sio.scan_image_mode) {
578 ss->sio.scan_bits_per_pixel = 1;
584 ss->sio.scan_bits_per_pixel = 8;
592 ss->sio.scan_pixels_per_line =
593 (ss->sio.scan_width * ss->sio.scan_x_resolution) / 1200;
594 if (ss->sio.scan_bits_per_pixel == 1)
596 ss->sio.scan_pixels_per_line =
597 (ss->sio.scan_pixels_per_line + 15) & 0xfffffff0;
599 ss->sio.scan_pixels_per_line =
600 (ss->sio.scan_pixels_per_line + 1) & 0xfffffffe;
602 ss->sio.scan_lines =
603 (ss->sio.scan_height * ss->sio.scan_y_resolution) / 1200;
604 ss->sio.scan_window_size = ss->sio.scan_lines *
605 ((ss->sio.scan_pixels_per_line * ss->sio.scan_bits_per_pixel) / 8);