mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-29 16:10:58 +00:00
tegra: mmc: Set the removable flag correctly
If the mmc device is non-removable (as indicated by the device tree), set the flag so that users of the device know. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Joe Hershberger <joe.hershberger@ni.com>
This commit is contained in:
parent
ebe78bb993
commit
707ac1ad17
1 changed files with 8 additions and 4 deletions
|
@ -528,7 +528,7 @@ static const struct mmc_ops tegra_mmc_ops = {
|
||||||
.getcd = tegra_mmc_getcd,
|
.getcd = tegra_mmc_getcd,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int do_mmc_init(int dev_index)
|
static int do_mmc_init(int dev_index, bool removable)
|
||||||
{
|
{
|
||||||
struct mmc_host *host;
|
struct mmc_host *host;
|
||||||
struct mmc *mmc;
|
struct mmc *mmc;
|
||||||
|
@ -573,6 +573,7 @@ static int do_mmc_init(int dev_index)
|
||||||
host->cfg.b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT;
|
host->cfg.b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT;
|
||||||
|
|
||||||
mmc = mmc_create(&host->cfg, host);
|
mmc = mmc_create(&host->cfg, host);
|
||||||
|
mmc->block_dev.removable = removable;
|
||||||
if (mmc == NULL)
|
if (mmc == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
@ -586,7 +587,8 @@ static int do_mmc_init(int dev_index)
|
||||||
* @param node Device index (0-3)
|
* @param node Device index (0-3)
|
||||||
* @param host Structure to fill in (reg, width, mmc_id)
|
* @param host Structure to fill in (reg, width, mmc_id)
|
||||||
*/
|
*/
|
||||||
static int mmc_get_config(const void *blob, int node, struct mmc_host *host)
|
static int mmc_get_config(const void *blob, int node, struct mmc_host *host,
|
||||||
|
bool *removablep)
|
||||||
{
|
{
|
||||||
debug("%s: node = %d\n", __func__, node);
|
debug("%s: node = %d\n", __func__, node);
|
||||||
|
|
||||||
|
@ -619,6 +621,7 @@ static int mmc_get_config(const void *blob, int node, struct mmc_host *host)
|
||||||
GPIOD_IS_IN);
|
GPIOD_IS_IN);
|
||||||
gpio_request_by_name_nodev(blob, node, "power-gpios", 0,
|
gpio_request_by_name_nodev(blob, node, "power-gpios", 0,
|
||||||
&host->pwr_gpio, GPIOD_IS_OUT);
|
&host->pwr_gpio, GPIOD_IS_OUT);
|
||||||
|
*removablep = !fdtdec_get_bool(blob, node, "non-removable");
|
||||||
|
|
||||||
debug("%s: found controller at %p, width = %d, periph_id = %d\n",
|
debug("%s: found controller at %p, width = %d, periph_id = %d\n",
|
||||||
__func__, host->reg, host->width, host->mmc_id);
|
__func__, host->reg, host->width, host->mmc_id);
|
||||||
|
@ -636,6 +639,7 @@ static int mmc_get_config(const void *blob, int node, struct mmc_host *host)
|
||||||
static int process_nodes(const void *blob, int node_list[], int count)
|
static int process_nodes(const void *blob, int node_list[], int count)
|
||||||
{
|
{
|
||||||
struct mmc_host *host;
|
struct mmc_host *host;
|
||||||
|
bool removable;
|
||||||
int i, node;
|
int i, node;
|
||||||
|
|
||||||
debug("%s: count = %d\n", __func__, count);
|
debug("%s: count = %d\n", __func__, count);
|
||||||
|
@ -649,11 +653,11 @@ static int process_nodes(const void *blob, int node_list[], int count)
|
||||||
host = &mmc_host[i];
|
host = &mmc_host[i];
|
||||||
host->id = i;
|
host->id = i;
|
||||||
|
|
||||||
if (mmc_get_config(blob, node, host)) {
|
if (mmc_get_config(blob, node, host, &removable)) {
|
||||||
printf("%s: failed to decode dev %d\n", __func__, i);
|
printf("%s: failed to decode dev %d\n", __func__, i);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
do_mmc_init(i);
|
do_mmc_init(i, removable);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue