| static void spd_set_memclk(void) |
| { |
| static const int indicies[] = { 26, 23, 9 }; |
| int new_cycle_time, new_latency; |
| int index; |
| unsigned min_cycle_time, min_latency; |
| unsigned device; |
| |
| min_cycle_time = 0x50; |
| min_latency = 2; |
| device = 0x50; |
| new_cycle_time = 0xa0; |
| new_latency = 5; |
| |
| for(index = 0; index < 3; index++) { |
| unsigned long loops; |
| unsigned long address; |
| address = indicies[index]; |
| loops = 1000000; |
| do { |
| } while(--loops); |
| if (loops < 0) { |
| continue; |
| } |
| |
| __builtin_outb(device, 0x10e4); |
| __builtin_outb(address, 0x10e8); |
| |
| loops = 1000000; |
| if ((loops?0:-1) < 0) { |
| continue; |
| } |
| } |
| |
| if (new_cycle_time > min_cycle_time) { |
| min_cycle_time = new_cycle_time; |
| } |
| if (new_latency > min_latency) { |
| min_latency = new_latency; |
| } |
| } |