|
|
@@ -384,18 +384,24 @@ static int dw8250_probe(struct platform_device *pdev)
|
|
|
{
|
|
|
struct uart_8250_port uart = {};
|
|
|
struct resource *regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
|
|
- struct resource *irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
|
|
|
+ int irq = platform_get_irq(pdev, 0);
|
|
|
struct dw8250_data *data;
|
|
|
int err;
|
|
|
|
|
|
- if (!regs || !irq) {
|
|
|
- dev_err(&pdev->dev, "no registers/irq defined\n");
|
|
|
+ if (!regs) {
|
|
|
+ dev_err(&pdev->dev, "no registers defined\n");
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
|
+ if (irq < 0) {
|
|
|
+ if (irq != -EPROBE_DEFER)
|
|
|
+ dev_err(&pdev->dev, "cannot get irq\n");
|
|
|
+ return irq;
|
|
|
+ }
|
|
|
+
|
|
|
spin_lock_init(&uart.port.lock);
|
|
|
uart.port.mapbase = regs->start;
|
|
|
- uart.port.irq = irq->start;
|
|
|
+ uart.port.irq = irq;
|
|
|
uart.port.handle_irq = dw8250_handle_irq;
|
|
|
uart.port.pm = dw8250_do_pm;
|
|
|
uart.port.type = PORT_8250;
|