45b8f25cc4b372c3876ae809cdf0d86926dfa186
[kernel-bfs] / kernel-bfs-2.6.28 / debian / patches / class10sd_dto14_fix.diff
1 --- kernel-2.6.28/drivers/mmc/host/omap_hsmmc.c 2011-04-28 23:06:37.000000000 +0200
2 +++ kernel-2.6.28.new/drivers/mmc/host/omap_hsmmc.c     2011-05-05 22:18:25.174891197 +0200
3 @@ -958,34 +958,9 @@ static void set_data_timeout(struct omap
4                              unsigned int timeout_ns,
5                              unsigned int timeout_clks)
6  {
7 -       unsigned int timeout, cycle_ns;
8 -       uint32_t reg, clkd, dto = 0;
9 +       uint32_t reg, dto = 14;
10  
11         reg = OMAP_HSMMC_READ(host->base, SYSCTL);
12 -       clkd = (reg & CLKD_MASK) >> CLKD_SHIFT;
13 -       if (clkd == 0)
14 -               clkd = 1;
15 -
16 -       cycle_ns = 1000000000 / (clk_get_rate(host->fclk) / clkd);
17 -       timeout = timeout_ns / cycle_ns;
18 -       timeout += timeout_clks;
19 -       if (timeout) {
20 -               while ((timeout & 0x80000000) == 0) {
21 -                       dto += 1;
22 -                       timeout <<= 1;
23 -               }
24 -               dto = 31 - dto;
25 -               timeout <<= 1;
26 -               if (timeout && dto)
27 -                       dto += 1;
28 -               if (dto >= 13)
29 -                       dto -= 13;
30 -               else
31 -                       dto = 0;
32 -               if (dto > 14)
33 -                       dto = 14;
34 -       }
35 -
36         reg &= ~DTO_MASK;
37         reg |= dto << DTO_SHIFT;
38         OMAP_HSMMC_WRITE(host->base, SYSCTL, reg);