Commit | Line | Data |
---|---|---|
3aa8793f UH |
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 | ||
d97a1e5d SK |
11 | #include <linux/mmc/host.h> |
12 | ||
3aa8793f UH |
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); | |
3aa8793f UH |
17 | }; |
18 | ||
19 | struct mmc_pwrseq { | |
ffedbd22 | 20 | const struct mmc_pwrseq_ops *ops; |
d97a1e5d SK |
21 | struct device *dev; |
22 | struct list_head pwrseq_node; | |
23 | struct module *owner; | |
3aa8793f UH |
24 | }; |
25 | ||
26 | #ifdef CONFIG_OF | |
27 | ||
d97a1e5d SK |
28 | int mmc_pwrseq_register(struct mmc_pwrseq *pwrseq); |
29 | void mmc_pwrseq_unregister(struct mmc_pwrseq *pwrseq); | |
30 | ||
3aa8793f UH |
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 | ||
d97a1e5d SK |
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) {} | |
3aa8793f UH |
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 |