All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lee Jones <lee.jones@linaro.org>
To: steven_feng@realsil.com.cn
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] mfd:rtsx: do retry when dma transfer error
Date: Tue, 3 Jan 2017 17:17:27 +0000	[thread overview]
Message-ID: <20170103171727.GP2977@dell> (raw)
In-Reply-To: <1481271814-31820-1-git-send-email-steven_feng@realsil.com.cn>

On Fri, 09 Dec 2016, steven_feng@realsil.com.cn wrote:

> From: steven_feng <steven_feng@realsil.com.cn>
> 
> the request should be reissued when dma transfer error.
> for rts5227, the clock freq need to step reduce when error occurred.
> 
> Signed-off-by: steven_feng <steven_feng@realsil.com.cn>
> ---
>  drivers/mfd/rtsx_pcr.c       | 15 +++++++++++++--
>  include/linux/mfd/rtsx_pci.h |  2 ++
>  2 files changed, 15 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/mfd/rtsx_pcr.c b/drivers/mfd/rtsx_pcr.c
> index 98029ee..1684e61 100644
> --- a/drivers/mfd/rtsx_pcr.c
> +++ b/drivers/mfd/rtsx_pcr.c
> @@ -30,6 +30,7 @@
>  #include <linux/platform_device.h>
>  #include <linux/mfd/core.h>
>  #include <linux/mfd/rtsx_pci.h>
> +#include <linux/mmc/card.h>
>  #include <asm/unaligned.h>
>  
>  #include "rtsx_pcr.h"
> @@ -452,8 +453,12 @@ int rtsx_pci_dma_transfer(struct rtsx_pcr *pcr, struct scatterlist *sglist,
>  	}
>  
>  	spin_lock_irqsave(&pcr->lock, flags);
> -	if (pcr->trans_result == TRANS_RESULT_FAIL)
> -		err = -EINVAL;
> +	if (pcr->trans_result == TRANS_RESULT_FAIL) {
> +		err = -EILSEQ;

This seems strange.  What is the reason for using this error?

> +		if (pcr->dma_error_count < 8)

Why 8?

> +			pcr->dma_error_count++;
> +	}
> +
>  	else if (pcr->trans_result == TRANS_NO_DEVICE)
>  		err = -ENODEV;
>  	spin_unlock_irqrestore(&pcr->lock, flags);
> @@ -659,6 +664,11 @@ int rtsx_pci_switch_clock(struct rtsx_pcr *pcr, unsigned int card_clock,
>  	if (err < 0)
>  		return err;
>  
> +	if (card_clock == UHS_SDR104_MAX_DTR &&
> +			pcr->dma_error_count && PCI_PID(pcr) == 0x5227)

Tabbing is off here.

What does 0x5227 mean?  No magic numbers.  Please define it.

> +		card_clock = UHS_SDR104_MAX_DTR -
> +			pcr->dma_error_count * 20000000;

What does this do?

Looks like you need a comment to describe what you're trying to
achieve.

>  	card_clock /= 1000000;
>  	pcr_dbg(pcr, "Switch card clock to %dMHz\n", card_clock);
>  
> @@ -894,6 +904,7 @@ static irqreturn_t rtsx_pci_isr(int irq, void *dev_id)
>  			pcr->card_removed |= SD_EXIST;
>  			pcr->card_inserted &= ~SD_EXIST;
>  		}
> +		pcr->dma_error_count = 0;
>  	}
>  
>  	if (int_reg & MS_INT) {
> diff --git a/include/linux/mfd/rtsx_pci.h b/include/linux/mfd/rtsx_pci.h
> index 7eb7cba..1d65f4e 100644
> --- a/include/linux/mfd/rtsx_pci.h
> +++ b/include/linux/mfd/rtsx_pci.h
> @@ -957,6 +957,8 @@ struct rtsx_pcr {
>  
>  	int				num_slots;
>  	struct rtsx_slot		*slots;
> +
> +	u8				dma_error_count;
>  };
>  
>  #define CHK_PCI_PID(pcr, pid)		((pcr)->pci->device == (pid))

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

  reply	other threads:[~2017-01-03 17:15 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-09  8:23 [PATCH] mfd:rtsx: do retry when dma transfer error steven_feng
2017-01-03 17:17 ` Lee Jones [this message]
2017-01-04  9:48   ` 冯伟linux

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170103171727.GP2977@dell \
    --to=lee.jones@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=steven_feng@realsil.com.cn \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.