Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7eb90a36 authored by wwang's avatar wwang Committed by Greg Kroah-Hartman
Browse files

staging: rts_pstor: delete a function



Delete a function named rtsx_transfer_sglist which won't be called.

Signed-off-by: default avatarwwang <wei_wang@realsil.com.cn>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 80ae3fa5
Loading
Loading
Loading
Loading
+0 −136
Original line number Diff line number Diff line
@@ -715,142 +715,6 @@ int rtsx_transfer_buf(struct rtsx_chip *chip, u8 card, void *buf, size_t len,
	return err;
}

int rtsx_transfer_sglist(struct rtsx_chip *chip, u8 card,
		struct scatterlist *sg, int num_sg,
		enum dma_data_direction dma_dir, int timeout)
{
	struct rtsx_dev *rtsx = chip->rtsx;
	struct completion trans_done;
	u8 dir;
	int buf_cnt, i;
	int err = 0;
	long timeleft;

	if ((sg == NULL) || (num_sg <= 0))
		return -EIO;

	if (dma_dir == DMA_TO_DEVICE) {
		dir = HOST_TO_DEVICE;
	} else if (dma_dir == DMA_FROM_DEVICE) {
		dir = DEVICE_TO_HOST;
	} else {
		return -ENXIO;
	}

	if (card == SD_CARD) {
		rtsx->check_card_cd = SD_EXIST;
	} else if (card == MS_CARD) {
		rtsx->check_card_cd = MS_EXIST;
	} else if (card == XD_CARD) {
		rtsx->check_card_cd = XD_EXIST;
	} else {
		rtsx->check_card_cd = 0;
	}

	spin_lock_irq(&rtsx->reg_lock);

	/* set up data structures for the wakeup system */
	rtsx->done = &trans_done;

	rtsx->trans_state = STATE_TRANS_SG;
	rtsx->trans_result = TRANS_NOT_READY;

	spin_unlock_irq(&rtsx->reg_lock);

	buf_cnt = dma_map_sg(&(rtsx->pci->dev), sg, num_sg, dma_dir);

	for (i = 0; i < buf_cnt; i++) {
		u32 bier = 0;
		u32 val = (1 << 31);
		dma_addr_t addr = sg_dma_address(sg + i);
		unsigned int len = sg_dma_len(sg + i);

		RTSX_DEBUGP("dma_addr = 0x%x, dma_len = %d\n",
			     (unsigned int)addr, len);

		val |= (u32)(dir & 0x01) << 29;
		val |= (u32)(len & 0x00FFFFFF);

		spin_lock_irq(&rtsx->reg_lock);

		init_completion(&trans_done);

		if (i == (buf_cnt - 1)) {
			/* If last transfer, disable data interrupt */
			bier = rtsx_readl(chip, RTSX_BIER);
			rtsx_writel(chip, RTSX_BIER, bier & 0xBFFFFFFF);
		}

		rtsx_writel(chip, RTSX_HDBAR, addr);
		rtsx_writel(chip, RTSX_HDBCTLR, val);

		spin_unlock_irq(&rtsx->reg_lock);

		timeleft = wait_for_completion_interruptible_timeout(
			&trans_done, timeout * HZ / 1000);
		if (timeleft <= 0) {
			RTSX_DEBUGP("Timeout (%s %d)\n", __func__, __LINE__);
			RTSX_DEBUGP("chip->int_reg = 0x%x\n", chip->int_reg);
			err = -ETIMEDOUT;
			if (i == (buf_cnt - 1))
				rtsx_writel(chip, RTSX_BIER, bier);
			goto out;
		}

		spin_lock_irq(&rtsx->reg_lock);
		if (rtsx->trans_result == TRANS_RESULT_FAIL) {
			err = -EIO;
			spin_unlock_irq(&rtsx->reg_lock);
			if (i == (buf_cnt - 1))
				rtsx_writel(chip, RTSX_BIER, bier);
			goto out;
		}
		spin_unlock_irq(&rtsx->reg_lock);

		if (i == (buf_cnt - 1)) {
			/* If last transfer, enable data interrupt
			 * after transfer finished
			 */
			rtsx_writel(chip, RTSX_BIER, bier);
		}
	}

	/* Wait for TRANS_OK_INT */
	spin_lock_irq(&rtsx->reg_lock);
	if (rtsx->trans_result == TRANS_NOT_READY) {
		init_completion(&trans_done);
		spin_unlock_irq(&rtsx->reg_lock);
		timeleft = wait_for_completion_interruptible_timeout(
			&trans_done, timeout * HZ / 1000);
		if (timeleft <= 0) {
			RTSX_DEBUGP("Timeout (%s %d)\n", __func__, __LINE__);
			RTSX_DEBUGP("chip->int_reg = 0x%x\n", chip->int_reg);
			err = -ETIMEDOUT;
			goto out;
		}
	} else {
		spin_unlock_irq(&rtsx->reg_lock);
	}

	spin_lock_irq(&rtsx->reg_lock);
	if (rtsx->trans_result == TRANS_RESULT_FAIL) {
		err = -EIO;
	} else if (rtsx->trans_result == TRANS_RESULT_OK) {
		err = 0;
	}
	spin_unlock_irq(&rtsx->reg_lock);

out:
	rtsx->done = NULL;
	rtsx->trans_state = STATE_TRANS_NONE;
	dma_unmap_sg(&(rtsx->pci->dev), sg, num_sg, dma_dir);

	if (err < 0)
		rtsx_stop_cmd(chip, card);

	return err;
}

int rtsx_transfer_data_partial(struct rtsx_chip *chip, u8 card,
		void *buf, size_t len, int use_sg, unsigned int *index,
		unsigned int *offset, enum dma_data_direction dma_dir,