static int vt8500_serial_probe(struct platform_device *pdev)
 {
        struct vt8500_port *vt8500_port;
-       struct resource *mmres, *irqres;
+       struct resource *mmres;
        struct device_node *np = pdev->dev.of_node;
        const unsigned int *flags;
        int ret;
        int port;
+       int irq;
 
        flags = of_device_get_match_data(&pdev->dev);
        if (!flags)
                return -EINVAL;
 
        mmres = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       irqres = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
-       if (!mmres || !irqres)
+       if (!mmres)
                return -ENODEV;
 
+       irq = platform_get_irq(pdev, 0);
+       if (irq < 0)
+               return irq;
+
        if (np) {
                port = of_alias_get_id(np, "serial");
                if (port >= VT8500_MAX_PORTS)
        vt8500_port->uart.type = PORT_VT8500;
        vt8500_port->uart.iotype = UPIO_MEM;
        vt8500_port->uart.mapbase = mmres->start;
-       vt8500_port->uart.irq = irqres->start;
+       vt8500_port->uart.irq = irq;
        vt8500_port->uart.fifosize = 16;
        vt8500_port->uart.ops = &vt8500_uart_pops;
        vt8500_port->uart.line = port;