The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/scsipi/ss_mustek.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $NetBSD: ss_mustek.h,v 1.9 2005/12/11 12:23:51 christos Exp $   */
    2 
    3 /*
    4  * Copyright (c) 1995 Joachim Koenig-Baltes.  All rights reserved.
    5  *
    6  * Redistribution and use in source and binary forms, with or without
    7  * modification, are permitted provided that the following conditions
    8  * are met:
    9  * 1. Redistributions of source code must retain the above copyright
   10  *    notice, this list of conditions and the following disclaimer.
   11  * 2. Redistributions in binary form must reproduce the above copyright
   12  *    notice, this list of conditions and the following disclaimer in the
   13  *    documentation and/or other materials provided with the distribution.
   14  * 3. All advertising materials mentioning features or use of this software
   15  *    must display the following acknowledgement:
   16  *      This product includes software developed by Joachim Koenig-Baltes.
   17  * 4. The name of the author may not be used to endorse or promote products
   18  *    derived from this software without specific prior written permission.
   19  *
   20  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   21  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   22  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   23  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   24  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   25  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   26  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   27  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   28  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   29  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   30  */
   31 
   32 /*
   33  * support for MUSTEK flatbed SCSI scanners MFS-06000CX and MFS-12000CX
   34  * (600 and 1200 dpi horizontally resp), not conforming to the SCSI2 spec.
   35  */
   36 
   37 /*
   38  * Configuration section: describes the mode in which scanner is driven
   39  * MUSTEK_INCH_SPEC: frame/window sizes are given in inches instead of
   40  *     pixels, note: unit is 1/8th of an inch
   41  * MUSTEK_WINDOWS: number of windows in a frame, up to 4 allowed,
   42  *     not used yet, so set to 0
   43  */
   44 #define MUSTEK_INCH_SPEC                /* use inches to specify sizes */
   45 #define MUSTEK_WINDOWS          0       /* no window support yet */
   46 
   47 /* mustek scsi commands */
   48 #define MUSTEK_SET_WINDOW       0x04    /* set image area and windows */
   49 #define MUSTEK_READ             0x08    /* read command */
   50 #define MUSTEK_GET_STATUS       0x0f    /* image status */
   51 #define MUSTEK_MODE_SELECT      0x15    /* set resolution, paper length, .. */
   52 #define MUSTEK_ADF              0x10    /* ADF and backtracking selection */
   53 #define MUSTEK_START_STOP       0x1b    /* start/stop scan */
   54 #define MUSTEK_LUT              0x55    /* look up table download */
   55 
   56 /* the size spec is at the same bit position in different commands */
   57 #define MUSTEK_UNIT_INCHES              0x00
   58 #define MUSTEK_UNIT_PIXELS              0x08
   59 #ifdef MUSTEK_INCH_SPEC
   60 #define MUSTEK_UNIT_SPEC        MUSTEK_UNIT_INCHES
   61 #else
   62 #define MUSTEK_UNIT_SPEC        MUSTEK_UNIT_PIXELS
   63 #endif
   64 
   65 /*
   66  * SCSI command formats
   67  */
   68 
   69 struct mustek_set_window_cmd {
   70         u_int8_t opcode;                /* 0x04 */
   71         u_int8_t reserved[3];
   72         u_int8_t length;                /* in bytes */
   73         u_int8_t control;
   74 };
   75 
   76 struct mustek_window {
   77         u_int8_t header;                /* unit-defines also apply */
   78         u_int8_t tl_x[2];               /* LSB */
   79         u_int8_t tl_y[2];
   80         u_int8_t br_x[2];
   81         u_int8_t br_y[2];
   82 };
   83 
   84 struct mustek_set_window_data {
   85 #define MUSTEK_LINEART_BACKGROUND       0x00
   86 #define MUSTEK_HALFTONE_BACKGROUND      0x01
   87         struct  mustek_window frame;
   88 #if MUSTEK_WINDOWS >= 1
   89 #define MUSTEK_WINDOW_MASK      0x80
   90         struct  mustek_window window1;
   91 #endif
   92 #if MUSTEK_WINDOWS >= 2
   93         struct  mustek_window window2;
   94 #endif
   95 #if MUSTEK_WINDOWS >= 3
   96         struct  mustek_window window3;
   97 #endif
   98 #if MUSTEK_WINDOWS >= 4
   99         struct  mustek_window window4;
  100 #endif
  101 };
  102 
  103 struct mustek_read_cmd {
  104         u_int8_t opcode;                /* 0x08 */
  105         u_int8_t reserved;
  106         u_int8_t length[3];
  107         u_int8_t control;
  108 };
  109 
  110 struct mustek_get_status_cmd {
  111         u_int8_t opcode;                /* 0x0f */
  112         u_int8_t reserved[3];
  113         u_int8_t length;                /* 0x06 */
  114         u_int8_t control;
  115 };
  116 
  117 struct mustek_get_status_data {
  118 #define MUSTEK_READY 0
  119 #define MUSTEK_BUSY  -1
  120         u_int8_t ready_busy;            /* 0 = ready */
  121         u_int8_t bytes_per_line[2];     /* LSB */
  122         u_int8_t lines[3];              /* LSB */
  123 };
  124 
  125 struct mustek_mode_select_cmd {
  126         u_int8_t opcode;                /* 0x15 */
  127         u_int8_t reserved[2];
  128         u_int8_t length[2];
  129         u_int8_t control;
  130 };
  131 
  132 /*
  133  * resolution settings:
  134  *   MFS06000CX:
  135  *   1% : 0x01 0x02 ... 0x64
  136  *           3    6 ...  300 dpi
  137  *   10%: 0x1e 0x3c 0x5a 0x14 0x32 0x50 0x0a 0x28 0x46 0x64
  138  *         330  360  390  420  450  480  510  540  570  600 dpi
  139  *   MFS12000CX:
  140  *   1% : 0x01 0x02 ... 0x64
  141  *           6   12 ...  600 dpi
  142  *   10%: 0x1e 0x3c 0x5a 0x14 0x32 0x50 0x0a 0x28 0x46 0x64
  143  *         660  720  780  840  900  960 1020 1080 1140 1200 dpi
  144  */
  145 struct mustek_mode_select_data {
  146 #define MUSTEK_MODE_MASK                0x83
  147 #define MUSTEK_HT_PATTERN_BUILTIN       0x00
  148 #define MUSTEK_HT_PATTERN_DOWNLOADED    0x10
  149         u_int8_t mode;
  150         u_int8_t resolution;
  151         u_int8_t brightness;
  152         u_int8_t contrast;
  153         u_int8_t grain;                 /* 0 = 8x8, .....  5 = 2x2  */
  154         u_int8_t velocity;              /* 0 = fast, ...., 4 = slow */
  155         u_int8_t reserved[2];
  156         u_int8_t paperlength[2];        /* LSB */
  157 };
  158 
  159 struct mustek_start_scan_cmd {
  160         u_int8_t opcode;                /* 0x1b */
  161         u_int8_t reserved[3];
  162 #define MUSTEK_SCAN_STOP        0x00
  163 #define MUSTEK_SCAN_START       0x01
  164 #define MUSTEK_GRAY_FILTER      0x00
  165 #define MUSTEK_RED_FILTER       0x08
  166 #define MUSTEK_GREEN_FILTER     0x10
  167 #define MUSTEK_BLUE_FILTER      0x18
  168 #define MUSTEK_GRAY_MODE        0x40
  169 #define MUSTEK_BIT_MODE         0x00
  170 #define MUSTEK_RES_STEP_1       0x00
  171 #define MUSTEK_RES_STEP_10      0x80
  172         u_int8_t mode;
  173         u_int8_t control;
  174 };

Cache object: cd68193a34ceb677c53155446c502cae


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.