blob: 266f3617069d31724487fb33175d3a9d23dadde6 [file] [log] [blame]
/**
* ipoctal.h
*
* driver for the IPOCTAL boards
* Copyright (c) 2009 Nicolas Serafini, EIC2 SA
* Copyright (c) 2010,2011 Samuel Iglesias Gonsalvez <siglesia@cern.ch>, CERN
* Copyright (c) 2012 Samuel Iglesias Gonsalvez <siglesias@igalia.com>, Igalia
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; version 2 of the License.
*/
#ifndef _IPOCTAL_H
#define _IPOCTAL_H_
#define NR_CHANNELS 8
#define IPOCTAL_MAX_BOARDS 16
#define MAX_DEVICES (NR_CHANNELS * IPOCTAL_MAX_BOARDS)
#define RELEVANT_IFLAG(iflag) ((iflag) & (IGNBRK|BRKINT|IGNPAR|PARMRK|INPCK))
/**
* enum uart_parity_e - UART supported parity.
*/
enum uart_parity_e {
UART_NONE = 0,
UART_ODD = 1,
UART_EVEN = 2,
};
/**
* enum uart_error - UART error type
*
*/
enum uart_error {
UART_NOERROR = 0, /* No error during transmission */
UART_TIMEOUT = 1 << 0, /* Timeout error */
UART_OVERRUN = 1 << 1, /* Overrun error */
UART_PARITY = 1 << 2, /* Parity error */
UART_FRAMING = 1 << 3, /* Framing error */
UART_BREAK = 1 << 4, /* Received break */
};
/**
* struct ipoctal_config - Serial configuration
*
* @baud: Baud rate
* @stop_bits: Stop bits (1 or 2)
* @bits_per_char: data size in bits
* @parity
* @flow_control: Flow control management (RTS/CTS) (0 disabled, 1 enabled)
*/
struct ipoctal_config {
unsigned int baud;
unsigned int stop_bits;
unsigned int bits_per_char;
unsigned short parity;
unsigned int flow_control;
};
/**
* struct ipoctal_stats -- Stats since last reset
*
* @tx: Number of transmitted bytes
* @rx: Number of received bytes
* @overrun: Number of overrun errors
* @parity_err: Number of parity errors
* @framing_err: Number of framing errors
* @rcv_break: Number of break received
*/
struct ipoctal_stats {
unsigned long tx;
unsigned long rx;
unsigned long overrun_err;
unsigned long parity_err;
unsigned long framing_err;
unsigned long rcv_break;
};
#endif /* _IPOCTAL_H_ */