Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland...
[linux-2.6] / drivers / usb / serial / io_edgeport.h
1 /************************************************************************
2  *
3  *      io_edgeport.h   Edgeport Linux Interface definitions
4  *
5  *      Copyright (C) 2000 Inside Out Networks, Inc.
6  *
7  *      This program is free software; you can redistribute it and/or modify
8  *      it under the terms of the GNU General Public License as published by
9  *      the Free Software Foundation; either version 2 of the License, or
10  *      (at your option) any later version.
11  *
12  *
13  ************************************************************************/
14
15 #if !defined(_IO_EDGEPORT_H_)
16 #define _IO_EDGEPORT_H_
17
18
19 #define MAX_RS232_PORTS         8       /* Max # of RS-232 ports per device */
20
21 /* typedefs that the insideout headers need */
22 #ifndef LOW8
23         #define LOW8(a)         ((unsigned char)(a & 0xff))
24 #endif
25 #ifndef HIGH8
26         #define HIGH8(a)        ((unsigned char)((a & 0xff00) >> 8))
27 #endif
28
29 #ifndef __KERNEL__
30 #define __KERNEL__
31 #endif
32
33 #include "io_usbvend.h"
34
35
36
37 /* The following table is used to map the USBx port number to 
38  * the device serial number (or physical USB path), */
39 #define MAX_EDGEPORTS   64
40
41 struct comMapper {
42         char    SerialNumber[MAX_SERIALNUMBER_LEN+1];   /* Serial number/usb path */
43         int     numPorts;                               /* Number of ports */
44         int     Original[MAX_RS232_PORTS];              /* Port numbers set by IOCTL */
45         int     Port[MAX_RS232_PORTS];                  /* Actual used port numbers */
46 };
47
48
49 #define EDGEPORT_CONFIG_DEVICE "/proc/edgeport"
50
51 /* /proc/edgeport Interface
52  * This interface uses read/write/lseek interface to talk to the edgeport driver
53  * the following read functions are supported: */
54 #define PROC_GET_MAPPING_TO_PATH        1
55 #define PROC_GET_COM_ENTRY              2
56 #define PROC_GET_EDGE_MANUF_DESCRIPTOR  3
57 #define PROC_GET_BOOT_DESCRIPTOR        4
58 #define PROC_GET_PRODUCT_INFO           5
59 #define PROC_GET_STRINGS                6
60 #define PROC_GET_CURRENT_COM_MAPPING    7
61
62 /* The parameters to the lseek() for the read is: */
63 #define PROC_READ_SETUP(Command, Argument)      ((Command) + ((Argument)<<8))
64
65
66 /* the following write functions are supported: */
67 #define PROC_SET_COM_MAPPING            1
68 #define PROC_SET_COM_ENTRY              2
69
70
71 /* The following sturcture is passed to the write */
72 struct procWrite {
73         int     Command;
74         union {
75                 struct comMapper        Entry;
76                 int                     ComMappingBasedOnUSBPort;       /* Boolean value */
77         } u;
78 };
79
80 /*
81  *      Product information read from the Edgeport
82  */
83 struct edgeport_product_info {
84         __u16   ProductId;                      /* Product Identifier */
85         __u8    NumPorts;                       /* Number of ports on edgeport */
86         __u8    ProdInfoVer;                    /* What version of structure is this? */
87
88         __u32   IsServer        :1;             /* Set if Server */
89         __u32   IsRS232         :1;             /* Set if RS-232 ports exist */
90         __u32   IsRS422         :1;             /* Set if RS-422 ports exist */
91         __u32   IsRS485         :1;             /* Set if RS-485 ports exist */
92         __u32   IsReserved      :28;            /* Reserved for later expansion */
93
94         __u8    RomSize;                        /* Size of ROM/E2PROM in K */
95         __u8    RamSize;                        /* Size of external RAM in K */
96         __u8    CpuRev;                         /* CPU revision level (chg only if s/w visible) */
97         __u8    BoardRev;                       /* PCB revision level (chg only if s/w visible) */
98
99         __u8    BootMajorVersion;               /* Boot Firmware version: xx. */
100         __u8    BootMinorVersion;               /*                        yy. */
101         __le16  BootBuildNumber;                /*                        zzzz (LE format) */
102
103         __u8    FirmwareMajorVersion;           /* Operational Firmware version:xx. */
104         __u8    FirmwareMinorVersion;           /*                              yy. */
105         __le16  FirmwareBuildNumber;            /*                              zzzz (LE format) */
106
107         __u8    ManufactureDescDate[3];         /* MM/DD/YY when descriptor template was compiled */
108         __u8    HardwareType;
109
110         __u8    iDownloadFile;                  /* What to download to EPiC device */
111         __u8    EpicVer;                        /* What version of EPiC spec this device supports */
112
113         struct edge_compatibility_bits Epic;
114 };
115
116 /*
117  *      Edgeport Stringblock String locations
118  */
119 #define EDGESTRING_MANUFNAME            1       /* Manufacture Name */
120 #define EDGESTRING_PRODNAME             2       /* Product Name */
121 #define EDGESTRING_SERIALNUM            3       /* Serial Number */
122 #define EDGESTRING_ASSEMNUM             4       /* Assembly Number */
123 #define EDGESTRING_OEMASSEMNUM          5       /* OEM Assembly Number */
124 #define EDGESTRING_MANUFDATE            6       /* Manufacture Date */
125 #define EDGESTRING_ORIGSERIALNUM        7       /* Serial Number */
126
127 struct string_block {
128         __u16   NumStrings;                     /* Number of strings in block */
129         __u16   Strings[1];                     /* Start of string block */
130 };
131
132
133
134 #endif