| static void spd_set_memclk(void) |
| { |
| unsigned min_cycle_time; |
| unsigned device; |
| int new_cycle_time, new_latency; |
| int index; |
| int latency; |
| |
| min_cycle_time = 0x50; |
| device = 0x50; |
| new_cycle_time = 0xa0; |
| new_latency = 5; |
| |
| |
| latency = 0; |
| for(index = 0; index < 3; index++, latency++) { |
| unsigned long loops; |
| loops = 1000000; |
| do { |
| unsigned short val; |
| val = __builtin_inw(0x10e0); |
| } while(--loops); |
| if (!loops) { |
| continue; |
| } |
| |
| __builtin_outb(device, 0xe4); |
| __builtin_outb(index, 0xe8); |
| |
| loops = 1000000; |
| while(--loops) |
| ; |
| } |
| if (new_latency > 4){ |
| return; |
| } |
| |
| if (new_cycle_time > min_cycle_time) { |
| min_cycle_time = new_cycle_time; |
| } |
| } |