Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e91957e7 authored by Alexander Tarasikov's avatar Alexander Tarasikov Committed by Chris Ball
Browse files

msm: Implement init_card operation for MSM SDCC



This allows boards with non-standard sdio cards to fill the CIS/CCCR data.
It is particularly important for old msm72k boards using wl1251.
Also drop the obsolete embedded_sdio_data structure from the header
as it was intended to surve a similiar purpose but was not implemented.

Signed-off-by: default avatarAlexander Tarasikov <alexander.tarasikov@gmail.com>
Acked-by: default avatarSahitya Tummala <stummala@codeaurora.org>
[davidb: minor formatting cleanup]
Signed-off-by: default avatarDavid Brown <davidb@codeaurora.org>
Signed-off-by: default avatarChris Ball <cjb@laptop.org>
parent 435f3e38
Loading
Loading
Loading
Loading
+1 −8
Original line number Diff line number Diff line
@@ -8,13 +8,6 @@
#include <linux/mmc/card.h>
#include <linux/mmc/sdio_func.h>

struct embedded_sdio_data {
	struct sdio_cis cis;
	struct sdio_cccr cccr;
	struct sdio_embedded_func *funcs;
	int num_funcs;
};

struct msm_mmc_gpio {
	unsigned no;
	const char *name;
@@ -29,9 +22,9 @@ struct msm_mmc_platform_data {
	unsigned int ocr_mask;			/* available voltages */
	u32 (*translate_vdd)(struct device *, unsigned int);
	unsigned int (*status)(struct device *);
	struct embedded_sdio_data *embedded_sdio;
	int (*register_status_notify)(void (*callback)(int card_present, void *dev_id), void *dev_id);
	struct msm_mmc_gpio_data *gpio_data;
	void (*init_card)(struct mmc_card *card);
};

#endif
+9 −0
Original line number Diff line number Diff line
@@ -1052,10 +1052,19 @@ static void msmsdcc_enable_sdio_irq(struct mmc_host *mmc, int enable)
	spin_unlock_irqrestore(&host->lock, flags);
}

static void msmsdcc_init_card(struct mmc_host *mmc, struct mmc_card *card)
{
	struct msmsdcc_host *host = mmc_priv(mmc);

	if (host->plat->init_card)
		host->plat->init_card(card);
}

static const struct mmc_host_ops msmsdcc_ops = {
	.request	= msmsdcc_request,
	.set_ios	= msmsdcc_set_ios,
	.enable_sdio_irq = msmsdcc_enable_sdio_irq,
	.init_card	= msmsdcc_init_card,
};

static void