s3c6410: Add new quirk in sdhci driver and update ADMA descriptor build.
Subsystems (4)
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 1/3 s3c6410: Add new quirk in sdhci driver and update ADMA descriptor build.
The s3c6410 sdhci controller does not support the 'End' attribute and NOP attribute in the same 8-Byte ADMA descriptor. This patch adds a new quirk to identify sdhci host contollers with such behaviour. In addition to this, for controllers using the new quirk, the last entry in the ADMA descritor table is marked with the 'End' attribute (instead of using a NOP descriptor with 'End' attribute).
--- drivers/mmc/host/sdhci.c | 20 +++++++++++++++----- drivers/mmc/host/sdhci.h | 2 ++ 2 files changed, 17 insertions(+), 5 deletions(-)
drivers/mmc/host/sdhci.c +15 -5
@@ -496,12 +496,22 @@ static int sdhci_adma_table_pre(struct sdhci_host *host,WARN_ON ((desc - host->adma_desc) > (128 *2 +1 ) *4 ); } -/* -* Add a terminating entry. -*/ +if (host->quirks &SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC ) { +/* +* Mark the last descriptor as the terminating descriptor +*/ +if (desc != host->adma_desc) { + desc -=8 ; + desc[0 ] |=0x2 ;/* end */ + } + }else { +/* +* Add a terminating entry. +*/ -/* nop, end, valid */ -sdhci_set_adma_desc (desc,0 ,0 ,0x3 ); +/* nop, end, valid */ +sdhci_set_adma_desc (desc,0 ,0 ,0x3 ); + }/* * Resync align buffer as we might have changed it.
drivers/mmc/host/sdhci.h +2 -0
@@ -236,6 +236,8 @@ struct sdhci_host {#define SDHCI_QUIRK_DELAY_AFTER_POWER (1<<23)/* Controller uses SDCLK instead of TMCLK for data timeouts */ #define SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK (1<<24) +/* Controller cannot support End Attribute in NOP ADMA descriptor */ +#define SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC (1<<25)int irq;/* Device IRQ */ void __iomem * ioaddr;/* Mapped address */
Signature · 1 line
1.7.1
Ben Dooks
maintainerOn Tue, May 04, 2010 at 11:43:22AM +0200, Maurus Cuelenaere wrote:
The 'From:' line seems to have been lost?
Quoted 68 lines
The s3c6410 sdhci controller does not support the 'End' attribute and NOP attribute in the same 8-Byte ADMA descriptor. This patch adds a new quirk to identify sdhci host contollers with such behaviour. In addition to this, for controllers using the new quirk, the last entry in the ADMA descritor table is marked with the 'End' attribute (instead of using a NOP descriptor with 'End' attribute).
Signed-off-by Thomas Abraham <[email protected]>Acked-by Ben Dooks <[email protected]>Signed-off-by Maurus Cuelenaere <[email protected]>--- drivers/mmc/host/sdhci.c | 20 +++++++++++++++----- drivers/mmc/host/sdhci.h | 2 ++ 2 files changed, 17 insertions(+), 5 deletions(-)drivers/mmc/host/sdhci.c +15
-5@@ -496,12 +496,22 @@ static int sdhci_adma_table_pre(struct sdhci_host *host,WARN_ON ((desc - host->adma_desc) > (128 *2 +1 ) *4 ); } -/* -* Add a terminating entry. -*/ +if (host->quirks &SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC ) { +/* +* Mark the last descriptor as the terminating descriptor +*/ +if (desc != host->adma_desc) { + desc -=8 ; + desc[0 ] |=0x2 ;/* end */ + } + }else { +/* +* Add a terminating entry. +*/ -/* nop, end, valid */ -sdhci_set_adma_desc (desc,0 ,0 ,0x3 ); +/* nop, end, valid */ +sdhci_set_adma_desc (desc,0 ,0 ,0x3 ); + }/* * Resync align buffer as we might have changed it. drivers/mmc/host/sdhci.h +2
-0@@ -236,6 +236,8 @@ struct sdhci_host {#define SDHCI_QUIRK_DELAY_AFTER_POWER (1<<23)/* Controller uses SDCLK instead of TMCLK for data timeouts */ #define SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK (1<<24) +/* Controller cannot support End Attribute in NOP ADMA descriptor */ +#define SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC (1<<25)int irq;/* Device IRQ */ void __iomem * ioaddr;/* Mapped address */ Signature · 7 lines
1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Signature · 5 lines
-- Ben Q: What's a light-year? A: One-third less calories than a regular year.
Op 05-05-10 16:59, Ben Dooks schreef:
Quoted 4 lines · Maurus Cuelenaere
The 'From:' line seems to have been lost?
Hmm that's odd, I'm sure it was in the patch though.. Perhaps Thunderbird/Gmail stripped it while sending..
To be clear: the original author of this patch (and PATCH 2/3) is Thomas Abraham <[email protected]>, not me.
I wrote PATCH 3/3.
Quoted 70 lines
Quoted 69 lines
The s3c6410 sdhci controller does not support the 'End' attribute and NOP attribute in the same 8-Byte ADMA descriptor. This patch adds a new quirk to identify sdhci host contollers with such behaviour. In addition to this, for controllers using the new quirk, the last entry in the ADMA descritor table is marked with the 'End' attribute (instead of using a NOP descriptor with 'End' attribute).
Signed-off-by Thomas Abraham <[email protected]>Acked-by Ben Dooks <[email protected]>Signed-off-by Maurus Cuelenaere <[email protected]>--- drivers/mmc/host/sdhci.c | 20 +++++++++++++++----- drivers/mmc/host/sdhci.h | 2 ++ 2 files changed, 17 insertions(+), 5 deletions(-)drivers/mmc/host/sdhci.c +15
-5@@ -496,12 +496,22 @@ static int sdhci_adma_table_pre(struct sdhci_host *host,WARN_ON ((desc - host->adma_desc) > (128 *2 +1 ) *4 ); } -/* -* Add a terminating entry. -*/ +if (host->quirks &SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC ) { +/* +* Mark the last descriptor as the terminating descriptor +*/ +if (desc != host->adma_desc) { + desc -=8 ; + desc[0 ] |=0x2 ;/* end */ + } + }else { +/* +* Add a terminating entry. +*/ -/* nop, end, valid */ -sdhci_set_adma_desc (desc,0 ,0 ,0x3 ); +/* nop, end, valid */ +sdhci_set_adma_desc (desc,0 ,0 ,0x3 ); + }/* * Resync align buffer as we might have changed it. drivers/mmc/host/sdhci.h +2
-0@@ -236,6 +236,8 @@ struct sdhci_host {#define SDHCI_QUIRK_DELAY_AFTER_POWER (1<<23)/* Controller uses SDCLK instead of TMCLK for data timeouts */ #define SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK (1<<24) +/* Controller cannot support End Attribute in NOP ADMA descriptor */ +#define SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC (1<<25)int irq;/* Device IRQ */ void __iomem * ioaddr;/* Mapped address */ Signature · 7 lines
1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Signature · 1 line
Maurus Cuelenaere
PATCH 2/3 s3c6410: Enable ADMA feature in 6410 sdhci controller.
In reply to a message not in the archiveThis patch enables ADMA feature in 6410 SDHCI controller driver.
--- drivers/mmc/host/sdhci-s3c.c | 7 +------ 1 files changed, 1 insertions(+), 6 deletions(-)
drivers/mmc/host/sdhci-s3c.c +1 -6
@@ -317,12 +317,7 @@ static int __devinit sdhci_s3c_probe(struct platform_device *pdev) host->irq = irq;/* Setup quirks for the controller */ - -/* Currently with ADMA enabled we are getting some length -* interrupts that are not being dealt with, do disable -* ADMA until this is sorted out. */ - host->quirks |=SDHCI_QUIRK_BROKEN_ADMA ; - host->quirks |=SDHCI_QUIRK_32BIT_ADMA_SIZE ; + host->quirks |=SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC ;#ifndef CONFIG_MMC_SDHCI_S3C_DMA
Signature · 1 line
1.7.1
PATCH 3/3 SDHCI: Enable multiblock transfers in sdhci-s3c
In reply to a message not in the archiveWifi over SDIO doesn't work correctly without multiblock, so enable this. This patch depends on the following patches:
[PATCH] s3c6410: Enable ADMA feature in 6410 sdhci controller. [PATCH] s3c6410: Add new quirk in sdhci driver and update ADMA descriptor build.
--- drivers/mmc/host/sdhci-s3c.c | 3 --- 1 files changed, 0 insertions(+), 3 deletions(-)
drivers/mmc/host/sdhci-s3c.c +0 -3
@@ -330,9 +330,6 @@ static int __devinit sdhci_s3c_probe(struct platform_device *pdev)* support as well. */ host->quirks |=SDHCI_QUIRK_BROKEN_DMA ; -/* PIO currently has problems with multi-block IO */ - host->quirks |=SDHCI_QUIRK_NO_MULTIBLOCK ; -#endif /* CONFIG_MMC_SDHCI_S3C_DMA */ /* It seems we do not get an DATA transfer complete on non-busy
Signature · 1 line
1.7.1