| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * linux/drivers/mmc/core/bus.c |
|---|
| 3 | 4 | * |
|---|
| 4 | 5 | * Copyright (C) 2003 Russell King, All Rights Reserved. |
|---|
| 5 | 6 | * Copyright (C) 2007 Pierre Ossman |
|---|
| 6 | | - * |
|---|
| 7 | | - * This program is free software; you can redistribute it and/or modify |
|---|
| 8 | | - * it under the terms of the GNU General Public License version 2 as |
|---|
| 9 | | - * published by the Free Software Foundation. |
|---|
| 10 | 7 | * |
|---|
| 11 | 8 | * MMC card bus driver model |
|---|
| 12 | 9 | */ |
|---|
| .. | .. |
|---|
| 71 | 68 | { |
|---|
| 72 | 69 | struct mmc_card *card = mmc_dev_to_card(dev); |
|---|
| 73 | 70 | const char *type; |
|---|
| 71 | + unsigned int i; |
|---|
| 74 | 72 | int retval = 0; |
|---|
| 75 | 73 | |
|---|
| 76 | 74 | switch (card->type) { |
|---|
| .. | .. |
|---|
| 96 | 94 | return retval; |
|---|
| 97 | 95 | } |
|---|
| 98 | 96 | |
|---|
| 97 | + if (card->type == MMC_TYPE_SDIO || card->type == MMC_TYPE_SD_COMBO) { |
|---|
| 98 | + retval = add_uevent_var(env, "SDIO_ID=%04X:%04X", |
|---|
| 99 | + card->cis.vendor, card->cis.device); |
|---|
| 100 | + if (retval) |
|---|
| 101 | + return retval; |
|---|
| 102 | + |
|---|
| 103 | + retval = add_uevent_var(env, "SDIO_REVISION=%u.%u", |
|---|
| 104 | + card->major_rev, card->minor_rev); |
|---|
| 105 | + if (retval) |
|---|
| 106 | + return retval; |
|---|
| 107 | + |
|---|
| 108 | + for (i = 0; i < card->num_info; i++) { |
|---|
| 109 | + retval = add_uevent_var(env, "SDIO_INFO%u=%s", i+1, card->info[i]); |
|---|
| 110 | + if (retval) |
|---|
| 111 | + return retval; |
|---|
| 112 | + } |
|---|
| 113 | + } |
|---|
| 114 | + |
|---|
| 115 | + /* |
|---|
| 116 | + * SDIO (non-combo) cards are not handled by mmc_block driver and do not |
|---|
| 117 | + * have accessible CID register which used by mmc_card_name() function. |
|---|
| 118 | + */ |
|---|
| 119 | + if (card->type == MMC_TYPE_SDIO) |
|---|
| 120 | + return 0; |
|---|
| 121 | + |
|---|
| 99 | 122 | retval = add_uevent_var(env, "MMC_NAME=%s", mmc_card_name(card)); |
|---|
| 100 | 123 | if (retval) |
|---|
| 101 | 124 | return retval; |
|---|