Lines Matching refs:func

27 void sdio_claim_host(struct sdio_func *func)  in sdio_claim_host()  argument
29 if (WARN_ON(!func)) in sdio_claim_host()
32 mmc_claim_host(func->card->host); in sdio_claim_host()
43 void sdio_release_host(struct sdio_func *func) in sdio_release_host() argument
45 if (WARN_ON(!func)) in sdio_release_host()
48 mmc_release_host(func->card->host); in sdio_release_host()
59 int sdio_enable_func(struct sdio_func *func) in sdio_enable_func() argument
65 if (!func) in sdio_enable_func()
68 pr_debug("SDIO: Enabling device %s...\n", sdio_func_id(func)); in sdio_enable_func()
70 ret = mmc_io_rw_direct(func->card, 0, 0, SDIO_CCCR_IOEx, 0, &reg); in sdio_enable_func()
74 reg |= 1 << func->num; in sdio_enable_func()
76 ret = mmc_io_rw_direct(func->card, 1, 0, SDIO_CCCR_IOEx, reg, NULL); in sdio_enable_func()
80 timeout = jiffies + msecs_to_jiffies(func->enable_timeout); in sdio_enable_func()
83 ret = mmc_io_rw_direct(func->card, 0, 0, SDIO_CCCR_IORx, 0, &reg); in sdio_enable_func()
86 if (reg & (1 << func->num)) in sdio_enable_func()
93 pr_debug("SDIO: Enabled device %s\n", sdio_func_id(func)); in sdio_enable_func()
98 pr_debug("SDIO: Failed to enable device %s\n", sdio_func_id(func)); in sdio_enable_func()
110 int sdio_disable_func(struct sdio_func *func) in sdio_disable_func() argument
115 if (!func) in sdio_disable_func()
118 pr_debug("SDIO: Disabling device %s...\n", sdio_func_id(func)); in sdio_disable_func()
120 ret = mmc_io_rw_direct(func->card, 0, 0, SDIO_CCCR_IOEx, 0, &reg); in sdio_disable_func()
124 reg &= ~(1 << func->num); in sdio_disable_func()
126 ret = mmc_io_rw_direct(func->card, 1, 0, SDIO_CCCR_IOEx, reg, NULL); in sdio_disable_func()
130 pr_debug("SDIO: Disabled device %s\n", sdio_func_id(func)); in sdio_disable_func()
135 pr_debug("SDIO: Failed to disable device %s\n", sdio_func_id(func)); in sdio_disable_func()
159 int sdio_set_block_size(struct sdio_func *func, unsigned blksz) in sdio_set_block_size() argument
163 if (blksz > func->card->host->max_blk_size) in sdio_set_block_size()
167 blksz = min(func->max_blksize, func->card->host->max_blk_size); in sdio_set_block_size()
171 ret = mmc_io_rw_direct(func->card, 1, 0, in sdio_set_block_size()
172 SDIO_FBR_BASE(func->num) + SDIO_FBR_BLKSIZE, in sdio_set_block_size()
176 ret = mmc_io_rw_direct(func->card, 1, 0, in sdio_set_block_size()
177 SDIO_FBR_BASE(func->num) + SDIO_FBR_BLKSIZE + 1, in sdio_set_block_size()
181 func->cur_blksize = blksz; in sdio_set_block_size()
189 static inline unsigned int sdio_max_byte_size(struct sdio_func *func) in sdio_max_byte_size() argument
191 unsigned mval = func->card->host->max_blk_size; in sdio_max_byte_size()
193 if (mmc_blksz_for_byte_mode(func->card)) in sdio_max_byte_size()
194 mval = min(mval, func->cur_blksize); in sdio_max_byte_size()
196 mval = min(mval, func->max_blksize); in sdio_max_byte_size()
198 if (mmc_card_broken_byte_mode_512(func->card)) in sdio_max_byte_size()
233 unsigned int sdio_align_size(struct sdio_func *func, unsigned int sz) in sdio_align_size() argument
252 if (sz <= sdio_max_byte_size(func)) in sdio_align_size()
255 if (func->card->cccr.multi_block) { in sdio_align_size()
259 if ((sz % func->cur_blksize) == 0) in sdio_align_size()
266 blk_sz = ((sz + func->cur_blksize - 1) / in sdio_align_size()
267 func->cur_blksize) * func->cur_blksize; in sdio_align_size()
274 if ((blk_sz % func->cur_blksize) == 0) in sdio_align_size()
281 byte_sz = _sdio_align_size(sz % func->cur_blksize); in sdio_align_size()
282 if (byte_sz <= sdio_max_byte_size(func)) { in sdio_align_size()
283 blk_sz = sz / func->cur_blksize; in sdio_align_size()
284 return blk_sz * func->cur_blksize + byte_sz; in sdio_align_size()
291 chunk_sz = _sdio_align_size(sdio_max_byte_size(func)); in sdio_align_size()
292 if (chunk_sz == sdio_max_byte_size(func)) { in sdio_align_size()
315 static int sdio_io_rw_ext_helper(struct sdio_func *func, int write, in sdio_io_rw_ext_helper() argument
322 if (!func || (func->num > 7)) in sdio_io_rw_ext_helper()
326 if (func->card->cccr.multi_block && (size > sdio_max_byte_size(func))) { in sdio_io_rw_ext_helper()
329 max_blocks = min(func->card->host->max_blk_count, 511u); in sdio_io_rw_ext_helper()
331 while (remainder >= func->cur_blksize) { in sdio_io_rw_ext_helper()
334 blocks = remainder / func->cur_blksize; in sdio_io_rw_ext_helper()
337 size = blocks * func->cur_blksize; in sdio_io_rw_ext_helper()
339 ret = mmc_io_rw_extended(func->card, write, in sdio_io_rw_ext_helper()
340 func->num, addr, incr_addr, buf, in sdio_io_rw_ext_helper()
341 blocks, func->cur_blksize); in sdio_io_rw_ext_helper()
354 size = min(remainder, sdio_max_byte_size(func)); in sdio_io_rw_ext_helper()
357 ret = mmc_io_rw_extended(func->card, write, func->num, addr, in sdio_io_rw_ext_helper()
380 u8 sdio_readb(struct sdio_func *func, unsigned int addr, int *err_ret) in sdio_readb() argument
385 if (!func) { in sdio_readb()
391 ret = mmc_io_rw_direct(func->card, 0, func->num, addr, 0, &val); in sdio_readb()
412 void sdio_writeb(struct sdio_func *func, u8 b, unsigned int addr, int *err_ret) in sdio_writeb() argument
416 if (!func) { in sdio_writeb()
422 ret = mmc_io_rw_direct(func->card, 1, func->num, addr, b, NULL); in sdio_writeb()
441 u8 sdio_writeb_readb(struct sdio_func *func, u8 write_byte, in sdio_writeb_readb() argument
447 ret = mmc_io_rw_direct(func->card, 1, func->num, addr, in sdio_writeb_readb()
468 int sdio_memcpy_fromio(struct sdio_func *func, void *dst, in sdio_memcpy_fromio() argument
471 return sdio_io_rw_ext_helper(func, 0, addr, 1, dst, count); in sdio_memcpy_fromio()
485 int sdio_memcpy_toio(struct sdio_func *func, unsigned int addr, in sdio_memcpy_toio() argument
488 return sdio_io_rw_ext_helper(func, 1, addr, 1, src, count); in sdio_memcpy_toio()
502 int sdio_readsb(struct sdio_func *func, void *dst, unsigned int addr, in sdio_readsb() argument
505 return sdio_io_rw_ext_helper(func, 0, addr, 0, dst, count); in sdio_readsb()
519 int sdio_writesb(struct sdio_func *func, unsigned int addr, void *src, in sdio_writesb() argument
522 return sdio_io_rw_ext_helper(func, 1, addr, 0, src, count); in sdio_writesb()
536 u16 sdio_readw(struct sdio_func *func, unsigned int addr, int *err_ret) in sdio_readw() argument
540 ret = sdio_memcpy_fromio(func, func->tmpbuf, addr, 2); in sdio_readw()
546 return le16_to_cpup((__le16 *)func->tmpbuf); in sdio_readw()
561 void sdio_writew(struct sdio_func *func, u16 b, unsigned int addr, int *err_ret) in sdio_writew() argument
565 *(__le16 *)func->tmpbuf = cpu_to_le16(b); in sdio_writew()
567 ret = sdio_memcpy_toio(func, addr, func->tmpbuf, 2); in sdio_writew()
584 u32 sdio_readl(struct sdio_func *func, unsigned int addr, int *err_ret) in sdio_readl() argument
588 ret = sdio_memcpy_fromio(func, func->tmpbuf, addr, 4); in sdio_readl()
594 return le32_to_cpup((__le32 *)func->tmpbuf); in sdio_readl()
609 void sdio_writel(struct sdio_func *func, u32 b, unsigned int addr, int *err_ret) in sdio_writel() argument
613 *(__le32 *)func->tmpbuf = cpu_to_le32(b); in sdio_writel()
615 ret = sdio_memcpy_toio(func, addr, func->tmpbuf, 4); in sdio_writel()
631 unsigned char sdio_f0_readb(struct sdio_func *func, unsigned int addr, in sdio_f0_readb() argument
637 if (!func) { in sdio_f0_readb()
643 ret = mmc_io_rw_direct(func->card, 0, 0, addr, 0, &val); in sdio_f0_readb()
667 void sdio_f0_writeb(struct sdio_func *func, unsigned char b, unsigned int addr, in sdio_f0_writeb() argument
672 if (!func) { in sdio_f0_writeb()
678 if ((addr < 0xF0 || addr > 0xFF) && (!mmc_card_lenient_fn0(func->card))) { in sdio_f0_writeb()
684 ret = mmc_io_rw_direct(func->card, 1, 0, addr, b, NULL); in sdio_f0_writeb()
700 mmc_pm_flag_t sdio_get_host_pm_caps(struct sdio_func *func) in sdio_get_host_pm_caps() argument
702 if (!func) in sdio_get_host_pm_caps()
705 return func->card->host->pm_caps; in sdio_get_host_pm_caps()
722 int sdio_set_host_pm_flags(struct sdio_func *func, mmc_pm_flag_t flags) in sdio_set_host_pm_flags() argument
726 if (!func) in sdio_set_host_pm_flags()
729 host = func->card->host; in sdio_set_host_pm_flags()
759 void sdio_retune_crc_disable(struct sdio_func *func) in sdio_retune_crc_disable() argument
761 func->card->host->retune_crc_disable = true; in sdio_retune_crc_disable()
771 void sdio_retune_crc_enable(struct sdio_func *func) in sdio_retune_crc_enable() argument
773 func->card->host->retune_crc_disable = false; in sdio_retune_crc_enable()
794 void sdio_retune_hold_now(struct sdio_func *func) in sdio_retune_hold_now() argument
796 mmc_retune_hold_now(func->card->host); in sdio_retune_hold_now()
810 void sdio_retune_release(struct sdio_func *func) in sdio_retune_release() argument
812 mmc_retune_release(func->card->host); in sdio_retune_release()