linux/drivers/mmc/core/pwrseq.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * Copyright (C) 2014 Linaro Ltd
   4 *
   5 * Author: Ulf Hansson <ulf.hansson@linaro.org>
   6 */
   7#ifndef _MMC_CORE_PWRSEQ_H
   8#define _MMC_CORE_PWRSEQ_H
   9
  10#include <linux/types.h>
  11
  12struct mmc_host;
  13struct device;
  14struct module;
  15
  16struct mmc_pwrseq_ops {
  17        void (*pre_power_on)(struct mmc_host *host);
  18        void (*post_power_on)(struct mmc_host *host);
  19        void (*power_off)(struct mmc_host *host);
  20        void (*reset)(struct mmc_host *host);
  21};
  22
  23struct mmc_pwrseq {
  24        const struct mmc_pwrseq_ops *ops;
  25        struct device *dev;
  26        struct list_head pwrseq_node;
  27        struct module *owner;
  28};
  29
  30#ifdef CONFIG_OF
  31
  32int mmc_pwrseq_register(struct mmc_pwrseq *pwrseq);
  33void mmc_pwrseq_unregister(struct mmc_pwrseq *pwrseq);
  34
  35int mmc_pwrseq_alloc(struct mmc_host *host);
  36void mmc_pwrseq_pre_power_on(struct mmc_host *host);
  37void mmc_pwrseq_post_power_on(struct mmc_host *host);
  38void mmc_pwrseq_power_off(struct mmc_host *host);
  39void mmc_pwrseq_reset(struct mmc_host *host);
  40void mmc_pwrseq_free(struct mmc_host *host);
  41
  42#else
  43
  44static inline int mmc_pwrseq_register(struct mmc_pwrseq *pwrseq)
  45{
  46        return -ENOSYS;
  47}
  48static inline void mmc_pwrseq_unregister(struct mmc_pwrseq *pwrseq) {}
  49static inline int mmc_pwrseq_alloc(struct mmc_host *host) { return 0; }
  50static inline void mmc_pwrseq_pre_power_on(struct mmc_host *host) {}
  51static inline void mmc_pwrseq_post_power_on(struct mmc_host *host) {}
  52static inline void mmc_pwrseq_power_off(struct mmc_host *host) {}
  53static inline void mmc_pwrseq_reset(struct mmc_host *host) {}
  54static inline void mmc_pwrseq_free(struct mmc_host *host) {}
  55
  56#endif
  57
  58#endif
  59