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

Commit 6e6cbef7 authored by gaolez's avatar gaolez Committed by Gerrit - the friendly Code Review server
Browse files

mmc: core: Card specific custom settings for SDIO



Add quirk to modify custom settings for QCA9379 card.

Change-Id: Ib2380a5bba50b6b8aec9afde4c6b0681d4b25f38
CRs-Fixed: 2183585
Signed-off-by: default avatarGaole Zhang <gaolez@codeaurora.org>
parent f9215a1b
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -79,6 +79,13 @@
#define SDIO_DEVICE_ID_QCA9377		0x701
#endif

#ifndef SDIO_VENDOR_ID_QCA9379
#define SDIO_VENDOR_ID_QCA9379		0x271
#endif

#ifndef SDIO_DEVICE_ID_QCA9379
#define SDIO_DEVICE_ID_QCA9379		0x801
#endif

/*
 * This hook just adds a quirk for all sdio devices
@@ -131,6 +138,9 @@ static const struct mmc_fixup mmc_fixup_methods[] = {

	SDIO_FIXUP(SDIO_VENDOR_ID_QCA9377, SDIO_DEVICE_ID_QCA9377,
		add_quirk, MMC_QUIRK_QCA9377_SETTINGS),

	SDIO_FIXUP(SDIO_VENDOR_ID_QCA9379, SDIO_DEVICE_ID_QCA9379,
		add_quirk, MMC_QUIRK_QCA9379_SETTINGS),
	END_FIXUP
};

+2 −1
Original line number Diff line number Diff line
@@ -228,7 +228,8 @@ static void sdio_enable_vendor_specific_settings(struct mmc_card *card)
	u8 settings;

	if (mmc_enable_qca6574_settings(card) ||
		mmc_enable_qca9377_settings(card)) {
		mmc_enable_qca9377_settings(card) ||
		mmc_enable_qca9379_settings(card)) {
		ret = mmc_io_rw_direct(card, 1, 0, 0xF2, 0x0F, NULL);
		if (ret) {
			pr_crit("%s: failed to write to fn 0xf2 %d\n",
+7 −0
Original line number Diff line number Diff line
@@ -393,6 +393,8 @@ struct mmc_card {
/* Make sure CMDQ is empty before queuing DCMD */
#define MMC_QUIRK_CMDQ_EMPTY_BEFORE_DCMD (1 << 17)

#define MMC_QUIRK_QCA9379_SETTINGS (1 << 18)	/* QCA9379 card settings*/

	unsigned int		erase_size;	/* erase size in sectors */
 	unsigned int		erase_shift;	/* if erase unit is power 2 */
 	unsigned int		pref_erase;	/* in sectors */
@@ -693,6 +695,11 @@ static inline bool mmc_enable_qca9377_settings(const struct mmc_card *c)
	return c->quirks & MMC_QUIRK_QCA9377_SETTINGS;
}

static inline bool mmc_enable_qca9379_settings(const struct mmc_card *c)
{
	return c->quirks & MMC_QUIRK_QCA9379_SETTINGS;
}

#define mmc_card_name(c)	((c)->cid.prod_name)
#define mmc_card_id(c)		(dev_name(&(c)->dev))