mmc: omap_hsmmc: support SDIO cards (#2)
Subsystems (2)
cover mmc: omap_hsmmc: support SDIO cards (#2)
These patches add support for SDIO cards to the omap_hsmmc driver. Power management changes to prevent SDIO cards from being turned off and losing all state, and card interrupts.
I've been unable to test these exact patches as I only have an N900 for testing and the N900 support in mainline is incomplete.
Changes since v1:
- (hopefully) get all cards working again by removing a second call to read MMCi_STAT in the interrupt handler.
- flush posted writes after enabling/disabling SDIO interrupts.
- tweak the FIXME commit on disabling FCLK to better match what really going on (at least I think so anyway).
David Vrabel (2):
mmc: omap_hsmmc: don't turn SDIO cards off when idle
mmc: omap_hsmmc: enable SDIO card interrupts
drivers/mmc/host/omap_hsmmc.c | 114 ++++++++++++++++++++++++++++------------- 1 files changed, 79 insertions(+), 35 deletions(-)
PATCH 1/2 mmc: omap_hsmmc: don't turn SDIO cards off when idle
Don't turn SDIO cards off to save power. Doing so will lose all internal state in the card.
--- drivers/mmc/host/omap_hsmmc.c | 12 ++++++++---- 1 files changed, 8 insertions(+), 4 deletions(-)
drivers/mmc/host/omap_hsmmc.c +8 -4
@@ -28,6 +28,7 @@#include <linux/clk.h> #include <linux/mmc/host.h> #include <linux/mmc/core.h> +#include <linux/mmc/card.h> #include <linux/io.h> #include <linux/semaphore.h> #include <plat/dma.h>
@@ -1366,8 +1367,12 @@ static int omap_hsmmc_sleep_to_off(struct omap_hsmmc_host *host) mmc_slot(host).card_detect || (mmc_slot(host).get_cover_state && mmc_slot(host).get_cover_state(host->dev, host->slot_id)))) { -mmc_release_host (host->mmc); -return 0 ; + goto out; + } + +/* Don't turn SDIO cards off. */ +if (host->mmc->card &&mmc_card_sdio (host->mmc->card)) { + goto out; }mmc_slot (host).set_power (host->dev, host->slot_id,0 ,0 );
@@ -1378,9 +1383,8 @@ static int omap_hsmmc_sleep_to_off(struct omap_hsmmc_host *host) host->dpm_state == CARDSLEEP ? "CARDSLEEP" : "REGSLEEP"); host->dpm_state =OFF ; - +out:mmc_release_host (host->mmc); -return 0 ; }
Signature · 1 line
1.6.3.3
PATCH 2/2 mmc: omap_hsmmc: enable SDIO card interrupts
In reply to David VrabelEnable the use of SDIO card interrupts.
FCLK must be enabled while SDIO interrupts are enabled or the MMC module won't wake-up (even though ENAWAKEUP in SYSCONFIG and IWE in HTCL have been set). Enabling the MMC module to wake-up would require configuring the MMC module (and the mmci_dat[1] GPIO when the CORE power domain is OFF) as wake-up sources in the PRCM.
The writes to STAT and ISE when starting a command are unnecessary and have been removed.
--- drivers/mmc/host/omap_hsmmc.c | 102 ++++++++++++++++++++++++++++------------ 1 files changed, 71 insertions(+), 31 deletions(-)
drivers/mmc/host/omap_hsmmc.c +71 -31
@@ -64,6 +64,7 @@#define SDVS_MASK 0x00000E00#define SDVSCLR 0xFFFFF1FF#define SDVSDET 0x00000400 +#define ENAWAKEUP (1 << 2)#define AUTOIDLE 0x1#define SDBP (1 << 8)#define DTO 0xe
@@ -74,9 +75,11 @@#define CLKD_SHIFT 6#define DTO_MASK 0x000F0000#define DTO_SHIFT 16 +#define CIRQ_ENABLE (1 << 8)#define INT_EN_MASK 0x307F0033#define BWR_ENABLE (1 << 4)#define BRR_ENABLE (1 << 5) +#define CTPL (1 << 11)#define INIT_STREAM (1 << 1)#define DP_SELECT (1 << 21)#define DDIR (1 << 4)
@@ -84,10 +87,12 @@#define MSBS (1 << 5)#define BCE (1 << 1)#define FOUR_BIT (1 << 1) +#define IWE (1 << 24)#define DW8 (1 << 5)#define CC 0x1#define TC 0x02#define OD 0x1 +#define CIRQ (1 << 8)#define ERR (1 << 15)#define CMD_TIMEOUT (1 << 16)#define DATA_TIMEOUT (1 << 20)
@@ -227,7 +232,7 @@ static int omap_hsmmc_context_restore(struct omap_hsmmc_host *host) ;OMAP_HSMMC_WRITE (host->base,SYSCONFIG , -OMAP_HSMMC_READ (host->base,SYSCONFIG ) |AUTOIDLE ); +OMAP_HSMMC_READ (host->base,SYSCONFIG ) |AUTOIDLE |ENAWAKEUP );if (host->id ==OMAP_MMC1_DEVID ) { if (host->power_mode != MMC_POWER_OFF &&
@@ -242,7 +247,7 @@ static int omap_hsmmc_context_restore(struct omap_hsmmc_host *host) }OMAP_HSMMC_WRITE (host->base,HCTL , -OMAP_HSMMC_READ (host->base,HCTL ) | hctl); +OMAP_HSMMC_READ (host->base,HCTL ) | hctl |IWE );OMAP_HSMMC_WRITE (host->base,CAPA ,OMAP_HSMMC_READ (host->base,CAPA ) | capa);
@@ -256,7 +261,7 @@ static int omap_hsmmc_context_restore(struct omap_hsmmc_host *host) ;OMAP_HSMMC_WRITE (host->base,STAT ,STAT_CLEAR ); -OMAP_HSMMC_WRITE (host->base,ISE ,INT_EN_MASK ); +OMAP_HSMMC_WRITE (host->base,ISE ,INT_EN_MASK |CIRQ );OMAP_HSMMC_WRITE (host->base,IE ,INT_EN_MASK );/* Do not initialize card-specific things if the power is off */
@@ -425,12 +430,6 @@ omap_hsmmc_start_command(struct omap_hsmmc_host *host, struct mmc_command *cmd, mmc_hostname(host->mmc), cmd->opcode, cmd->arg); host->cmd = cmd; -/* -* Clear status bits and enable interrupts -*/ -OMAP_HSMMC_WRITE (host->base,STAT ,STAT_CLEAR ); -OMAP_HSMMC_WRITE (host->base,ISE ,INT_EN_MASK ); -if (host->use_dma)OMAP_HSMMC_WRITE (host->base,IE ,INT_EN_MASK & ~(BRR_ENABLE |BWR_ENABLE ));
@@ -637,23 +636,26 @@ static irqreturn_t omap_hsmmc_irq(int irq, void *dev_id) {struct omap_hsmmc_host *host = dev_id;struct mmc_data *data; -int end_cmd =0 , end_trans =0 , status; +u32 status; +int end_cmd =0 , end_trans =0 ; +bool card_irq = false;spin_lock (&host->irq_lock); -if (host->mrq ==NULL ) { -OMAP_HSMMC_WRITE (host->base,STAT , -OMAP_HSMMC_READ (host->base,STAT )); -/* Flush posted write */ -OMAP_HSMMC_READ (host->base,STAT ); -spin_unlock (&host->irq_lock); -return IRQ_HANDLED ; - } - - data = host->data; status =OMAP_HSMMC_READ (host->base,STAT ); +OMAP_HSMMC_WRITE (host->base,STAT , status); +OMAP_HSMMC_READ (host->base,STAT );/* Flush posted write. */ +dev_dbg (mmc_dev (host->mmc),"IRQ Status is %x\n" , status); +if (status &CIRQ ) + card_irq = true; + +if (host->mrq ==NULL ) + goto out; + + data = host->data; +if (status &ERR ) {#ifdef CONFIG_MMC_DEBUG omap_hsmmc_report_irq (host, status);
@@ -703,17 +705,16 @@ static irqreturn_t omap_hsmmc_irq(int irq, void *dev_id) } } -OMAP_HSMMC_WRITE (host->base,STAT , status); -/* Flush posted write */ -OMAP_HSMMC_READ (host->base,STAT ); -if (end_cmd || ((status &CC ) && host->cmd))omap_hsmmc_cmd_done (host, host->cmd);if ((end_trans || (status &TC )) && host->mrq)omap_hsmmc_xfer_done (host, data); - +out:spin_unlock (&host->irq_lock); +if (card_irq) +mmc_signal_sdio_irq (host->mmc); +return IRQ_HANDLED ; }
@@ -1255,6 +1256,45 @@ static int omap_hsmmc_get_ro(struct mmc_host *mmc)return mmc_slot (host).get_ro (host->dev,0 ); } +static void omap_hsmmc_enable_sdio_irq (struct mmc_host *mmc,int enable) +{ +struct omap_hsmmc_host *host =mmc_priv (mmc); +u32 ie, con; +unsigned long flags; + +spin_lock_irqsave (&host->irq_lock, flags); + +/* +* When interrupts are enabled, CTPL must be set to enable +* DAT1 input buffer (or the card interrupt is always +* asserted) and FCLK must be enabled as wake-up does not +* work. Take care to disable FCLK after all the register +* accesses as they might not complete if FCLK is off. +* +* FIXME: if the MMC module (and the mmci_dat[1] GPIO when the +* CORE power domain is OFF) are configured as a wake-up +* sources in the PRCM, then FCLK could be switched off. This +* might add too much latency. +*/ + con =OMAP_HSMMC_READ (host->base,CON ); + ie =OMAP_HSMMC_READ (host->base,IE ); +if (enable) { +clk_enable (host->fclk); + ie |=CIRQ_ENABLE ; + con |=CTPL ; + }else { + ie &= ~CIRQ_ENABLE ; + con &= ~CTPL ; + } +OMAP_HSMMC_WRITE (host->base,CON , con); +OMAP_HSMMC_WRITE (host->base,IE , ie); +OMAP_HSMMC_READ (host->base,IE );/* flush posted write */ +if (!enable) +clk_disable (host->fclk); + +spin_unlock_irqrestore (&host->irq_lock, flags); +} +static void omap_hsmmc_conf_bus_power (struct omap_hsmmc_host *host) {u32 hctl, capa, value;
@@ -1269,14 +1309,14 @@ static void omap_hsmmc_conf_bus_power(struct omap_hsmmc_host *host) } value =OMAP_HSMMC_READ (host->base,HCTL ) & ~SDVS_MASK ; -OMAP_HSMMC_WRITE (host->base,HCTL , value | hctl); +OMAP_HSMMC_WRITE (host->base,HCTL , value | hctl |IWE ); value =OMAP_HSMMC_READ (host->base,CAPA );OMAP_HSMMC_WRITE (host->base,CAPA , value | capa);/* Set the controller to AUTO IDLE mode */ value =OMAP_HSMMC_READ (host->base,SYSCONFIG ); -OMAP_HSMMC_WRITE (host->base,SYSCONFIG , value |AUTOIDLE ); +OMAP_HSMMC_WRITE (host->base,SYSCONFIG , value |AUTOIDLE |ENAWAKEUP );/* Set SD bus power bit */ set_sd_bus_power (host);
@@ -1523,7 +1563,7 @@ static const struct mmc_host_ops omap_hsmmc_ops = { .set_ios = omap_hsmmc_set_ios, .get_cd = omap_hsmmc_get_cd, .get_ro = omap_hsmmc_get_ro, -/* NYET -- enable_sdio_irq */ + .enable_sdio_irq = omap_hsmmc_enable_sdio_irq, };static const struct mmc_host_ops omap_hsmmc_ps_ops = {
@@ -1533,7 +1573,7 @@ static const struct mmc_host_ops omap_hsmmc_ps_ops = { .set_ios = omap_hsmmc_set_ios, .get_cd = omap_hsmmc_get_cd, .get_ro = omap_hsmmc_get_ro, -/* NYET -- enable_sdio_irq */ + .enable_sdio_irq = omap_hsmmc_enable_sdio_irq, };#ifdef CONFIG_DEBUG_FS
@@ -1738,7 +1778,7 @@ static int __init omap_hsmmc_probe(struct platform_device *pdev) mmc->max_seg_size = mmc->max_req_size; mmc->caps |=MMC_CAP_MMC_HIGHSPEED |MMC_CAP_SD_HIGHSPEED | -MMC_CAP_WAIT_WHILE_BUSY ; +MMC_CAP_WAIT_WHILE_BUSY |MMC_CAP_SDIO_IRQ ;if (mmc_slot (host).wires >=8 ) mmc->caps |=MMC_CAP_8_BIT_DATA ;
@@ -1809,7 +1849,7 @@ static int __init omap_hsmmc_probe(struct platform_device *pdev) } } -OMAP_HSMMC_WRITE (host->base,ISE ,INT_EN_MASK ); +OMAP_HSMMC_WRITE (host->base,ISE ,INT_EN_MASK |CIRQ );OMAP_HSMMC_WRITE (host->base,IE ,INT_EN_MASK );mmc_host_lazy_disable (host->mmc);
Signature · 1 line
1.6.3.3
Quoted 6 lines · David Vrabel
These patches add support for SDIO cards to the
omap_hsmmcdriver. Power management changes to prevent SDIO cards from being turned off and losing all state, and card interrupts.I've been unable to test these exact patches as I only have an N900 for testing and the N900 support in mainline is incomplete.
Can't you get the source code with 'apt-get source' in Maemo SDK? It's a tarball but at least it's something.
Signature · 1 line
Felipe Contreras
Quoted 10 lines · Felipe Contreras
Quoted 6 lines · David Vrabel
These patches add support for SDIO cards to the
omap_hsmmcdriver. Power management changes to prevent SDIO cards from being turned off and losing all state, and card interrupts.I've been unable to test these exact patches as I only have an N900 for testing and the N900 support in mainline is incomplete.
Can't you get the source code with 'apt-get source' in Maemo SDK? It's a tarball but at least it's something.
I have SDIO cards tested and working on the N900 with the Fremantle kernel but that's a modified 2.6.28 kernel. These patches are for mainline and there are differences between mainline and the fremantle kernel that means they need different patches.
David
Signature · 6 lines
David Vrabel, Senior Software Engineer, Drivers CSR, Churchill House, Cambridge Business Park, Tel: +44 (0)1223 692562 Cowley Road, Cambridge, CB4 0WZ http://www.csr.com/ Member of the CSR plc group of companies. CSR plc registered in England and Wales, registered number 4187346, registered office Churchill House, Cambridge Business Park, Cowley Road, Cambridge, CB4 0WZ, United Kingdom
Quoted 9 lines · David Vrabel
Quoted 8 lines · Felipe Contreras
Quoted 6 lines · David Vrabel
These patches add support for SDIO cards to the
omap_hsmmcdriver. Power management changes to prevent SDIO cards from being turned off and losing all state, and card interrupts.I've been unable to test these exact patches as I only have an N900 for testing and the N900 support in mainline is incomplete.
Quoted 7 lines
Quoted 2 lines
Can't you get the source code with 'apt-get source' in Maemo SDK? It's a tarball but at least it's something.
I have SDIO cards tested and working on the N900 with the Fremantle kernel but that's a modified 2.6.28 kernel. These patches are for mainline and there are differences between mainline and the fremantle kernel that means they need different patches.
Ah, got it. I was wondering how exactly did you test the patches.
Signature · 5 lines
Felipe Contreras -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi David,
Quoted 3 lines · David Vrabel
These patches add support for SDIO cards to the
omap_hsmmcdriver. Power management changes to prevent SDIO cards from being turned off and losing all state, and card interrupts.
I've tested your patches with libertas_sdio and after several small additions I've made it work.
drivers/mmc/host/omap_hsmmc.c | 19 +++++++++++++------ 1 files changed, 13 insertions(+), 6 deletions(-)
drivers/mmc/host/omap_hsmmc.c +13 -6
@@ -82,6 +82,7 @@#define BWR_ENABLE (1 << 4)#define BRR_ENABLE (1 << 5)#define CTPL (1 << 11) +#define CLKEXTFREE (1 << 16)#define INIT_STREAM (1 << 1)#define DP_SELECT (1 << 21)#define DDIR (1 << 4)
@@ -189,6 +190,7 @@ struct omap_hsmmc_host {int protect_card;int reqs_blocked;int use_reg; +int sdio_int;struct omap_mmc_platform_data *pdata; };
@@ -763,16 +765,19 @@ omap_hsmmc_start_command(struct omap_hsmmc_host *host, struct mmc_command *cmd, struct mmc_data *data) {int cmdreg =0 , resptype =0 , cmdtype =0 ; +int int_en_mask =INT_EN_MASK ;dev_dbg (mmc_dev (host->mmc),"%s: CMD%d, argument 0x%08x\n" ,mmc_hostname (host->mmc), cmd->opcode, cmd->arg); host->cmd = cmd;if (host->use_dma) -OMAP_HSMMC_WRITE (host->base,IE , -INT_EN_MASK & ~(BRR_ENABLE |BWR_ENABLE )); -else -OMAP_HSMMC_WRITE (host->base,IE ,INT_EN_MASK ); + int_en_mask &= ~(BRR_ENABLE |BWR_ENABLE ); + +if (host->sdio_int) + int_en_mask |=CIRQ ; + +OMAP_HSMMC_WRITE (host->base,IE , int_en_mask); host->response_busy =0 ;if (cmd->flags &MMC_RSP_PRESENT ) {
@@ -1619,10 +1624,12 @@ static void omap_hsmmc_enable_sdio_irq(struct mmc_host *mmc, int enable)if (enable) {clk_enable (host->fclk); ie |=CIRQ_ENABLE ; - con |=CTPL ; + con |=CTPL |CLKEXTFREE ; + host->sdio_int =1 ; }else { ie &= ~CIRQ_ENABLE ; - con &= ~CTPL ; + con &= ~(CTPL |CLKEXTFREE ); + host->sdio_int =0 ; }OMAP_HSMMC_WRITE (host->base,CON , con);OMAP_HSMMC_WRITE (host->base,IE , ie);
Signature · 1 line
1.6.4.4
Quoted 20 lines
I've been unable to test these exact patches as I only have an N900 for testing and the N900 support in mainline is incomplete.
Changes since v1:
- (hopefully) get all cards working again by removing a second call to readMMCi_STATin the interrupt handler.
- flush posted writes after enabling/disabling SDIO interrupts.
- tweak the FIXME commit on disabling FCLK to better match what really going on (at least I think so anyway).David Vrabel (2):
mmc:omap_hsmmc: don't turn SDIO cards off when idle
mmc:omap_hsmmc: enable SDIO card interruptsdrivers/mmc/host/omap_hsmmc.c | 114 ++++++++++++++++++++++++++++------------- 1 files changed, 79 insertions(+), 35 deletions(-)--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Signature · 2 lines
Sincerely yours, Mike.
Hi David,
Quoted 14 lines · David Vrabel
These patches add support for SDIO cards to the
omap_hsmmcdriver. Power management changes to prevent SDIO cards from being turned off and losing all state, and card interrupts.I've been unable to test these exact patches as I only have an N900 for testing and the N900 support in mainline is incomplete.
Changes since v1:
- (hopefully) get all cards working again by removing a second call to readMMCi_STATin the interrupt handler.
- flush posted writes after enabling/disabling SDIO interrupts.
- tweak the FIXME commit on disabling FCLK to better match what really going on (at least I think so anyway).
Quoted 3 lines
David Vrabel (2):
mmc:omap_hsmmc: don't turn SDIO cards off when idle
mmc:omap_hsmmc: enable SDIO card interrupts
Looks like this patchset wasn't merged. Mike Rapoport replied with a fix for libertas. Would you like to resubmit it?
Signature · 2 lines
Chris Ball <[email protected]> <http://printf.net/> One Laptop Per Child
Quoted 17 lines · Chris Ball
Hi David,
Quoted 14 lines · David Vrabel
These patches add support for SDIO cards to the
omap_hsmmcdriver. Power management changes to prevent SDIO cards from being turned off and losing all state, and card interrupts.I've been unable to test these exact patches as I only have an N900 for testing and the N900 support in mainline is incomplete.
Changes since v1:
- (hopefully) get all cards working again by removing a second call to readMMCi_STATin the interrupt handler.
- flush posted writes after enabling/disabling SDIO interrupts.
- tweak the FIXME commit on disabling FCLK to better match what really going on (at least I think so anyway).
Quoted 6 lines
Quoted 3 lines
David Vrabel (2):
mmc:omap_hsmmc: don't turn SDIO cards off when idle
mmc:omap_hsmmc: enable SDIO card interruptsLooks like this patchset wasn't merged. Mike Rapoport replied with a fix for libertas. Would you like to resubmit it?
I thought Madhu had picked this up and was going to submit it.
Regardless of whether that is the case, I think it needs to be submitted by someone who can run mainline kernels (I can't) and ideally someone who can test it with SDIO cards.
David
Quoted 22 lines · David Vrabel
Quoted 21 lines · Chris Ball
Hi David,
Quoted 17 lines · David Vrabel
These patches add support for SDIO cards to the
omap_hsmmcdriver. Power management changes to prevent SDIO cards from being turned off and losing all state, and card interrupts.I've been unable to test these exact patches as I only have an N900 for testing and the N900 support in mainline is incomplete.
Changes since v1:
- (hopefully) get all cards working again by removing a second call to readMMCi_STATin the interrupt handler.
- flush posted writes after enabling/disabling SDIO interrupts.
- tweak the FIXME commit on disabling FCLK to better match what really going on (at least I think so anyway).David Vrabel (2):
mmc:omap_hsmmc: don't turn SDIO cards off when idle
mmc:omap_hsmmc: enable SDIO card interrupts
Quoted 8 lines
Quoted 2 lines
Looks like this patchset wasn't merged. Mike Rapoport replied with a fix for libertas. Would you like to resubmit it?
I thought Madhu had picked this up and was going to submit it.
Regardless of whether that is the case, I think it needs to be submitted by someone who can run mainline kernels (I can't) and ideally someone who can test it with SDIO cards.
I'll try to update it to the recent kernel in the next few days.
Quoted 1 line
David
--
Sincerely yours,
Mike
Quoted 20 lines · David Vrabel
Quoted 19 lines · Chris Ball
Hi David,
Quoted 16 lines · David Vrabel
These patches add support for SDIO cards to the
omap_hsmmcdriver. Power management changes to prevent SDIO cards from being turned off and losing all state, and card interrupts.I've been unable to test these exact patches as I only have an N900 for testing and the N900 support in mainline is incomplete.
Changes since v1:
- (hopefully) get all cards working again by removing a second call to readMMCi_STATin the interrupt handler.
- flush posted writes after enabling/disabling SDIO interrupts.
- tweak the FIXME commit on disabling FCLK to better match what really going on (at least I think so anyway).David Vrabel (2):
mmc:omap_hsmmc: don't turn SDIO cards off when idle
mmc:omap_hsmmc: enable SDIO card interrupts
Quoted 7 lines
Quoted 1 line
Looks like this patchset wasn't merged. Mike Rapoport replied with a fix for libertas. Would you like to resubmit it?
I thought Madhu had picked this up and was going to submit it.
Regardless of whether that is the case, I think it needs to be submitted by someone who can run mainline kernels (I can't) and ideally someone who can test it with SDIO cards.
I'll try to update the patches in the next few days.
Quoted 1 line
David
Signature · 2 lines
Sincerely yours, Mike.
Quoted 29 lines · Mike Rapoport
Quoted 28 lines · David Vrabel
Quoted 25 lines · Chris Ball
Hi David,
Quoted 15 lines · David Vrabel
These patches add support for SDIO cards to the
omap_hsmmcdriver. Power management changes to prevent SDIO cards from being turned off and losing all state, and card interrupts.I've been unable to test these exact patches as I only have an N900 for testing and the N900 support in mainline is incomplete.
Changes since v1:
- (hopefully) get all cards working again by removing a second call to readMMCi_STATin the interrupt handler.
- flush posted writes after enabling/disabling SDIO interrupts.
- tweak the FIXME commit on disabling FCLK to better match what really going on (at least I think so anyway).Quoted 3 lines
David Vrabel (2):
mmc:omap_hsmmc: don't turn SDIO cards off when idle
mmc:omap_hsmmc: enable SDIO card interruptsLooks like this patchset wasn't merged. Mike Rapoport replied with a fix for libertas. Would you like to resubmit it?
Quoted 7 lines
Quoted 5 lines
I thought Madhu had picked this up and was going to submit it.
Regardless of whether that is the case, I think it needs to be submitted by someone who can run mainline kernels (I can't) and ideally someone who can test it with SDIO cards.
I'll try to update the patches in the next few days.
Any update on the status of these patches? I'm happy to help test!
Steve
Quoted 47 lines
-----Original Message-----
From: Steve Sakoman [mailto:[email protected]]
Sent: Monday, October 04, 2010 11:32 AM
To: Mike Rapoport
Cc: David Vrabel; Chris Ball; [email protected]; linux- [email protected]; [email protected]
Subject: Re: [PATCH 0/2] mmc:omap_hsmmc: support SDIO cards (#2)Quoted 6 lines · Mike Rapoport
Quoted 5 lines · David Vrabel
Quoted 3 lines · Chris Ball
Hi David,
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines · David Vrabel
Quoted 6 lines
These patches add support for SDIO cards to the
omap_hsmmcdriver. Power management changes to prevent SDIO cards from being turned off and losing all state, and card interrupts.I've been unable to test these exact patches as I only have an N900
for
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
testing and the N900 support in mainline is incomplete.
Changes since v1:
- (hopefully) get all cards working again by removing a second callto
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
read
MMCi_STATin the interrupt handler.
- flush posted writes after enabling/disabling SDIO interrupts.
- tweak the FIXME commit on disabling FCLK to better match whatreally
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 5 lines
going on (at least I think so anyway).
David Vrabel (2):
mmc:omap_hsmmc: don't turn SDIO cards off when idle
mmc:omap_hsmmc: enable SDIO card interruptsLooks like this patchset wasn't merged. Mike Rapoport replied with a
fix
Quoted 4 lines
Quoted 4 lines
Quoted 1 line
for libertas. Would you like to resubmit it?
I thought Madhu had picked this up and was going to submit it.
Quoted 9 lines
Quoted 1 line
Quoted 1 line
Regardless of whether that is the case, I think it needs to be
submitted
Quoted 4 lines
Quoted 2 lines
by someone who can run mainline kernels (I can't) and ideally someone who can test it with SDIO cards.
I'll try to update the patches in the next few days.
Any update on the status of these patches? I'm happy to help test!
Steve,
I have not been able to test SDIO card interrupts. If you could help test that it's great.
Regards,
Madhu
Quoted 1 line
Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 52 lines · Madhusudhan
Quoted 52 lines
-----Original Message-----
From: Steve Sakoman [mailto:[email protected]]
Sent: Monday, October 04, 2010 11:32 AM
To: Mike Rapoport
Cc: David Vrabel; Chris Ball; [email protected]; linux- [email protected]; [email protected]
Subject: Re: [PATCH 0/2] mmc:omap_hsmmc: support SDIO cards (#2)Quoted 6 lines · Mike Rapoport
Quoted 5 lines · David Vrabel
Quoted 3 lines · Chris Ball
Hi David,
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines · David Vrabel
Quoted 6 lines
These patches add support for SDIO cards to the
omap_hsmmcdriver. Power management changes to prevent SDIO cards from being turned off and losing all state, and card interrupts.I've been unable to test these exact patches as I only have an N900
for
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
testing and the N900 support in mainline is incomplete.
Changes since v1:
- (hopefully) get all cards working again by removing a second callto
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
read
MMCi_STATin the interrupt handler.
- flush posted writes after enabling/disabling SDIO interrupts.
- tweak the FIXME commit on disabling FCLK to better match whatreally
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 5 lines
going on (at least I think so anyway).
David Vrabel (2):
mmc:omap_hsmmc: don't turn SDIO cards off when idle
mmc:omap_hsmmc: enable SDIO card interruptsLooks like this patchset wasn't merged. Mike Rapoport replied with a
fix
Quoted 5 lines
Quoted 5 lines
Quoted 1 line
for libertas. Would you like to resubmit it?
I thought Madhu had picked this up and was going to submit it.
Regardless of whether that is the case, I think it needs to be
submitted
Quoted 3 lines
Quoted 2 lines
by someone who can run mainline kernels (I can't) and ideally someone who can test it with SDIO cards.
Quoted 8 lines
Quoted 4 lines
Quoted 1 line
I'll try to update the patches in the next few days.
Any update on the status of these patches? I'm happy to help test!
Steve,
I have not been able to test SDIO card interrupts. If you could help test that it's great.
Where can I grab the most recent patches? The original set don't apply cleanly.
Steve
Quoted 72 lines
-----Original Message-----
From: Steve Sakoman [mailto:[email protected]]
Sent: Monday, October 04, 2010 11:57 AM
To: Madhusudhan
Cc: Mike Rapoport; David Vrabel; Chris Ball; [email protected]; [email protected]
Subject: Re: [PATCH 0/2] mmc:omap_hsmmc: support SDIO cards (#2)Quoted 14 lines · Madhusudhan
Quoted 14 lines
-----Original Message-----
From: Steve Sakoman [mailto:[email protected]]
Sent: Monday, October 04, 2010 11:32 AM
To: Mike Rapoport
Cc: David Vrabel; Chris Ball; [email protected]; linux- [email protected]; [email protected]
Subject: Re: [PATCH 0/2] mmc:omap_hsmmc: support SDIO cards (#2)Quoted 2 lines · Mike Rapoport
Quoted 1 line · David Vrabel
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines · Chris Ball
Quoted 7 lines
Hi David,
Quoted 3 lines · David Vrabel
These patches add support for SDIO cards to the
omap_hsmmcdriver. Power management changes to prevent SDIO cards from being turnedoff
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
and losing all state, and card interrupts.
I've been unable to test these exact patches as I only have an
N900
Quoted 5 lines
Quoted 5 lines
for
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
testing and the N900 support in mainline is incomplete.
Changes since v1:
- (hopefully) get all cards working again by removing a secondcall
Quoted 4 lines
Quoted 4 lines
to
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
read
MMCi_STATin the interrupt handler.
- flush posted writes after enabling/disabling SDIO interrupts.
- tweak the FIXME commit on disabling FCLK to better match whatQuoted 8 lines
Quoted 8 lines
really
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 5 lines
going on (at least I think so anyway).
David Vrabel (2):
mmc:omap_hsmmc: don't turn SDIO cards off when idle
mmc:omap_hsmmc: enable SDIO card interruptsLooks like this patchset wasn't merged. Mike Rapoport replied with
a
Quoted 8 lines
Quoted 8 lines
fix
Quoted 5 lines
Quoted 5 lines
Quoted 1 line
for libertas. Would you like to resubmit it?
I thought Madhu had picked this up and was going to submit it.
Regardless of whether that is the case, I think it needs to be
submitted
Quoted 1 line
Quoted 1 line
by someone who can run mainline kernels (I can't) and ideally
someone
Quoted 6 lines
Quoted 6 lines
Quoted 3 lines
Quoted 1 line
who can test it with SDIO cards.
I'll try to update the patches in the next few days.
Any update on the status of these patches? I'm happy to help test!
Quoted 9 lines
Quoted 3 lines
Steve,
I have not been able to test SDIO card interrupts. If you could help
test
Quoted 1 line
that it's great.
Where can I grab the most recent patches? The original set don't apply cleanly.
Yes. They may not apply. I can rebase them and send it to you for testing. Are you using the two patches posted by David Vrabel?
Regards,
Madhu
Quoted 1 line
Steve
Quoted 76 lines · Madhusudhan
Quoted 76 lines
-----Original Message-----
From: Steve Sakoman [mailto:[email protected]]
Sent: Monday, October 04, 2010 11:57 AM
To: Madhusudhan
Cc: Mike Rapoport; David Vrabel; Chris Ball; [email protected]; [email protected]
Subject: Re: [PATCH 0/2] mmc:omap_hsmmc: support SDIO cards (#2)Quoted 14 lines · Madhusudhan
Quoted 14 lines
-----Original Message-----
From: Steve Sakoman [mailto:[email protected]]
Sent: Monday, October 04, 2010 11:32 AM
To: Mike Rapoport
Cc: David Vrabel; Chris Ball; [email protected]; linux- [email protected]; [email protected]
Subject: Re: [PATCH 0/2] mmc:omap_hsmmc: support SDIO cards (#2)Quoted 2 lines · Mike Rapoport
Quoted 1 line · David Vrabel
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines
Quoted 8 lines · Chris Ball
Quoted 7 lines
Hi David,
Quoted 3 lines · David Vrabel
These patches add support for SDIO cards to the
omap_hsmmcdriver. Power management changes to prevent SDIO cards from being turnedoff
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
and losing all state, and card interrupts.
I've been unable to test these exact patches as I only have an
N900
Quoted 5 lines
Quoted 5 lines
for
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
testing and the N900 support in mainline is incomplete.
Changes since v1:
- (hopefully) get all cards working again by removing a secondcall
Quoted 4 lines
Quoted 4 lines
to
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
read
MMCi_STATin the interrupt handler.
- flush posted writes after enabling/disabling SDIO interrupts.
- tweak the FIXME commit on disabling FCLK to better match whatQuoted 8 lines
Quoted 8 lines
really
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 5 lines
going on (at least I think so anyway).
David Vrabel (2):
mmc:omap_hsmmc: don't turn SDIO cards off when idle
mmc:omap_hsmmc: enable SDIO card interruptsLooks like this patchset wasn't merged. Mike Rapoport replied with
a
Quoted 8 lines
Quoted 8 lines
fix
Quoted 5 lines
Quoted 5 lines
Quoted 1 line
for libertas. Would you like to resubmit it?
I thought Madhu had picked this up and was going to submit it.
Regardless of whether that is the case, I think it needs to be
submitted
Quoted 1 line
Quoted 1 line
by someone who can run mainline kernels (I can't) and ideally
someone
Quoted 9 lines
Quoted 6 lines
Quoted 3 lines
Quoted 1 line
who can test it with SDIO cards.
I'll try to update the patches in the next few days.
Any update on the status of these patches? I'm happy to help test!
Steve,
I have not been able to test SDIO card interrupts. If you could help
test
Quoted 8 lines
Quoted 5 lines
Quoted 1 line
that it's great.
Where can I grab the most recent patches? The original set don't apply cleanly.
Yes. They may not apply. I can rebase them and send it to you for testing. Are you using the two patches posted by David Vrabel?
Yes, I've been using the original patches on 2.6.33 and 2.6.34. The SDIO interrupt patch doesn't apply on 2.6.35 or 36.
If you send a revised patch for either I would be happy to test as soon as I get it.
Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 72 lines · Steve Sakoman
Quoted 71 lines · Madhusudhan
Quoted 71 lines
-----Original Message-----
From: Steve Sakoman [mailto:[email protected]]
Sent: Monday, October 04, 2010 11:57 AM
To: Madhusudhan
Cc: Mike Rapoport; David Vrabel; Chris Ball; [email protected]; [email protected]
Subject: Re: [PATCH 0/2] mmc:omap_hsmmc: support SDIO cards (#2)Quoted 11 lines · Madhusudhan
Quoted 11 lines
-----Original Message-----
From: Steve Sakoman [mailto:[email protected]]
Sent: Monday, October 04, 2010 11:32 AM
To: Mike Rapoport
Cc: David Vrabel; Chris Ball; [email protected]; linux- [email protected]; [email protected]
Subject: Re: [PATCH 0/2] mmc:omap_hsmmc: support SDIO cards (#2)On Wed, Sep 1, 2010 at 11:02 PM, Mike Rapoport <[email protected]> wrote:
Quoted 7 lines
Quoted 7 lines
Quoted 7 lines
Quoted 6 lines · David Vrabel
Quoted 5 lines · Chris Ball
Hi David,
Quoted 2 lines · David Vrabel
These patches add support for SDIO cards to the
omap_hsmmcdriver. Power management changes to prevent SDIO cards from being turnedoff
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
and losing all state, and card interrupts.
I've been unable to test these exact patches as I only have an
N900
Quoted 5 lines
Quoted 5 lines
for
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
testing and the N900 support in mainline is incomplete.
Changes since v1:
- (hopefully) get all cards working again by removing a secondcall
Quoted 11 lines
Quoted 11 lines
to
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
read
MMCi_STATin the interrupt handler.
- flush posted writes after enabling/disabling SDIO interrupts.
- tweak the FIXME commit on disabling FCLK to better match whatreally
Quoted 6 lines
Quoted 6 lines
Quoted 6 lines
Quoted 5 lines
going on (at least I think so anyway).
David Vrabel (2):
mmc:omap_hsmmc: don't turn SDIO cards off when idle
mmc:omap_hsmmc: enable SDIO card interruptsLooks like this patchset wasn't merged. Mike Rapoport replied with
a
Quoted 7 lines
Quoted 7 lines
fix
Quoted 4 lines
Quoted 4 lines
Quoted 1 line
for libertas. Would you like to resubmit it?
I thought Madhu had picked this up and was going to submit it.
Regardless of whether that is the case, I think it needs to be
submitted
Quoted 1 line
Quoted 1 line
by someone who can run mainline kernels (I can't) and ideally
someone
Quoted 7 lines
Quoted 4 lines
Quoted 2 lines
Quoted 1 line
who can test it with SDIO cards.
I'll try to update the patches in the next few days.
Any update on the status of these patches? I'm happy to help test!
Steve,
I have not been able to test SDIO card interrupts. If you could help
test
Quoted 1 line
that it's great.
Where can I grab the most recent patches? The original set don't apply cleanly.
Quoted 8 lines
Quoted 2 lines
Yes. They may not apply. I can rebase them and send it to you for testing. Are you using the two patches posted by David Vrabel?
Yes, I've been using the original patches on 2.6.33 and 2.6.34. The SDIO interrupt patch doesn't apply on 2.6.35 or 36.
If you send a revised patch for either I would be happy to test as soon as I get it.
I've tried to update the patches on top of 2.6.36-rc3 and I've got stuck. The changes Adrian has made to the interrupt synchronization affect the way the SDIO irq should be implemented and I haven't found a way to resolve it :-(
Quoted 1 line
Steve
Signature · 2 lines
Sincerely yours, Mike.
Quoted 4 lines · Mike Rapoport
I've tried to update the patches on top of 2.6.36-rc3 and I've got stuck. The changes Adrian has made to the interrupt synchronization affect the way the
SDIO irq should be implemented and I haven't found a way to resolve it :-(
I tried my hand at making the patch apply on 2.6.35:
It seems to work, but I'm pretty sure I must have messed something up because I get error messages every once in a while:
libertas: tx watch dog timeout
I don't recall seeing these with the original version of the patch :-(
Suggestions as to where I went wrong are welcome!
Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Steve,
Quoted 10 lines · Steve Sakoman
Quoted 4 lines · Mike Rapoport
I've tried to update the patches on top of 2.6.36-rc3 and I've got stuck. The changes Adrian has made to the interrupt synchronization affect the way the
SDIO irq should be implemented and I haven't found a way to resolve it :-(I tried my hand at making the patch apply on 2.6.35:
This one fails to build:
CC drivers/mmc/host/omap_hsmmc.odrivers/mmc/host/omap_hsmmc.c: In function 'omap_hsmmc_start_command':
drivers/mmc/host/omap_hsmmc.c:791: warning: unused variable 'int_en_mask'
drivers/mmc/host/omap_hsmmc.c: In function 'omap_hsmmc_do_irq':
drivers/mmc/host/omap_hsmmc.c:1023: error: label 'out' used but not defined
drivers/mmc/host/omap_hsmmc.c: In function 'omap_hsmmc_irq':
drivers/mmc/host/omap_hsmmc.c:1101: warning: label 'out' defined but not used
drivers/mmc/host/omap_hsmmc.c: In function 'omap_hsmmc_suspend':
drivers/mmc/host/omap_hsmmc.c:2346: warning: unused variable 'state'
make[4]: *** [drivers/mmc/host/omap_hsmmc.o] Error 1
Moving the 'out' label where I believe it should live I get:libertas_sdio: Libertas SDIO driverlibertas_sdio: Copyright Pierre Ossman
libertas: command 0x0003 timed out
libertas: Timeout submitting command 0x0003
libertas: PREP_CMD: command 0x0003 failed: -110libertas_sdio: probe of mmc1:0001:1 failed with error -110
Quoted 9 lines
It seems to work, but I'm pretty sure I must have messed something up because I get error messages every once in a while:
libertas: tx watch dog timeout
I don't recall seeing these with the original version of the patch :-(
Suggestions as to where I went wrong are welcome!
I've "applied" the patch almost the same way you did and I was not able to get any further than the point above (command 0x0003 timed out). As far as I understand, what we have now is that omap_hsmmc_request_done() calls omap_hsmmc_disable_irq() and the interrupts that come from the 8686 _between_ requests are simply missed. Whatever I've tried to keep the SDIO interrupts on didn't help... :(
Quoted 1 line
Steve
Signature · 2 lines
Sincerely yours, Mike.
Quoted 48 lines · Mike Rapoport
Hi Steve,
Quoted 11 lines · Steve Sakoman
Quoted 6 lines · Mike Rapoport
I've tried to update the patches on top of 2.6.36-rc3 and I've got stuck. The changes Adrian has made to the interrupt synchronization affect the way
the
SDIO irq should be implemented and I haven't found a way to resolve it :-(Quoted 4 lines
I tried my hand at making the patch apply on 2.6.35:
This one fails to build:
CC drivers/mmc/host/omap_hsmmc.o
drivers/mmc/host/omap_hsmmc.c: In function 'omap_hsmmc_start_command':drivers/mmc/host/omap_hsmmc.c:791: warning: unused variable 'int_en_mask'drivers/mmc/host/omap_hsmmc.c: In function 'omap_hsmmc_do_irq':drivers/mmc/host/omap_hsmmc.c:1023: error: label 'out' used but not defineddrivers/mmc/host/omap_hsmmc.c: In function 'omap_hsmmc_irq':drivers/mmc/host/omap_hsmmc.c:1101: warning: label 'out' defined but not useddrivers/mmc/host/omap_hsmmc.c: In function 'omap_hsmmc_suspend':drivers/mmc/host/omap_hsmmc.c:2346: warning: unused variable 'state' make[4]: *** [drivers/mmc/host/omap_hsmmc.o] Error 1Moving the 'out' label where I believe it should live I get:
libertas_sdio: Libertas SDIO driverlibertas_sdio: Copyright Pierre Ossman
libertas: command0x0003timed out
libertas: Timeout submitting command0x0003
libertas:PREP_CMD: command0x0003failed: -110libertas_sdio: probe of mmc1:0001:1 failed with error -110Quoted 8 lines
It seems to work, but I'm pretty sure I must have messed something up because I get error messages every once in a while:
libertas: tx watch dog timeout
I don't recall seeing these with the original version of the patch :-(
Quoted 8 lines
Quoted 1 line
Suggestions as to where I went wrong are welcome!
I've "applied" the patch almost the same way you did and I was not able to get any further than the point above (command
0x0003timed out). As far as I understand, what we have now is thatomap_hsmmc_request_done()callsomap_hsmmc_disable_irq()and the interrupts that come from the 8686 _between_ requests are simply missed. Whatever I've tried to keep the SDIO interrupts on didn't help... :(
You are correct! The version of the patch in the repo indeed has 'out' in the wrong place and generates a compile error.
Could you post the patch you are using and I will try to reproduce what you are seeing on my hardware? Best we all work from exactly the same patch!
Steve
<snip>
Quoted 9 lines
You are correct! The version of the patch in the repo indeed has 'out' in the wrong place and generates a compile error.
Could you post the patch you are using and I will try to reproduce what you are seeing on my hardware? Best we all work from exactly the same patch!
Steve
Yes. I think that check breaking the compilation is not needed. How about the below version? It just removes that check.
This version should apply fine on the latest kernel. I did a sanity test of MMC/SD cards on OMAP4 SDP.
Steve or Mike can check if SDIO interrupts are working.
Regards,
Madhu
Quoted 1 line
From
08b77fd388f19f5df3758a2c59dcdec280f373c8Mon Sep 17 00:00:00 2001
From: David Vrabel <[email protected]>
Date: Wed, 6 Oct 2010 12:39:18 -0500
Subject: [PATCH 1/2] mmc: omap_hsmmc: enable SDIO card interrupts
Enable the use of SDIO card interrupts.
FCLK must be enabled while SDIO interrupts are enabled or the MMC module won't wake-up (even though ENAWAKEUP in SYSCONFIG and IWE in HTCL have been set). Enabling the MMC module to wake-up would require configuring the MMC module (and the mmci_dat[1] GPIO when the CORE power domain is OFF) as wake-up sources in the PRCM.
The writes to STAT and ISE when starting a command are unnecessary and have been removed.
--- drivers/mmc/host/omap_hsmmc.c | 72 +++++++++++++++++++++++++++++++++++++---- 1 files changed, 65 insertions(+), 7 deletions(-)
drivers/mmc/host/omap_hsmmc.c +7 -0
@@ -66,6 +66,7 @@#define SDVS_MASK 0x00000E00#define SDVSCLR 0xFFFFF1FF#define SDVSDET 0x00000400 +#define ENAWAKEUP (1 << 2)#define AUTOIDLE 0x1#define SDBP (1 << 8)#define DTO 0xe
@@ -76,9 +77,12 @@#define CLKD_SHIFT 6#define DTO_MASK 0x000F0000#define DTO_SHIFT 16 +#define CIRQ_ENABLE (1 << 8)#define INT_EN_MASK 0x307F0033#define BWR_ENABLE (1 << 4)#define BRR_ENABLE (1 << 5) +#define CTPL (1 << 11) +#define CLKEXTFREE (1 << 16)#define DTO_ENABLE (1 << 20)#define INIT_STREAM (1 << 1)#define DP_SELECT (1 << 21)
@@ -87,10 +91,12 @@#define MSBS (1 << 5)#define BCE (1 << 1)#define FOUR_BIT (1 << 1) +#define IWE (1 << 24)#define DW8 (1 << 5)#define CC 0x1#define TC 0x02#define OD 0x1 +#define CIRQ (1 << 8)#define ERR (1 << 15)#define CMD_TIMEOUT (1 << 16)#define DATA_TIMEOUT (1 << 20)
@@ -184,6 +190,7 @@ struct omap_hsmmc_host {int reqs_blocked;int use_reg;int req_in_progress; +int sdio_int;struct omap_mmc_platform_data *pdata; };
@@ -551,6 +558,9 @@ static void omap_hsmmc_enable_irq(struct omap_hsmmc_host
*host,
if (cmd->opcode == MMC_ERASE)
irq_mask &= ~DTO_ENABLE;
+ if (host->sdio_int)
+ irq_mask |= CIRQ;
+
OMAP_HSMMC_WRITE(host->base, STAT, STAT_CLEAR); OMAP_HSMMC_WRITE(host->base, ISE, irq_mask); OMAP_HSMMC_WRITE(host->base, IE, irq_mask);
@@ -603,7 +613,7 @@ static int omap_hsmmc_context_restore(struct omap_hsmmc_host *host)
;
OMAP_HSMMC_WRITE(host->base, SYSCONFIG,
- OMAP_HSMMC_READ(host->base, SYSCONFIG) | AUTOIDLE);
+ OMAP_HSMMC_READ(host->base, SYSCONFIG) | AUTOIDLE | ENAWAKEUP);
if (host->id == OMAP_MMC1_DEVID) {
if (host->power_mode != MMC_POWER_OFF &&
@@ -618,7 +628,7 @@ static int omap_hsmmc_context_restore(struct omap_hsmmc_host *host)
}
OMAP_HSMMC_WRITE(host->base, HCTL,
- OMAP_HSMMC_READ(host->base, HCTL) | hctl);
+ OMAP_HSMMC_READ(host->base, HCTL) | hctl | IWE);
OMAP_HSMMC_WRITE(host->base, CAPA,
OMAP_HSMMC_READ(host->base, CAPA) | capa);
@@ -1019,6 +1029,7 @@ static void omap_hsmmc_do_irq(struct omap_hsmmc_host *host, int status)
{
struct mmc_data *data;
int end_cmd = 0, end_trans = 0;
+ bool card_irq = false;
if (!host->req_in_progress) {
do {
@@ -1032,6 +1043,9 @@ static void omap_hsmmc_do_irq(struct omap_hsmmc_host *host, int status)
data = host->data;
dev_dbg(mmc_dev(host->mmc), "IRQ Status is %x\n", status);
+ if (status & CIRQ)
+ card_irq = true;
+
if (status & ERR) {
#ifdef CONFIG_MMC_DEBUG
omap_hsmmc_report_irq(host, status);
@@ -1087,6 +1101,9 @@ static void omap_hsmmc_do_irq(struct omap_hsmmc_host *host, int status)
omap_hsmmc_cmd_done(host, host->cmd);
if ((end_trans || (status & TC)) && host->mrq)
omap_hsmmc_xfer_done(host, data);
+ if (card_irq)
+ mmc_signal_sdio_irq(host->mmc);
+
}
/*
@@ -1639,6 +1656,47 @@ static void omap_hsmmc_init_card(struct mmc_host *mmc, struct mmc_card *card)
mmc_slot(host).init_card(card);
}
+static void omap_hsmmc_enable_sdio_irq(struct mmc_host *mmc, int enable) +{
+ struct omap_hsmmc_host *host = mmc_priv(mmc);
+ u32 ie, con;
+ unsigned long flags;
+
+ spin_lock_irqsave(&host->irq_lock, flags);
+
+ /*
+ * When interrupts are enabled, CTPL must be set to enable
+ * DAT1 input buffer (or the card interrupt is always
+ * asserted) and FCLK must be enabled as wake-up does not
+ * work. Take care to disable FCLK after all the register
+ * accesses as they might not complete if FCLK is off.
+ *
+ * FIXME: if the MMC module (and the mmci_dat[1] GPIO when the
+ * CORE power domain is OFF) are configured as a wake-up
+ * sources in the PRCM, then FCLK could be switched off. This
+ * might add too much latency.
+ */
+ con = OMAP_HSMMC_READ(host->base, CON);
+ ie = OMAP_HSMMC_READ(host->base, IE);
+ if (enable) {
+ clk_enable(host->fclk);
+ ie |= CIRQ_ENABLE;
+ con |= CTPL | CLKEXTFREE;
+ host->sdio_int = 1;
+ } else {
+ ie &= ~CIRQ_ENABLE;
+ con &= ~(CTPL | CLKEXTFREE);
+ host->sdio_int = 0;
+ }
+ OMAP_HSMMC_WRITE(host->base, CON, con);
+ OMAP_HSMMC_WRITE(host->base, IE, ie);
+ OMAP_HSMMC_READ(host->base, IE); /* flush posted write */
+ if (!enable)
+ clk_disable(host->fclk);
+
+ spin_unlock_irqrestore(&host->irq_lock, flags);
+}
+
static void omap_hsmmc_conf_bus_power(struct omap_hsmmc_host *host) {
u32 hctl, capa, value;
@@ -1653,14 +1711,14 @@ static void omap_hsmmc_conf_bus_power(struct omap_hsmmc_host *host)
}
value = OMAP_HSMMC_READ(host->base, HCTL) & ~SDVS_MASK;
- OMAP_HSMMC_WRITE(host->base, HCTL, value | hctl);
+ OMAP_HSMMC_WRITE(host->base, HCTL, value | hctl | IWE);
value = OMAP_HSMMC_READ(host->base, CAPA); OMAP_HSMMC_WRITE(host->base, CAPA, value | capa);
/* Set the controller to AUTO IDLE mode */ value = OMAP_HSMMC_READ(host->base, SYSCONFIG);
- OMAP_HSMMC_WRITE(host->base, SYSCONFIG, value | AUTOIDLE);
+ OMAP_HSMMC_WRITE(host->base, SYSCONFIG, value | AUTOIDLE | ENAWAKEUP);
/* Set SD bus power bit */
set_sd_bus_power(host);
@@ -1911,7 +1969,7 @@ static const struct mmc_host_ops omap_hsmmc_ops = {
.get_cd = omap_hsmmc_get_cd,
.get_ro = omap_hsmmc_get_ro,
.init_card = omap_hsmmc_init_card,
- /* NYET -- enable_sdio_irq */
+ .enable_sdio_irq = omap_hsmmc_enable_sdio_irq,
};
static const struct mmc_host_ops omap_hsmmc_ps_ops = {
@@ -1922,7 +1980,7 @@ static const struct mmc_host_ops omap_hsmmc_ps_ops = {
.get_cd = omap_hsmmc_get_cd,
.get_ro = omap_hsmmc_get_ro,
.init_card = omap_hsmmc_init_card,
- /* NYET -- enable_sdio_irq */
+ .enable_sdio_irq = omap_hsmmc_enable_sdio_irq,
};
#ifdef CONFIG_DEBUG_FS
@@ -2139,7 +2197,7 @@ static int __init omap_hsmmc_probe(struct platform_device *pdev)
mmc->max_seg_size = mmc->max_req_size;
mmc->caps |= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED |
- MMC_CAP_WAIT_WHILE_BUSY | MMC_CAP_ERASE; + MMC_CAP_WAIT_WHILE_BUSY | MMC_CAP_ERASE | MMC_CAP_SDIO_IRQ;
mmc->caps |= mmc_slot(host).caps;
if (mmc->caps & MMC_CAP_8_BIT_DATA)
Signature · 1 line
1.7.0.4
Quoted 3 lines · Madhusudhan Chikkature
This version should apply fine on the latest kernel. I did a sanity test of MMC/SD cards on OMAP4 SDP.
This /looks/ okay to me, but I can't test it.
Quoted 5 lines
From
08b77fd388f19f5df3758a2c59dcdec280f373c8Mon Sep 17 00:00:00 2001
From: David Vrabel <[email protected]>
Date: Wed, 6 Oct 2010 12:39:18 -0500
Subject: [PATCH 1/2] mmc:omap_hsmmc: enable SDIO card interrupts
[...]
Quoted 3 lines
The writes to STAT and ISE when starting a command are unnecessary and have been removed.
Remove this last paragraph from the description as it isn't applicable any more.
David
Signature · 6 lines
David Vrabel, Senior Software Engineer, Drivers CSR, Churchill House, Cambridge Business Park, Tel: +44 (0)1223 692562 Cowley Road, Cambridge, CB4 0WZ http://www.csr.com/ Member of the CSR plc group of companies. CSR plc registered in England and Wales, registered number 4187346, registered office Churchill House, Cambridge Business Park, Cowley Road, Cambridge, CB4 0WZ, United Kingdom
Quoted 23 lines
-----Original Message-----
From: David Vrabel [mailto:[email protected]]
Sent: Wednesday, October 06, 2010 2:02 PM
To: Madhusudhan Chikkature
Cc: Steve Sakoman; Mike Rapoport; Chris Ball; [email protected]; [email protected]; Adrian Hunter
Subject: Re: [PATCH 0/2] mmc:omap_hsmmc: support SDIO cards (#2)Quoted 2 lines · Madhusudhan Chikkature
This version should apply fine on the latest kernel. I did a sanity test
of
Quoted 1 line
MMC/SD cards on OMAP4 SDP.
This /looks/ okay to me, but I can't test it.
Quoted 5 lines
From
08b77fd388f19f5df3758a2c59dcdec280f373c8Mon Sep 17 00:00:00 2001
From: David Vrabel <[email protected]>
Date: Wed, 6 Oct 2010 12:39:18 -0500
Subject: [PATCH 1/2] mmc:omap_hsmmc: enable SDIO card interrupts
Quoted 8 lines
[...]
Quoted 3 lines
The writes to STAT and ISE when starting a command are unnecessary and have been removed.
Remove this last paragraph from the description as it isn't applicable any more.
Sure.
Regards,
Madhu
Quoted 10 lines
David
--
David Vrabel, Senior Software Engineer, Drivers
CSR, Churchill House, Cambridge Business Park, Tel: +44 (0)1223 692562
Cowley Road, Cambridge, CB4 0WZ http://www.csr.com/Member of the CSR plc group of companies. CSR plc registered in England and Wales, registered number 4187346, registered office Churchill House, Cambridge Business Park, Cowley Road, Cambridge, CB4 0WZ, United Kingdom
Hi Madhu,
Quoted 12 lines · Madhusudhan Chikkature
<snip>
Quoted 9 lines
You are correct! The version of the patch in the repo indeed has 'out' in the wrong place and generates a compile error.
Could you post the patch you are using and I will try to reproduce what you are seeing on my hardware? Best we all work from exactly the same patch!
Steve
Quoted 7 lines
Yes. I think that check breaking the compilation is not needed. How about the below version? It just removes that check.
This version should apply fine on the latest kernel. I did a sanity test of MMC/SD cards on OMAP4 SDP.
Steve or Mike can check if SDIO interrupts are working.
With you patch I get the same:
libertas_sdio: Libertas SDIO driverlibertas_sdio: Copyright Pierre Ossman
libertas: command 0x0003 timed out
libertas: Timeout submitting command 0x0003
libertas: PREP_CMD: command 0x0003 failed: -110libertas_sdio: probe of mmc1:0001:1 failed with error -110
The libertas driver is expecting and interrupt from the card that signals completion of the firmware initialization. But the SDIO interrupts are disabled because every request from host to card has been completed. Moreover, if there were SDIO interrupts they would be ignored by the omap_hsmmc_do_irq handler because it returns immediately is there is not request in process.
I've tried to move the check for the SDIO interrupt to the very beginning of the ISR but to no avail....
Quoted 227 lines
Regards,
MadhuFrom
08b77fd388f19f5df3758a2c59dcdec280f373c8Mon Sep 17 00:00:00 2001
From: David Vrabel <[email protected]>
Date: Wed, 6 Oct 2010 12:39:18 -0500
Subject: [PATCH 1/2] mmc:omap_hsmmc: enable SDIO card interruptsEnable the use of SDIO card interrupts.
FCLK must be enabled while SDIO interrupts are enabled or the MMC module won't wake-up (even though ENAWAKEUP in SYSCONFIG and IWE in HTCL have been set). Enabling the MMC module to wake-up would require configuring the MMC module (and the mmci_dat[1] GPIO when the CORE power domain is OFF) as wake-up sources in the PRCM.
The writes to STAT and ISE when starting a command are unnecessary and have been removed.
Signed-off-by David Vrabel <[email protected]>--- drivers/mmc/host/omap_hsmmc.c | 72 +++++++++++++++++++++++++++++++++++++---- 1 files changed, 65 insertions(+), 7 deletions(-)drivers/mmc/host/omap_hsmmc.c +10
-0@@ -66,6 +66,7 @@#define SDVS_MASK 0x00000E00#define SDVSCLR 0xFFFFF1FF#define SDVSDET 0x00000400 +#define ENAWAKEUP (1 << 2)#define AUTOIDLE 0x1#define SDBP (1 << 8)#define DTO 0xe@@ -76,9 +77,12 @@#define CLKD_SHIFT 6#define DTO_MASK 0x000F0000#define DTO_SHIFT 16 +#define CIRQ_ENABLE (1 << 8)#define INT_EN_MASK 0x307F0033#define BWR_ENABLE (1 << 4)#define BRR_ENABLE (1 << 5) +#define CTPL (1 << 11) +#define CLKEXTFREE (1 << 16)#define DTO_ENABLE (1 << 20)#define INIT_STREAM (1 << 1)#define DP_SELECT (1 << 21)@@ -87,10 +91,12 @@#define MSBS (1 << 5)#define BCE (1 << 1)#define FOUR_BIT (1 << 1) +#define IWE (1 << 24)#define DW8 (1 << 5)#define CC 0x1#define TC 0x02#define OD 0x1 +#define CIRQ (1 << 8)#define ERR (1 << 15)#define CMD_TIMEOUT (1 << 16)#define DATA_TIMEOUT (1 << 20)@@ -184,6 +190,7 @@ struct omap_hsmmc_host {int reqs_blocked;int use_reg;int req_in_progress; +int sdio_int;struct omap_mmc_platform_data *pdata; };@@ -551,6 +558,9 @@ static void omap_hsmmc_enable_irq(struct omap_hsmmc_host *host, if (cmd->opcode == MMC_ERASE) irq_mask &= ~DTO_ENABLE; +if (host->sdio_int) + irq_mask |=CIRQ ; +OMAP_HSMMC_WRITE (host->base,STAT ,STAT_CLEAR );OMAP_HSMMC_WRITE (host->base,ISE , irq_mask);drivers/mmc/host/omap_hsmmc.c +1
-1OMAP_HSMMC_WRITE (host->base,IE , irq_mask);@@ -603,7 +613,7 @@ static int omap_hsmmc_context_restore(struct omap_hsmmc_host *host) ;OMAP_HSMMC_WRITE (host->base,SYSCONFIG , -OMAP_HSMMC_READ (host->base,SYSCONFIG ) |AUTOIDLE ); +OMAP_HSMMC_READ (host->base,SYSCONFIG ) |AUTOIDLE |ENAWAKEUP );if (host->id ==OMAP_MMC1_DEVID ) {drivers/mmc/host/omap_hsmmc.c +1
-1if (host->power_mode != MMC_POWER_OFF &&@@ -618,7 +628,7 @@ static int omap_hsmmc_context_restore(struct omap_hsmmc_host *host) }OMAP_HSMMC_WRITE (host->base,HCTL , -OMAP_HSMMC_READ (host->base,HCTL ) | hctl); +OMAP_HSMMC_READ (host->base,HCTL ) | hctl |IWE ); OMAP_HSMMC_WRITE(host->base, CAPA,drivers/mmc/host/omap_hsmmc.c +1
-0OMAP_HSMMC_READ(host->base, CAPA) | capa);@@ -1019,6 +1029,7 @@ static void omap_hsmmc_do_irq(struct omap_hsmmc_host *host, int status) {struct mmc_data *data;int end_cmd =0 , end_trans =0 ; +bool card_irq = false;if (!host->req_in_progress) {drivers/mmc/host/omap_hsmmc.c +3
-0do {@@ -1032,6 +1043,9 @@ static void omap_hsmmc_do_irq(struct omap_hsmmc_host *host, int status) data = host->data;dev_dbg (mmc_dev (host->mmc),"IRQ Status is %x\n" , status); +if (status &CIRQ ) + card_irq = true; +if (status &ERR ) {#ifdef CONFIG_MMC_DEBUG drivers/mmc/host/omap_hsmmc.c +3
-0omap_hsmmc_report_irq (host, status);@@ -1087,6 +1101,9 @@ static void omap_hsmmc_do_irq(struct omap_hsmmc_host *host, int status)omap_hsmmc_cmd_done (host, host->cmd);if ((end_trans || (status &TC )) && host->mrq)omap_hsmmc_xfer_done (host, data); +if (card_irq) +mmc_signal_sdio_irq (host->mmc); + }/*
drivers/mmc/host/omap_hsmmc.c +41
-0@@ -1639,6 +1656,47 @@ static void omap_hsmmc_init_card(struct mmc_host *mmc, struct mmc_card *card) mmc_slot(host).init_card(card); } +static void omap_hsmmc_enable_sdio_irq(struct mmc_host *mmc, int enable) +{ +struct omap_hsmmc_host *host =mmc_priv (mmc); +u32 ie, con; +unsigned long flags; + +spin_lock_irqsave (&host->irq_lock, flags); + +/* +* When interrupts are enabled, CTPL must be set to enable +* DAT1 input buffer (or the card interrupt is always +* asserted) and FCLK must be enabled as wake-up does not +* work. Take care to disable FCLK after all the register +* accesses as they might not complete if FCLK is off. +* +* FIXME: if the MMC module (and the mmci_dat[1] GPIO when the +* CORE power domain is OFF) are configured as a wake-up +* sources in the PRCM, then FCLK could be switched off. This +* might add too much latency. +*/ + con =OMAP_HSMMC_READ (host->base,CON ); + ie =OMAP_HSMMC_READ (host->base,IE ); +if (enable) { +clk_enable (host->fclk); + ie |=CIRQ_ENABLE ; + con |=CTPL |CLKEXTFREE ; + host->sdio_int =1 ; + }else { + ie &= ~CIRQ_ENABLE ; + con &= ~(CTPL |CLKEXTFREE ); + host->sdio_int =0 ; + } +OMAP_HSMMC_WRITE (host->base,CON , con); +OMAP_HSMMC_WRITE (host->base,IE , ie); +OMAP_HSMMC_READ (host->base,IE );/* flush posted write */ +if (!enable) +clk_disable (host->fclk); + +spin_unlock_irqrestore (&host->irq_lock, flags); +} +static void omap_hsmmc_conf_bus_power (struct omap_hsmmc_host *host) {drivers/mmc/host/omap_hsmmc.c +2
-2u32 hctl, capa, value;@@ -1653,14 +1711,14 @@ static void omap_hsmmc_conf_bus_power(struct omap_hsmmc_host *host) } value =OMAP_HSMMC_READ (host->base,HCTL ) & ~SDVS_MASK ; -OMAP_HSMMC_WRITE (host->base,HCTL , value | hctl); +OMAP_HSMMC_WRITE (host->base,HCTL , value | hctl |IWE ); value =OMAP_HSMMC_READ (host->base,CAPA );OMAP_HSMMC_WRITE (host->base,CAPA , value | capa);/* Set the controller to AUTO IDLE mode */ value =OMAP_HSMMC_READ (host->base,SYSCONFIG ); -OMAP_HSMMC_WRITE (host->base,SYSCONFIG , value |AUTOIDLE ); +OMAP_HSMMC_WRITE (host->base,SYSCONFIG , value |AUTOIDLE |ENAWAKEUP );/* Set SD bus power bit */ drivers/mmc/host/omap_hsmmc.c +3
-3set_sd_bus_power (host);@@ -1911,7 +1969,7 @@ static const struct mmc_host_ops omap_hsmmc_ops = { .get_cd = omap_hsmmc_get_cd, .get_ro = omap_hsmmc_get_ro, .init_card = omap_hsmmc_init_card, -/* NYET -- enable_sdio_irq */ + .enable_sdio_irq = omap_hsmmc_enable_sdio_irq, };static const struct mmc_host_ops omap_hsmmc_ps_ops = {@@ -1922,7 +1980,7 @@ static const struct mmc_host_ops omap_hsmmc_ps_ops = { .get_cd = omap_hsmmc_get_cd, .get_ro = omap_hsmmc_get_ro, .init_card = omap_hsmmc_init_card, -/* NYET -- enable_sdio_irq */ + .enable_sdio_irq = omap_hsmmc_enable_sdio_irq, };#ifdef CONFIG_DEBUG_FS @@ -2139,7 +2197,7 @@ static int __init omap_hsmmc_probe(struct platform_device *pdev) mmc->max_seg_size = mmc->max_req_size; mmc->caps |=MMC_CAP_MMC_HIGHSPEED |MMC_CAP_SD_HIGHSPEED | -MMC_CAP_WAIT_WHILE_BUSY |MMC_CAP_ERASE ; +MMC_CAP_WAIT_WHILE_BUSY |MMC_CAP_ERASE |MMC_CAP_SDIO_IRQ ; mmc->caps |=mmc_slot (host).caps;if (
mmc->caps&MMC_CAP_8_BIT_DATA)
Signature · 2 lines
Sincerely yours, Mike.
Quoted 26 lines · Mike Rapoport
Hi Madhu,
Quoted 17 lines · Madhusudhan Chikkature
<snip>
Quoted 9 lines
You are correct! The version of the patch in the repo indeed has 'out' in the wrong place and generates a compile error.
Could you post the patch you are using and I will try to reproduce what you are seeing on my hardware? Best we all work from exactly the same patch!
Steve
Yes. I think that check breaking the compilation is not needed. How about the
below version? It just removes that check.Quoted 5 lines
This version should apply fine on the latest kernel. I did a sanity test of
MMC/SD cards on OMAP4 SDP.Steve or Mike can check if SDIO interrupts are working.
Quoted 8 lines
With you patch I get the same:
libertas_sdio: Libertas SDIO driverlibertas_sdio: Copyright Pierre Ossman
libertas: command0x0003timed out
libertas: Timeout submitting command0x0003
libertas:PREP_CMD: command0x0003failed: -110libertas_sdio: probe of mmc1:0001:1 failed with error -110
I can confirm exactly the same behavior on my hardware with this version of the patch.
Steve
Quoted 49 lines
-----Original Message-----
From: Steve Sakoman [mailto:[email protected]]
Sent: Thursday, October 07, 2010 8:57 AM
To: Mike Rapoport
Cc: Madhusudhan Chikkature; David Vrabel; Chris Ball; linux- [email protected]; [email protected]; Adrian Hunter
Subject: Re: [PATCH 0/2] mmc:omap_hsmmc: support SDIO cards (#2)Quoted 17 lines · Mike Rapoport
Hi Madhu,
Quoted 14 lines · Madhusudhan Chikkature
<snip>
Quoted 9 lines
You are correct! The version of the patch in the repo indeed has 'out' in the wrong place and generates a compile error.
Could you post the patch you are using and I will try to reproduce what you are seeing on my hardware? Best we all work from exactly the same patch!
Steve
Yes. I think that check breaking the compilation is not needed. How
about
Quoted 4 lines
Quoted 4 lines
the
below version? It just removes that check.This version should apply fine on the latest kernel. I did a sanity
test
Quoted 5 lines
Quoted 4 lines
of
MMC/SD cards on OMAP4 SDP.Steve or Mike can check if SDIO interrupts are working.
Quoted 8 lines
With you patch I get the same:
libertas_sdio: Libertas SDIO driverlibertas_sdio: Copyright Pierre Ossman
libertas: command0x0003timed out
libertas: Timeout submitting command0x0003
libertas:PREP_CMD: command0x0003failed: -110libertas_sdio: probe of mmc1:0001:1 failed with error -110
Quoted 3 lines
I can confirm exactly the same behavior on my hardware with this version of the patch.
Steve,
Okay. Did the version you had in your tree worked? I just want to check if I messed up something in my patch.
Regards,
Madhu
Quoted 1 line
Steve
Quoted 48 lines · Madhusudhan
Quoted 48 lines
-----Original Message-----
From: Steve Sakoman [mailto:[email protected]]
Sent: Thursday, October 07, 2010 8:57 AM
To: Mike Rapoport
Cc: Madhusudhan Chikkature; David Vrabel; Chris Ball; linux- [email protected]; [email protected]; Adrian Hunter
Subject: Re: [PATCH 0/2] mmc:omap_hsmmc: support SDIO cards (#2)Quoted 17 lines · Mike Rapoport
Hi Madhu,
Quoted 14 lines · Madhusudhan Chikkature
<snip>
Quoted 9 lines
You are correct! The version of the patch in the repo indeed has 'out' in the wrong place and generates a compile error.
Could you post the patch you are using and I will try to reproduce what you are seeing on my hardware? Best we all work from exactly the same patch!
Steve
Yes. I think that check breaking the compilation is not needed. How
about
Quoted 4 lines
Quoted 4 lines
the
below version? It just removes that check.This version should apply fine on the latest kernel. I did a sanity
test
Quoted 13 lines
Quoted 4 lines
of
MMC/SD cards on OMAP4 SDP.Steve or Mike can check if SDIO interrupts are working.
With you patch I get the same:
libertas_sdio: Libertas SDIO driverlibertas_sdio: Copyright Pierre Ossman
libertas: command0x0003timed out
libertas: Timeout submitting command0x0003
libertas:PREP_CMD: command0x0003failed: -110libertas_sdio: probe of mmc1:0001:1 failed with error -110
Quoted 8 lines
Quoted 3 lines
I can confirm exactly the same behavior on my hardware with this version of the patch.
Steve,
Okay. Did the version you had in your tree worked? I just want to check if I messed up something in my patch.
No, it didn't. Operator error -- I was "testing" a version without the patch applied :-) When applied it acts the same as your version.
Steve
Hi Madhu,
Quoted 9 lines · Madhusudhan
Quoted 9 lines
-----Original Message-----
From: Steve Sakoman [mailto:[email protected]]
Sent: Thursday, October 07, 2010 8:57 AM
To: Mike Rapoport
Cc: Madhusudhan Chikkature; David Vrabel; Chris Ball; linux- [email protected]; [email protected]; Adrian Hunter
Subject: Re: [PATCH 0/2] mmc:omap_hsmmc: support SDIO cards (#2)
Quoted 7 lines
Quoted 2 lines
I can confirm exactly the same behavior on my hardware with this version of the patch.
Steve,
Okay. Did the version you had in your tree worked? I just want to check if I messed up something in my patch.
The patch works if applied before commit b417577d3b9bbb06a4ddc9aa955af9bd503f7242 (omap_hsmmc: improve interrupt synchronisation). Apparently, changes in interrupt handling require major rework
of the SDIO interrupt handling...
Quoted 5 lines
Regards,
MadhuQuoted 1 line
Steve
Signature · 2 lines
Sincerely yours, Mike.
Hi all,
2010/10/10 Mike Rapoport <[email protected]>:
Quoted 17 lines
Hi Madhu,
Quoted 14 lines · Madhusudhan
Quoted 11 lines
-----Original Message-----
From: Steve Sakoman [mailto:[email protected]]
Sent: Thursday, October 07, 2010 8:57 AM
To: Mike Rapoport
Cc: Madhusudhan Chikkature; David Vrabel; Chris Ball; linux- [email protected]; [email protected]; Adrian Hunter
Subject: Re: [PATCH 0/2] mmc:omap_hsmmc: support SDIO cards (#2)I can confirm exactly the same behavior on my hardware with this version of the patch.
Steve,
Quoted 8 lines
Quoted 3 lines
Okay. Did the version you had in your tree worked? I just want to check if I
messed up something in my patch.The patch works if applied before commit
b417577d3b9bbb06a4ddc9aa955af9bd503f7242(omap_hsmmc: improve interrupt synchronisation). Apparently, changes in interrupt handling require major rework of the SDIO interrupt handling...
On my hardware with this version of the patch and with commit b417577d3b9bbb06a4ddc9aa955af9bd503f7242 previously applied still not working, I'm missing something else ?
Cheers,
Enric
Quoted 16 lines
Quoted 6 lines
Regards,
MadhuQuoted 1 line
Steve
--
Sincerely yours,
Mike.
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html