Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

serial: omap: define helpers for pdata function pointers

this patch is in preparation to a few other changes
which will align on the prototype for function
pointers passed through pdata.

It also helps cleaning up the driver a little by
agregating checks for pdata in a single location.

Tested-by: Shubhrajyoti D <shubhrajyoti@ti.com>
Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Felipe Balbi and committed by
Greg Kroah-Hartman
e5b57c03 c990f351

+47 -19
+47 -19
drivers/tty/serial/omap-serial.c
··· 102 102 serial_out(up, UART_FCR, 0); 103 103 } 104 104 105 + static int serial_omap_get_context_loss_count(struct uart_omap_port *up) 106 + { 107 + struct omap_uart_port_info *pdata = up->pdev->dev.platform_data; 108 + 109 + if (!pdata->get_context_loss_count) 110 + return 0; 111 + 112 + return pdata->get_context_loss_count(&up->pdev->dev); 113 + } 114 + 115 + static void serial_omap_set_forceidle(struct uart_omap_port *up) 116 + { 117 + struct omap_uart_port_info *pdata = up->pdev->dev.platform_data; 118 + 119 + if (pdata->set_forceidle) 120 + pdata->set_forceidle(up->pdev); 121 + } 122 + 123 + static void serial_omap_set_noidle(struct uart_omap_port *up) 124 + { 125 + struct omap_uart_port_info *pdata = up->pdev->dev.platform_data; 126 + 127 + if (pdata->set_noidle) 128 + pdata->set_noidle(up->pdev); 129 + } 130 + 131 + static void serial_omap_enable_wakeup(struct uart_omap_port *up, bool enable) 132 + { 133 + struct omap_uart_port_info *pdata = up->pdev->dev.platform_data; 134 + 135 + if (pdata->enable_wakeup) 136 + pdata->enable_wakeup(up->pdev, enable); 137 + } 138 + 105 139 /* 106 140 * serial_omap_get_divisor - calculate divisor value 107 141 * @port: uart port info ··· 212 178 serial_out(up, UART_IER, up->ier); 213 179 } 214 180 215 - if (!up->use_dma && pdata && pdata->set_forceidle) 216 - pdata->set_forceidle(up->pdev); 181 + if (!up->use_dma && pdata) 182 + serial_omap_set_forceidle(up); 217 183 218 184 pm_runtime_mark_last_busy(&up->pdev->dev); 219 185 pm_runtime_put_autosuspend(&up->pdev->dev); ··· 343 309 static void serial_omap_start_tx(struct uart_port *port) 344 310 { 345 311 struct uart_omap_port *up = to_uart_omap_port(port); 346 - struct omap_uart_port_info *pdata = up->pdev->dev.platform_data; 347 312 struct circ_buf *xmit; 348 313 unsigned int start; 349 314 int ret = 0; ··· 350 317 if (!up->use_dma) { 351 318 pm_runtime_get_sync(&up->pdev->dev); 352 319 serial_omap_enable_ier_thri(up); 353 - if (pdata && pdata->set_noidle) 354 - pdata->set_noidle(up->pdev); 320 + serial_omap_set_noidle(up); 355 321 pm_runtime_mark_last_busy(&up->pdev->dev); 356 322 pm_runtime_put_autosuspend(&up->pdev->dev); 357 323 return; ··· 1713 1681 if (!up) 1714 1682 return -EINVAL; 1715 1683 1716 - if (!pdata || !pdata->enable_wakeup) 1684 + if (!pdata) 1717 1685 return 0; 1718 1686 1719 - if (pdata->get_context_loss_count) 1720 - up->context_loss_cnt = pdata->get_context_loss_count(dev); 1687 + up->context_loss_cnt = serial_omap_get_context_loss_count(up); 1721 1688 1722 1689 if (device_may_wakeup(dev)) { 1723 1690 if (!up->wakeups_enabled) { 1724 - pdata->enable_wakeup(up->pdev, true); 1691 + serial_omap_enable_wakeup(up, true); 1725 1692 up->wakeups_enabled = true; 1726 1693 } 1727 1694 } else { 1728 1695 if (up->wakeups_enabled) { 1729 - pdata->enable_wakeup(up->pdev, false); 1696 + serial_omap_enable_wakeup(up, false); 1730 1697 up->wakeups_enabled = false; 1731 1698 } 1732 1699 } 1733 1700 1734 1701 /* Errata i291 */ 1735 - if (up->use_dma && pdata->set_forceidle && 1736 - (up->errata & UART_ERRATA_i291_DMA_FORCEIDLE)) 1737 - pdata->set_forceidle(up->pdev); 1702 + if (up->use_dma && (up->errata & UART_ERRATA_i291_DMA_FORCEIDLE)) 1703 + serial_omap_set_forceidle(up); 1738 1704 1739 1705 up->latency = PM_QOS_CPU_DMA_LAT_DEFAULT_VALUE; 1740 1706 schedule_work(&up->qos_work); ··· 1746 1716 struct omap_uart_port_info *pdata = dev->platform_data; 1747 1717 1748 1718 if (up && pdata) { 1749 - if (pdata->get_context_loss_count) { 1750 - u32 loss_cnt = pdata->get_context_loss_count(dev); 1719 + u32 loss_cnt = serial_omap_get_context_loss_count(up); 1751 1720 1752 1721 if (up->context_loss_cnt != loss_cnt) 1753 1722 serial_omap_restore_context(up); 1754 - } 1755 1723 1756 1724 /* Errata i291 */ 1757 - if (up->use_dma && pdata->set_noidle && 1758 - (up->errata & UART_ERRATA_i291_DMA_FORCEIDLE)) 1759 - pdata->set_noidle(up->pdev); 1725 + if ((up->errata & UART_ERRATA_i291_DMA_FORCEIDLE) && 1726 + up->use_dma) 1727 + serial_omap_set_noidle(up); 1760 1728 1761 1729 up->latency = up->calc_latency; 1762 1730 schedule_work(&up->qos_work);