提交 d8ee4ea6 编写于 作者: F Felipe Balbi 提交者: Greg Kroah-Hartman

serial: omap: don't access the platform_device

The driver doesn't need to know about its platform_device.

Everything the driver needs can be done through the
struct device pointer. In case we need to use the
OMAP-specific PM function pointers, those can make
sure to find the device's platform_device pointer
so they can find the struct omap_device through
pdev->archdata field.
Tested-by: NShubhrajyoti D <shubhrajyoti@ti.com>
Acked-by: NSantosh Shilimkar <santosh.shilimkar@ti.com>
Signed-off-by: NFelipe Balbi <balbi@ti.com>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
上级 27788c5f
...@@ -81,8 +81,9 @@ static struct omap_uart_port_info omap_serial_default_info[] __initdata = { ...@@ -81,8 +81,9 @@ static struct omap_uart_port_info omap_serial_default_info[] __initdata = {
}; };
#ifdef CONFIG_PM #ifdef CONFIG_PM
static void omap_uart_enable_wakeup(struct platform_device *pdev, bool enable) static void omap_uart_enable_wakeup(struct device *dev, bool enable)
{ {
struct platform_device *pdev = to_platform_device(dev);
struct omap_device *od = to_omap_device(pdev); struct omap_device *od = to_omap_device(pdev);
if (!od) if (!od)
...@@ -99,15 +100,17 @@ static void omap_uart_enable_wakeup(struct platform_device *pdev, bool enable) ...@@ -99,15 +100,17 @@ static void omap_uart_enable_wakeup(struct platform_device *pdev, bool enable)
* in Smartidle Mode When Configured for DMA Operations. * in Smartidle Mode When Configured for DMA Operations.
* WA: configure uart in force idle mode. * WA: configure uart in force idle mode.
*/ */
static void omap_uart_set_noidle(struct platform_device *pdev) static void omap_uart_set_noidle(struct device *dev)
{ {
struct platform_device *pdev = to_platform_device(dev);
struct omap_device *od = to_omap_device(pdev); struct omap_device *od = to_omap_device(pdev);
omap_hwmod_set_slave_idlemode(od->hwmods[0], HWMOD_IDLEMODE_NO); omap_hwmod_set_slave_idlemode(od->hwmods[0], HWMOD_IDLEMODE_NO);
} }
static void omap_uart_set_smartidle(struct platform_device *pdev) static void omap_uart_set_smartidle(struct device *dev)
{ {
struct platform_device *pdev = to_platform_device(dev);
struct omap_device *od = to_omap_device(pdev); struct omap_device *od = to_omap_device(pdev);
u8 idlemode; u8 idlemode;
...@@ -120,10 +123,10 @@ static void omap_uart_set_smartidle(struct platform_device *pdev) ...@@ -120,10 +123,10 @@ static void omap_uart_set_smartidle(struct platform_device *pdev)
} }
#else #else
static void omap_uart_enable_wakeup(struct platform_device *pdev, bool enable) static void omap_uart_enable_wakeup(struct device *dev, bool enable)
{} {}
static void omap_uart_set_noidle(struct platform_device *pdev) {} static void omap_uart_set_noidle(struct device *dev) {}
static void omap_uart_set_smartidle(struct platform_device *pdev) {} static void omap_uart_set_smartidle(struct device *dev) {}
#endif /* CONFIG_PM */ #endif /* CONFIG_PM */
#ifdef CONFIG_OMAP_MUX #ifdef CONFIG_OMAP_MUX
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
#define __OMAP_SERIAL_H__ #define __OMAP_SERIAL_H__
#include <linux/serial_core.h> #include <linux/serial_core.h>
#include <linux/platform_device.h> #include <linux/device.h>
#include <linux/pm_qos.h> #include <linux/pm_qos.h>
#include <plat/mux.h> #include <plat/mux.h>
...@@ -74,9 +74,9 @@ struct omap_uart_port_info { ...@@ -74,9 +74,9 @@ struct omap_uart_port_info {
int DTR_present; int DTR_present;
int (*get_context_loss_count)(struct device *); int (*get_context_loss_count)(struct device *);
void (*set_forceidle)(struct platform_device *); void (*set_forceidle)(struct device *);
void (*set_noidle)(struct platform_device *); void (*set_noidle)(struct device *);
void (*enable_wakeup)(struct platform_device *, bool); void (*enable_wakeup)(struct device *, bool);
}; };
struct uart_omap_dma { struct uart_omap_dma {
...@@ -108,7 +108,7 @@ struct uart_omap_dma { ...@@ -108,7 +108,7 @@ struct uart_omap_dma {
struct uart_omap_port { struct uart_omap_port {
struct uart_port port; struct uart_port port;
struct uart_omap_dma uart_dma; struct uart_omap_dma uart_dma;
struct platform_device *pdev; struct device *dev;
unsigned char ier; unsigned char ier;
unsigned char lcr; unsigned char lcr;
......
...@@ -104,36 +104,36 @@ static inline void serial_omap_clear_fifos(struct uart_omap_port *up) ...@@ -104,36 +104,36 @@ static inline void serial_omap_clear_fifos(struct uart_omap_port *up)
static int serial_omap_get_context_loss_count(struct uart_omap_port *up) 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) if (!pdata->get_context_loss_count)
return 0; 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) 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) 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) 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) 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) 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) if (pdata->enable_wakeup)
pdata->enable_wakeup(up->pdev, enable); pdata->enable_wakeup(up->dev, enable);
} }
/* /*
...@@ -169,8 +169,8 @@ static void serial_omap_stop_rxdma(struct uart_omap_port *up) ...@@ -169,8 +169,8 @@ static void serial_omap_stop_rxdma(struct uart_omap_port *up)
omap_free_dma(up->uart_dma.rx_dma_channel); 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_channel = OMAP_UART_DMA_CH_FREE;
up->uart_dma.rx_dma_used = false; up->uart_dma.rx_dma_used = false;
pm_runtime_mark_last_busy(&up->pdev->dev); pm_runtime_mark_last_busy(up->dev);
pm_runtime_put_autosuspend(&up->pdev->dev); pm_runtime_put_autosuspend(up->dev);
} }
} }
...@@ -180,16 +180,16 @@ static void serial_omap_enable_ms(struct uart_port *port) ...@@ -180,16 +180,16 @@ static void serial_omap_enable_ms(struct uart_port *port)
dev_dbg(up->port.dev, "serial_omap_enable_ms+%d\n", up->port.line); 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; up->ier |= UART_IER_MSI;
serial_out(up, UART_IER, up->ier); 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) static void serial_omap_stop_tx(struct uart_port *port)
{ {
struct uart_omap_port *up = to_uart_omap_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 && if (up->use_dma &&
up->uart_dma.tx_dma_channel != OMAP_UART_DMA_CH_FREE) { up->uart_dma.tx_dma_channel != OMAP_UART_DMA_CH_FREE) {
...@@ -202,11 +202,11 @@ static void serial_omap_stop_tx(struct uart_port *port) ...@@ -202,11 +202,11 @@ static void serial_omap_stop_tx(struct uart_port *port)
omap_stop_dma(up->uart_dma.tx_dma_channel); omap_stop_dma(up->uart_dma.tx_dma_channel);
omap_free_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; up->uart_dma.tx_dma_channel = OMAP_UART_DMA_CH_FREE;
pm_runtime_mark_last_busy(&up->pdev->dev); pm_runtime_mark_last_busy(up->dev);
pm_runtime_put_autosuspend(&up->pdev->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) { if (up->ier & UART_IER_THRI) {
up->ier &= ~UART_IER_THRI; up->ier &= ~UART_IER_THRI;
serial_out(up, UART_IER, up->ier); serial_out(up, UART_IER, up->ier);
...@@ -215,22 +215,22 @@ static void serial_omap_stop_tx(struct uart_port *port) ...@@ -215,22 +215,22 @@ static void serial_omap_stop_tx(struct uart_port *port)
if (!up->use_dma && pdata) if (!up->use_dma && pdata)
serial_omap_set_forceidle(up); serial_omap_set_forceidle(up);
pm_runtime_mark_last_busy(&up->pdev->dev); pm_runtime_mark_last_busy(up->dev);
pm_runtime_put_autosuspend(&up->pdev->dev); pm_runtime_put_autosuspend(up->dev);
} }
static void serial_omap_stop_rx(struct uart_port *port) static void serial_omap_stop_rx(struct uart_port *port)
{ {
struct uart_omap_port *up = to_uart_omap_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) if (up->use_dma)
serial_omap_stop_rxdma(up); serial_omap_stop_rxdma(up);
up->ier &= ~UART_IER_RLSI; up->ier &= ~UART_IER_RLSI;
up->port.read_status_mask &= ~UART_LSR_DR; up->port.read_status_mask &= ~UART_LSR_DR;
serial_out(up, UART_IER, up->ier); serial_out(up, UART_IER, up->ier);
pm_runtime_mark_last_busy(&up->pdev->dev); pm_runtime_mark_last_busy(up->dev);
pm_runtime_put_autosuspend(&up->pdev->dev); pm_runtime_put_autosuspend(up->dev);
} }
static inline void receive_chars(struct uart_omap_port *up, static inline void receive_chars(struct uart_omap_port *up,
...@@ -348,11 +348,11 @@ static void serial_omap_start_tx(struct uart_port *port) ...@@ -348,11 +348,11 @@ static void serial_omap_start_tx(struct uart_port *port)
int ret = 0; int ret = 0;
if (!up->use_dma) { 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_enable_ier_thri(up);
serial_omap_set_noidle(up); serial_omap_set_noidle(up);
pm_runtime_mark_last_busy(&up->pdev->dev); pm_runtime_mark_last_busy(up->dev);
pm_runtime_put_autosuspend(&up->pdev->dev); pm_runtime_put_autosuspend(up->dev);
return; return;
} }
...@@ -362,7 +362,7 @@ static void serial_omap_start_tx(struct uart_port *port) ...@@ -362,7 +362,7 @@ static void serial_omap_start_tx(struct uart_port *port)
xmit = &up->port.state->xmit; xmit = &up->port.state->xmit;
if (up->uart_dma.tx_dma_channel == OMAP_UART_DMA_CH_FREE) { 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, ret = omap_request_dma(up->uart_dma.uart_dma_tx,
"UART Tx DMA", "UART Tx DMA",
(void *)uart_tx_dma_callback, up, (void *)uart_tx_dma_callback, up,
...@@ -445,11 +445,11 @@ static inline irqreturn_t serial_omap_irq(int irq, void *dev_id) ...@@ -445,11 +445,11 @@ static inline irqreturn_t serial_omap_irq(int irq, void *dev_id)
unsigned int iir, lsr; unsigned int iir, lsr;
unsigned long flags; unsigned long flags;
pm_runtime_get_sync(&up->pdev->dev); pm_runtime_get_sync(up->dev);
iir = serial_in(up, UART_IIR); iir = serial_in(up, UART_IIR);
if (iir & UART_IIR_NO_INT) { if (iir & UART_IIR_NO_INT) {
pm_runtime_mark_last_busy(&up->pdev->dev); pm_runtime_mark_last_busy(up->dev);
pm_runtime_put_autosuspend(&up->pdev->dev); pm_runtime_put_autosuspend(up->dev);
return IRQ_NONE; return IRQ_NONE;
} }
...@@ -473,8 +473,8 @@ static inline irqreturn_t serial_omap_irq(int irq, void *dev_id) ...@@ -473,8 +473,8 @@ static inline irqreturn_t serial_omap_irq(int irq, void *dev_id)
transmit_chars(up); transmit_chars(up);
spin_unlock_irqrestore(&up->port.lock, flags); spin_unlock_irqrestore(&up->port.lock, flags);
pm_runtime_mark_last_busy(&up->pdev->dev); pm_runtime_mark_last_busy(up->dev);
pm_runtime_put_autosuspend(&up->pdev->dev); pm_runtime_put_autosuspend(up->dev);
up->port_activity = jiffies; up->port_activity = jiffies;
return IRQ_HANDLED; return IRQ_HANDLED;
...@@ -486,12 +486,12 @@ static unsigned int serial_omap_tx_empty(struct uart_port *port) ...@@ -486,12 +486,12 @@ static unsigned int serial_omap_tx_empty(struct uart_port *port)
unsigned long flags = 0; unsigned long flags = 0;
unsigned int ret = 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); dev_dbg(up->port.dev, "serial_omap_tx_empty+%d\n", up->port.line);
spin_lock_irqsave(&up->port.lock, flags); spin_lock_irqsave(&up->port.lock, flags);
ret = serial_in(up, UART_LSR) & UART_LSR_TEMT ? TIOCSER_TEMT : 0; ret = serial_in(up, UART_LSR) & UART_LSR_TEMT ? TIOCSER_TEMT : 0;
spin_unlock_irqrestore(&up->port.lock, flags); spin_unlock_irqrestore(&up->port.lock, flags);
pm_runtime_put(&up->pdev->dev); pm_runtime_put(up->dev);
return ret; return ret;
} }
...@@ -501,9 +501,9 @@ static unsigned int serial_omap_get_mctrl(struct uart_port *port) ...@@ -501,9 +501,9 @@ static unsigned int serial_omap_get_mctrl(struct uart_port *port)
unsigned int status; unsigned int status;
unsigned int ret = 0; unsigned int ret = 0;
pm_runtime_get_sync(&up->pdev->dev); pm_runtime_get_sync(up->dev);
status = check_modem_status(up); 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); dev_dbg(up->port.dev, "serial_omap_get_mctrl+%d\n", up->port.line);
...@@ -535,11 +535,11 @@ static void serial_omap_set_mctrl(struct uart_port *port, unsigned int mctrl) ...@@ -535,11 +535,11 @@ static void serial_omap_set_mctrl(struct uart_port *port, unsigned int mctrl)
if (mctrl & TIOCM_LOOP) if (mctrl & TIOCM_LOOP)
mcr |= UART_MCR_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 = serial_in(up, UART_MCR);
up->mcr |= mcr; up->mcr |= mcr;
serial_out(up, UART_MCR, up->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) && if (gpio_is_valid(up->DTR_gpio) &&
!!(mctrl & TIOCM_DTR) != up->DTR_active) { !!(mctrl & TIOCM_DTR) != up->DTR_active) {
...@@ -558,7 +558,7 @@ static void serial_omap_break_ctl(struct uart_port *port, int break_state) ...@@ -558,7 +558,7 @@ static void serial_omap_break_ctl(struct uart_port *port, int break_state)
unsigned long flags = 0; unsigned long flags = 0;
dev_dbg(up->port.dev, "serial_omap_break_ctl+%d\n", up->port.line); 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); spin_lock_irqsave(&up->port.lock, flags);
if (break_state == -1) if (break_state == -1)
up->lcr |= UART_LCR_SBC; up->lcr |= UART_LCR_SBC;
...@@ -566,7 +566,7 @@ static void serial_omap_break_ctl(struct uart_port *port, int break_state) ...@@ -566,7 +566,7 @@ static void serial_omap_break_ctl(struct uart_port *port, int break_state)
up->lcr &= ~UART_LCR_SBC; up->lcr &= ~UART_LCR_SBC;
serial_out(up, UART_LCR, up->lcr); serial_out(up, UART_LCR, up->lcr);
spin_unlock_irqrestore(&up->port.lock, flags); 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) static int serial_omap_startup(struct uart_port *port)
...@@ -585,7 +585,7 @@ static int serial_omap_startup(struct uart_port *port) ...@@ -585,7 +585,7 @@ static int serial_omap_startup(struct uart_port *port)
dev_dbg(up->port.dev, "serial_omap_startup+%d\n", up->port.line); 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. * Clear the FIFO buffers and disable them.
* (they will be reenabled in set_termios()) * (they will be reenabled in set_termios())
...@@ -641,8 +641,8 @@ static int serial_omap_startup(struct uart_port *port) ...@@ -641,8 +641,8 @@ static int serial_omap_startup(struct uart_port *port)
/* Enable module level wake up */ /* Enable module level wake up */
serial_out(up, UART_OMAP_WER, OMAP_UART_WER_MOD_WKUP); serial_out(up, UART_OMAP_WER, OMAP_UART_WER_MOD_WKUP);
pm_runtime_mark_last_busy(&up->pdev->dev); pm_runtime_mark_last_busy(up->dev);
pm_runtime_put_autosuspend(&up->pdev->dev); pm_runtime_put_autosuspend(up->dev);
up->port_activity = jiffies; up->port_activity = jiffies;
return 0; return 0;
} }
...@@ -654,7 +654,7 @@ static void serial_omap_shutdown(struct uart_port *port) ...@@ -654,7 +654,7 @@ static void serial_omap_shutdown(struct uart_port *port)
dev_dbg(up->port.dev, "serial_omap_shutdown+%d\n", up->port.line); 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 * Disable interrupts from this port
*/ */
...@@ -689,7 +689,7 @@ static void serial_omap_shutdown(struct uart_port *port) ...@@ -689,7 +689,7 @@ static void serial_omap_shutdown(struct uart_port *port)
up->uart_dma.rx_buf = NULL; up->uart_dma.rx_buf = NULL;
} }
pm_runtime_put(&up->pdev->dev); pm_runtime_put(up->dev);
free_irq(up->port.irq, up); free_irq(up->port.irq, up);
} }
...@@ -821,7 +821,7 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios, ...@@ -821,7 +821,7 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios,
* Ok, we're now changing the port state. Do it with * Ok, we're now changing the port state. Do it with
* interrupts disabled. * interrupts disabled.
*/ */
pm_runtime_get_sync(&up->pdev->dev); pm_runtime_get_sync(up->dev);
spin_lock_irqsave(&up->port.lock, flags); spin_lock_irqsave(&up->port.lock, flags);
/* /*
...@@ -970,7 +970,7 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios, ...@@ -970,7 +970,7 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios,
serial_omap_configure_xonxoff(up, termios); serial_omap_configure_xonxoff(up, termios);
spin_unlock_irqrestore(&up->port.lock, flags); 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_set_termios+%d\n", up->port.line);
} }
...@@ -983,7 +983,7 @@ serial_omap_pm(struct uart_port *port, unsigned int state, ...@@ -983,7 +983,7 @@ serial_omap_pm(struct uart_port *port, unsigned int state,
dev_dbg(up->port.dev, "serial_omap_pm+%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); serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B);
efr = serial_in(up, UART_EFR); efr = serial_in(up, UART_EFR);
serial_out(up, UART_EFR, efr | UART_EFR_ECB); serial_out(up, UART_EFR, efr | UART_EFR_ECB);
...@@ -994,14 +994,14 @@ serial_omap_pm(struct uart_port *port, unsigned int state, ...@@ -994,14 +994,14 @@ serial_omap_pm(struct uart_port *port, unsigned int state,
serial_out(up, UART_EFR, efr); serial_out(up, UART_EFR, efr);
serial_out(up, UART_LCR, 0); serial_out(up, UART_LCR, 0);
if (!device_may_wakeup(&up->pdev->dev)) { if (!device_may_wakeup(up->dev)) {
if (!state) if (!state)
pm_runtime_forbid(&up->pdev->dev); pm_runtime_forbid(up->dev);
else 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) static void serial_omap_release_port(struct uart_port *port)
...@@ -1080,10 +1080,10 @@ static void serial_omap_poll_put_char(struct uart_port *port, unsigned char ch) ...@@ -1080,10 +1080,10 @@ static void serial_omap_poll_put_char(struct uart_port *port, unsigned char ch)
{ {
struct uart_omap_port *up = to_uart_omap_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); wait_for_xmitr(up);
serial_out(up, UART_TX, ch); 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) static int serial_omap_poll_get_char(struct uart_port *port)
...@@ -1091,13 +1091,13 @@ static int serial_omap_poll_get_char(struct uart_port *port) ...@@ -1091,13 +1091,13 @@ static int serial_omap_poll_get_char(struct uart_port *port)
struct uart_omap_port *up = to_uart_omap_port(port); struct uart_omap_port *up = to_uart_omap_port(port);
unsigned int status; unsigned int status;
pm_runtime_get_sync(&up->pdev->dev); pm_runtime_get_sync(up->dev);
status = serial_in(up, UART_LSR); status = serial_in(up, UART_LSR);
if (!(status & UART_LSR_DR)) if (!(status & UART_LSR_DR))
return NO_POLL_CHAR; return NO_POLL_CHAR;
status = serial_in(up, UART_RX); status = serial_in(up, UART_RX);
pm_runtime_put(&up->pdev->dev); pm_runtime_put(up->dev);
return status; return status;
} }
...@@ -1126,7 +1126,7 @@ serial_omap_console_write(struct console *co, const char *s, ...@@ -1126,7 +1126,7 @@ serial_omap_console_write(struct console *co, const char *s,
unsigned int ier; unsigned int ier;
int locked = 1; int locked = 1;
pm_runtime_get_sync(&up->pdev->dev); pm_runtime_get_sync(up->dev);
local_irq_save(flags); local_irq_save(flags);
if (up->port.sysrq) if (up->port.sysrq)
...@@ -1160,8 +1160,8 @@ serial_omap_console_write(struct console *co, const char *s, ...@@ -1160,8 +1160,8 @@ serial_omap_console_write(struct console *co, const char *s,
if (up->msr_saved_flags) if (up->msr_saved_flags)
check_modem_status(up); check_modem_status(up);
pm_runtime_mark_last_busy(&up->pdev->dev); pm_runtime_mark_last_busy(up->dev);
pm_runtime_put_autosuspend(&up->pdev->dev); pm_runtime_put_autosuspend(up->dev);
if (locked) if (locked)
spin_unlock(&up->port.lock); spin_unlock(&up->port.lock);
local_irq_restore(flags); local_irq_restore(flags);
...@@ -1323,7 +1323,7 @@ static int serial_omap_start_rxdma(struct uart_omap_port *up) ...@@ -1323,7 +1323,7 @@ static int serial_omap_start_rxdma(struct uart_omap_port *up)
int ret = 0; int ret = 0;
if (up->uart_dma.rx_dma_channel == -1) { 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, ret = omap_request_dma(up->uart_dma.uart_dma_rx,
"UART Rx DMA", "UART Rx DMA",
(void *)uart_rx_dma_callback, up, (void *)uart_rx_dma_callback, up,
...@@ -1435,7 +1435,7 @@ static void omap_serial_fill_features_erratas(struct uart_omap_port *up) ...@@ -1435,7 +1435,7 @@ static void omap_serial_fill_features_erratas(struct uart_omap_port *up)
minor = (mvr & OMAP_UART_MVR_MIN_MASK); minor = (mvr & OMAP_UART_MVR_MIN_MASK);
break; break;
default: default:
dev_warn(&up->pdev->dev, dev_warn(up->dev,
"Unknown %s revision, defaulting to highest\n", "Unknown %s revision, defaulting to highest\n",
up->name); up->name);
/* highest possible revision */ /* highest possible revision */
...@@ -1535,7 +1535,7 @@ static int serial_omap_probe(struct platform_device *pdev) ...@@ -1535,7 +1535,7 @@ static int serial_omap_probe(struct platform_device *pdev)
up->DTR_gpio = -EINVAL; up->DTR_gpio = -EINVAL;
up->DTR_active = 0; up->DTR_active = 0;
up->pdev = pdev; up->dev = &pdev->dev;
up->port.dev = &pdev->dev; up->port.dev = &pdev->dev;
up->port.type = PORT_OMAP; up->port.type = PORT_OMAP;
up->port.iotype = UPIO_MEM; up->port.iotype = UPIO_MEM;
...@@ -1632,7 +1632,7 @@ static int serial_omap_remove(struct platform_device *dev) ...@@ -1632,7 +1632,7 @@ static int serial_omap_remove(struct platform_device *dev)
struct uart_omap_port *up = platform_get_drvdata(dev); struct uart_omap_port *up = platform_get_drvdata(dev);
if (up) { if (up) {
pm_runtime_disable(&up->pdev->dev); pm_runtime_disable(up->dev);
uart_remove_one_port(&serial_omap_reg, &up->port); uart_remove_one_port(&serial_omap_reg, &up->port);
pm_qos_remove_request(&up->pm_qos_request); pm_qos_remove_request(&up->pm_qos_request);
} }
...@@ -1667,7 +1667,7 @@ static void serial_omap_mdr1_errataset(struct uart_omap_port *up, u8 mdr1) ...@@ -1667,7 +1667,7 @@ static void serial_omap_mdr1_errataset(struct uart_omap_port *up, u8 mdr1)
timeout--; timeout--;
if (!timeout) { if (!timeout) {
/* Should *never* happen. we warn and carry on */ /* 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)); serial_in(up, UART_LSR));
break; break;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册