14b45efe8SAndy Shevchenko /* 24b45efe8SAndy Shevchenko * Intel LPSS core support. 34b45efe8SAndy Shevchenko * 44b45efe8SAndy Shevchenko * Copyright (C) 2015, Intel Corporation 54b45efe8SAndy Shevchenko * 64b45efe8SAndy Shevchenko * Authors: Andy Shevchenko <andriy.shevchenko@linux.intel.com> 74b45efe8SAndy Shevchenko * Mika Westerberg <mika.westerberg@linux.intel.com> 84b45efe8SAndy Shevchenko * 94b45efe8SAndy Shevchenko * This program is free software; you can redistribute it and/or modify 104b45efe8SAndy Shevchenko * it under the terms of the GNU General Public License version 2 as 114b45efe8SAndy Shevchenko * published by the Free Software Foundation. 124b45efe8SAndy Shevchenko */ 134b45efe8SAndy Shevchenko 144b45efe8SAndy Shevchenko #ifndef __MFD_INTEL_LPSS_H 154b45efe8SAndy Shevchenko #define __MFD_INTEL_LPSS_H 164b45efe8SAndy Shevchenko 174b45efe8SAndy Shevchenko struct device; 184b45efe8SAndy Shevchenko struct resource; 194b45efe8SAndy Shevchenko 204b45efe8SAndy Shevchenko struct intel_lpss_platform_info { 214b45efe8SAndy Shevchenko struct resource *mem; 224b45efe8SAndy Shevchenko int irq; 234b45efe8SAndy Shevchenko unsigned long clk_rate; 244b45efe8SAndy Shevchenko const char *clk_con_id; 254b45efe8SAndy Shevchenko }; 264b45efe8SAndy Shevchenko 274b45efe8SAndy Shevchenko int intel_lpss_probe(struct device *dev, 284b45efe8SAndy Shevchenko const struct intel_lpss_platform_info *info); 294b45efe8SAndy Shevchenko void intel_lpss_remove(struct device *dev); 304b45efe8SAndy Shevchenko 314b45efe8SAndy Shevchenko #ifdef CONFIG_PM 324b45efe8SAndy Shevchenko int intel_lpss_prepare(struct device *dev); 334b45efe8SAndy Shevchenko int intel_lpss_suspend(struct device *dev); 344b45efe8SAndy Shevchenko int intel_lpss_resume(struct device *dev); 354b45efe8SAndy Shevchenko 364b45efe8SAndy Shevchenko #ifdef CONFIG_PM_SLEEP 374b45efe8SAndy Shevchenko #define INTEL_LPSS_SLEEP_PM_OPS \ 384b45efe8SAndy Shevchenko .prepare = intel_lpss_prepare, \ 394b45efe8SAndy Shevchenko .suspend = intel_lpss_suspend, \ 404b45efe8SAndy Shevchenko .resume = intel_lpss_resume, \ 414b45efe8SAndy Shevchenko .freeze = intel_lpss_suspend, \ 424b45efe8SAndy Shevchenko .thaw = intel_lpss_resume, \ 434b45efe8SAndy Shevchenko .poweroff = intel_lpss_suspend, \ 444b45efe8SAndy Shevchenko .restore = intel_lpss_resume, 454b45efe8SAndy Shevchenko #endif 464b45efe8SAndy Shevchenko 474b45efe8SAndy Shevchenko #define INTEL_LPSS_RUNTIME_PM_OPS \ 484b45efe8SAndy Shevchenko .runtime_suspend = intel_lpss_suspend, \ 494b45efe8SAndy Shevchenko .runtime_resume = intel_lpss_resume, 504b45efe8SAndy Shevchenko 514b45efe8SAndy Shevchenko #else /* !CONFIG_PM */ 524b45efe8SAndy Shevchenko #define INTEL_LPSS_SLEEP_PM_OPS 534b45efe8SAndy Shevchenko #define INTEL_LPSS_RUNTIME_PM_OPS 544b45efe8SAndy Shevchenko #endif /* CONFIG_PM */ 554b45efe8SAndy Shevchenko 564b45efe8SAndy Shevchenko #define INTEL_LPSS_PM_OPS(name) \ 574b45efe8SAndy Shevchenko const struct dev_pm_ops name = { \ 584b45efe8SAndy Shevchenko INTEL_LPSS_SLEEP_PM_OPS \ 594b45efe8SAndy Shevchenko INTEL_LPSS_RUNTIME_PM_OPS \ 604b45efe8SAndy Shevchenko } 614b45efe8SAndy Shevchenko 624b45efe8SAndy Shevchenko #endif /* __MFD_INTEL_LPSS_H */ 63