mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00

mmc_can_* functions sometimes relate to the card and sometimes to the host. Make it obvious by renaming this function to include 'card'. Also, convert to proper bool type while we are here. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Link: https://lore.kernel.org/r/20250401095847.29271-4-wsa+renesas@sang-engineering.com Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
75 lines
2.5 KiB
C
75 lines
2.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* linux/drivers/mmc/core/mmc_ops.h
|
|
*
|
|
* Copyright 2006-2007 Pierre Ossman
|
|
*/
|
|
|
|
#ifndef _MMC_MMC_OPS_H
|
|
#define _MMC_MMC_OPS_H
|
|
|
|
#include <linux/types.h>
|
|
|
|
enum mmc_busy_cmd {
|
|
MMC_BUSY_CMD6,
|
|
MMC_BUSY_ERASE,
|
|
MMC_BUSY_HPI,
|
|
MMC_BUSY_EXTR_SINGLE,
|
|
MMC_BUSY_IO,
|
|
};
|
|
|
|
struct mmc_host;
|
|
struct mmc_card;
|
|
struct mmc_command;
|
|
|
|
int mmc_select_card(struct mmc_card *card);
|
|
int mmc_deselect_cards(struct mmc_host *host);
|
|
int mmc_set_dsr(struct mmc_host *host);
|
|
int __mmc_go_idle(struct mmc_host *host);
|
|
int mmc_go_idle(struct mmc_host *host);
|
|
int mmc_send_op_cond(struct mmc_host *host, u32 ocr, u32 *rocr);
|
|
int mmc_set_relative_addr(struct mmc_card *card);
|
|
int mmc_send_adtc_data(struct mmc_card *card, struct mmc_host *host, u32 opcode,
|
|
u32 args, void *buf, unsigned len);
|
|
int mmc_send_csd(struct mmc_card *card, u32 *csd);
|
|
int __mmc_send_status(struct mmc_card *card, u32 *status, unsigned int retries);
|
|
int mmc_send_cid(struct mmc_host *host, u32 *cid);
|
|
int mmc_spi_read_ocr(struct mmc_host *host, int highcap, u32 *ocrp);
|
|
int mmc_spi_set_crc(struct mmc_host *host, int use_crc);
|
|
int mmc_bus_test(struct mmc_card *card, u8 bus_width);
|
|
bool mmc_card_can_ext_csd(struct mmc_card *card);
|
|
int mmc_switch_status(struct mmc_card *card, bool crc_err_fatal);
|
|
bool mmc_prepare_busy_cmd(struct mmc_host *host, struct mmc_command *cmd,
|
|
unsigned int timeout_ms);
|
|
int __mmc_poll_for_busy(struct mmc_host *host, unsigned int period_us,
|
|
unsigned int timeout_ms,
|
|
int (*busy_cb)(void *cb_data, bool *busy),
|
|
void *cb_data);
|
|
int mmc_poll_for_busy(struct mmc_card *card, unsigned int timeout_ms,
|
|
bool retry_crc_err, enum mmc_busy_cmd busy_cmd);
|
|
int __mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,
|
|
unsigned int timeout_ms, unsigned char timing,
|
|
bool send_status, bool retry_crc_err, unsigned int retries);
|
|
int mmc_switch(struct mmc_card *card, u8 set, u8 index, u8 value,
|
|
unsigned int timeout_ms);
|
|
void mmc_run_bkops(struct mmc_card *card);
|
|
int mmc_cmdq_enable(struct mmc_card *card);
|
|
int mmc_cmdq_disable(struct mmc_card *card);
|
|
int mmc_sanitize(struct mmc_card *card, unsigned int timeout_ms);
|
|
|
|
static inline u32 unstuff_bits(const u32 *resp, int start, int size)
|
|
{
|
|
const int __size = size;
|
|
const u32 __mask = (__size < 32 ? 1 << __size : 0) - 1;
|
|
const int __off = 3 - (start / 32);
|
|
const int __shft = start & 31;
|
|
u32 __res = resp[__off] >> __shft;
|
|
|
|
if (__size + __shft > 32)
|
|
__res |= resp[__off - 1] << ((32 - __shft) % 32);
|
|
|
|
return __res & __mask;
|
|
}
|
|
|
|
#endif
|
|
|