Lines Matching refs:channel
55 #define ZS_WSYNC(channel) do { } while (0) argument
113 static unsigned char read_zsreg(struct zilog_channel *channel, in read_zsreg() argument
118 writeb(reg, &channel->control); in read_zsreg()
120 retval = readb(&channel->control); in read_zsreg()
126 static void write_zsreg(struct zilog_channel *channel, in write_zsreg() argument
129 writeb(reg, &channel->control); in write_zsreg()
131 writeb(value, &channel->control); in write_zsreg()
135 static void ip22zilog_clear_fifo(struct zilog_channel *channel) in ip22zilog_clear_fifo() argument
142 regval = readb(&channel->control); in ip22zilog_clear_fifo()
147 regval = read_zsreg(channel, R1); in ip22zilog_clear_fifo()
148 readb(&channel->data); in ip22zilog_clear_fifo()
152 writeb(ERR_RES, &channel->control); in ip22zilog_clear_fifo()
154 ZS_WSYNC(channel); in ip22zilog_clear_fifo()
162 static void __load_zsregs(struct zilog_channel *channel, unsigned char *regs) in __load_zsregs() argument
168 unsigned char stat = read_zsreg(channel, R1); in __load_zsregs()
174 writeb(ERR_RES, &channel->control); in __load_zsregs()
176 ZS_WSYNC(channel); in __load_zsregs()
178 ip22zilog_clear_fifo(channel); in __load_zsregs()
181 write_zsreg(channel, R1, in __load_zsregs()
185 write_zsreg(channel, R4, regs[R4]); in __load_zsregs()
188 write_zsreg(channel, R10, regs[R10]); in __load_zsregs()
191 write_zsreg(channel, R3, regs[R3] & ~RxENAB); in __load_zsregs()
192 write_zsreg(channel, R5, regs[R5] & ~TxENAB); in __load_zsregs()
195 write_zsreg(channel, R6, regs[R6]); in __load_zsregs()
196 write_zsreg(channel, R7, regs[R7]); in __load_zsregs()
204 write_zsreg(channel, R14, regs[R14] & ~BRENAB); in __load_zsregs()
207 write_zsreg(channel, R11, regs[R11]); in __load_zsregs()
210 write_zsreg(channel, R12, regs[R12]); in __load_zsregs()
211 write_zsreg(channel, R13, regs[R13]); in __load_zsregs()
214 write_zsreg(channel, R14, regs[R14]); in __load_zsregs()
217 write_zsreg(channel, R15, regs[R15]); in __load_zsregs()
220 write_zsreg(channel, R0, RES_EXT_INT); in __load_zsregs()
221 write_zsreg(channel, R0, RES_EXT_INT); in __load_zsregs()
224 write_zsreg(channel, R3, regs[R3]); in __load_zsregs()
225 write_zsreg(channel, R5, regs[R5]); in __load_zsregs()
228 write_zsreg(channel, R1, regs[R1]); in __load_zsregs()
238 struct zilog_channel *channel) in ip22zilog_maybe_update_regs() argument
244 __load_zsregs(channel, up->curregs); in ip22zilog_maybe_update_regs()
253 struct zilog_channel *channel) in ip22zilog_receive_chars() argument
260 ch = readb(&channel->control); in ip22zilog_receive_chars()
265 r1 = read_zsreg(channel, R1); in ip22zilog_receive_chars()
267 writeb(ERR_RES, &channel->control); in ip22zilog_receive_chars()
269 ZS_WSYNC(channel); in ip22zilog_receive_chars()
272 ch = readb(&channel->data); in ip22zilog_receive_chars()
318 struct zilog_channel *channel) in ip22zilog_status_handle() argument
322 status = readb(&channel->control); in ip22zilog_status_handle()
325 writeb(RES_EXT_INT, &channel->control); in ip22zilog_status_handle()
327 ZS_WSYNC(channel); in ip22zilog_status_handle()
360 struct zilog_channel *channel) in ip22zilog_transmit_chars() argument
365 unsigned char status = readb(&channel->control); in ip22zilog_transmit_chars()
383 __load_zsregs(channel, up->curregs); in ip22zilog_transmit_chars()
394 writeb(up->port.x_char, &channel->data); in ip22zilog_transmit_chars()
396 ZS_WSYNC(channel); in ip22zilog_transmit_chars()
412 writeb(xmit->buf[xmit->tail], &channel->data); in ip22zilog_transmit_chars()
414 ZS_WSYNC(channel); in ip22zilog_transmit_chars()
425 writeb(RES_Tx_P, &channel->control); in ip22zilog_transmit_chars()
427 ZS_WSYNC(channel); in ip22zilog_transmit_chars()
435 struct zilog_channel *channel in ip22zilog_interrupt() local
441 r3 = read_zsreg(channel, R3); in ip22zilog_interrupt()
445 writeb(RES_H_IUS, &channel->control); in ip22zilog_interrupt()
447 ZS_WSYNC(channel); in ip22zilog_interrupt()
450 push = ip22zilog_receive_chars(up, channel); in ip22zilog_interrupt()
452 ip22zilog_status_handle(up, channel); in ip22zilog_interrupt()
454 ip22zilog_transmit_chars(up, channel); in ip22zilog_interrupt()
463 channel = ZILOG_CHANNEL_FROM_PORT(&up->port); in ip22zilog_interrupt()
468 writeb(RES_H_IUS, &channel->control); in ip22zilog_interrupt()
470 ZS_WSYNC(channel); in ip22zilog_interrupt()
473 push = ip22zilog_receive_chars(up, channel); in ip22zilog_interrupt()
475 ip22zilog_status_handle(up, channel); in ip22zilog_interrupt()
477 ip22zilog_transmit_chars(up, channel); in ip22zilog_interrupt()
495 struct zilog_channel *channel; in ip22zilog_read_channel_status() local
498 channel = ZILOG_CHANNEL_FROM_PORT(port); in ip22zilog_read_channel_status()
499 status = readb(&channel->control); in ip22zilog_read_channel_status()
550 struct zilog_channel *channel = ZILOG_CHANNEL_FROM_PORT(port); in ip22zilog_set_mctrl() local
567 write_zsreg(channel, R5, up->curregs[R5]); in ip22zilog_set_mctrl()
584 struct zilog_channel *channel = ZILOG_CHANNEL_FROM_PORT(port); in ip22zilog_start_tx() local
590 status = readb(&channel->control); in ip22zilog_start_tx()
601 writeb(port->x_char, &channel->data); in ip22zilog_start_tx()
603 ZS_WSYNC(channel); in ip22zilog_start_tx()
612 writeb(xmit->buf[xmit->tail], &channel->data); in ip22zilog_start_tx()
614 ZS_WSYNC(channel); in ip22zilog_start_tx()
628 struct zilog_channel *channel; in ip22zilog_stop_rx() local
633 channel = ZILOG_CHANNEL_FROM_PORT(port); in ip22zilog_stop_rx()
637 ip22zilog_maybe_update_regs(up, channel); in ip22zilog_stop_rx()
645 struct zilog_channel *channel = ZILOG_CHANNEL_FROM_PORT(port); in ip22zilog_enable_ms() local
653 write_zsreg(channel, R15, up->curregs[R15]); in ip22zilog_enable_ms()
662 struct zilog_channel *channel = ZILOG_CHANNEL_FROM_PORT(port); in ip22zilog_break_ctl() local
680 write_zsreg(channel, R5, up->curregs[R5]); in ip22zilog_break_ctl()
688 struct zilog_channel *channel; in __ip22zilog_reset() local
695 channel = ZILOG_CHANNEL_FROM_PORT(&up->port); in __ip22zilog_reset()
697 unsigned char stat = read_zsreg(channel, R1); in __ip22zilog_reset()
705 channel = ZILOG_CHANNEL_FROM_PORT(&up->port); in __ip22zilog_reset()
707 write_zsreg(channel, R9, FHWRES); in __ip22zilog_reset()
709 (void) read_zsreg(channel, R0); in __ip22zilog_reset()
717 struct zilog_channel *channel; in __ip22zilog_startup() local
719 channel = ZILOG_CHANNEL_FROM_PORT(&up->port); in __ip22zilog_startup()
723 __load_zsregs(channel, up->curregs); in __ip22zilog_startup()
725 write_zsreg(channel, R9, up->curregs[R9]); in __ip22zilog_startup()
726 up->prev_status = readb(&channel->control); in __ip22zilog_startup()
733 ip22zilog_maybe_update_regs(up, channel); in __ip22zilog_startup()
778 struct zilog_channel *channel; in ip22zilog_shutdown() local
786 channel = ZILOG_CHANNEL_FROM_PORT(port); in ip22zilog_shutdown()
795 ip22zilog_maybe_update_regs(up, channel); in ip22zilog_shutdown()
999 struct zilog_channel *channel = ZILOG_CHANNEL_FROM_PORT(port); in ip22zilog_put_char() local
1006 unsigned char val = readb(&channel->control); in ip22zilog_put_char()
1014 writeb(ch, &channel->data); in ip22zilog_put_char()
1016 ZS_WSYNC(channel); in ip22zilog_put_char()
1085 int channel, chip; in ip22zilog_prepare() local
1090 for (channel = 0; channel < NUM_CHANNELS; channel++) in ip22zilog_prepare()
1091 spin_lock_init(&ip22zilog_port_table[channel].port.lock); in ip22zilog_prepare()
1095 for (channel = NUM_CHANNELS - 1 ; channel > 0; channel--) in ip22zilog_prepare()
1096 up[channel].next = &up[channel - 1]; in ip22zilog_prepare()
1097 up[channel].next = NULL; in ip22zilog_prepare()
1135 for (channel = 0; channel < NUM_CHANNELS; channel++) { in ip22zilog_prepare()
1136 struct uart_ip22zilog_port *up = &ip22zilog_port_table[channel]; in ip22zilog_prepare()