Commit 7abff2c3b3cbf091f486605684f306d0d631d8d6
Committed by
Jaehoon Chung
1 parent
52d241dfba
Exists in
smarc_8mq_lf_v2020.04
and in
17 other branches
dm: mmc: update mmc_of_parse()
* convert to livetree API * don't fail because of an invalid bus-width, instead default to 1-bit. * recognize 1.2v DDR and 1.2v HS200 flags Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Showing 2 changed files with 30 additions and 17 deletions Side-by-side Diff
drivers/mmc/mmc-uclass.c
... | ... | @@ -10,7 +10,6 @@ |
10 | 10 | #include <dm.h> |
11 | 11 | #include <dm/device-internal.h> |
12 | 12 | #include <dm/lists.h> |
13 | -#include <dm/root.h> | |
14 | 13 | #include "mmc_private.h" |
15 | 14 | |
16 | 15 | DECLARE_GLOBAL_DATA_PTR; |
17 | 16 | |
... | ... | @@ -120,11 +119,11 @@ |
120 | 119 | return dm_mmc_execute_tuning(mmc->dev, opcode); |
121 | 120 | } |
122 | 121 | |
123 | -int mmc_of_parse(const void *fdt, int node, struct mmc_config *cfg) | |
122 | +int mmc_of_parse(struct udevice *dev, struct mmc_config *cfg) | |
124 | 123 | { |
125 | 124 | int val; |
126 | 125 | |
127 | - val = fdtdec_get_int(fdt, node, "bus-width", 1); | |
126 | + val = dev_read_u32_default(dev, "bus-width", 1); | |
128 | 127 | |
129 | 128 | switch (val) { |
130 | 129 | case 0x8: |
131 | 130 | |
132 | 131 | |
133 | 132 | |
134 | 133 | |
135 | 134 | |
136 | 135 | |
137 | 136 | |
138 | 137 | |
139 | 138 | |
140 | 139 | |
... | ... | @@ -137,30 +136,35 @@ |
137 | 136 | cfg->host_caps |= MMC_MODE_1BIT; |
138 | 137 | break; |
139 | 138 | default: |
140 | - printf("error: %s invalid bus-width property %d\n", | |
141 | - fdt_get_name(fdt, node, NULL), val); | |
142 | - return -ENOENT; | |
139 | + debug("warning: %s invalid bus-width property. using 1-bit\n", | |
140 | + dev_read_name(dev)); | |
141 | + cfg->host_caps |= MMC_MODE_1BIT; | |
142 | + break; | |
143 | 143 | } |
144 | 144 | |
145 | - cfg->f_max = fdtdec_get_int(fdt, node, "max-frequency", 52000000); | |
145 | + cfg->f_max = dev_read_u32_default(dev, "max-frequency", 52000000); | |
146 | 146 | |
147 | - if (fdtdec_get_bool(fdt, node, "cap-sd-highspeed")) | |
147 | + if (dev_read_bool(dev, "cap-sd-highspeed")) | |
148 | 148 | cfg->host_caps |= MMC_CAP(SD_HS); |
149 | - if (fdtdec_get_bool(fdt, node, "cap-mmc-highspeed")) | |
149 | + if (dev_read_bool(dev, "cap-mmc-highspeed")) | |
150 | 150 | cfg->host_caps |= MMC_CAP(MMC_HS); |
151 | - if (fdtdec_get_bool(fdt, node, "sd-uhs-sdr12")) | |
151 | + if (dev_read_bool(dev, "sd-uhs-sdr12")) | |
152 | 152 | cfg->host_caps |= MMC_CAP(UHS_SDR12); |
153 | - if (fdtdec_get_bool(fdt, node, "sd-uhs-sdr25")) | |
153 | + if (dev_read_bool(dev, "sd-uhs-sdr25")) | |
154 | 154 | cfg->host_caps |= MMC_CAP(UHS_SDR25); |
155 | - if (fdtdec_get_bool(fdt, node, "sd-uhs-sdr50")) | |
155 | + if (dev_read_bool(dev, "sd-uhs-sdr50")) | |
156 | 156 | cfg->host_caps |= MMC_CAP(UHS_SDR50); |
157 | - if (fdtdec_get_bool(fdt, node, "sd-uhs-sdr104")) | |
157 | + if (dev_read_bool(dev, "sd-uhs-sdr104")) | |
158 | 158 | cfg->host_caps |= MMC_CAP(UHS_SDR104); |
159 | - if (fdtdec_get_bool(fdt, node, "sd-uhs-ddr50")) | |
159 | + if (dev_read_bool(dev, "sd-uhs-ddr50")) | |
160 | 160 | cfg->host_caps |= MMC_CAP(UHS_DDR50); |
161 | - if (fdtdec_get_bool(fdt, node, "mmc-ddr-1_8v")) | |
161 | + if (dev_read_bool(dev, "mmc-ddr-1_8v")) | |
162 | 162 | cfg->host_caps |= MMC_CAP(MMC_DDR_52); |
163 | - if (fdtdec_get_bool(fdt, node, "mmc-hs200-1_8v")) | |
163 | + if (dev_read_bool(dev, "mmc-ddr-1_2v")) | |
164 | + cfg->host_caps |= MMC_CAP(MMC_DDR_52); | |
165 | + if (dev_read_bool(dev, "mmc-hs200-1_8v")) | |
166 | + cfg->host_caps |= MMC_CAP(MMC_HS_200); | |
167 | + if (dev_read_bool(dev, "mmc-hs200-1_2v")) | |
164 | 168 | cfg->host_caps |= MMC_CAP(MMC_HS_200); |
165 | 169 | |
166 | 170 | return 0; |
include/mmc.h
... | ... | @@ -651,7 +651,16 @@ |
651 | 651 | int mmc_initialize(bd_t *bis); |
652 | 652 | int mmc_init(struct mmc *mmc); |
653 | 653 | int mmc_send_tuning(struct mmc *mmc, u32 opcode, int *cmd_error); |
654 | -int mmc_of_parse(const void *fdt, int node, struct mmc_config *cfg); | |
654 | + | |
655 | +/** | |
656 | + * mmc_of_parse() - Parse the device tree to get the capabilities of the host | |
657 | + * | |
658 | + * @dev: MMC device | |
659 | + * @cfg: MMC configuration | |
660 | + * @return 0 if OK, -ve on error | |
661 | + */ | |
662 | +int mmc_of_parse(struct udevice *dev, struct mmc_config *cfg); | |
663 | + | |
655 | 664 | int mmc_read(struct mmc *mmc, u64 src, uchar *dst, int size); |
656 | 665 | |
657 | 666 | /** |