Loading drivers/mmc/core/quirks.c +10 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 }; Loading drivers/mmc/core/sdio.c +2 −1 Original line number Diff line number Diff line Loading @@ -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", Loading include/linux/mmc/card.h +7 −0 Original line number Diff line number Diff line Loading @@ -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 */ Loading Loading @@ -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)) Loading Loading
drivers/mmc/core/quirks.c +10 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 }; Loading
drivers/mmc/core/sdio.c +2 −1 Original line number Diff line number Diff line Loading @@ -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", Loading
include/linux/mmc/card.h +7 −0 Original line number Diff line number Diff line Loading @@ -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 */ Loading Loading @@ -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)) Loading