···111111 Interrupts: locally disabled.112112 This call must not sleep113113114114- stop_tx(port,tty_stop)114114+ stop_tx(port)115115 Stop transmitting characters. This might be due to the CTS116116 line becoming inactive or the tty layer indicating we want117117- to stop transmission.118118-119119- tty_stop: 1 if this call is due to the TTY layer issuing a120120- TTY stop to the driver (equiv to rs_stop).117117+ to stop transmission due to an XOFF character.121118122119 Locking: port->lock taken.123120 Interrupts: locally disabled.124121 This call must not sleep125122126126- start_tx(port,tty_start)127127- start transmitting characters. (incidentally, nonempty will128128- always be nonzero, and shouldn't be used - it will be dropped).129129-130130- tty_start: 1 if this call was due to the TTY layer issuing131131- a TTY start to the driver (equiv to rs_start)123123+ start_tx(port)124124+ start transmitting characters.132125133126 Locking: port->lock taken.134127 Interrupts: locally disabled.
+12-9
drivers/char/mwave/mwavedd.c
···5757#include <linux/sched.h>5858#include <linux/spinlock.h>5959#include <linux/delay.h>6060+#include <linux/serial_8250.h>6061#include "smapi.h"6162#include "mwavedd.h"6263#include "3780i.h"···411410412411static int register_serial_portandirq(unsigned int port, int irq)413412{414414- struct serial_struct serial;415415-413413+ struct uart_port uart;414414+416415 switch ( port ) {417416 case 0x3f8:418417 case 0x2f8:···443442 } /* switch */444443 /* irq is okay */445444446446- memset(&serial, 0, sizeof(serial));447447- serial.port = port;448448- serial.irq = irq;449449- serial.flags = ASYNC_SHARE_IRQ;450450-451451- return register_serial(&serial);445445+ memset(&uart, 0, sizeof(struct uart_port));446446+447447+ uart.uartclk = 1843200;448448+ uart.iobase = port;449449+ uart.irq = irq;450450+ uart.iotype = UPIO_PORT;451451+ uart.flags = UPF_SHARE_IRQ;452452+ return serial8250_register_port(&uart);452453}453454454455···526523#endif527524528525 if ( pDrvData->sLine >= 0 ) {529529- unregister_serial(pDrvData->sLine);526526+ serial8250_unregister_port(pDrvData->sLine);530527 }531528 if (pDrvData->bMwaveDevRegistered) {532529 misc_deregister(&mwave_misc_dev);
+1-1
drivers/misc/Kconfig
···6677config IBM_ASM88 tristate "Device driver for IBM RSA service processor"99- depends on X86 && PCI && EXPERIMENTAL99+ depends on X86 && PCI && EXPERIMENTAL && BROKEN1010 ---help---1111 This option enables device driver support for in-band access to the1212 IBM RSA (Condor) service processor in eServer xSeries systems.
+1-1
drivers/net/Kconfig
···447447448448config SGI_IOC3_ETH449449 bool "SGI IOC3 Ethernet"450450- depends on NET_ETHERNET && PCI && SGI_IP27450450+ depends on NET_ETHERNET && PCI && SGI_IP27 && BROKEN451451 select CRC32452452 select MII453453 help
···10011001 }10021002}1003100310041004-static void serial8250_stop_tx(struct uart_port *port, unsigned int tty_stop)10041004+static void serial8250_stop_tx(struct uart_port *port)10051005{10061006 struct uart_8250_port *up = (struct uart_8250_port *)port;10071007···1018101810191019static void transmit_chars(struct uart_8250_port *up);1020102010211021-static void serial8250_start_tx(struct uart_port *port, unsigned int tty_start)10211021+static void serial8250_start_tx(struct uart_port *port)10221022{10231023 struct uart_8250_port *up = (struct uart_8250_port *)port;10241024···11581158 up->port.x_char = 0;11591159 return;11601160 }11611161- if (uart_circ_empty(xmit) || uart_tx_stopped(&up->port)) {11611161+ if (uart_tx_stopped(&up->port)) {11621162+ serial8250_stop_tx(&up->port);11631163+ return;11641164+ }11651165+ if (uart_circ_empty(xmit)) {11621166 __stop_tx(up);11631167 return;11641168 }···25902586MODULE_PARM_DESC(probe_rsa, "Probe I/O ports for RSA");25912587#endif25922588MODULE_ALIAS_CHARDEV_MAJOR(TTY_MAJOR);25932593-25942594-/**25952595- * register_serial - configure a 16x50 serial port at runtime25962596- * @req: request structure25972597- *25982598- * Configure the serial port specified by the request. If the25992599- * port exists and is in use an error is returned. If the port26002600- * is not currently in the table it is added.26012601- *26022602- * The port is then probed and if necessary the IRQ is autodetected26032603- * If this fails an error is returned.26042604- *26052605- * On success the port is ready to use and the line number is returned.26062606- *26072607- * Note: this function is deprecated - use serial8250_register_port26082608- * instead.26092609- */26102610-int register_serial(struct serial_struct *req)26112611-{26122612- struct uart_port port;26132613-26142614- port.iobase = req->port;26152615- port.membase = req->iomem_base;26162616- port.irq = req->irq;26172617- port.uartclk = req->baud_base * 16;26182618- port.fifosize = req->xmit_fifo_size;26192619- port.regshift = req->iomem_reg_shift;26202620- port.iotype = req->io_type;26212621- port.flags = req->flags | UPF_BOOT_AUTOCONF;26222622- port.mapbase = req->iomap_base;26232623- port.dev = NULL;26242624-26252625- if (share_irqs)26262626- port.flags |= UPF_SHARE_IRQ;26272627-26282628- if (HIGH_BITS_OFFSET)26292629- port.iobase |= (long) req->port_high << HIGH_BITS_OFFSET;26302630-26312631- /*26322632- * If a clock rate wasn't specified by the low level driver, then26332633- * default to the standard clock rate. This should be 115200 (*16)26342634- * and should not depend on the architecture's BASE_BAUD definition.26352635- * However, since this API will be deprecated, it's probably a26362636- * better idea to convert the drivers to use the new API26372637- * (serial8250_register_port and serial8250_unregister_port).26382638- */26392639- if (port.uartclk == 0) {26402640- printk(KERN_WARNING26412641- "Serial: registering port at [%08x,%08lx,%p] irq %d with zero baud_base\n",26422642- port.iobase, port.mapbase, port.membase, port.irq);26432643- printk(KERN_WARNING "Serial: see %s:%d for more information\n",26442644- __FILE__, __LINE__);26452645- dump_stack();26462646-26472647- /*26482648- * Fix it up for now, but this is only a temporary measure.26492649- */26502650- port.uartclk = BASE_BAUD * 16;26512651- }26522652-26532653- return serial8250_register_port(&port);26542654-}26552655-EXPORT_SYMBOL(register_serial);26562656-26572657-/**26582658- * unregister_serial - remove a 16x50 serial port at runtime26592659- * @line: serial line number26602660- *26612661- * Remove one serial port. This may not be called from interrupt26622662- * context. We hand the port back to our local PM control.26632663- *26642664- * Note: this function is deprecated - use serial8250_unregister_port26652665- * instead.26662666- */26672667-void unregister_serial(int line)26682668-{26692669- serial8250_unregister_port(line);26702670-}26712671-EXPORT_SYMBOL(unregister_serial);
···124124/*125125 * interrupts disabled on entry126126 */127127-static void imx_stop_tx(struct uart_port *port, unsigned int tty_stop)127127+static void imx_stop_tx(struct uart_port *port)128128{129129 struct imx_port *sport = (struct imx_port *)port;130130 UCR1((u32)sport->port.membase) &= ~UCR1_TXMPTYEN;···165165 } while (!(UTS((u32)sport->port.membase) & UTS_TXFULL));166166167167 if (uart_circ_empty(xmit))168168- imx_stop_tx(&sport->port, 0);168168+ imx_stop_tx(&sport->port);169169}170170171171/*172172 * interrupts disabled on entry173173 */174174-static void imx_start_tx(struct uart_port *port, unsigned int tty_start)174174+static void imx_start_tx(struct uart_port *port)175175{176176 struct imx_port *sport = (struct imx_port *)port;177177···196196 }197197198198 if (uart_circ_empty(xmit) || uart_tx_stopped(&sport->port)) {199199- imx_stop_tx(&sport->port, 0);199199+ imx_stop_tx(&sport->port);200200 goto out;201201 }202202···291291 return USR2((u32)sport->port.membase) & USR2_TXDC ? TIOCSER_TEMT : 0;292292}293293294294+/*295295+ * We have a modem side uart, so the meanings of RTS and CTS are inverted.296296+ */294297static unsigned int imx_get_mctrl(struct uart_port *port)295298{296296- return TIOCM_CTS | TIOCM_DSR | TIOCM_CAR;299299+ struct imx_port *sport = (struct imx_port *)port;300300+ unsigned int tmp = TIOCM_DSR | TIOCM_CAR;301301+302302+ if (USR1((u32)sport->port.membase) & USR1_RTSS)303303+ tmp |= TIOCM_CTS;304304+305305+ if (UCR2((u32)sport->port.membase) & UCR2_CTS)306306+ tmp |= TIOCM_RTS;307307+308308+ return tmp;297309}298310299311static void imx_set_mctrl(struct uart_port *port, unsigned int mctrl)300312{313313+ struct imx_port *sport = (struct imx_port *)port;314314+315315+ if (mctrl & TIOCM_RTS)316316+ UCR2((u32)sport->port.membase) |= UCR2_CTS;317317+ else318318+ UCR2((u32)sport->port.membase) &= ~UCR2_CTS;301319}302320303321/*
+2-4
drivers/serial/ioc4_serial.c
···23732373/**23742374 * ic4_stop_tx - stop the transmitter23752375 * @port: Port to operate on23762376- * @tty_stop: Set to 1 if called via uart_stop23772376 *23782377 */23792379-static void ic4_stop_tx(struct uart_port *the_port, unsigned int tty_stop)23782378+static void ic4_stop_tx(struct uart_port *the_port)23802379{23812380}23822381···24702471/**24712472 * ic4_start_tx - Start transmitter, flush any output24722473 * @port: Port to operate on24732473- * @tty_stop: Set to 1 if called via uart_start24742474 *24752475 */24762476-static void ic4_start_tx(struct uart_port *the_port, unsigned int tty_stop)24762476+static void ic4_start_tx(struct uart_port *the_port)24772477{24782478 struct ioc4_port *port = get_ioc4_port(the_port);24792479 unsigned long flags;
+2-2
drivers/serial/ip22zilog.c
···592592}593593594594/* The port lock is held and interrupts are disabled. */595595-static void ip22zilog_stop_tx(struct uart_port *port, unsigned int tty_stop)595595+static void ip22zilog_stop_tx(struct uart_port *port)596596{597597 struct uart_ip22zilog_port *up = (struct uart_ip22zilog_port *) port;598598···600600}601601602602/* The port lock is held and interrupts are disabled. */603603-static void ip22zilog_start_tx(struct uart_port *port, unsigned int tty_start)603603+static void ip22zilog_start_tx(struct uart_port *port)604604{605605 struct uart_ip22zilog_port *up = (struct uart_ip22zilog_port *) port;606606 struct zilog_channel *channel = ZILOG_CHANNEL_FROM_PORT(port);
···111111/**112112 * mux_stop_tx - Stop transmitting characters.113113 * @port: Ptr to the uart_port.114114- * @tty_stop: tty layer issue this command?115114 *116115 * The Serial MUX does not support this function.117116 */118118-static void mux_stop_tx(struct uart_port *port, unsigned int tty_stop)117117+static void mux_stop_tx(struct uart_port *port)119118{120119}121120122121/**123122 * mux_start_tx - Start transmitting characters.124123 * @port: Ptr to the uart_port.125125- * @tty_start: tty layer issue this command?126124 *127125 * The Serial Mux does not support this function.128126 */129129-static void mux_start_tx(struct uart_port *port, unsigned int tty_start)127127+static void mux_start_tx(struct uart_port *port)130128{131129}132130···179181 }180182181183 if(uart_circ_empty(xmit) || uart_tx_stopped(port)) {182182- mux_stop_tx(port, 0);184184+ mux_stop_tx(port);183185 return;184186 }185187···200202 uart_write_wakeup(port);201203202204 if (uart_circ_empty(xmit))203203- mux_stop_tx(port, 0);205205+ mux_stop_tx(port);204206}205207206208/**
+3-4
drivers/serial/pmac_zilog.c
···630630631631/* 632632 * Stop TX side. Dealt like sunzilog at next Tx interrupt,633633- * though for DMA, we will have to do a bit more. What is634634- * the meaning of the tty_stop bit ? XXX633633+ * though for DMA, we will have to do a bit more.635634 * The port lock is held and interrupts are disabled.636635 */637637-static void pmz_stop_tx(struct uart_port *port, unsigned int tty_stop)636636+static void pmz_stop_tx(struct uart_port *port)638637{639638 to_pmz(port)->flags |= PMACZILOG_FLAG_TX_STOPPED;640639}···642643 * Kick the Tx side.643644 * The port lock is held and interrupts are disabled.644645 */645645-static void pmz_start_tx(struct uart_port *port, unsigned int tty_start)646646+static void pmz_start_tx(struct uart_port *port)646647{647648 struct uart_pmac_port *uap = to_pmz(port);648649 unsigned char status;
···246246 spin_unlock_irqrestore(&port->lock, flags);247247}248248249249-static void250250-s3c24xx_serial_stop_tx(struct uart_port *port, unsigned int tty_stop)249249+static void s3c24xx_serial_stop_tx(struct uart_port *port)251250{252251 if (tx_enabled(port)) {253252 disable_irq(TX_IRQ(port));···256257 }257258}258259259259-static void260260-s3c24xx_serial_start_tx(struct uart_port *port, unsigned int tty_start)260260+static void s3c24xx_serial_start_tx(struct uart_port *port)261261{262262 if (!tx_enabled(port)) {263263 if (port->flags & UPF_CONS_FLOW)···422424 */423425424426 if (uart_circ_empty(xmit) || uart_tx_stopped(port)) {425425- s3c24xx_serial_stop_tx(port, 0);427427+ s3c24xx_serial_stop_tx(port);426428 goto out;427429 }428430···441443 uart_write_wakeup(port);442444443445 if (uart_circ_empty(xmit))444444- s3c24xx_serial_stop_tx(port, 0);446446+ s3c24xx_serial_stop_tx(port);445447446448 out:447449 return IRQ_HANDLED;
+4-4
drivers/serial/sa1100.c
···145145/*146146 * interrupts disabled on entry147147 */148148-static void sa1100_stop_tx(struct uart_port *port, unsigned int tty_stop)148148+static void sa1100_stop_tx(struct uart_port *port)149149{150150 struct sa1100_port *sport = (struct sa1100_port *)port;151151 u32 utcr3;···158158/*159159 * interrupts may not be disabled on entry160160 */161161-static void sa1100_start_tx(struct uart_port *port, unsigned int tty_start)161161+static void sa1100_start_tx(struct uart_port *port)162162{163163 struct sa1100_port *sport = (struct sa1100_port *)port;164164 unsigned long flags;···264264 sa1100_mctrl_check(sport);265265266266 if (uart_circ_empty(xmit) || uart_tx_stopped(&sport->port)) {267267- sa1100_stop_tx(&sport->port, 0);267267+ sa1100_stop_tx(&sport->port);268268 return;269269 }270270···284284 uart_write_wakeup(&sport->port);285285286286 if (uart_circ_empty(xmit))287287- sa1100_stop_tx(&sport->port, 0);287287+ sa1100_stop_tx(&sport->port);288288}289289290290static irqreturn_t sa1100_int(int irq, void *dev_id, struct pt_regs *regs)
+6-138
drivers/serial/serial_core.c
···8080 unsigned long flags;81818282 spin_lock_irqsave(&port->lock, flags);8383- port->ops->stop_tx(port, 1);8383+ port->ops->stop_tx(port);8484 spin_unlock_irqrestore(&port->lock, flags);8585}8686···91919292 if (!uart_circ_empty(&state->info->xmit) && state->info->xmit.buf &&9393 !tty->stopped && !tty->hw_stopped)9494- port->ops->start_tx(port, 1);9494+ port->ops->start_tx(port);9595}96969797static void uart_start(struct tty_struct *tty)···542542 port->x_char = ch;543543 if (ch) {544544 spin_lock_irqsave(&port->lock, flags);545545- port->ops->start_tx(port, 0);545545+ port->ops->start_tx(port);546546 spin_unlock_irqrestore(&port->lock, flags);547547 }548548 }···11461146 spin_lock_irqsave(&state->port->lock, flags);11471147 if (!(state->port->ops->get_mctrl(state->port) & TIOCM_CTS)) {11481148 tty->hw_stopped = 1;11491149- state->port->ops->stop_tx(state->port, 0);11491149+ state->port->ops->stop_tx(state->port);11501150 }11511151 spin_unlock_irqrestore(&state->port->lock, flags);11521152 }···18691869 struct uart_ops *ops = port->ops;1870187018711871 spin_lock_irq(&port->lock);18721872- ops->stop_tx(port, 0);18721872+ ops->stop_tx(port);18731873 ops->set_mctrl(port, 0);18741874 ops->stop_rx(port);18751875 spin_unlock_irq(&port->lock);···19351935 uart_change_speed(state, NULL);19361936 spin_lock_irq(&port->lock);19371937 ops->set_mctrl(port, port->mctrl);19381938- ops->start_tx(port, 0);19381938+ ops->start_tx(port);19391939 spin_unlock_irq(&port->lock);19401940 }19411941···22892289}22902290EXPORT_SYMBOL(uart_match_port);2291229122922292-/*22932293- * Try to find an unused uart_state slot for a port.22942294- */22952295-static struct uart_state *22962296-uart_find_match_or_unused(struct uart_driver *drv, struct uart_port *port)22972297-{22982298- int i;22992299-23002300- /*23012301- * First, find a port entry which matches. Note: if we do23022302- * find a matching entry, and it has a non-zero use count,23032303- * then we can't register the port.23042304- */23052305- for (i = 0; i < drv->nr; i++)23062306- if (uart_match_port(drv->state[i].port, port))23072307- return &drv->state[i];23082308-23092309- /*23102310- * We didn't find a matching entry, so look for the first23112311- * free entry. We look for one which hasn't been previously23122312- * used (indicated by zero iobase).23132313- */23142314- for (i = 0; i < drv->nr; i++)23152315- if (drv->state[i].port->type == PORT_UNKNOWN &&23162316- drv->state[i].port->iobase == 0 &&23172317- drv->state[i].count == 0)23182318- return &drv->state[i];23192319-23202320- /*23212321- * That also failed. Last resort is to find any currently23222322- * entry which doesn't have a real port associated with it.23232323- */23242324- for (i = 0; i < drv->nr; i++)23252325- if (drv->state[i].port->type == PORT_UNKNOWN &&23262326- drv->state[i].count == 0)23272327- return &drv->state[i];23282328-23292329- return NULL;23302330-}23312331-23322332-/**23332333- * uart_register_port: register uart settings with a port23342334- * @drv: pointer to the uart low level driver structure for this port23352335- * @port: uart port structure describing the port23362336- *23372337- * Register UART settings with the specified low level driver. Detect23382338- * the type of the port if UPF_BOOT_AUTOCONF is set, and detect the23392339- * IRQ if UPF_AUTO_IRQ is set.23402340- *23412341- * We try to pick the same port for the same IO base address, so that23422342- * when a modem is plugged in, unplugged and plugged back in, it gets23432343- * allocated the same port.23442344- *23452345- * Returns negative error, or positive line number.23462346- */23472347-int uart_register_port(struct uart_driver *drv, struct uart_port *port)23482348-{23492349- struct uart_state *state;23502350- int ret;23512351-23522352- down(&port_sem);23532353-23542354- state = uart_find_match_or_unused(drv, port);23552355-23562356- if (state) {23572357- /*23582358- * Ok, we've found a line that we can use.23592359- *23602360- * If we find a port that matches this one, and it appears23612361- * to be in-use (even if it doesn't have a type) we shouldn't23622362- * alter it underneath itself - the port may be open and23632363- * trying to do useful work.23642364- */23652365- if (uart_users(state) != 0) {23662366- ret = -EBUSY;23672367- goto out;23682368- }23692369-23702370- /*23712371- * If the port is already initialised, don't touch it.23722372- */23732373- if (state->port->type == PORT_UNKNOWN) {23742374- state->port->iobase = port->iobase;23752375- state->port->membase = port->membase;23762376- state->port->irq = port->irq;23772377- state->port->uartclk = port->uartclk;23782378- state->port->fifosize = port->fifosize;23792379- state->port->regshift = port->regshift;23802380- state->port->iotype = port->iotype;23812381- state->port->flags = port->flags;23822382- state->port->line = state - drv->state;23832383- state->port->mapbase = port->mapbase;23842384-23852385- uart_configure_port(drv, state, state->port);23862386- }23872387-23882388- ret = state->port->line;23892389- } else23902390- ret = -ENOSPC;23912391- out:23922392- up(&port_sem);23932393- return ret;23942394-}23952395-23962396-/**23972397- * uart_unregister_port - de-allocate a port23982398- * @drv: pointer to the uart low level driver structure for this port23992399- * @line: line index previously returned from uart_register_port()24002400- *24012401- * Hang up the specified line associated with the low level driver,24022402- * and mark the port as unused.24032403- */24042404-void uart_unregister_port(struct uart_driver *drv, int line)24052405-{24062406- struct uart_state *state;24072407-24082408- if (line < 0 || line >= drv->nr) {24092409- printk(KERN_ERR "Attempt to unregister ");24102410- printk("%s%d", drv->dev_name, line);24112411- printk("\n");24122412- return;24132413- }24142414-24152415- state = drv->state + line;24162416-24172417- down(&port_sem);24182418- uart_unconfigure_port(drv, state);24192419- up(&port_sem);24202420-}24212421-24222292EXPORT_SYMBOL(uart_write_wakeup);24232293EXPORT_SYMBOL(uart_register_driver);24242294EXPORT_SYMBOL(uart_unregister_driver);24252295EXPORT_SYMBOL(uart_suspend_port);24262296EXPORT_SYMBOL(uart_resume_port);24272427-EXPORT_SYMBOL(uart_register_port);24282428-EXPORT_SYMBOL(uart_unregister_port);24292297EXPORT_SYMBOL(uart_add_one_port);24302298EXPORT_SYMBOL(uart_remove_one_port);24312299
+2-3
drivers/serial/serial_lh7a40x.c
···112112 unsigned int statusPrev; /* Most recently read modem status */113113};114114115115-static void lh7a40xuart_stop_tx (struct uart_port* port, unsigned int tty_stop)115115+static void lh7a40xuart_stop_tx (struct uart_port* port)116116{117117 BIT_CLR (port, UART_R_INTEN, TxInt);118118}119119120120-static void lh7a40xuart_start_tx (struct uart_port* port,121121- unsigned int tty_start)120120+static void lh7a40xuart_start_tx (struct uart_port* port)122121{123122 BIT_SET (port, UART_R_INTEN, TxInt);124123
···259259/**260260 * snp_stop_tx - stop the transmitter - no-op for us261261 * @port: Port to operat eon - we ignore - no-op function262262- * @tty_stop: Set to 1 if called via uart_stop263262 *264263 */265265-static void snp_stop_tx(struct uart_port *port, unsigned int tty_stop)264264+static void snp_stop_tx(struct uart_port *port)266265{267266}268267···324325/**325326 * snp_start_tx - Start transmitter326327 * @port: Port to operate on327327- * @tty_stop: Set to 1 if called via uart_start328328 *329329 */330330-static void snp_start_tx(struct uart_port *port, unsigned int tty_stop)330330+static void snp_start_tx(struct uart_port *port)331331{332332 if (sal_console_port.sc_ops->sal_wakeup_transmit)333333 sal_console_port.sc_ops->sal_wakeup_transmit(&sal_console_port,···613615 uart_write_wakeup(&port->sc_port);614616615617 if (uart_circ_empty(xmit))616616- snp_stop_tx(&port->sc_port, 0); /* no-op for us */618618+ snp_stop_tx(&port->sc_port); /* no-op for us */617619}618620619621/**
···255255}256256#endif /* CONFIG_SERIAL_8250_RSA */257257258258-static void sunsu_stop_tx(struct uart_port *port, unsigned int tty_stop)258258+static inline void __stop_tx(struct uart_sunsu_port *p)259259+{260260+ if (p->ier & UART_IER_THRI) {261261+ p->ier &= ~UART_IER_THRI;262262+ serial_out(p, UART_IER, p->ier);263263+ }264264+}265265+266266+static void sunsu_stop_tx(struct uart_port *port)259267{260268 struct uart_sunsu_port *up = (struct uart_sunsu_port *) port;261269262262- if (up->ier & UART_IER_THRI) {263263- up->ier &= ~UART_IER_THRI;264264- serial_out(up, UART_IER, up->ier);265265- }266266- if (up->port.type == PORT_16C950 && tty_stop) {270270+ __stop_tx(up);271271+272272+ if (up->port.type == PORT_16C950 && tty_stop /*FIXME*/) {267273 up->acr |= UART_ACR_TXDIS;268274 serial_icr_write(up, UART_ACR, up->acr);269275 }270276}271277272272-static void sunsu_start_tx(struct uart_port *port, unsigned int tty_start)278278+static void sunsu_start_tx(struct uart_port *port)273279{274280 struct uart_sunsu_port *up = (struct uart_sunsu_port *) port;275281···286280 /*287281 * We only do this from uart_start288282 */289289- if (tty_start && up->port.type == PORT_16C950) {283283+ if (tty_start && up->port.type == PORT_16C950 /*FIXME*/) {290284 up->acr &= ~UART_ACR_TXDIS;291285 serial_icr_write(up, UART_ACR, up->acr);292286 }···419413 up->port.x_char = 0;420414 return;421415 }422422- if (uart_circ_empty(xmit) || uart_tx_stopped(&up->port)) {423423- sunsu_stop_tx(&up->port, 0);416416+ if (uart_tx_stopped(&up->port)) {417417+ sunsu_stop_tx(&up->port);418418+ return;419419+ }420420+ if (uart_circ_empty(xmit)) {421421+ __stop_tx(up);424422 return;425423 }426424···441431 uart_write_wakeup(&up->port);442432443433 if (uart_circ_empty(xmit))444444- sunsu_stop_tx(&up->port, 0);434434+ __stop_tx(up);445435}446436447437static _INLINE_ void check_modem_status(struct uart_sunsu_port *up)
+2-2
drivers/serial/sunzilog.c
···684684}685685686686/* The port lock is held and interrupts are disabled. */687687-static void sunzilog_stop_tx(struct uart_port *port, unsigned int tty_stop)687687+static void sunzilog_stop_tx(struct uart_port *port)688688{689689 struct uart_sunzilog_port *up = (struct uart_sunzilog_port *) port;690690···692692}693693694694/* The port lock is held and interrupts are disabled. */695695-static void sunzilog_start_tx(struct uart_port *port, unsigned int tty_start)695695+static void sunzilog_start_tx(struct uart_port *port)696696{697697 struct uart_sunzilog_port *up = (struct uart_sunzilog_port *) port;698698 struct zilog_channel __iomem *channel = ZILOG_CHANNEL_FROM_PORT(port);
···176176#ifdef __KERNEL__177177#include <linux/compiler.h>178178179179-/* Export to allow PCMCIA to use this - Dave Hinds */180180-extern int __deprecated register_serial(struct serial_struct *req);181181-extern void __deprecated unregister_serial(int line);182182-183179/* Allow architectures to override entries in serial8250_ports[] at run time: */184180struct uart_port; /* forward declaration */185181extern int early_serial_setup(struct uart_port *port);
+16
include/linux/serial_8250.h
···1414#include <linux/serial_core.h>1515#include <linux/device.h>16161717+/*1818+ * This is the platform device platform_data structure1919+ */1720struct plat_serial8250_port {1821 unsigned long iobase; /* io base address */1922 void __iomem *membase; /* ioremap cookie or NULL */···2825 unsigned char hub6;2926 unsigned int flags; /* UPF_* flags */3027};2828+2929+/*3030+ * This should be used by drivers which want to register3131+ * their own 8250 ports without registering their own3232+ * platform device. Using these will make your driver3333+ * dependent on the 8250 driver.3434+ */3535+struct uart_port;3636+3737+int serial8250_register_port(struct uart_port *);3838+void serial8250_unregister_port(int line);3939+void serial8250_suspend_port(int line);4040+void serial8250_resume_port(int line);31413242#endif