1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2025-04-21 12:27:27 +03:00

add support for target 3c24xx (more known as Openmoko GTA02 "Freerunner") and merge it with the openmoko-target and the work Michael Buesch <mb> did

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13609 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
mirko
2008-12-12 00:02:36 +00:00
parent 22b3854919
commit cc3146824a
268 changed files with 151304 additions and 133872 deletions

View File

@@ -0,0 +1,58 @@
From 1d40ccabc74877cc47fa91490b772e9611215b39 Mon Sep 17 00:00:00 2001
From: Andy Green <andy@openmoko.com>
Date: Fri, 25 Jul 2008 23:06:21 +0100
Subject: [PATCH] fix-glamo-mci-possible-timeout-overflow.patch
The MMC stack hands us a timeout calibrated in SD_CLK clocks, but the
Glamo can only deal with up to 65520 clocks of timeout. If the stack
handed us a request bigger than this, it would just wrap and the
timeout we actually used would be way too short.
With this patch if that happens, we use the longest timeout we can,
65520 clocks and give it our best shot.
Signed-off-by: Andy Green <andy@openmoko.com>
---
drivers/mfd/glamo/glamo-mci.c | 19 ++++++++++---------
1 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/drivers/mfd/glamo/glamo-mci.c b/drivers/mfd/glamo/glamo-mci.c
index 0374446..505be5f 100644
--- a/drivers/mfd/glamo/glamo-mci.c
+++ b/drivers/mfd/glamo/glamo-mci.c
@@ -338,6 +338,7 @@ static int glamo_mci_send_command(struct glamo_mci_host *host,
{
u8 u8a[6];
u16 fire = 0;
+ u16 timeout = 0xfff; /* max glamo MMC timeout, in units of 16 clocks */
/* if we can't do it, reject as busy */
if (!readw_dly(host->base + GLAMO_REG_MMC_RB_STAT1) &
@@ -447,15 +448,15 @@ static int glamo_mci_send_command(struct glamo_mci_host *host,
fire |= GLAMO_FIRE_MMC_CC_BASIC; /* "basic command" */
break;
}
- /* enforce timeout */
- if (cmd->data) {
- if (cmd->data->timeout_clks)
- writew_dly(cmd->data->timeout_clks >> 4, /* / 16 clks */
- host->base + GLAMO_REG_MMC_TIMEOUT);
- else
- writew_dly(0xfff, host->base + GLAMO_REG_MMC_TIMEOUT);
- } else
- writew(0xfff, host->base + GLAMO_REG_MMC_TIMEOUT);
+ /* enforce timeout, clipping at default 65520 clocks if larger */
+ if (cmd->data)
+ /* so long as there is one... */
+ if (cmd->data->timeout_clks &&
+ /* ... and it is not longer than we can handle */
+ (cmd->data->timeout_clks <= 0xffff))
+ timeout = cmd->data->timeout_clks >> 4; /* / 16 clks */
+
+ writew(timeout, host->base + GLAMO_REG_MMC_TIMEOUT);
/* Generate interrupt on txfer */
writew_dly((readw_dly(host->base + GLAMO_REG_MMC_BASIC) & 0x3e) |
--
1.5.6.3