Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARC: boot log: print Action point details

This now prints the number of action points {2,4,8} and {min,full}
targets supported.

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>

+24 -8
+9 -1
arch/arc/include/asm/arcregs.h
··· 216 216 #endif 217 217 }; 218 218 219 + struct bcr_actionpoint { 220 + #ifdef CONFIG_CPU_BIG_ENDIAN 221 + unsigned int pad:21, min:1, num:2, ver:8; 222 + #else 223 + unsigned int ver:8, num:2, min:1, pad:21; 224 + #endif 225 + }; 226 + 219 227 #include <soc/arc/timers.h> 220 228 221 229 struct bcr_bpu_arcompact { ··· 310 302 struct { 311 303 unsigned int swap:1, norm:1, minmax:1, barrel:1, crc:1, swape:1, pad1:2, 312 304 fpu_sp:1, fpu_dp:1, dual:1, dual_enb:1, pad2:4, 313 - debug:1, ap:1, smart:1, rtt:1, pad3:4, 305 + ap_num:4, ap_full:1, smart:1, rtt:1, pad3:1, 314 306 timer0:1, timer1:1, rtc:1, gfrc:1, pad4:4; 315 307 } extn; 316 308 struct bcr_mpy extn_mpy;
+15 -7
arch/arc/kernel/setup.c
··· 123 123 struct cpuinfo_arc *cpu = &cpuinfo_arc700[smp_processor_id()]; 124 124 const struct id_to_str *tbl; 125 125 struct bcr_isa_arcv2 isa; 126 + struct bcr_actionpoint ap; 126 127 127 128 FIX_PTR(cpu); 128 129 ··· 209 208 } 210 209 } 211 210 212 - READ_BCR(ARC_REG_AP_BCR, bcr); 213 - cpu->extn.ap = bcr.ver ? 1 : 0; 211 + READ_BCR(ARC_REG_AP_BCR, ap); 212 + if (ap.ver) { 213 + cpu->extn.ap_num = 2 << ap.num; 214 + cpu->extn.ap_full = !!ap.min; 215 + } 214 216 215 217 READ_BCR(ARC_REG_SMART_BCR, bcr); 216 218 cpu->extn.smart = bcr.ver ? 1 : 0; 217 219 218 220 READ_BCR(ARC_REG_RTT_BCR, bcr); 219 221 cpu->extn.rtt = bcr.ver ? 1 : 0; 220 - 221 - cpu->extn.debug = cpu->extn.ap | cpu->extn.smart | cpu->extn.rtt; 222 222 223 223 READ_BCR(ARC_REG_ISA_CFG_BCR, isa); 224 224 ··· 339 337 IS_AVAIL1(cpu->extn.fpu_sp, "SP "), 340 338 IS_AVAIL1(cpu->extn.fpu_dp, "DP ")); 341 339 342 - if (cpu->extn.debug) 343 - n += scnprintf(buf + n, len - n, "DEBUG\t\t: %s%s%s\n", 344 - IS_AVAIL1(cpu->extn.ap, "ActionPoint "), 340 + if (cpu->extn.ap_num | cpu->extn.smart | cpu->extn.rtt) { 341 + n += scnprintf(buf + n, len - n, "DEBUG\t\t: %s%s", 345 342 IS_AVAIL1(cpu->extn.smart, "smaRT "), 346 343 IS_AVAIL1(cpu->extn.rtt, "RTT ")); 344 + if (cpu->extn.ap_num) { 345 + n += scnprintf(buf + n, len - n, "ActionPoint %d/%s", 346 + cpu->extn.ap_num, 347 + cpu->extn.ap_full ? "full":"min"); 348 + } 349 + n += scnprintf(buf + n, len - n, "\n"); 350 + } 347 351 348 352 if (cpu->dccm.sz || cpu->iccm.sz) 349 353 n += scnprintf(buf + n, len - n, "Extn [CCM]\t: DCCM @ %x, %d KB / ICCM: @ %x, %d KB\n",