]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blame - drivers/usb/serial/io_edgeport.h
[PATCH] USB: Use ARRAY_SIZE macro
[mirror_ubuntu-zesty-kernel.git] / drivers / usb / serial / io_edgeport.h
CommitLineData
1da177e4
LT
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 TRUE
23 #define TRUE (1)
24#endif
25#ifndef FALSE
26 #define FALSE (0)
27#endif
28#ifndef LOW8
29 #define LOW8(a) ((unsigned char)(a & 0xff))
30#endif
31#ifndef HIGH8
32 #define HIGH8(a) ((unsigned char)((a & 0xff00) >> 8))
33#endif
1da177e4
LT
34
35#ifndef __KERNEL__
36#define __KERNEL__
37#endif
38
39#include "io_usbvend.h"
40
41
42
43/* The following table is used to map the USBx port number to
44 * the device serial number (or physical USB path), */
45#define MAX_EDGEPORTS 64
46
47struct comMapper {
48 char SerialNumber[MAX_SERIALNUMBER_LEN+1]; /* Serial number/usb path */
49 int numPorts; /* Number of ports */
50 int Original[MAX_RS232_PORTS]; /* Port numbers set by IOCTL */
51 int Port[MAX_RS232_PORTS]; /* Actual used port numbers */
52};
53
54
55#define EDGEPORT_CONFIG_DEVICE "/proc/edgeport"
56
57/* /proc/edgeport Interface
58 * This interface uses read/write/lseek interface to talk to the edgeport driver
59 * the following read functions are supported: */
60#define PROC_GET_MAPPING_TO_PATH 1
61#define PROC_GET_COM_ENTRY 2
62#define PROC_GET_EDGE_MANUF_DESCRIPTOR 3
63#define PROC_GET_BOOT_DESCRIPTOR 4
64#define PROC_GET_PRODUCT_INFO 5
65#define PROC_GET_STRINGS 6
66#define PROC_GET_CURRENT_COM_MAPPING 7
67
68/* The parameters to the lseek() for the read is: */
69#define PROC_READ_SETUP(Command, Argument) ((Command) + ((Argument)<<8))
70
71
72/* the following write functions are supported: */
73#define PROC_SET_COM_MAPPING 1
74#define PROC_SET_COM_ENTRY 2
75
76
77/* The following sturcture is passed to the write */
78struct procWrite {
79 int Command;
80 union {
81 struct comMapper Entry;
82 int ComMappingBasedOnUSBPort; /* Boolean value */
83 } u;
84};
85
86/*
87 * Product information read from the Edgeport
88 */
89struct edgeport_product_info {
90 __u16 ProductId; /* Product Identifier */
91 __u8 NumPorts; /* Number of ports on edgeport */
92 __u8 ProdInfoVer; /* What version of structure is this? */
93
94 __u32 IsServer :1; /* Set if Server */
95 __u32 IsRS232 :1; /* Set if RS-232 ports exist */
96 __u32 IsRS422 :1; /* Set if RS-422 ports exist */
97 __u32 IsRS485 :1; /* Set if RS-485 ports exist */
98 __u32 IsReserved :28; /* Reserved for later expansion */
99
100 __u8 RomSize; /* Size of ROM/E2PROM in K */
101 __u8 RamSize; /* Size of external RAM in K */
102 __u8 CpuRev; /* CPU revision level (chg only if s/w visible) */
103 __u8 BoardRev; /* PCB revision level (chg only if s/w visible) */
104
105 __u8 BootMajorVersion; /* Boot Firmware version: xx. */
106 __u8 BootMinorVersion; /* yy. */
107 __le16 BootBuildNumber; /* zzzz (LE format) */
108
109 __u8 FirmwareMajorVersion; /* Operational Firmware version:xx. */
110 __u8 FirmwareMinorVersion; /* yy. */
111 __le16 FirmwareBuildNumber; /* zzzz (LE format) */
112
113 __u8 ManufactureDescDate[3]; /* MM/DD/YY when descriptor template was compiled */
114 __u8 Unused1[1]; /* Available */
115
116 __u8 iDownloadFile; /* What to download to EPiC device */
117 __u8 Unused2[2]; /* Available */
118};
119
120/*
121 * Edgeport Stringblock String locations
122 */
123#define EDGESTRING_MANUFNAME 1 /* Manufacture Name */
124#define EDGESTRING_PRODNAME 2 /* Product Name */
125#define EDGESTRING_SERIALNUM 3 /* Serial Number */
126#define EDGESTRING_ASSEMNUM 4 /* Assembly Number */
127#define EDGESTRING_OEMASSEMNUM 5 /* OEM Assembly Number */
128#define EDGESTRING_MANUFDATE 6 /* Manufacture Date */
129#define EDGESTRING_ORIGSERIALNUM 7 /* Serial Number */
130
131struct string_block {
132 __u16 NumStrings; /* Number of strings in block */
133 __u16 Strings[1]; /* Start of string block */
134};
135
136
137
138#endif