mmc: core: Export mmc_get_ext_csd()
Callers of mmc_send_ext_csd() will be able to decrease code duplication by using mmc_get_ext_csd() instead. Let's make it available. Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
2fd322a58e
commit
e21aa519ee
|
@ -177,37 +177,6 @@ static int mmc_decode_csd(struct mmc_card *card)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Read extended CSD.
|
||||
*/
|
||||
static int mmc_get_ext_csd(struct mmc_card *card, u8 **new_ext_csd)
|
||||
{
|
||||
int err;
|
||||
u8 *ext_csd;
|
||||
|
||||
if (!card || !new_ext_csd)
|
||||
return -EINVAL;
|
||||
|
||||
if (!mmc_can_ext_csd(card))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
/*
|
||||
* As the ext_csd is so large and mostly unused, we don't store the
|
||||
* raw block in mmc_card.
|
||||
*/
|
||||
ext_csd = kmalloc(512, GFP_KERNEL);
|
||||
if (!ext_csd)
|
||||
return -ENOMEM;
|
||||
|
||||
err = mmc_send_ext_csd(card, ext_csd);
|
||||
if (err)
|
||||
kfree(ext_csd);
|
||||
else
|
||||
*new_ext_csd = ext_csd;
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
static void mmc_select_card_type(struct mmc_card *card)
|
||||
{
|
||||
struct mmc_host *host = card->host;
|
||||
|
|
|
@ -385,6 +385,35 @@ int mmc_send_ext_csd(struct mmc_card *card, u8 *ext_csd)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(mmc_send_ext_csd);
|
||||
|
||||
int mmc_get_ext_csd(struct mmc_card *card, u8 **new_ext_csd)
|
||||
{
|
||||
int err;
|
||||
u8 *ext_csd;
|
||||
|
||||
if (!card || !new_ext_csd)
|
||||
return -EINVAL;
|
||||
|
||||
if (!mmc_can_ext_csd(card))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
/*
|
||||
* As the ext_csd is so large and mostly unused, we don't store the
|
||||
* raw block in mmc_card.
|
||||
*/
|
||||
ext_csd = kmalloc(512, GFP_KERNEL);
|
||||
if (!ext_csd)
|
||||
return -ENOMEM;
|
||||
|
||||
err = mmc_send_ext_csd(card, ext_csd);
|
||||
if (err)
|
||||
kfree(ext_csd);
|
||||
else
|
||||
*new_ext_csd = ext_csd;
|
||||
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mmc_get_ext_csd);
|
||||
|
||||
int mmc_spi_read_ocr(struct mmc_host *host, int highcap, u32 *ocrp)
|
||||
{
|
||||
struct mmc_command cmd = {0};
|
||||
|
|
|
@ -155,6 +155,7 @@ extern int __mmc_switch(struct mmc_card *, u8, u8, u8, unsigned int, bool,
|
|||
bool, bool);
|
||||
extern int mmc_switch(struct mmc_card *, u8, u8, u8, unsigned int);
|
||||
extern int mmc_send_ext_csd(struct mmc_card *card, u8 *ext_csd);
|
||||
extern int mmc_get_ext_csd(struct mmc_card *card, u8 **new_ext_csd);
|
||||
|
||||
#define MMC_ERASE_ARG 0x00000000
|
||||
#define MMC_SECURE_ERASE_ARG 0x80000000
|
||||
|
|
Loading…
Reference in New Issue