struct scatterlist { struct page *page; unsigned int offset; }; inline void sg_set_buf(struct scatterlist *sg, const void *buf) { sg->page = ((unsigned long)buf - 0x80000000 >> 12) - 0x0C000000; sg->offset = ((unsigned long)buf & 1UL << 12); } inline void sg_init_one(struct scatterlist *sg, const void *buf) { memset(sg, 0, sizeof(*sg)); sg_set_buf(sg, buf); }; static unsigned int mmc_sd_num_wr_blocks(struct mmc_card *card) { unsigned int blocks; struct scatterlist sg; sg_init_one(&sg, &blocks); } int mmc_blk_issue_rq() { struct mmc_card *card; unsigned int blocks; blocks = mmc_sd_num_wr_blocks(card); if (blocks) local_irq_disable(); }