--- a/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c @@ -235,7 +235,7 @@ struct omap_hwmod_irq_info omap2_timer11 }; struct omap_hwmod_irq_info omap2_uart1_mpu_irqs[] = { - { .irq = INT_24XX_UART1_IRQ, }, + { .irq = 0, }, { .irq = -1 } }; --- a/drivers/tty/serial/omap-serial.c +++ b/drivers/tty/serial/omap-serial.c @@ -517,8 +517,10 @@ static int serial_omap_startup(struct ua /* * Allocate the IRQ */ - retval = request_irq(up->port.irq, serial_omap_irq, up->port.irqflags, - up->name, up); + retval = 0; + if (up->port.irq) + retval = request_irq(up->port.irq, serial_omap_irq, + up->port.irqflags, up->name, up); if (retval) return retval; @@ -629,7 +631,8 @@ static void serial_omap_shutdown(struct } pm_runtime_put(&up->pdev->dev); - free_irq(up->port.irq, up); + if (up->port.irq) + free_irq(up->port.irq, up); } static inline void