Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
serial: core: Add support of runtime PM
8250 driver has wrong implementation of runtime power management, i.e. it uses an irq_safe flag. The irq_safe flag takes a permanent usage count on the parent device preventing the parent from idling. This patch prepares for making runtime power management generic by adding runtime PM calls to serial core once for all UART drivers. As we have serial drivers that do not enable runtime PM, and drivers that enable runtime PM, we add new functions for serial_pm_resume_and_get() and serial_pm_autosuspend() functions to handle errors and allow the use also for cases when runtime PM is not enabled. The other option considered was to not check for runtime PM enable errors. But some CPUs can hang when the clocks are not enabled for the device, so ignoring the errors is not a good option. Eventually with the serial port drivers updated, we should be able to just switch to using the standard runtime PM calls with no need for the wrapper functions. Note that this patch only adds runtime PM calls to the functions where we can call them for synchronous wake-up without the need for irq_safe flag. Additionally we also need asynchronous wake-up support for __uart_start(), that is added in a separate patch. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Co-developed-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
- Loading branch information