2010-01-19 08:02:13

by Mike Frysinger

[permalink] [raw]
Subject: [PATCH 1/3] mmc: bfin_sdh: fix unused sg warning on BF51x/BF52x systems

The local sg variable is only used with BF54x code.

Signed-off-by: Mike Frysinger <[email protected]>
---
drivers/mmc/host/bfin_sdh.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/mmc/host/bfin_sdh.c b/drivers/mmc/host/bfin_sdh.c
index 3343a57..f218a99 100644
--- a/drivers/mmc/host/bfin_sdh.c
+++ b/drivers/mmc/host/bfin_sdh.c
@@ -115,7 +115,6 @@ static int sdh_setup_data(struct sdh_host *host, struct mmc_data *data)
unsigned int length;
unsigned int data_ctl;
unsigned int dma_cfg;
- struct scatterlist *sg;

dev_dbg(mmc_dev(host->mmc), "%s enter flags: 0x%x\n", __func__, data->flags);
host->data = data;
@@ -151,6 +150,7 @@ static int sdh_setup_data(struct sdh_host *host, struct mmc_data *data)
#if defined(CONFIG_BF54x)
dma_cfg |= DMAFLOW_ARRAY | NDSIZE_5 | RESTART | WDSIZE_32 | DMAEN;
{
+ struct scatterlist *sg;
int i;
for_each_sg(data->sg, sg, host->dma_len, i) {
host->sg_cpu[i].start_addr = sg_dma_address(sg);
--
1.6.6


2010-01-19 08:02:25

by Mike Frysinger

[permalink] [raw]
Subject: [PATCH 2/3] mmc: bfin_sdh: drop redundant MMC depend string

The host/Kconfig file is only included when MMC is selected.

Signed-off-by: Mike Frysinger <[email protected]>
---
drivers/mmc/host/Kconfig | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index ce1d288..f6af92a 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -399,7 +399,7 @@ config MMC_VIA_SDMMC

config SDH_BFIN
tristate "Blackfin Secure Digital Host support"
- depends on MMC && ((BF54x && !BF544) || (BF51x && !BF512))
+ depends on (BF54x && !BF544) || (BF51x && !BF512)
help
If you say yes here you will get support for the Blackfin on-chip
Secure Digital Host interface. This includes support for MMC and
--
1.6.6

2010-01-19 08:02:37

by Mike Frysinger

[permalink] [raw]
Subject: [PATCH 3/3] mmc: bfin_sdh: set timeout based on actual card data

From: Cliff Cai <[email protected]>

The hardcoded value doesn't really work for all cards.

Signed-off-by: Cliff Cai <[email protected]>
Signed-off-by: Mike Frysinger <[email protected]>
---
drivers/mmc/host/bfin_sdh.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/mmc/host/bfin_sdh.c b/drivers/mmc/host/bfin_sdh.c
index f218a99..56f7b44 100644
--- a/drivers/mmc/host/bfin_sdh.c
+++ b/drivers/mmc/host/bfin_sdh.c
@@ -115,6 +115,7 @@ static int sdh_setup_data(struct sdh_host *host, struct mmc_data *data)
unsigned int length;
unsigned int data_ctl;
unsigned int dma_cfg;
+ unsigned int cycle_ns, timeout;

dev_dbg(mmc_dev(host->mmc), "%s enter flags: 0x%x\n", __func__, data->flags);
host->data = data;
@@ -135,8 +136,11 @@ static int sdh_setup_data(struct sdh_host *host, struct mmc_data *data)
data_ctl |= ((ffs(data->blksz) - 1) << 4);

bfin_write_SDH_DATA_CTL(data_ctl);
-
- bfin_write_SDH_DATA_TIMER(0xFFFF);
+ /* the time of a host clock period in ns */
+ cycle_ns = 1000000000 / (get_sclk() / (2 * (host->clk_div + 1)));
+ timeout = data->timeout_ns / cycle_ns;
+ timeout += data->timeout_clks;
+ bfin_write_SDH_DATA_TIMER(timeout);
SSYNC();

if (data->flags & MMC_DATA_READ) {
--
1.6.6

2010-01-26 00:07:56

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH 3/3] mmc: bfin_sdh: set timeout based on actual card data

On Tue, 19 Jan 2010 03:02:11 -0500
Mike Frysinger <[email protected]> wrote:

> From: Cliff Cai <[email protected]>
>
> The hardcoded value doesn't really work for all cards.
>
> Signed-off-by: Cliff Cai <[email protected]>
> Signed-off-by: Mike Frysinger <[email protected]>

Please don't write crappy changelogs.

How am I to determine whether we want this fix in 2.6.33 and possibly
earlier? How is anyone whose 2.6.32.x kernel "doesn't really work" to
determine whether this patch might fix it?