static int serial_omap_get_context_loss_count(struct uart_omap_port *up)
 {
-       struct omap_uart_port_info *pdata = up->pdev->dev.platform_data;
+       struct omap_uart_port_info *pdata = up->dev->platform_data;
 
        if (!pdata->get_context_loss_count)
                return 0;
 
-       return pdata->get_context_loss_count(&up->pdev->dev);
+       return pdata->get_context_loss_count(up->dev);
 }
 
 static void serial_omap_set_forceidle(struct uart_omap_port *up)
 {
-       struct omap_uart_port_info *pdata = up->pdev->dev.platform_data;
+       struct omap_uart_port_info *pdata = up->dev->platform_data;
 
        if (pdata->set_forceidle)
-               pdata->set_forceidle(up->pdev);
+               pdata->set_forceidle(up->dev);
 }
 
 static void serial_omap_set_noidle(struct uart_omap_port *up)
 {
-       struct omap_uart_port_info *pdata = up->pdev->dev.platform_data;
+       struct omap_uart_port_info *pdata = up->dev->platform_data;
 
        if (pdata->set_noidle)
-               pdata->set_noidle(up->pdev);
+               pdata->set_noidle(up->dev);
 }
 
 static void serial_omap_enable_wakeup(struct uart_omap_port *up, bool enable)
 {
-       struct omap_uart_port_info *pdata = up->pdev->dev.platform_data;
+       struct omap_uart_port_info *pdata = up->dev->platform_data;
 
        if (pdata->enable_wakeup)
-               pdata->enable_wakeup(up->pdev, enable);
+               pdata->enable_wakeup(up->dev, enable);
 }
 
 /*
                omap_free_dma(up->uart_dma.rx_dma_channel);
                up->uart_dma.rx_dma_channel = OMAP_UART_DMA_CH_FREE;
                up->uart_dma.rx_dma_used = false;
-               pm_runtime_mark_last_busy(&up->pdev->dev);
-               pm_runtime_put_autosuspend(&up->pdev->dev);
+               pm_runtime_mark_last_busy(up->dev);
+               pm_runtime_put_autosuspend(up->dev);
        }
 }
 
 
        dev_dbg(up->port.dev, "serial_omap_enable_ms+%d\n", up->port.line);
 
-       pm_runtime_get_sync(&up->pdev->dev);
+       pm_runtime_get_sync(up->dev);
        up->ier |= UART_IER_MSI;
        serial_out(up, UART_IER, up->ier);
-       pm_runtime_put(&up->pdev->dev);
+       pm_runtime_put(up->dev);
 }
 
 static void serial_omap_stop_tx(struct uart_port *port)
 {
        struct uart_omap_port *up = to_uart_omap_port(port);
-       struct omap_uart_port_info *pdata = up->pdev->dev.platform_data;
+       struct omap_uart_port_info *pdata = up->dev->platform_data;
 
        if (up->use_dma &&
                up->uart_dma.tx_dma_channel != OMAP_UART_DMA_CH_FREE) {
                omap_stop_dma(up->uart_dma.tx_dma_channel);
                omap_free_dma(up->uart_dma.tx_dma_channel);
                up->uart_dma.tx_dma_channel = OMAP_UART_DMA_CH_FREE;
-               pm_runtime_mark_last_busy(&up->pdev->dev);
-               pm_runtime_put_autosuspend(&up->pdev->dev);
+               pm_runtime_mark_last_busy(up->dev);
+               pm_runtime_put_autosuspend(up->dev);
        }
 
-       pm_runtime_get_sync(&up->pdev->dev);
+       pm_runtime_get_sync(up->dev);
        if (up->ier & UART_IER_THRI) {
                up->ier &= ~UART_IER_THRI;
                serial_out(up, UART_IER, up->ier);
        if (!up->use_dma && pdata)
                serial_omap_set_forceidle(up);
 
-       pm_runtime_mark_last_busy(&up->pdev->dev);
-       pm_runtime_put_autosuspend(&up->pdev->dev);
+       pm_runtime_mark_last_busy(up->dev);
+       pm_runtime_put_autosuspend(up->dev);
 }
 
 static void serial_omap_stop_rx(struct uart_port *port)
 {
        struct uart_omap_port *up = to_uart_omap_port(port);
 
-       pm_runtime_get_sync(&up->pdev->dev);
+       pm_runtime_get_sync(up->dev);
        if (up->use_dma)
                serial_omap_stop_rxdma(up);
        up->ier &= ~UART_IER_RLSI;
        up->port.read_status_mask &= ~UART_LSR_DR;
        serial_out(up, UART_IER, up->ier);
-       pm_runtime_mark_last_busy(&up->pdev->dev);
-       pm_runtime_put_autosuspend(&up->pdev->dev);
+       pm_runtime_mark_last_busy(up->dev);
+       pm_runtime_put_autosuspend(up->dev);
 }
 
 static inline void receive_chars(struct uart_omap_port *up,
        int ret = 0;
 
        if (!up->use_dma) {
-               pm_runtime_get_sync(&up->pdev->dev);
+               pm_runtime_get_sync(up->dev);
                serial_omap_enable_ier_thri(up);
                serial_omap_set_noidle(up);
-               pm_runtime_mark_last_busy(&up->pdev->dev);
-               pm_runtime_put_autosuspend(&up->pdev->dev);
+               pm_runtime_mark_last_busy(up->dev);
+               pm_runtime_put_autosuspend(up->dev);
                return;
        }
 
        xmit = &up->port.state->xmit;
 
        if (up->uart_dma.tx_dma_channel == OMAP_UART_DMA_CH_FREE) {
-               pm_runtime_get_sync(&up->pdev->dev);
+               pm_runtime_get_sync(up->dev);
                ret = omap_request_dma(up->uart_dma.uart_dma_tx,
                                "UART Tx DMA",
                                (void *)uart_tx_dma_callback, up,
        unsigned int iir, lsr;
        unsigned long flags;
 
-       pm_runtime_get_sync(&up->pdev->dev);
+       pm_runtime_get_sync(up->dev);
        iir = serial_in(up, UART_IIR);
        if (iir & UART_IIR_NO_INT) {
-               pm_runtime_mark_last_busy(&up->pdev->dev);
-               pm_runtime_put_autosuspend(&up->pdev->dev);
+               pm_runtime_mark_last_busy(up->dev);
+               pm_runtime_put_autosuspend(up->dev);
                return IRQ_NONE;
        }
 
                transmit_chars(up);
 
        spin_unlock_irqrestore(&up->port.lock, flags);
-       pm_runtime_mark_last_busy(&up->pdev->dev);
-       pm_runtime_put_autosuspend(&up->pdev->dev);
+       pm_runtime_mark_last_busy(up->dev);
+       pm_runtime_put_autosuspend(up->dev);
 
        up->port_activity = jiffies;
        return IRQ_HANDLED;
        unsigned long flags = 0;
        unsigned int ret = 0;
 
-       pm_runtime_get_sync(&up->pdev->dev);
+       pm_runtime_get_sync(up->dev);
        dev_dbg(up->port.dev, "serial_omap_tx_empty+%d\n", up->port.line);
        spin_lock_irqsave(&up->port.lock, flags);
        ret = serial_in(up, UART_LSR) & UART_LSR_TEMT ? TIOCSER_TEMT : 0;
        spin_unlock_irqrestore(&up->port.lock, flags);
-       pm_runtime_put(&up->pdev->dev);
+       pm_runtime_put(up->dev);
        return ret;
 }
 
        unsigned int status;
        unsigned int ret = 0;
 
-       pm_runtime_get_sync(&up->pdev->dev);
+       pm_runtime_get_sync(up->dev);
        status = check_modem_status(up);
-       pm_runtime_put(&up->pdev->dev);
+       pm_runtime_put(up->dev);
 
        dev_dbg(up->port.dev, "serial_omap_get_mctrl+%d\n", up->port.line);
 
        if (mctrl & TIOCM_LOOP)
                mcr |= UART_MCR_LOOP;
 
-       pm_runtime_get_sync(&up->pdev->dev);
+       pm_runtime_get_sync(up->dev);
        up->mcr = serial_in(up, UART_MCR);
        up->mcr |= mcr;
        serial_out(up, UART_MCR, up->mcr);
-       pm_runtime_put(&up->pdev->dev);
+       pm_runtime_put(up->dev);
 
        if (gpio_is_valid(up->DTR_gpio) &&
            !!(mctrl & TIOCM_DTR) != up->DTR_active) {
        unsigned long flags = 0;
 
        dev_dbg(up->port.dev, "serial_omap_break_ctl+%d\n", up->port.line);
-       pm_runtime_get_sync(&up->pdev->dev);
+       pm_runtime_get_sync(up->dev);
        spin_lock_irqsave(&up->port.lock, flags);
        if (break_state == -1)
                up->lcr |= UART_LCR_SBC;
                up->lcr &= ~UART_LCR_SBC;
        serial_out(up, UART_LCR, up->lcr);
        spin_unlock_irqrestore(&up->port.lock, flags);
-       pm_runtime_put(&up->pdev->dev);
+       pm_runtime_put(up->dev);
 }
 
 static int serial_omap_startup(struct uart_port *port)
 
        dev_dbg(up->port.dev, "serial_omap_startup+%d\n", up->port.line);
 
-       pm_runtime_get_sync(&up->pdev->dev);
+       pm_runtime_get_sync(up->dev);
        /*
         * Clear the FIFO buffers and disable them.
         * (they will be reenabled in set_termios())
        /* Enable module level wake up */
        serial_out(up, UART_OMAP_WER, OMAP_UART_WER_MOD_WKUP);
 
