On 23/05/14 19:57, BALATON Zoltan wrote:
Removed unused clock_frequency member from struct cpudef which is get from FW_CFG and added bus-frequency property to complete the frequency properties. Also added tlb infos to CPU properties.
Signed-off-by: BALATON Zoltan balaton@eik.bme.hu
v2: Get bus-frequency from FW_CFG similarly to clock-frequency and tb-frequency (corresponding patch submitted to QEMU, already applied to ppc-next) v3: added definition of FW_CFG_PPC_BUSFREQ that was missed from v2 v4: tlb infos for all CPUs from device tree dumps found on the net
Index: openbios-devel/arch/ppc/qemu/init.c
--- openbios-devel/arch/ppc/qemu/init.c (revision 1303) +++ openbios-devel/arch/ppc/qemu/init.c (working copy) @@ -44,7 +44,7 @@ int icache_size, dcache_size; int icache_sets, dcache_sets; int icache_block_size, dcache_block_size;
- int clock_frequency;
- int tlb_sets, tlb_size; void (*initfn)(const struct cpudef *cpu); };
@@ -269,6 +269,16 @@ push_str("i-cache-block-size"); fword("property");
- PUSH(cpu->tlb_sets);
- fword("encode-int");
- push_str("tlb-sets");
- fword("property");
- PUSH(cpu->tlb_size);
- fword("encode-int");
- push_str("tlb-size");
- fword("property");
PUSH(fw_cfg_read_i32(FW_CFG_PPC_TBFREQ)); fword("encode-int"); push_str("timebase-frequency");
@@ -279,6 +289,11 @@ push_str("clock-frequency"); fword("property");
- PUSH(fw_cfg_read_i32(FW_CFG_PPC_BUSFREQ));
- fword("encode-int");
- push_str("bus-frequency");
- fword("property");
push_str("running"); fword("encode-string"); push_str("state");
@@ -391,7 +406,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x20, .dcache_block_size = 0x20,
.clock_frequency = 0x07de2900,
.tlb_sets = 0x40,
.tlb_size = 0x80, .initfn = cpu_604_init, }, { // XXX find out real values
@@ -403,7 +419,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x20, .dcache_block_size = 0x20,
.clock_frequency = 0x07de2900,
.tlb_sets = 0x40,
.tlb_size = 0x80, .initfn = cpu_604_init, }, { // XXX find out real values
@@ -415,7 +432,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x20, .dcache_block_size = 0x20,
.clock_frequency = 0x07de2900,
.tlb_sets = 0x40,
.tlb_size = 0x80, .initfn = cpu_604_init, }, { // XXX find out real values
@@ -427,7 +445,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x20, .dcache_block_size = 0x20,
.clock_frequency = 0x14dc9380,
.tlb_sets = 0x40,
.tlb_size = 0x80, .initfn = cpu_750_init, }, {
@@ -439,7 +458,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x20, .dcache_block_size = 0x20,
.clock_frequency = 0x14dc9380,
.tlb_sets = 0x40,
.tlb_size = 0x80, .initfn = cpu_750_init, }, { // XXX find out real values
@@ -451,7 +471,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x20, .dcache_block_size = 0x20,
.clock_frequency = 0x14dc9380,
.tlb_sets = 0x40,
.tlb_size = 0x80, .initfn = cpu_750_init, }, { // XXX find out real values
@@ -463,7 +484,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x20, .dcache_block_size = 0x20,
.clock_frequency = 0x14dc9380,
.tlb_sets = 0x40,
.tlb_size = 0x80, .initfn = cpu_750_init, }, { // XXX find out real values
@@ -475,7 +497,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x20, .dcache_block_size = 0x20,
.clock_frequency = 0x14dc9380,
.tlb_sets = 0x40,
.tlb_size = 0x80, .initfn = cpu_750_init, }, { // XXX find out real values
@@ -487,7 +510,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x20, .dcache_block_size = 0x20,
.clock_frequency = 0x14dc9380,
.tlb_sets = 0x40,
.tlb_size = 0x80, .initfn = cpu_750_init, }, {
@@ -499,7 +523,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x20, .dcache_block_size = 0x20,
.clock_frequency = 0x1dcd6500,
.tlb_sets = 0x40,
.tlb_size = 0x80, .initfn = cpu_g4_init, }, {
@@ -511,7 +536,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x80, .dcache_block_size = 0x80,
.clock_frequency = 0x5f5e1000,
.tlb_sets = 0x100,
.tlb_size = 0x1000, .initfn = cpu_970_init, }, { // XXX find out real values
@@ -523,7 +549,8 @@ .dcache_sets = 0x80, .icache_block_size = 0x80, .dcache_block_size = 0x80,
.clock_frequency = 0x1dcd6500,
.tlb_sets = 0x100,
.tlb_size = 0x1000, .initfn = cpu_970_init, }, {
@@ -535,7 +562,8 @@ .dcache_sets = 0x40, .icache_block_size = 0x80, .dcache_block_size = 0x80,
.clock_frequency = 0x629b4940,
.tlb_sets = 0x100,
};.tlb_size = 0x1000, .initfn = cpu_970_init, },
Index: openbios-devel/include/arch/common/fw_cfg.h
--- openbios-devel/include/arch/common/fw_cfg.h (revision 1303) +++ openbios-devel/include/arch/common/fw_cfg.h (working copy) @@ -45,6 +45,7 @@ #define FW_CFG_PPC_KVM_HC (FW_CFG_ARCH_LOCAL + 0x06) #define FW_CFG_PPC_KVM_PID (FW_CFG_ARCH_LOCAL + 0x07) #define FW_CFG_PPC_NVRAM_ADDR (FW_CFG_ARCH_LOCAL + 0x08) +#define FW_CFG_PPC_BUSFREQ (FW_CFG_ARCH_LOCAL + 0x09)
#define FW_CFG_INVALID 0xffff
Looks good to me. Alex/Andreas, let me know if you'd prefer me to commit this.
ATB,
Mark.