--- /dev/null
+--- kernel-2.6.28/drivers/mmc/host/omap_hsmmc.c 2011-04-28 23:06:37.000000000 +0200
++++ kernel-2.6.28.new/drivers/mmc/host/omap_hsmmc.c 2011-05-05 22:18:25.174891197 +0200
+@@ -958,34 +958,9 @@ static void set_data_timeout(struct omap
+ unsigned int timeout_ns,
+ unsigned int timeout_clks)
+ {
+- unsigned int timeout, cycle_ns;
+- uint32_t reg, clkd, dto = 0;
++ uint32_t reg, dto = 14;
+
+ reg = OMAP_HSMMC_READ(host->base, SYSCTL);
+- clkd = (reg & CLKD_MASK) >> CLKD_SHIFT;
+- if (clkd == 0)
+- clkd = 1;
+-
+- cycle_ns = 1000000000 / (clk_get_rate(host->fclk) / clkd);
+- timeout = timeout_ns / cycle_ns;
+- timeout += timeout_clks;
+- if (timeout) {
+- while ((timeout & 0x80000000) == 0) {
+- dto += 1;
+- timeout <<= 1;
+- }
+- dto = 31 - dto;
+- timeout <<= 1;
+- if (timeout && dto)
+- dto += 1;
+- if (dto >= 13)
+- dto -= 13;
+- else
+- dto = 0;
+- if (dto > 14)
+- dto = 14;
+- }
+-
+ reg &= ~DTO_MASK;
+ reg |= dto << DTO_SHIFT;
+ OMAP_HSMMC_WRITE(host->base, SYSCTL, reg);