* SATA windows routines **************************************************************************/
| 2367 | * SATA windows routines |
| 2368 | **************************************************************************/ |
| 2369 | static void |
| 2370 | decode_win_sata_setup(u_long base) |
| 2371 | { |
| 2372 | uint32_t cr, br; |
| 2373 | int i, j; |
| 2374 | |
| 2375 | if (pm_is_disabled(CPU_PM_CTRL_SATA)) |
| 2376 | return; |
| 2377 | |
| 2378 | for (i = 0; i < MV_WIN_SATA_MAX; i++) { |
| 2379 | win_sata_cr_write(base, i, 0); |
| 2380 | win_sata_br_write(base, i, 0); |
| 2381 | } |
| 2382 | |
| 2383 | for (i = 0; i < MV_WIN_DDR_MAX; i++) |
| 2384 | if (ddr_is_active(i)) { |
| 2385 | cr = ((ddr_size(i) - 1) & 0xffff0000) | |
| 2386 | (ddr_attr(i) << 8) | (ddr_target(i) << 4) | 1; |
| 2387 | br = ddr_base(i); |
| 2388 | |
| 2389 | /* Use the first available SATA window */ |
| 2390 | for (j = 0; j < MV_WIN_SATA_MAX; j++) { |
| 2391 | if ((win_sata_cr_read(base, j) & 1) != 0) |
| 2392 | continue; |
| 2393 | |
| 2394 | win_sata_br_write(base, j, br); |
| 2395 | win_sata_cr_write(base, j, cr); |
| 2396 | break; |
| 2397 | } |
| 2398 | } |
| 2399 | } |
| 2400 | |
| 2401 | /* |
| 2402 | * Configure AHCI decoding windows |
nothing calls this directly
no test coverage detected