You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge tag 'tty-3.3-rc3' tty-next
This is needed to handle the 8250 file merge mess properly for future patches. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
* Energymicro efm32 UART
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be "efm32,uart"
|
||||
- reg : Address and length of the register set
|
||||
- interrupts : Should contain uart interrupt
|
||||
|
||||
Example:
|
||||
|
||||
uart@0x4000c400 {
|
||||
compatible = "efm32,uart";
|
||||
reg = <0x4000c400 0x400>;
|
||||
interrupts = <15>;
|
||||
};
|
||||
@@ -1015,14 +1015,11 @@ capinc_tty_install(struct tty_driver *driver, struct tty_struct *tty)
|
||||
{
|
||||
int idx = tty->index;
|
||||
struct capiminor *mp = capiminor_get(idx);
|
||||
int ret = tty_init_termios(tty);
|
||||
int ret = tty_standard_install(driver, tty);
|
||||
|
||||
if (ret == 0) {
|
||||
tty_driver_kref_get(driver);
|
||||
tty->count++;
|
||||
if (ret == 0)
|
||||
tty->driver_data = mp;
|
||||
driver->ttys[idx] = tty;
|
||||
} else
|
||||
else
|
||||
capiminor_put(mp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
+1
-5
@@ -481,13 +481,9 @@ static int pti_tty_install(struct tty_driver *driver, struct tty_struct *tty)
|
||||
{
|
||||
int idx = tty->index;
|
||||
struct pti_tty *pti_tty_data;
|
||||
int ret = tty_init_termios(tty);
|
||||
int ret = tty_standard_install(driver, tty);
|
||||
|
||||
if (ret == 0) {
|
||||
tty_driver_kref_get(driver);
|
||||
tty->count++;
|
||||
driver->ttys[idx] = tty;
|
||||
|
||||
pti_tty_data = kmalloc(sizeof(struct pti_tty), GFP_KERNEL);
|
||||
if (pti_tty_data == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -750,15 +750,12 @@ static int sdio_uart_install(struct tty_driver *driver, struct tty_struct *tty)
|
||||
{
|
||||
int idx = tty->index;
|
||||
struct sdio_uart_port *port = sdio_uart_port_get(idx);
|
||||
int ret = tty_init_termios(tty);
|
||||
int ret = tty_standard_install(driver, tty);
|
||||
|
||||
if (ret == 0) {
|
||||
tty_driver_kref_get(driver);
|
||||
tty->count++;
|
||||
if (ret == 0)
|
||||
/* This is the ref sdio_uart_port get provided */
|
||||
tty->driver_data = port;
|
||||
driver->ttys[idx] = tty;
|
||||
} else
|
||||
else
|
||||
sdio_uart_port_put(port);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -113,7 +113,7 @@ static int __init hvc_beat_init(void)
|
||||
if (!firmware_has_feature(FW_FEATURE_BEAT))
|
||||
return -ENODEV;
|
||||
|
||||
hp = hvc_alloc(0, NO_IRQ, &hvc_beat_get_put_ops, 16);
|
||||
hp = hvc_alloc(0, 0, &hvc_beat_get_put_ops, 16);
|
||||
if (IS_ERR(hp))
|
||||
return PTR_ERR(hp);
|
||||
hvc_beat_dev = hp;
|
||||
|
||||
@@ -94,7 +94,7 @@ static int __init hvc_rtas_init(void)
|
||||
|
||||
/* Allocate an hvc_struct for the console device we instantiated
|
||||
* earlier. Save off hp so that we can return it on exit */
|
||||
hp = hvc_alloc(hvc_rtas_cookie, NO_IRQ, &hvc_rtas_get_put_ops, 16);
|
||||
hp = hvc_alloc(hvc_rtas_cookie, 0, &hvc_rtas_get_put_ops, 16);
|
||||
if (IS_ERR(hp))
|
||||
return PTR_ERR(hp);
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ static int __init hvc_udbg_init(void)
|
||||
|
||||
BUG_ON(hvc_udbg_dev);
|
||||
|
||||
hp = hvc_alloc(0, NO_IRQ, &hvc_udbg_ops, 16);
|
||||
hp = hvc_alloc(0, 0, &hvc_udbg_ops, 16);
|
||||
if (IS_ERR(hp))
|
||||
return PTR_ERR(hp);
|
||||
|
||||
|
||||
@@ -176,7 +176,7 @@ static int __init xen_hvc_init(void)
|
||||
xencons_irq = bind_evtchn_to_irq(xen_start_info->console.domU.evtchn);
|
||||
}
|
||||
if (xencons_irq < 0)
|
||||
xencons_irq = 0; /* NO_IRQ */
|
||||
xencons_irq = 0;
|
||||
else
|
||||
irq_set_noprobe(xencons_irq);
|
||||
|
||||
|
||||
@@ -1203,7 +1203,7 @@ static void hvcs_close(struct tty_struct *tty, struct file *filp)
|
||||
{
|
||||
struct hvcs_struct *hvcsd;
|
||||
unsigned long flags;
|
||||
int irq = NO_IRQ;
|
||||
int irq;
|
||||
|
||||
/*
|
||||
* Is someone trying to close the file associated with this device after
|
||||
@@ -1264,7 +1264,7 @@ static void hvcs_hangup(struct tty_struct * tty)
|
||||
struct hvcs_struct *hvcsd = tty->driver_data;
|
||||
unsigned long flags;
|
||||
int temp_open_count;
|
||||
int irq = NO_IRQ;
|
||||
int irq;
|
||||
|
||||
spin_lock_irqsave(&hvcsd->lock, flags);
|
||||
/* Preserve this so that we know how many kref refs to put */
|
||||
|
||||
@@ -1237,7 +1237,7 @@ static int __init hvsi_console_init(void)
|
||||
hp->state = HVSI_CLOSED;
|
||||
hp->vtermno = *vtermno;
|
||||
hp->virq = irq_create_mapping(NULL, irq[0]);
|
||||
if (hp->virq == NO_IRQ) {
|
||||
if (hp->virq == 0) {
|
||||
printk(KERN_ERR "%s: couldn't create irq mapping for 0x%x\n",
|
||||
__func__, irq[0]);
|
||||
continue;
|
||||
|
||||
@@ -1602,13 +1602,9 @@ static int ntty_install(struct tty_driver *driver, struct tty_struct *tty)
|
||||
int ret;
|
||||
if (!port || !dc || dc->state != NOZOMI_STATE_READY)
|
||||
return -ENODEV;
|
||||
ret = tty_init_termios(tty);
|
||||
if (ret == 0) {
|
||||
tty_driver_kref_get(driver);
|
||||
tty->count++;
|
||||
ret = tty_standard_install(driver, tty);
|
||||
if (ret == 0)
|
||||
tty->driver_data = port;
|
||||
driver->ttys[tty->index] = tty;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
+5
-63
@@ -21,7 +21,6 @@
|
||||
#include <linux/major.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/sysctl.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/bitops.h>
|
||||
@@ -55,11 +54,8 @@ static void pty_close(struct tty_struct *tty, struct file *filp)
|
||||
wake_up_interruptible(&tty->link->write_wait);
|
||||
if (tty->driver->subtype == PTY_TYPE_MASTER) {
|
||||
set_bit(TTY_OTHER_CLOSED, &tty->flags);
|
||||
#ifdef CONFIG_UNIX98_PTYS
|
||||
if (tty->driver == ptm_driver)
|
||||
devpts_pty_kill(tty->link);
|
||||
#endif
|
||||
tty_unlock();
|
||||
devpts_pty_kill(tty->link);
|
||||
tty_vhangup(tty->link);
|
||||
tty_lock();
|
||||
}
|
||||
@@ -439,55 +435,9 @@ static inline void legacy_pty_init(void) { }
|
||||
|
||||
/* Unix98 devices */
|
||||
#ifdef CONFIG_UNIX98_PTYS
|
||||
/*
|
||||
* sysctl support for setting limits on the number of Unix98 ptys allocated.
|
||||
* Otherwise one can eat up all kernel memory by opening /dev/ptmx repeatedly.
|
||||
*/
|
||||
int pty_limit = NR_UNIX98_PTY_DEFAULT;
|
||||
static int pty_limit_min;
|
||||
static int pty_limit_max = NR_UNIX98_PTY_MAX;
|
||||
static int pty_count;
|
||||
|
||||
static struct cdev ptmx_cdev;
|
||||
|
||||
static struct ctl_table pty_table[] = {
|
||||
{
|
||||
.procname = "max",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.data = &pty_limit,
|
||||
.proc_handler = proc_dointvec_minmax,
|
||||
.extra1 = &pty_limit_min,
|
||||
.extra2 = &pty_limit_max,
|
||||
}, {
|
||||
.procname = "nr",
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0444,
|
||||
.data = &pty_count,
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{}
|
||||
};
|
||||
|
||||
static struct ctl_table pty_kern_table[] = {
|
||||
{
|
||||
.procname = "pty",
|
||||
.mode = 0555,
|
||||
.child = pty_table,
|
||||
},
|
||||
{}
|
||||
};
|
||||
|
||||
static struct ctl_table pty_root_table[] = {
|
||||
{
|
||||
.procname = "kernel",
|
||||
.mode = 0555,
|
||||
.child = pty_kern_table,
|
||||
},
|
||||
{}
|
||||
};
|
||||
|
||||
|
||||
static int pty_unix98_ioctl(struct tty_struct *tty,
|
||||
unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
@@ -515,10 +465,8 @@ static int pty_unix98_ioctl(struct tty_struct *tty,
|
||||
static struct tty_struct *ptm_unix98_lookup(struct tty_driver *driver,
|
||||
struct inode *ptm_inode, int idx)
|
||||
{
|
||||
struct tty_struct *tty = devpts_get_tty(ptm_inode, idx);
|
||||
if (tty)
|
||||
tty = tty->link;
|
||||
return tty;
|
||||
/* Master must be open via /dev/ptmx */
|
||||
return ERR_PTR(-EIO);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -589,7 +537,6 @@ static int pty_unix98_install(struct tty_driver *driver, struct tty_struct *tty)
|
||||
*/
|
||||
tty_driver_kref_get(driver);
|
||||
tty->count++;
|
||||
pty_count++;
|
||||
return 0;
|
||||
err_free_mem:
|
||||
deinitialize_tty_struct(o_tty);
|
||||
@@ -603,7 +550,6 @@ err_free_tty:
|
||||
|
||||
static void ptm_unix98_remove(struct tty_driver *driver, struct tty_struct *tty)
|
||||
{
|
||||
pty_count--;
|
||||
}
|
||||
|
||||
static void pts_unix98_remove(struct tty_driver *driver, struct tty_struct *tty)
|
||||
@@ -667,9 +613,7 @@ static int ptmx_open(struct inode *inode, struct file *filp)
|
||||
return retval;
|
||||
|
||||
/* find a device that is not in use. */
|
||||
tty_lock();
|
||||
index = devpts_new_index(inode);
|
||||
tty_unlock();
|
||||
if (index < 0) {
|
||||
retval = index;
|
||||
goto err_file;
|
||||
@@ -677,7 +621,7 @@ static int ptmx_open(struct inode *inode, struct file *filp)
|
||||
|
||||
mutex_lock(&tty_mutex);
|
||||
tty_lock();
|
||||
tty = tty_init_dev(ptm_driver, index, 1);
|
||||
tty = tty_init_dev(ptm_driver, index);
|
||||
mutex_unlock(&tty_mutex);
|
||||
|
||||
if (IS_ERR(tty)) {
|
||||
@@ -704,8 +648,8 @@ err_release:
|
||||
tty_release(inode, filp);
|
||||
return retval;
|
||||
out:
|
||||
devpts_kill_index(inode, index);
|
||||
tty_unlock();
|
||||
devpts_kill_index(inode, index);
|
||||
err_file:
|
||||
tty_free_file(filp);
|
||||
return retval;
|
||||
@@ -762,8 +706,6 @@ static void __init unix98_pty_init(void)
|
||||
if (tty_register_driver(pts_driver))
|
||||
panic("Couldn't register Unix98 pts driver");
|
||||
|
||||
register_sysctl_table(pty_root_table);
|
||||
|
||||
/* Now create the /dev/ptmx special device */
|
||||
tty_default_fops(&ptmx_fops);
|
||||
ptmx_fops.open = ptmx_open;
|
||||
|
||||
@@ -331,7 +331,7 @@ static int serial21285_verify_port(struct uart_port *port, struct serial_struct
|
||||
int ret = 0;
|
||||
if (ser->type != PORT_UNKNOWN && ser->type != PORT_21285)
|
||||
ret = -EINVAL;
|
||||
if (ser->irq != NO_IRQ)
|
||||
if (ser->irq <= 0)
|
||||
ret = -EINVAL;
|
||||
if (ser->baud_base != port->uartclk / 16)
|
||||
ret = -EINVAL;
|
||||
@@ -360,7 +360,7 @@ static struct uart_ops serial21285_ops = {
|
||||
static struct uart_port serial21285_port = {
|
||||
.mapbase = 0x42000160,
|
||||
.iotype = UPIO_MEM,
|
||||
.irq = NO_IRQ,
|
||||
.irq = 0,
|
||||
.fifosize = 16,
|
||||
.ops = &serial21285_ops,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
|
||||
@@ -86,13 +86,6 @@ static unsigned int skip_txen_test; /* force skip of txen test at init time */
|
||||
#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE)
|
||||
|
||||
|
||||
/*
|
||||
* We default to IRQ0 for the "no irq" hack. Some
|
||||
* machine types want others as well - they're free
|
||||
* to redefine this in their header file.
|
||||
*/
|
||||
#define is_real_interrupt(irq) ((irq) != 0)
|
||||
|
||||
#ifdef CONFIG_SERIAL_8250_DETECT_IRQ
|
||||
#define CONFIG_SERIAL_DETECT_IRQ 1
|
||||
#endif
|
||||
@@ -1750,7 +1743,7 @@ static void serial8250_backup_timeout(unsigned long data)
|
||||
* Must disable interrupts or else we risk racing with the interrupt
|
||||
* based handler.
|
||||
*/
|
||||
if (is_real_interrupt(up->port.irq)) {
|
||||
if (up->port.irq) {
|
||||
ier = serial_in(up, UART_IER);
|
||||
serial_out(up, UART_IER, 0);
|
||||
}
|
||||
@@ -1775,7 +1768,7 @@ static void serial8250_backup_timeout(unsigned long data)
|
||||
if (!(iir & UART_IIR_NO_INT))
|
||||
serial8250_tx_chars(up);
|
||||
|
||||
if (is_real_interrupt(up->port.irq))
|
||||
if (up->port.irq)
|
||||
serial_out(up, UART_IER, ier);
|
||||
|
||||
spin_unlock_irqrestore(&up->port.lock, flags);
|
||||
@@ -2028,7 +2021,7 @@ static int serial8250_startup(struct uart_port *port)
|
||||
serial_outp(up, UART_LCR, 0);
|
||||
}
|
||||
|
||||
if (is_real_interrupt(up->port.irq)) {
|
||||
if (up->port.irq) {
|
||||
unsigned char iir1;
|
||||
/*
|
||||
* Test for UARTs that do not reassert THRE when the
|
||||
@@ -2083,7 +2076,7 @@ static int serial8250_startup(struct uart_port *port)
|
||||
* hardware interrupt, we use a timer-based system. The original
|
||||
* driver used to do this with IRQ0.
|
||||
*/
|
||||
if (!is_real_interrupt(up->port.irq)) {
|
||||
if (!up->port.irq) {
|
||||
up->timer.data = (unsigned long)up;
|
||||
mod_timer(&up->timer, jiffies + uart_poll_timeout(port));
|
||||
} else {
|
||||
@@ -2099,13 +2092,13 @@ static int serial8250_startup(struct uart_port *port)
|
||||
|
||||
spin_lock_irqsave(&up->port.lock, flags);
|
||||
if (up->port.flags & UPF_FOURPORT) {
|
||||
if (!is_real_interrupt(up->port.irq))
|
||||
if (!up->port.irq)
|
||||
up->port.mctrl |= TIOCM_OUT1;
|
||||
} else
|
||||
/*
|
||||
* Most PC uarts need OUT2 raised to enable interrupts.
|
||||
*/
|
||||
if (is_real_interrupt(up->port.irq))
|
||||
if (up->port.irq)
|
||||
up->port.mctrl |= TIOCM_OUT2;
|
||||
|
||||
serial8250_set_mctrl(&up->port, up->port.mctrl);
|
||||
@@ -2223,7 +2216,7 @@ static void serial8250_shutdown(struct uart_port *port)
|
||||
|
||||
del_timer_sync(&up->timer);
|
||||
up->timer.function = serial8250_timeout;
|
||||
if (is_real_interrupt(up->port.irq))
|
||||
if (up->port.irq)
|
||||
serial_unlink_irq_chain(up);
|
||||
}
|
||||
|
||||
|
||||
@@ -1347,4 +1347,17 @@ config SERIAL_AR933X_NR_UARTS
|
||||
Set this to the number of serial ports you want the driver
|
||||
to support.
|
||||
|
||||
config SERIAL_EFM32_UART
|
||||
tristate "EFM32 UART/USART port."
|
||||
depends on ARCH_EFM32
|
||||
select SERIAL_CORE
|
||||
help
|
||||
This driver support the USART and UART ports on
|
||||
Energy Micro's efm32 SoCs.
|
||||
|
||||
config SERIAL_EFM32_UART_CONSOLE
|
||||
bool "EFM32 UART/USART console support"
|
||||
depends on SERIAL_EFM32_UART=y
|
||||
select SERIAL_CORE_CONSOLE
|
||||
|
||||
endmenu
|
||||
|
||||
@@ -61,12 +61,12 @@ obj-$(CONFIG_SERIAL_OF_PLATFORM) += of_serial.o
|
||||
obj-$(CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL) += nwpserial.o
|
||||
obj-$(CONFIG_SERIAL_KS8695) += serial_ks8695.o
|
||||
obj-$(CONFIG_SERIAL_OMAP) += omap-serial.o
|
||||
obj-$(CONFIG_SERIAL_ALTERA_UART) += altera_uart.o
|
||||
obj-$(CONFIG_KGDB_SERIAL_CONSOLE) += kgdboc.o
|
||||
obj-$(CONFIG_SERIAL_QE) += ucc_uart.o
|
||||
obj-$(CONFIG_SERIAL_TIMBERDALE) += timbuart.o
|
||||
obj-$(CONFIG_SERIAL_GRLIB_GAISLER_APBUART) += apbuart.o
|
||||
obj-$(CONFIG_SERIAL_ALTERA_JTAGUART) += altera_jtaguart.o
|
||||
obj-$(CONFIG_SERIAL_ALTERA_UART) += altera_uart.o
|
||||
obj-$(CONFIG_SERIAL_VT8500) += vt8500_serial.o
|
||||
obj-$(CONFIG_SERIAL_MRST_MAX3110) += mrst_max3110.o
|
||||
obj-$(CONFIG_SERIAL_MFD_HSU) += mfd.o
|
||||
@@ -78,3 +78,4 @@ obj-$(CONFIG_SERIAL_LANTIQ) += lantiq.o
|
||||
obj-$(CONFIG_SERIAL_XILINX_PS_UART) += xilinx_uartps.o
|
||||
obj-$(CONFIG_SERIAL_SIRFSOC) += sirfsoc_uart.o
|
||||
obj-$(CONFIG_SERIAL_AR933X) += ar933x_uart.o
|
||||
obj-$(CONFIG_SERIAL_EFM32_UART) += efm32-uart.o
|
||||
|
||||
@@ -377,6 +377,26 @@ static int altera_uart_verify_port(struct uart_port *port,
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CONSOLE_POLL
|
||||
static int altera_uart_poll_get_char(struct uart_port *port)
|
||||
{
|
||||
while (!(altera_uart_readl(port, ALTERA_UART_STATUS_REG) &
|
||||
ALTERA_UART_STATUS_RRDY_MSK))
|
||||
cpu_relax();
|
||||
|
||||
return altera_uart_readl(port, ALTERA_UART_RXDATA_REG);
|
||||
}
|
||||
|
||||
static void altera_uart_poll_put_char(struct uart_port *port, unsigned char c)
|
||||
{
|
||||
while (!(altera_uart_readl(port, ALTERA_UART_STATUS_REG) &
|
||||
ALTERA_UART_STATUS_TRDY_MSK))
|
||||
cpu_relax();
|
||||
|
||||
altera_uart_writel(port, c, ALTERA_UART_TXDATA_REG);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Define the basic serial functions we support.
|
||||
*/
|
||||
@@ -397,35 +417,16 @@ static struct uart_ops altera_uart_ops = {
|
||||
.release_port = altera_uart_release_port,
|
||||
.config_port = altera_uart_config_port,
|
||||
.verify_port = altera_uart_verify_port,
|
||||
#ifdef CONFIG_CONSOLE_POLL
|
||||
.poll_get_char = altera_uart_poll_get_char,
|
||||
.poll_put_char = altera_uart_poll_put_char,
|
||||
#endif
|
||||
};
|
||||
|
||||
static struct altera_uart altera_uart_ports[CONFIG_SERIAL_ALTERA_UART_MAXPORTS];
|
||||
|
||||
#if defined(CONFIG_SERIAL_ALTERA_UART_CONSOLE)
|
||||
|
||||
int __init early_altera_uart_setup(struct altera_uart_platform_uart *platp)
|
||||
{
|
||||
struct uart_port *port;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < CONFIG_SERIAL_ALTERA_UART_MAXPORTS && platp[i].mapbase; i++) {
|
||||
port = &altera_uart_ports[i].port;
|
||||
|
||||
port->line = i;
|
||||
port->type = PORT_ALTERA_UART;
|
||||
port->mapbase = platp[i].mapbase;
|
||||
port->membase = ioremap(port->mapbase, ALTERA_UART_SIZE);
|
||||
port->iotype = SERIAL_IO_MEM;
|
||||
port->irq = platp[i].irq;
|
||||
port->uartclk = platp[i].uartclk;
|
||||
port->flags = UPF_BOOT_AUTOCONF;
|
||||
port->ops = &altera_uart_ops;
|
||||
port->private_data = platp;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void altera_uart_console_putc(struct uart_port *port, const char c)
|
||||
{
|
||||
while (!(altera_uart_readl(port, ALTERA_UART_STATUS_REG) &
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -70,13 +70,6 @@
|
||||
|
||||
#define PASS_LIMIT 256
|
||||
|
||||
/*
|
||||
* We default to IRQ0 for the "no irq" hack. Some
|
||||
* machine types want others as well - they're free
|
||||
* to redefine this in their header file.
|
||||
*/
|
||||
#define is_real_interrupt(irq) ((irq) != 0)
|
||||
|
||||
#define BASE_BAUD 115200
|
||||
|
||||
/* Standard COM flags */
|
||||
@@ -640,7 +633,7 @@ static int m32r_sio_startup(struct uart_port *port)
|
||||
* hardware interrupt, we use a timer-based system. The original
|
||||
* driver used to do this with IRQ0.
|
||||
*/
|
||||
if (!is_real_interrupt(up->port.irq)) {
|
||||
if (!up->port.irq) {
|
||||
unsigned int timeout = up->port.timeout;
|
||||
|
||||
timeout = timeout > 6 ? (timeout / 2 - 2) : 1;
|
||||
@@ -687,7 +680,7 @@ static void m32r_sio_shutdown(struct uart_port *port)
|
||||
|
||||
sio_init();
|
||||
|
||||
if (!is_real_interrupt(up->port.irq))
|
||||
if (!up->port.irq)
|
||||
del_timer_sync(&up->timer);
|
||||
else
|
||||
serial_unlink_irq_chain(up);
|
||||
|
||||
@@ -507,7 +507,7 @@ static int __init mpc512x_psc_fifoc_init(void)
|
||||
|
||||
psc_fifoc_irq = irq_of_parse_and_map(np, 0);
|
||||
of_node_put(np);
|
||||
if (psc_fifoc_irq == NO_IRQ) {
|
||||
if (psc_fifoc_irq == 0) {
|
||||
pr_err("%s: Can't get FIFOC irq\n", __func__);
|
||||
iounmap(psc_fifoc);
|
||||
return -ENODEV;
|
||||
@@ -1354,7 +1354,7 @@ static int __devinit mpc52xx_uart_of_probe(struct platform_device *op)
|
||||
}
|
||||
|
||||
psc_ops->get_irq(port, op->dev.of_node);
|
||||
if (port->irq == NO_IRQ) {
|
||||
if (port->irq == 0) {
|
||||
dev_dbg(&op->dev, "Could not get irq\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user