533 |
|
sprintf(str, GetString(STR_PROC_CPUINFO_WARN), strerror(errno)); |
534 |
|
WarningAlert(str); |
535 |
|
} |
536 |
+ |
|
537 |
+ |
// Get actual bus frequency |
538 |
+ |
proc_file = fopen("/proc/device-tree/clock-frequency", "r"); |
539 |
+ |
if (proc_file) { |
540 |
+ |
union { uint8 b[4]; uint32 l; } value; |
541 |
+ |
if (fread(value.b, sizeof(value), 1, proc_file) == 1) |
542 |
+ |
BusClockSpeed = value.l; |
543 |
+ |
fclose(proc_file); |
544 |
+ |
} |
545 |
|
#endif |
546 |
|
D(bug("PVR: %08x (assumed)\n", PVR)); |
547 |
|
|
801 |
|
kernel_data->v[0xc50 >> 2] = htonl(RAMBase); |
802 |
|
kernel_data->v[0xc54 >> 2] = htonl(RAMSize); |
803 |
|
kernel_data->v[0xf60 >> 2] = htonl(PVR); |
804 |
< |
kernel_data->v[0xf64 >> 2] = htonl(CPUClockSpeed); |
805 |
< |
kernel_data->v[0xf68 >> 2] = htonl(BusClockSpeed); |
806 |
< |
kernel_data->v[0xf6c >> 2] = htonl(CPUClockSpeed); |
804 |
> |
kernel_data->v[0xf64 >> 2] = htonl(CPUClockSpeed); // clock-frequency |
805 |
> |
kernel_data->v[0xf68 >> 2] = htonl(BusClockSpeed); // bus-frequency |
806 |
> |
kernel_data->v[0xf6c >> 2] = htonl(BusClockSpeed / 4); // timebase-frequency |
807 |
|
} else { |
808 |
|
kernel_data->v[0xc80 >> 2] = htonl(RAMSize); |
809 |
|
kernel_data->v[0xc84 >> 2] = htonl(RAMSize); |
815 |
|
kernel_data->v[0xcb0 >> 2] = htonl(RAMBase); |
816 |
|
kernel_data->v[0xcb4 >> 2] = htonl(RAMSize); |
817 |
|
kernel_data->v[0xf80 >> 2] = htonl(PVR); |
818 |
< |
kernel_data->v[0xf84 >> 2] = htonl(CPUClockSpeed); |
819 |
< |
kernel_data->v[0xf88 >> 2] = htonl(BusClockSpeed); |
820 |
< |
kernel_data->v[0xf8c >> 2] = htonl(CPUClockSpeed); |
818 |
> |
kernel_data->v[0xf84 >> 2] = htonl(CPUClockSpeed); // clock-frequency |
819 |
> |
kernel_data->v[0xf88 >> 2] = htonl(BusClockSpeed); // bus-frequency |
820 |
> |
kernel_data->v[0xf8c >> 2] = htonl(BusClockSpeed / 4); // timebase-frequency |
821 |
|
} |
822 |
|
|
823 |
|
// Initialize extra low memory |