1d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 24b45efe8SAndy Shevchenko /* 34b45efe8SAndy Shevchenko * Intel LPSS core support. 44b45efe8SAndy Shevchenko * 54b45efe8SAndy Shevchenko * Copyright (C) 2015, Intel Corporation 64b45efe8SAndy Shevchenko * 74b45efe8SAndy Shevchenko * Authors: Andy Shevchenko <andriy.shevchenko@linux.intel.com> 84b45efe8SAndy Shevchenko * Mika Westerberg <mika.westerberg@linux.intel.com> 94b45efe8SAndy Shevchenko */ 104b45efe8SAndy Shevchenko 114b45efe8SAndy Shevchenko #ifndef __MFD_INTEL_LPSS_H 124b45efe8SAndy Shevchenko #define __MFD_INTEL_LPSS_H 134b45efe8SAndy Shevchenko 1416b7a09bSAndy Shevchenko #include <linux/pm.h> 1516b7a09bSAndy Shevchenko 164b45efe8SAndy Shevchenko struct device; 174b45efe8SAndy Shevchenko struct resource; 1803152e35SHeikki Krogerus struct software_node; 194b45efe8SAndy Shevchenko 204b45efe8SAndy Shevchenko struct intel_lpss_platform_info { 214b45efe8SAndy Shevchenko struct resource *mem; 22*e6b14206SHans de Goede bool ignore_resource_conflicts; 234b45efe8SAndy Shevchenko int irq; 244b45efe8SAndy Shevchenko unsigned long clk_rate; 254b45efe8SAndy Shevchenko const char *clk_con_id; 2603152e35SHeikki Krogerus const struct software_node *swnode; 274b45efe8SAndy Shevchenko }; 284b45efe8SAndy Shevchenko 294b45efe8SAndy Shevchenko int intel_lpss_probe(struct device *dev, 304b45efe8SAndy Shevchenko const struct intel_lpss_platform_info *info); 314b45efe8SAndy Shevchenko void intel_lpss_remove(struct device *dev); 324b45efe8SAndy Shevchenko 334b45efe8SAndy Shevchenko #ifdef CONFIG_PM 344b45efe8SAndy Shevchenko int intel_lpss_prepare(struct device *dev); 354b45efe8SAndy Shevchenko int intel_lpss_suspend(struct device *dev); 364b45efe8SAndy Shevchenko int intel_lpss_resume(struct device *dev); 374b45efe8SAndy Shevchenko 384b45efe8SAndy Shevchenko #ifdef CONFIG_PM_SLEEP 394b45efe8SAndy Shevchenko #define INTEL_LPSS_SLEEP_PM_OPS \ 404b45efe8SAndy Shevchenko .prepare = intel_lpss_prepare, \ 41e00952c7SRafael J. Wysocki SET_LATE_SYSTEM_SLEEP_PM_OPS(intel_lpss_suspend, intel_lpss_resume) 4247b91923SAndy Shevchenko #else 4347b91923SAndy Shevchenko #define INTEL_LPSS_SLEEP_PM_OPS 444b45efe8SAndy Shevchenko #endif 454b45efe8SAndy Shevchenko 464b45efe8SAndy Shevchenko #define INTEL_LPSS_RUNTIME_PM_OPS \ 474b45efe8SAndy Shevchenko .runtime_suspend = intel_lpss_suspend, \ 484b45efe8SAndy Shevchenko .runtime_resume = intel_lpss_resume, 494b45efe8SAndy Shevchenko 504b45efe8SAndy Shevchenko #else /* !CONFIG_PM */ 514b45efe8SAndy Shevchenko #define INTEL_LPSS_SLEEP_PM_OPS 524b45efe8SAndy Shevchenko #define INTEL_LPSS_RUNTIME_PM_OPS 534b45efe8SAndy Shevchenko #endif /* CONFIG_PM */ 544b45efe8SAndy Shevchenko 554b45efe8SAndy Shevchenko #define INTEL_LPSS_PM_OPS(name) \ 564b45efe8SAndy Shevchenko const struct dev_pm_ops name = { \ 574b45efe8SAndy Shevchenko INTEL_LPSS_SLEEP_PM_OPS \ 584b45efe8SAndy Shevchenko INTEL_LPSS_RUNTIME_PM_OPS \ 594b45efe8SAndy Shevchenko } 604b45efe8SAndy Shevchenko 614b45efe8SAndy Shevchenko #endif /* __MFD_INTEL_LPSS_H */ 62