-       pm_runtime_mark_last_busy(&up->pdev->dev);
-       pm_runtime_put_autosuspend(&up->pdev->dev);
+       pm_runtime_mark_last_busy(up->dev);
+       pm_runtime_put_autosuspend(up->dev);
        up->port_activity = jiffies;
        return 0;
 }
 
        dev_dbg(up->port.dev, "serial_omap_shutdown+%d\n", up->port.line);
 
-       pm_runtime_get_sync(&up->pdev->dev);
+       pm_runtime_get_sync(up->dev);
        /*
         * Disable interrupts from this port
         */
                up->uart_dma.rx_buf = NULL;
        }
 
-       pm_runtime_put(&up->pdev->dev);
+       pm_runtime_put(up->dev);
        free_irq(up->port.irq, up);
 }
 
         * Ok, we're now changing the port state. Do it with
         * interrupts disabled.
         */
-       pm_runtime_get_sync(&up->pdev->dev);
+       pm_runtime_get_sync(up->dev);
        spin_lock_irqsave(&up->port.lock, flags);
 
        /*
        serial_omap_configure_xonxoff(up, termios);
 
        spin_unlock_irqrestore(&up->port.lock, flags);
-       pm_runtime_put(&up->pdev->dev);
+       pm_runtime_put(up->dev);
        dev_dbg(up->port.dev, "serial_omap_set_termios+%d\n", up->port.line);
 }
 
 
        dev_dbg(up->port.dev, "serial_omap_pm+%d\n", up->port.line);
 
-       pm_runtime_get_sync(&up->pdev->dev);
+       pm_runtime_get_sync(up->dev);
        serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
        efr = serial_in(up, UART_EFR);
        serial_out(up, UART_EFR, efr | UART_EFR_ECB);
        serial_out(up, UART_EFR, efr);
        serial_out(up, UART_LCR, 0);
 
-       if (!device_may_wakeup(&up->pdev->dev)) {
+       if (!device_may_wakeup(up->dev)) {
                if (!state)
-                       pm_runtime_forbid(&up->pdev->dev);
+                       pm_runtime_forbid(up->dev);
                else
-                       pm_runtime_allow(&up->pdev->dev);
+                       pm_runtime_allow(up->dev);
        }
 
-       pm_runtime_put(&up->pdev->dev);
+       pm_runtime_put(up->dev);
 }
 
 static void serial_omap_release_port(struct uart_port *port)
 {
        struct uart_omap_port *up = to_uart_omap_port(port);
 
-       pm_runtime_get_sync(&up->pdev->dev);
+       pm_runtime_get_sync(up->dev);
        wait_for_xmitr(up);
        serial_out(up, UART_TX, ch);
-       pm_runtime_put(&up->pdev->dev);
+       pm_runtime_put(up->dev);
 }
 
 static int serial_omap_poll_get_char(struct uart_port *port)
        struct uart_omap_port *up = to_uart_omap_port(port);
        unsigned int status;
 
-       pm_runtime_get_sync(&up->pdev->dev);
+       pm_runtime_get_sync(up->dev);
        status = serial_in(up, UART_LSR);
        if (!(status & UART_LSR_DR))
                return NO_POLL_CHAR;
 
        status = serial_in(up, UART_RX);
-       pm_runtime_put(&up->pdev->dev);
+       pm_runtime_put(up->dev);
        return status;
 }
 
        unsigned int ier;
        int locked = 1;
 
-       pm_runtime_get_sync(&up->pdev->dev);
+       pm_runtime_get_sync(up->dev);
 
        local_irq_save(flags);
        if (up->port.sysrq)
        if (up->msr_saved_flags)
                check_modem_status(up);
 
-       pm_runtime_mark_last_busy(&up->pdev->dev);
-       pm_runtime_put_autosuspend(&up->pdev->dev);
+       pm_runtime_mark_last_busy(up->dev);
+       pm_runtime_put_autosuspend(up->dev);
        if (locked)
                spin_unlock(&up->port.lock);
        local_irq_restore(flags);
        int ret = 0;
 
        if (up->uart_dma.rx_dma_channel == -1) {
-               pm_runtime_get_sync(&up->pdev->dev);
+               pm_runtime_get_sync(up->dev);
                ret = omap_request_dma(up->uart_dma.uart_dma_rx,
                                "UART Rx DMA",
                                (void *)uart_rx_dma_callback, up,
                minor = (mvr & OMAP_UART_MVR_MIN_MASK);
                break;
        default:
-               dev_warn(&up->pdev->dev,
+               dev_warn(up->dev,
                        "Unknown %s revision, defaulting to highest\n",
                        up->name);
                /* highest possible revision */
                up->DTR_gpio = -EINVAL;
        up->DTR_active = 0;
 
-       up->pdev = pdev;
+       up->dev = &pdev->dev;
        up->port.dev = &pdev->dev;
        up->port.type = PORT_OMAP;
        up->port.iotype = UPIO_MEM;
        struct uart_omap_port *up = platform_get_drvdata(dev);
 
        if (up) {
-               pm_runtime_disable(&up->pdev->dev);
+               pm_runtime_disable(up->dev);
                uart_remove_one_port(&serial_omap_reg, &up->port);
                pm_qos_remove_request(&up->pm_qos_request);
        }
                timeout--;
                if (!timeout) {
                        /* Should *never* happen. we warn and carry on */
-                       dev_crit(&up->pdev->dev, "Errata i202: timedout %x\n",
+                       dev_crit(up->dev, "Errata i202: timedout %x\n",
                                                serial_in(up, UART_LSR));
                        break;
                }