diff options
| -rw-r--r-- | Documentation/serial/driver | 66 | ||||
| -rw-r--r-- | drivers/serial/serial_core.c | 4 | ||||
| -rw-r--r-- | include/linux/serial_core.h | 7 | 
3 files changed, 64 insertions, 13 deletions
diff --git a/Documentation/serial/driver b/Documentation/serial/driver index 87856d3cfb6..42ef9970bc8 100644 --- a/Documentation/serial/driver +++ b/Documentation/serial/driver @@ -116,12 +116,15 @@ hardware.  	line becoming inactive or the tty layer indicating we want  	to stop transmission due to an XOFF character. +	The driver should stop transmitting characters as soon as +	possible. +  	Locking: port->lock taken.  	Interrupts: locally disabled.  	This call must not sleep    start_tx(port) -	start transmitting characters. +	Start transmitting characters.  	Locking: port->lock taken.  	Interrupts: locally disabled. @@ -281,26 +284,31 @@ hardware.  Other functions  --------------- -uart_update_timeout(port,cflag,quot) +uart_update_timeout(port,cflag,baud)  	Update the FIFO drain timeout, port->timeout, according to the -	number of bits, parity, stop bits and quotient. +	number of bits, parity, stop bits and baud rate.  	Locking: caller is expected to take port->lock  	Interrupts: n/a -uart_get_baud_rate(port,termios) +uart_get_baud_rate(port,termios,old,min,max)  	Return the numeric baud rate for the specified termios, taking  	account of the special 38400 baud "kludge".  The B0 baud rate  	is mapped to 9600 baud. +	If the baud rate is not within min..max, then if old is non-NULL, +	the original baud rate will be tried.  If that exceeds the +	min..max constraint, 9600 baud will be returned.  termios will +	be updated to the baud rate in use. + +	Note: min..max must always allow 9600 baud to be selected. +  	Locking: caller dependent.  	Interrupts: n/a -uart_get_divisor(port,termios,oldtermios) -	Return the divsor (baud_base / baud) for the selected baud rate -	specified by termios.  If the baud rate is out of range, try -	the original baud rate specified by oldtermios (if non-NULL). -	If that fails, try 9600 baud. +uart_get_divisor(port,baud) +	Return the divsor (baud_base / baud) for the specified baud +	rate, appropriately rounded.  	If 38400 baud and custom divisor is selected, return the  	custom divisor instead. @@ -308,6 +316,46 @@ uart_get_divisor(port,termios,oldtermios)  	Locking: caller dependent.  	Interrupts: n/a +uart_match_port(port1,port2) +	This utility function can be used to determine whether two +	uart_port structures describe the same port. + +	Locking: n/a +	Interrupts: n/a + +uart_write_wakeup(port) +	A driver is expected to call this function when the number of +	characters in the transmit buffer have dropped below a threshold. + +	Locking: port->lock should be held. +	Interrupts: n/a + +uart_register_driver(drv) +	Register a uart driver with the core driver.  We in turn register +	with the tty layer, and initialise the core driver per-port state. + +	drv->port should be NULL, and the per-port structures should be +	registered using uart_add_one_port after this call has succeeded. + +	Locking: none +	Interrupts: enabled + +uart_unregister_driver() +	Remove all references to a driver from the core driver.  The low +	level driver must have removed all its ports via the +	uart_remove_one_port() if it registered them with uart_add_one_port(). + +	Locking: none +	Interrupts: enabled + +uart_suspend_port() + +uart_resume_port() + +uart_add_one_port() + +uart_remove_one_port() +  Other notes  ----------- diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c index 401d94a7fe2..0745ce78297 100644 --- a/drivers/serial/serial_core.c +++ b/drivers/serial/serial_core.c @@ -1967,7 +1967,9 @@ uart_report_port(struct uart_driver *drv, struct uart_port *port)  		break;  	} -	printk(KERN_INFO "%s%d at %s (irq = %d) is a %s\n", +	printk(KERN_INFO "%s%s%s%d at %s (irq = %d) is a %s\n", +	       port->dev ? port->dev->bus_id : "", +	       port->dev ? ": " : "",  	       drv->dev_name, port->line, address, port->irq, uart_type(port));  } diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index 2b0401b93f2..9d257923068 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h @@ -39,8 +39,7 @@  #define PORT_RSA	13  #define PORT_NS16550A	14  #define PORT_XSCALE	15 -#define PORT_IP3106	16 -#define PORT_MAX_8250	16	/* max port ID */ +#define PORT_MAX_8250	15	/* max port ID */  /*   * ARM specific type numbers.  These are not currently guaranteed @@ -118,7 +117,9 @@  #define PORT_M32R_SIO	68  /*Digi jsm */ -#define PORT_JSM        65 +#define PORT_JSM        69 + +#define PORT_IP3106	70  #ifdef __KERNEL__  | 
