|
@@ -92,14 +92,12 @@ struct board_ops dgnc_cls_ops = {
|
|
|
.send_immediate_char = cls_send_immediate_char
|
|
|
};
|
|
|
|
|
|
-
|
|
|
static inline void cls_set_cts_flow_control(struct channel_t *ch)
|
|
|
{
|
|
|
unsigned char lcrb = readb(&ch->ch_cls_uart->lcr);
|
|
|
unsigned char ier = readb(&ch->ch_cls_uart->ier);
|
|
|
unsigned char isr_fcr = 0;
|
|
|
|
|
|
-
|
|
|
/*
|
|
|
* The Enhanced Register Set may only be accessed when
|
|
|
* the Line Control Register is set to 0xBFh.
|
|
@@ -136,14 +134,12 @@ static inline void cls_set_cts_flow_control(struct channel_t *ch)
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
static inline void cls_set_ixon_flow_control(struct channel_t *ch)
|
|
|
{
|
|
|
unsigned char lcrb = readb(&ch->ch_cls_uart->lcr);
|
|
|
unsigned char ier = readb(&ch->ch_cls_uart->ier);
|
|
|
unsigned char isr_fcr = 0;
|
|
|
|
|
|
-
|
|
|
/*
|
|
|
* The Enhanced Register Set may only be accessed when
|
|
|
* the Line Control Register is set to 0xBFh.
|
|
@@ -184,14 +180,12 @@ static inline void cls_set_ixon_flow_control(struct channel_t *ch)
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
static inline void cls_set_no_output_flow_control(struct channel_t *ch)
|
|
|
{
|
|
|
unsigned char lcrb = readb(&ch->ch_cls_uart->lcr);
|
|
|
unsigned char ier = readb(&ch->ch_cls_uart->ier);
|
|
|
unsigned char isr_fcr = 0;
|
|
|
|
|
|
-
|
|
|
/*
|
|
|
* The Enhanced Register Set may only be accessed when
|
|
|
* the Line Control Register is set to 0xBFh.
|
|
@@ -230,14 +224,12 @@ static inline void cls_set_no_output_flow_control(struct channel_t *ch)
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
static inline void cls_set_rts_flow_control(struct channel_t *ch)
|
|
|
{
|
|
|
unsigned char lcrb = readb(&ch->ch_cls_uart->lcr);
|
|
|
unsigned char ier = readb(&ch->ch_cls_uart->ier);
|
|
|
unsigned char isr_fcr = 0;
|
|
|
|
|
|
-
|
|
|
/*
|
|
|
* The Enhanced Register Set may only be accessed when
|
|
|
* the Line Control Register is set to 0xBFh.
|
|
@@ -266,20 +258,17 @@ static inline void cls_set_rts_flow_control(struct channel_t *ch)
|
|
|
UART_16654_FCR_TXTRIGGER_16 | UART_FCR_CLEAR_RCVR),
|
|
|
&ch->ch_cls_uart->isr_fcr);
|
|
|
|
|
|
-
|
|
|
ch->ch_r_watermark = 4;
|
|
|
ch->ch_r_tlevel = 8;
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
static inline void cls_set_ixoff_flow_control(struct channel_t *ch)
|
|
|
{
|
|
|
unsigned char lcrb = readb(&ch->ch_cls_uart->lcr);
|
|
|
unsigned char ier = readb(&ch->ch_cls_uart->ier);
|
|
|
unsigned char isr_fcr = 0;
|
|
|
|
|
|
-
|
|
|
/*
|
|
|
* The Enhanced Register Set may only be accessed when
|
|
|
* the Line Control Register is set to 0xBFh.
|
|
@@ -316,14 +305,12 @@ static inline void cls_set_ixoff_flow_control(struct channel_t *ch)
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
static inline void cls_set_no_input_flow_control(struct channel_t *ch)
|
|
|
{
|
|
|
unsigned char lcrb = readb(&ch->ch_cls_uart->lcr);
|
|
|
unsigned char ier = readb(&ch->ch_cls_uart->ier);
|
|
|
unsigned char isr_fcr = 0;
|
|
|
|
|
|
-
|
|
|
/*
|
|
|
* The Enhanced Register Set may only be accessed when
|
|
|
* the Line Control Register is set to 0xBFh.
|
|
@@ -357,7 +344,6 @@ static inline void cls_set_no_input_flow_control(struct channel_t *ch)
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/*
|
|
|
* cls_clear_break.
|
|
|
* Determines whether its time to shut off break condition.
|
|
@@ -393,7 +379,6 @@ static inline void cls_clear_break(struct channel_t *ch, int force)
|
|
|
spin_unlock_irqrestore(&ch->ch_lock, flags);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/* Parse the ISR register for the specific port */
|
|
|
static inline void cls_parse_isr(struct dgnc_board *brd, uint port)
|
|
|
{
|
|
@@ -457,7 +442,6 @@ static inline void cls_parse_isr(struct dgnc_board *brd, uint port)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/*
|
|
|
* cls_param()
|
|
|
* Send any/all changes to the line to the UART.
|
|
@@ -711,7 +695,6 @@ static void cls_param(struct tty_struct *tty)
|
|
|
cls_parse_modem(ch, readb(&ch->ch_cls_uart->msr));
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/*
|
|
|
* Our board poller function.
|
|
|
*/
|
|
@@ -784,7 +767,6 @@ static void cls_tasklet(unsigned long data)
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/*
|
|
|
* cls_intr()
|
|
|
*
|
|
@@ -834,7 +816,6 @@ static irqreturn_t cls_intr(int irq, void *voidbrd)
|
|
|
return IRQ_HANDLED;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
static void cls_disable_receiver(struct channel_t *ch)
|
|
|
{
|
|
|
unsigned char tmp = readb(&ch->ch_cls_uart->ier);
|
|
@@ -843,7 +824,6 @@ static void cls_disable_receiver(struct channel_t *ch)
|
|
|
writeb(tmp, &ch->ch_cls_uart->ier);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
static void cls_enable_receiver(struct channel_t *ch)
|
|
|
{
|
|
|
unsigned char tmp = readb(&ch->ch_cls_uart->ier);
|
|
@@ -852,7 +832,6 @@ static void cls_enable_receiver(struct channel_t *ch)
|
|
|
writeb(tmp, &ch->ch_cls_uart->ier);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
static void cls_copy_data_from_uart_to_queue(struct channel_t *ch)
|
|
|
{
|
|
|
int qleft = 0;
|
|
@@ -942,7 +921,6 @@ static void cls_copy_data_from_uart_to_queue(struct channel_t *ch)
|
|
|
spin_unlock_irqrestore(&ch->ch_lock, flags);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/*
|
|
|
* This function basically goes to sleep for secs, or until
|
|
|
* it gets signalled that the port has fully drained.
|
|
@@ -978,7 +956,6 @@ static int cls_drain(struct tty_struct *tty, uint seconds)
|
|
|
((un->un_flags & UN_EMPTY) == 0));
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/* Channel lock MUST be held before calling this function! */
|
|
|
static void cls_flush_uart_write(struct channel_t *ch)
|
|
|
{
|
|
@@ -992,7 +969,6 @@ static void cls_flush_uart_write(struct channel_t *ch)
|
|
|
ch->ch_flags |= (CH_TX_FIFO_EMPTY | CH_TX_FIFO_LWM);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/* Channel lock MUST be held before calling this function! */
|
|
|
static void cls_flush_uart_read(struct channel_t *ch)
|
|
|
{
|
|
@@ -1013,7 +989,6 @@ static void cls_flush_uart_read(struct channel_t *ch)
|
|
|
udelay(10);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
static void cls_copy_data_from_queue_to_uart(struct channel_t *ch)
|
|
|
{
|
|
|
ushort head;
|
|
@@ -1097,7 +1072,6 @@ static void cls_copy_data_from_queue_to_uart(struct channel_t *ch)
|
|
|
spin_unlock_irqrestore(&ch->ch_lock, flags);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
static void cls_parse_modem(struct channel_t *ch, unsigned char signals)
|
|
|
{
|
|
|
unsigned char msignals = signals;
|
|
@@ -1162,7 +1136,6 @@ static void cls_parse_modem(struct channel_t *ch, unsigned char signals)
|
|
|
spin_unlock_irqrestore(&ch->ch_lock, flags);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/* Make the UART raise any of the output signals we want up */
|
|
|
static void cls_assert_modem_signals(struct channel_t *ch)
|
|
|
{
|
|
@@ -1182,7 +1155,6 @@ static void cls_assert_modem_signals(struct channel_t *ch)
|
|
|
udelay(10);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
static void cls_send_start_character(struct channel_t *ch)
|
|
|
{
|
|
|
if (!ch || ch->magic != DGNC_CHANNEL_MAGIC)
|
|
@@ -1194,7 +1166,6 @@ static void cls_send_start_character(struct channel_t *ch)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
static void cls_send_stop_character(struct channel_t *ch)
|
|
|
{
|
|
|
if (!ch || ch->magic != DGNC_CHANNEL_MAGIC)
|
|
@@ -1206,7 +1177,6 @@ static void cls_send_stop_character(struct channel_t *ch)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/* Inits UART */
|
|
|
static void cls_uart_init(struct channel_t *ch)
|
|
|
{
|
|
@@ -1244,7 +1214,6 @@ static void cls_uart_init(struct channel_t *ch)
|
|
|
readb(&ch->ch_cls_uart->msr);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/*
|
|
|
* Turns off UART.
|
|
|
*/
|
|
@@ -1253,7 +1222,6 @@ static void cls_uart_off(struct channel_t *ch)
|
|
|
writeb(0, &ch->ch_cls_uart->ier);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/*
|
|
|
* cls_get_uarts_bytes_left.
|
|
|
* Returns 0 is nothing left in the FIFO, returns 1 otherwise.
|
|
@@ -1283,7 +1251,6 @@ static uint cls_get_uart_bytes_left(struct channel_t *ch)
|
|
|
return left;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/*
|
|
|
* cls_send_break.
|
|
|
* Starts sending a break thru the UART.
|
|
@@ -1326,7 +1293,6 @@ static void cls_send_break(struct channel_t *ch, int msecs)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/*
|
|
|
* cls_send_immediate_char.
|
|
|
* Sends a specific character as soon as possible to the UART,
|
|
@@ -1348,7 +1314,6 @@ static void cls_vpd(struct dgnc_board *brd)
|
|
|
u8 __iomem *re_map_vpdbase;/* Remapped memory of the card */
|
|
|
int i = 0;
|
|
|
|
|
|
-
|
|
|
vpdbase = pci_resource_start(brd->pdev, 3);
|
|
|
|
|
|
/* No VPD */
|
|
@@ -1370,4 +1335,3 @@ static void cls_vpd(struct dgnc_board *brd)
|
|
|
if (re_map_vpdbase)
|
|
|
iounmap(re_map_vpdbase);
|
|
|
}
|
|
|
-
|