| static void spd_set_memclk(void) |
| { |
| unsigned min_cycle_time, min_latency; |
| unsigned device; |
| int new_cycle_time, new_latency; |
| int index; |
| int latency; |
| |
| min_cycle_time = 0x50; |
| min_latency = 2; |
| device = 0x50; |
| new_latency = 5; |
| new_cycle_time = 0xa0; |
| latency = 23; |
| |
| for(index = 0; index < 3; index++, latency++) { |
| unsigned long loops; |
| unsigned address = index; |
| |
| loops = 1000000; |
| do { |
| } while(--loops); |
| if (loops) { |
| continue; |
| } |
| |
| __builtin_outb(device, 0x10e4); |
| |
| __builtin_outb(address & 0xFF, 0x10e8); |
| |
| loops = 1000000; |
| while(--loops) |
| ; |
| } |
| |
| if (new_cycle_time > min_cycle_time) { |
| min_cycle_time = new_cycle_time; |
| } |
| if (new_latency > min_latency) { |
| min_latency = new_latency; |
| } |
| } |