57 const char *core_model;
76 switch ((chip_id >> 8) & 0xff) {
79 fus_dat3.
s.nodfa_dte = 1;
83 fus_dat3.
s.nodfa_dte = 1;
94 if (fus_dat3.
s.nodfa_dte) {
95 if (fus_dat2.
s.nocrypto)
99 }
else if (fus_dat2.
s.nocrypto)
108 sprintf(pass,
"%d.%d", (
int)((chip_id >> 3) & 7) + 1, (
int)chip_id & 7);
176 switch ((chip_id >> 8) & 0xff) {
178 if (fus3.
cn38xx.crip_512k) {
193 switch (chip_id & 0xf) {
209 if ((chip_id & 0x10) || fus3.
cn31xx.crip_128k)
217 switch (chip_id & 0xf) {
238 switch (chip_id & 0xf) {
253 if ((num_cores == 4) && fus3.
cn58xx.crip_1024k && !
strncmp(suffix,
"CP", 2))
257 if ((chip_id & 0xFF) < 0x8) {
258 switch (chip_id & 0x3) {
275 if (fus_dat2.
cn56xx.raid_en) {
276 if (fus3.
cn56xx.crip_1024k)
280 if (fus_dat2.
cn56xx.nocrypto)
285 if (fus_dat2.
cn56xx.nocrypto)
289 if (fus_dat3.
s.nozip)
292 if (fus_dat3.
s.bar2_en)
295 if (fus3.
cn56xx.crip_1024k)
305 if (fus3.
cn52xx.crip_256k)
312 if (fus_dat2.
cn61xx.nocrypto && fus_dat2.
cn61xx.dorm_crypto)
314 if (fus_dat2.
cn61xx.nocrypto)
316 else if (fus_dat2.
cn61xx.dorm_crypto)
318 else if (fus_dat3.
cn61xx.nozip)
323 if (fus_dat3.
s.l2c_crip == 2)
327 if (fus_dat2.
cn63xx.nocrypto)
329 else if (fus_dat2.
cn63xx.dorm_crypto)
331 else if (fus_dat3.
cn63xx.nozip)
340 if (fus_dat2.
cn66xx.nocrypto && fus_dat2.
cn66xx.dorm_crypto)
342 if (fus_dat2.
cn66xx.nocrypto)
344 else if (fus_dat2.
cn66xx.dorm_crypto)
346 else if (fus_dat3.
cn66xx.nozip)
355 else if (fus_dat2.
cn68xx.dorm_crypto)
357 else if (fus_dat3.
cn68xx.nozip)
359 else if (fus_dat2.
cn68xx.nocrypto)
373 if (family[0] !=
'3') {
374 int fuse_base = 384 / 8;
375 if (family[0] ==
'6')
380 fuse_data |= cvmx_fuse_read_byte(fuse_base + 3);
381 fuse_data = fuse_data << 8;
382 fuse_data |= cvmx_fuse_read_byte(fuse_base + 2);
383 fuse_data = fuse_data << 8;
384 fuse_data |= cvmx_fuse_read_byte(fuse_base + 1);
385 fuse_data = fuse_data << 8;
386 fuse_data |= cvmx_fuse_read_byte(fuse_base);
387 if (fuse_data & 0x7ffff) {
388 int model = fuse_data & 0x3fff;
389 int suffix = (fuse_data >> 14) & 0x1f;
390 if (suffix && model) {
392 sprintf(fuse_model,
"%d%c", model,
'A' + suffix - 1);
395 }
else if (suffix && !model) {
397 sprintf(fuse_model,
"%s%c", core_model,
'A' + suffix - 1);
398 core_model = fuse_model;
401 sprintf(fuse_model,
"%d", model);
407 sprintf(buffer,
"CN%s%sp%s-%d-%s", family, core_model, pass, clock_mhz, suffix);