| 2153 | } |
| 2154 | |
| 2155 | static void |
| 2156 | xor_active_dram(u_long base, int c, int e, int *window) |
| 2157 | { |
| 2158 | uint32_t br, sz; |
| 2159 | int i, m, w; |
| 2160 | |
| 2161 | /* |
| 2162 | * Set up access to all active DRAM banks |
| 2163 | */ |
| 2164 | m = xor_max_eng(); |
| 2165 | for (i = 0; i < m; i++) |
| 2166 | if (ddr_is_active(i)) { |
| 2167 | br = ddr_base(i) | (ddr_attr(i) << 8) | |
| 2168 | ddr_target(i); |
| 2169 | sz = ((ddr_size(i) - 1) & 0xffff0000); |
| 2170 | |
| 2171 | /* Place DDR entries in non-remapped windows */ |
| 2172 | for (w = 0; w < MV_WIN_XOR_MAX; w++) |
| 2173 | if (win_xor_can_remap(w) != 1 && |
| 2174 | (xor_ctrl_read(base, w, c, e) == 0) && |
| 2175 | w > *window) { |
| 2176 | /* Configure window */ |
| 2177 | win_xor_br_write(base, w, e, br); |
| 2178 | win_xor_sz_write(base, w, e, sz); |
| 2179 | |
| 2180 | /* Set protection RW on all channels */ |
| 2181 | xor_set_prot(base, w, e, 0x3); |
| 2182 | |
| 2183 | /* Enable window */ |
| 2184 | xor_ctrl_write(base, w, c, e, 1); |
| 2185 | (*window)++; |
| 2186 | break; |
| 2187 | } |
| 2188 | } |
| 2189 | } |
| 2190 | |
| 2191 | void |
| 2192 | decode_win_xor_setup(u_long base) |
no test coverage detected