xref: /openbmc/linux/drivers/mmc/core/sdio_ops.h (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*2874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
25c4e6f13SPierre Ossman /*
35c4e6f13SPierre Ossman  *  linux/drivers/mmc/sdio_ops.c
45c4e6f13SPierre Ossman  *
55c4e6f13SPierre Ossman  *  Copyright 2006-2007 Pierre Ossman
65c4e6f13SPierre Ossman  */
75c4e6f13SPierre Ossman 
85c4e6f13SPierre Ossman #ifndef _MMC_SDIO_OPS_H
95c4e6f13SPierre Ossman #define _MMC_SDIO_OPS_H
105c4e6f13SPierre Ossman 
11066185d6SUlf Hansson #include <linux/types.h>
12de98c556SHans de Goede #include <linux/mmc/sdio.h>
13de98c556SHans de Goede 
14066185d6SUlf Hansson struct mmc_host;
15066185d6SUlf Hansson struct mmc_card;
1668269660SUlf Hansson struct work_struct;
17066185d6SUlf Hansson 
185c4e6f13SPierre Ossman int mmc_send_io_op_cond(struct mmc_host *host, u32 ocr, u32 *rocr);
19b2bcc798SPierre Ossman int mmc_io_rw_direct(struct mmc_card *card, int write, unsigned fn,
20b2bcc798SPierre Ossman 	unsigned addr, u8 in, u8* out);
21112c9db9SPierre Ossman int mmc_io_rw_extended(struct mmc_card *card, int write, unsigned fn,
22eb659468SDavid Vrabel 	unsigned addr, int incr_addr, u8 *buf, unsigned blocks, unsigned blksz);
23516a8242SAlbert Herranz int sdio_reset(struct mmc_host *host);
2468269660SUlf Hansson void sdio_irq_work(struct work_struct *work);
255c4e6f13SPierre Ossman 
sdio_is_io_busy(u32 opcode,u32 arg)26f328c76eSjiajie.hao@mediatek.com static inline bool sdio_is_io_busy(u32 opcode, u32 arg)
27de98c556SHans de Goede {
28f328c76eSjiajie.hao@mediatek.com 	u32 addr;
29f328c76eSjiajie.hao@mediatek.com 
30f328c76eSjiajie.hao@mediatek.com 	addr = (arg >> 9) & 0x1FFFF;
31f328c76eSjiajie.hao@mediatek.com 
32f328c76eSjiajie.hao@mediatek.com 	return (opcode == SD_IO_RW_EXTENDED ||
33f328c76eSjiajie.hao@mediatek.com 		(opcode == SD_IO_RW_DIRECT &&
34f328c76eSjiajie.hao@mediatek.com 		!(addr == SDIO_CCCR_ABORT || addr == SDIO_CCCR_SUSPEND)));
35de98c556SHans de Goede }
36de98c556SHans de Goede 
375c4e6f13SPierre Ossman #endif
385c4e6f13SPierre Ossman 
39