Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  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
135 
  This page was automatically generated by the LXR engine.