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