.. | .. |
---|
12 | 12 | #define SFC_MAX_IOSIZE_VER4 (0xFFFFFFFF) |
---|
13 | 13 | |
---|
14 | 14 | static void __iomem *g_sfc_reg; |
---|
| 15 | +static u32 sfc_version; |
---|
15 | 16 | |
---|
16 | 17 | static void sfc_reset(void) |
---|
17 | 18 | { |
---|
.. | .. |
---|
42 | 43 | |
---|
43 | 44 | u32 sfc_get_max_dll_cells(void) |
---|
44 | 45 | { |
---|
45 | | - if (sfc_get_version() == SFC_VER_5) |
---|
| 46 | + switch (sfc_get_version()) { |
---|
| 47 | + case SFC_VER_8: |
---|
| 48 | + case SFC_VER_6: |
---|
| 49 | + case SFC_VER_5: |
---|
46 | 50 | return SCLK_SMP_SEL_MAX_V5; |
---|
47 | | - else if (sfc_get_version() == SFC_VER_4) |
---|
| 51 | + case SFC_VER_4: |
---|
48 | 52 | return SCLK_SMP_SEL_MAX_V4; |
---|
49 | | - else |
---|
| 53 | + default: |
---|
50 | 54 | return 0; |
---|
| 55 | + } |
---|
51 | 56 | } |
---|
52 | 57 | |
---|
53 | 58 | void sfc_set_delay_lines(u16 cells) |
---|
.. | .. |
---|
71 | 76 | |
---|
72 | 77 | if (sfc_get_version() >= SFC_VER_4) |
---|
73 | 78 | writel(1, g_sfc_reg + SFC_LEN_CTRL); |
---|
| 79 | + sfc_version = sfc_get_version(); |
---|
74 | 80 | |
---|
75 | 81 | return SFC_OK; |
---|
76 | 82 | } |
---|
.. | .. |
---|
112 | 118 | op->sfctrl.d32 |= 0x2; |
---|
113 | 119 | cmd.b.datasize = size; |
---|
114 | 120 | |
---|
115 | | - if (sfc_get_version() >= SFC_VER_4) |
---|
| 121 | + if (sfc_version >= SFC_VER_4) |
---|
116 | 122 | writel(size, g_sfc_reg + SFC_LEN_EXT); |
---|
117 | 123 | else |
---|
118 | 124 | cmd.b.datasize = size; |
---|
.. | .. |
---|
234 | 240 | break; |
---|
235 | 241 | } |
---|
236 | 242 | |
---|
| 243 | + if (!bytes) |
---|
| 244 | + break; |
---|
237 | 245 | sfc_delay(1); |
---|
238 | 246 | |
---|
239 | 247 | if (timeout++ > 10000) { |
---|