at91_mci: Enable MMC_CAP_SDIO_IRQ only when it actually works
Subsystems (2)
PATCH 1/3 at91_mci: Enable MMC_CAP_SDIO_IRQ only when it actually works
According to the datasheets AT91SAM9261 does not support SDIO interrupts, and AT91SAM9260/9263 have an erratum requiring 4bit mode while using slot B for the interrupt to work.
---
Original patch from Ville Syrjala.
I removed the rm9200 from the original patch as this chip is not SDIO capable (error in datasheet).
drivers/mmc/host/at91_mci.c | 9 ++++++++-
1 files changed, 8 insertions(+), 1 deletions(-)
drivers/mmc/host/at91_mci.c +0 -0
@@ -1000,7 +1000,7 @@ static int __init at91_mci_probe(struct platform_device *pdev)
mmc->f_min = 375000; mmc->f_max = 25000000; mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
- mmc->caps = MMC_CAP_SDIO_IRQ;
+ mmc->caps = 0;
mmc->max_blk_size = 4095; mmc->max_blk_count = mmc->max_req_size; @@ -1018,6 +1018,13 @@ static int __init at91_mci_probe(struct platform_device *pdev) " - using 1 wire\n"); }
+ /* Add SDIO capability when available */
+ if (cpu_is_at91sam9260() || cpu_is_at91sam9263()) {
+ /* AT91SAM9260/9263 erratum */
+ if (host->board->wire4 || !host->board->slot_b)
+ mmc->caps |= MMC_CAP_SDIO_IRQ;
+ }
+
/*
* Reserve GPIOs ... board init code makes sure these pins are set
* up as GPIOs with the right direction (input, except for vcc)
Signature · 1 line
1.5.3.7
Quoted 7 lines · On Thu, 17 Jul 2008 11:34:07 +0200 Nicolas Ferre <[email protected]>…
According to the datasheets AT91SAM9261 does not support SDIO interrupts, and AT91SAM9260/9263 have an erratum requiring 4bit mode while using slot B for the interrupt to work.
Signed-off-by Nicolas Ferre <[email protected]>---
Not all SDIO cards use 4-bit mode, so it looks to me like you have to disable it completely (unless there's a third revision where it works without any fine print?).
Rgds
Signature · 6 lines
-- Pierre Ossman WARNING: This correspondence is being monitored by the Swedish government. Make sure your server uses encryption for SMTP traffic and consider using PGP for end-to-end encryption.
Pierre Ossman :
Quoted 8 lines
Quoted 5 lines · On Thu, 17 Jul 2008 11:34:07 +0200 Nicolas Ferre <[email protected]>…
According to the datasheets AT91SAM9261 does not support SDIO interrupts, and AT91SAM9260/9263 have an erratum requiring 4bit mode while using slot B for the interrupt to work.
Quoted 6 lines
Quoted 2 lines
Signed-off-by Nicolas Ferre <[email protected]>---
Not all SDIO cards use 4-bit mode, so it looks to me like you have to disable it completely (unless there's a third revision where it works without any fine print?).
Well, I understand.
In your opinion, a printed warning that says to be sure to use only 4-bit mode SDIO cards on slot B... is not acceptable ?
It kind of disappoints me to remove this feature as the at91sam9260ek/9xe/9g20 board uses only slot B, and I really like to connect SDIO with IRQ on it.
Regards,
Signature · 1 line
Nicolas Ferre
Quoted 11 lines · On Fri, 18 Jul 2008 15:30:40 +0200 Nicolas Ferre <[email protected]>…
Pierre Ossman :
Quoted 4 lines
Not all SDIO cards use 4-bit mode, so it looks to me like you have to disable it completely (unless there's a third revision where it works without any fine print?).
Well, I understand.
In your opinion, a printed warning that says to be sure to use only 4-bit mode SDIO cards on slot B... is not acceptable ?
It's not really up to the user. The SDIO spec does not mandate 4-bit support, so some cards will not have it.
Quoted 4 lines
It kind of disappoints me to remove this feature as the at91sam9260ek/9xe/9g20 board uses only slot B, and I really like to connect SDIO with IRQ on it.
I haven't seen the erratum, but is there no way to poke the hardware into getting the interrupt running even in 1-bit mode?
Signature · 6 lines
-- Pierre Ossman WARNING: This correspondence is being monitored by the Swedish government. Make sure your server uses encryption for SMTP traffic and consider using PGP for end-to-end encryption.
Quoted 5 lines · Pierre Ossman
Quoted 2 lines
In your opinion, a printed warning that says to be sure to use only 4-bit mode SDIO cards on slot B... is not acceptable ?
It's not really up to the user. The SDIO spec does not mandate 4-bit support, so some cards will not have it.
That seems overly rigid.
its not linux violating the spec, its the SDIO controller in this case.
I see no harm in supporting what the hardware is actually capable of.
It wouldnt be the first bit of broken hardware supported by linux.
Quoted 7 lines · On Sun, 20 Jul 2008 10:55:39 +0100 ian <[email protected]> wrote:
Quoted 5 lines · Pierre Ossman
Quoted 2 lines
In your opinion, a printed warning that says to be sure to use only 4-bit mode SDIO cards on slot B... is not acceptable ?
It's not really up to the user. The SDIO spec does not mandate 4-bit support, so some cards will not have it.
Quoted 8 lines
That seems overly rigid.
its not linux violating the spec, its the SDIO controller in this case.
I see no harm in supporting what the hardware is actually capable of.
It wouldnt be the first bit of broken hardware supported by linux.
It does tend to make a mess of things when you start adding up all the gotchas of each and every broken controller out there (it seems like every controller decides to violate the spec in their own creative way).
What about David's idea? Reconfiguring the PIN to be a GPIO pin with an interrupt shouldn't be that difficult?
Rgds
Signature · 6 lines
-- Pierre Ossman WARNING: This correspondence is being monitored by the Swedish government. Make sure your server uses encryption for SMTP traffic and consider using PGP for end-to-end encryption.
Quoted 4 lines · Pierre Ossman
It does tend to make a mess of things when you start adding up all the gotchas of each and every broken controller out there (it seems like every controller decides to violate the spec in their own creative way).
True.
Quoted 2 lines
What about David's idea? Reconfiguring the PIN to be a GPIO pin with an interrupt shouldn't be that difficult?
If it works its a better solution...