]>
Commit | Line | Data |
---|---|---|
da61fa5f PB |
1 | /* |
2 | * Copyright 2008,2010 Freescale Semiconductor, Inc | |
3 | * Andy Fleming | |
4 | * | |
5 | * Based (loosely) on the Linux code | |
6 | * | |
7 | * SPDX-License-Identifier: GPL-2.0+ | |
8 | */ | |
9 | ||
10 | #ifndef _MMC_PRIVATE_H_ | |
11 | #define _MMC_PRIVATE_H_ | |
12 | ||
13 | #include <mmc.h> | |
14 | ||
15 | extern int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, | |
16 | struct mmc_data *data); | |
17 | extern int mmc_send_status(struct mmc *mmc, int timeout); | |
18 | extern int mmc_set_blocklen(struct mmc *mmc, int len); | |
5a8dbdc6 YL |
19 | #ifdef CONFIG_FSL_ESDHC_ADAPTER_IDENT |
20 | void mmc_adapter_card_type_ident(void); | |
21 | #endif | |
da61fa5f | 22 | |
7dba0b93 SG |
23 | #ifdef CONFIG_BLK |
24 | ulong mmc_bread(struct udevice *dev, lbaint_t start, lbaint_t blkcnt, | |
25 | void *dst); | |
26 | #else | |
27 | ulong mmc_bread(struct blk_desc *block_dev, lbaint_t start, lbaint_t blkcnt, | |
28 | void *dst); | |
29 | #endif | |
30 | ||
d2d9bdfc | 31 | #if !(defined(CONFIG_SPL_BUILD) && !defined(CONFIG_SPL_SAVEENV)) |
da61fa5f | 32 | |
33fb211d SG |
33 | #ifdef CONFIG_BLK |
34 | ulong mmc_bwrite(struct udevice *dev, lbaint_t start, lbaint_t blkcnt, | |
35 | const void *src); | |
561e624c | 36 | ulong mmc_berase(struct udevice *dev, lbaint_t start, lbaint_t blkcnt); |
33fb211d SG |
37 | #else |
38 | ulong mmc_bwrite(struct blk_desc *block_dev, lbaint_t start, lbaint_t blkcnt, | |
39 | const void *src); | |
561e624c | 40 | ulong mmc_berase(struct blk_desc *block_dev, lbaint_t start, lbaint_t blkcnt); |
33fb211d | 41 | #endif |
da61fa5f | 42 | |
d2d9bdfc | 43 | #else /* CONFIG_SPL_BUILD and CONFIG_SPL_SAVEENV is not defined */ |
da61fa5f | 44 | |
d2d9bdfc | 45 | /* declare dummies to reduce code size. */ |
da61fa5f | 46 | |
e419a3ec SG |
47 | #ifdef CONFIG_BLK |
48 | static inline unsigned long mmc_berase(struct udevice *dev, | |
49 | lbaint_t start, lbaint_t blkcnt) | |
50 | { | |
51 | return 0; | |
52 | } | |
53 | ||
54 | static inline ulong mmc_bwrite(struct udevice *dev, lbaint_t start, | |
55 | lbaint_t blkcnt, const void *src) | |
56 | { | |
57 | return 0; | |
58 | } | |
59 | #else | |
4101f687 | 60 | static inline unsigned long mmc_berase(struct blk_desc *block_dev, |
7c4213f6 | 61 | lbaint_t start, lbaint_t blkcnt) |
da61fa5f PB |
62 | { |
63 | return 0; | |
64 | } | |
65 | ||
4101f687 | 66 | static inline ulong mmc_bwrite(struct blk_desc *block_dev, lbaint_t start, |
7c4213f6 | 67 | lbaint_t blkcnt, const void *src) |
da61fa5f PB |
68 | { |
69 | return 0; | |
70 | } | |
e419a3ec | 71 | #endif |
da61fa5f PB |
72 | |
73 | #endif /* CONFIG_SPL_BUILD */ | |
74 | ||
c0c76eba SG |
75 | #ifdef CONFIG_MMC_TRACE |
76 | void mmmc_trace_before_send(struct mmc *mmc, struct mmc_cmd *cmd); | |
77 | void mmmc_trace_after_send(struct mmc *mmc, struct mmc_cmd *cmd, int ret); | |
78 | void mmc_trace_state(struct mmc *mmc, struct mmc_cmd *cmd); | |
79 | #else | |
80 | static inline void mmmc_trace_before_send(struct mmc *mmc, struct mmc_cmd *cmd) | |
81 | { | |
82 | } | |
83 | ||
84 | static inline void mmmc_trace_after_send(struct mmc *mmc, struct mmc_cmd *cmd, | |
85 | int ret) | |
86 | { | |
87 | } | |
88 | ||
89 | static inline void mmc_trace_state(struct mmc *mmc, struct mmc_cmd *cmd) | |
90 | { | |
91 | } | |
92 | #endif | |
93 | ||
c40fdca6 SG |
94 | /** |
95 | * mmc_get_next_devnum() - Get the next available MMC device number | |
96 | * | |
97 | * @return next available device number (0 = first), or -ve on error | |
98 | */ | |
99 | int mmc_get_next_devnum(void); | |
100 | ||
101 | /** | |
102 | * mmc_do_preinit() - Get an MMC device ready for use | |
103 | */ | |
104 | void mmc_do_preinit(void); | |
105 | ||
106 | /** | |
107 | * mmc_list_init() - Set up the list of MMC devices | |
108 | */ | |
109 | void mmc_list_init(void); | |
110 | ||
111 | /** | |
112 | * mmc_list_add() - Add a new MMC device to the list of devices | |
113 | * | |
114 | * @mmc: Device to add | |
115 | */ | |
116 | void mmc_list_add(struct mmc *mmc); | |
117 | ||
7dba0b93 SG |
118 | /** |
119 | * mmc_switch_part() - Switch to a new MMC hardware partition | |
120 | * | |
121 | * @mmc: MMC device | |
122 | * @part_num: Hardware partition number | |
123 | * @return 0 if OK, -ve on error | |
124 | */ | |
125 | int mmc_switch_part(struct mmc *mmc, unsigned int part_num); | |
126 | ||
c40704f4 SG |
127 | /** |
128 | * mmc_switch() - Issue and MMC switch mode command | |
129 | * | |
130 | * @mmc: MMC device | |
131 | * @set: Unused | |
132 | * @index: Cmdarg index | |
133 | * @value: Cmdarg value | |
134 | * @return 0 if OK, -ve on error | |
135 | */ | |
136 | int mmc_switch(struct mmc *mmc, u8 set, u8 index, u8 value); | |
137 | ||
da61fa5f | 138 | #endif /* _MMC_PRIVATE_H_ */ |