xref: /openbmc/linux/drivers/mfd/intel-lpss.h (revision e6b14206)
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