linux/drivers/mfd/intel-lpss.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * Intel LPSS core support.
   4 *
   5 * Copyright (C) 2015, Intel Corporation
   6 *
   7 * Authors: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
   8 *          Mika Westerberg <mika.westerberg@linux.intel.com>
   9 */
  10
  11#ifndef __MFD_INTEL_LPSS_H
  12#define __MFD_INTEL_LPSS_H
  13
  14#include <linux/pm.h>
  15
  16struct device;
  17struct resource;
  18struct software_node;
  19
  20struct intel_lpss_platform_info {
  21        struct resource *mem;
  22        int irq;
  23        unsigned long clk_rate;
  24        const char *clk_con_id;
  25        const struct software_node *swnode;
  26};
  27
  28int intel_lpss_probe(struct device *dev,
  29                     const struct intel_lpss_platform_info *info);
  30void intel_lpss_remove(struct device *dev);
  31
  32#ifdef CONFIG_PM
  33int intel_lpss_prepare(struct device *dev);
  34int intel_lpss_suspend(struct device *dev);
  35int intel_lpss_resume(struct device *dev);
  36
  37#ifdef CONFIG_PM_SLEEP
  38#define INTEL_LPSS_SLEEP_PM_OPS                 \
  39        .prepare = intel_lpss_prepare,          \
  40        SET_LATE_SYSTEM_SLEEP_PM_OPS(intel_lpss_suspend, intel_lpss_resume)
  41#else
  42#define INTEL_LPSS_SLEEP_PM_OPS
  43#endif
  44
  45#define INTEL_LPSS_RUNTIME_PM_OPS               \
  46        .runtime_suspend = intel_lpss_suspend,  \
  47        .runtime_resume = intel_lpss_resume,
  48
  49#else /* !CONFIG_PM */
  50#define INTEL_LPSS_SLEEP_PM_OPS
  51#define INTEL_LPSS_RUNTIME_PM_OPS
  52#endif /* CONFIG_PM */
  53
  54#define INTEL_LPSS_PM_OPS(name)                 \
  55const struct dev_pm_ops name = {                \
  56        INTEL_LPSS_SLEEP_PM_OPS                 \
  57        INTEL_LPSS_RUNTIME_PM_OPS               \
  58}
  59
  60#endif /* __MFD_INTEL_LPSS_H */
  61