Skip to contentSkip to conversation

at91_mci: Enable MMC_CAP_SDIO_IRQ only when it actually works

PATCH In review Nicolas Ferre 3 participants 7 messages Jul 17, 2008 – Jul 20, 2008

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

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
index 59bf71e..f3d725e 100644
@@ -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
#1 lore raw
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.

---

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.
#2 lore raw

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

---

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
#3 lore raw
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.
#4 lore raw
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.

#5 lore raw
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.
#6 lore raw
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...