Re: [PATCH] atmel-mci: fix transfers < 16 bytes problem in PDC mode

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Olivier,

On Wed, Dec 18, 2013 at 09:09:41AM +0100, Olivier Sobrie wrote:
> Hi Ludovic,
> 
> On Fri, Dec 13, 2013 at 12:09:13PM +0100, Ludovic Desroches wrote:
> > Hi Olivier,
> > 
> > On Thu, Dec 05, 2013 at 10:45:16AM +0100, Olivier Sobrie wrote:
> > 
> > [...]
> > 
> > > With this patch I'm able to use the wlan sdio module wl1271.
> > > When you've time, it would be nice to validate or fix this
> > > patch.
> > 
> > I have tested it and it doesn't solve issue I have with Atheros module.
> 
> What kind of errors do you see with this module?
> Timeouts on some SDIO commands with small datasize?

Yes so same kind of errors than yours but your patch doesn't solve the
issue. The one I have done based on yours is not better in my case...

> 
> >  
> > > Thanks for your help,
> > > 
> > > Olivier
> > > 
> > >  drivers/mmc/host/atmel-mci.c |    6 +++++-
> > >  1 file changed, 5 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c
> > > index b86b482..c599731 100644
> > > --- a/drivers/mmc/host/atmel-mci.c
> > > +++ b/drivers/mmc/host/atmel-mci.c
> > > @@ -45,6 +45,7 @@
> > >  
> > >  #define ATMCI_DATA_ERROR_FLAGS	(ATMCI_DCRCE | ATMCI_DTOE | ATMCI_OVRE | ATMCI_UNRE)
> > >  #define ATMCI_DMA_THRESHOLD	16
> > > +#define ATMCI_PDC_MIN_DATASIZE	16
> > >  
> > >  enum {
> > >  	EVENT_CMD_RDY = 0,
> > > @@ -765,7 +766,10 @@ static void atmci_pdc_set_single_buf(struct atmel_mci *host,
> > >  	}
> > >  
> > >  	if (host->data_size <= buf_size) {
> > > -		if (host->data_size & 0x3) {
> > > +		if ((host->data_size < ATMCI_PDC_MIN_DATASIZE) &&
> > > +		    (dir == XFER_TRANSMIT)) {
> > > +			atmci_writel(host, counter_reg, 4);
> > > +		} else if (host->data_size & 0x3) {
> > 
> > I have feedback from people who have issue with atmel-mci driver but not
> > with at91-mci which has been removed unfortunately (it seems I had the
> > only sdio wifi module working with atmel-mci driver in pdc mode...). So I
> > think the 12 bytes value in the errata is correct.
> 
> Does the atheros module work with the at91-mci driver ?

Yes. State machine is not exactly the same. I thought I have found one
compatible with all mci versions but it seems it's not the case with
some sdio modules.

> 
> > 
> > Moreover I am afraid that this patch could cause some other bugs. I mean the
> > transfer size is 4 bytes, the sg length is 4 bytes too and we will ask
> > PDC to perform a bigger transfer... With the previous driver it was not a
> > problem because we didn't use sg directly, they were copied into another
> > buffer.
> 
> Ok. I'll have a look at the old at91-mci driver.

If you can, use it. I have tried to find small workaround but it seems
it's not possible. I'll have to rework state machine so it will be a bit
long.

Regards

Ludovic
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux