Commit 2e8c07c35b3ffee7689406be61fd1448ee45d3cd

Authored by Divy Le Ray
Committed by David S. Miller
1 parent 5e65951556

cxgb3: use request_firmware() for the EDC registers setup

use request_firmware() to load the phy's EDC programmation

Signed-off-by: Divy Le Ray <divy@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

Showing 9 changed files with 395 additions and 1051 deletions Side-by-side Diff

drivers/net/cxgb3/adapter.h
... ... @@ -320,5 +320,7 @@
320 320 unsigned char *data);
321 321 irqreturn_t t3_sge_intr_msix(int irq, void *cookie);
322 322  
  323 +int t3_get_edc_fw(struct cphy *phy, int edc_idx, int size);
  324 +
323 325 #endif /* __T3_ADAPTER_H__ */
drivers/net/cxgb3/ael1002.c
Changes suppressed. Click to show
... ... @@ -298,279 +298,7 @@
298 298 { MDIO_MMD_PMAPMD, 0xc04a, 0xffff, 0x5200 },
299 299 { 0, 0, 0, 0 }
300 300 };
301   - static u16 sr_edc[] = {
302   - 0xcc00, 0x2ff4,
303   - 0xcc01, 0x3cd4,
304   - 0xcc02, 0x2015,
305   - 0xcc03, 0x3105,
306   - 0xcc04, 0x6524,
307   - 0xcc05, 0x27ff,
308   - 0xcc06, 0x300f,
309   - 0xcc07, 0x2c8b,
310   - 0xcc08, 0x300b,
311   - 0xcc09, 0x4009,
312   - 0xcc0a, 0x400e,
313   - 0xcc0b, 0x2f72,
314   - 0xcc0c, 0x3002,
315   - 0xcc0d, 0x1002,
316   - 0xcc0e, 0x2172,
317   - 0xcc0f, 0x3012,
318   - 0xcc10, 0x1002,
319   - 0xcc11, 0x25d2,
320   - 0xcc12, 0x3012,
321   - 0xcc13, 0x1002,
322   - 0xcc14, 0xd01e,
323   - 0xcc15, 0x27d2,
324   - 0xcc16, 0x3012,
325   - 0xcc17, 0x1002,
326   - 0xcc18, 0x2004,
327   - 0xcc19, 0x3c84,
328   - 0xcc1a, 0x6436,
329   - 0xcc1b, 0x2007,
330   - 0xcc1c, 0x3f87,
331   - 0xcc1d, 0x8676,
332   - 0xcc1e, 0x40b7,
333   - 0xcc1f, 0xa746,
334   - 0xcc20, 0x4047,
335   - 0xcc21, 0x5673,
336   - 0xcc22, 0x2982,
337   - 0xcc23, 0x3002,
338   - 0xcc24, 0x13d2,
339   - 0xcc25, 0x8bbd,
340   - 0xcc26, 0x2862,
341   - 0xcc27, 0x3012,
342   - 0xcc28, 0x1002,
343   - 0xcc29, 0x2092,
344   - 0xcc2a, 0x3012,
345   - 0xcc2b, 0x1002,
346   - 0xcc2c, 0x5cc3,
347   - 0xcc2d, 0x314,
348   - 0xcc2e, 0x2942,
349   - 0xcc2f, 0x3002,
350   - 0xcc30, 0x1002,
351   - 0xcc31, 0xd019,
352   - 0xcc32, 0x2032,
353   - 0xcc33, 0x3012,
354   - 0xcc34, 0x1002,
355   - 0xcc35, 0x2a04,
356   - 0xcc36, 0x3c74,
357   - 0xcc37, 0x6435,
358   - 0xcc38, 0x2fa4,
359   - 0xcc39, 0x3cd4,
360   - 0xcc3a, 0x6624,
361   - 0xcc3b, 0x5563,
362   - 0xcc3c, 0x2d42,
363   - 0xcc3d, 0x3002,
364   - 0xcc3e, 0x13d2,
365   - 0xcc3f, 0x464d,
366   - 0xcc40, 0x2862,
367   - 0xcc41, 0x3012,
368   - 0xcc42, 0x1002,
369   - 0xcc43, 0x2032,
370   - 0xcc44, 0x3012,
371   - 0xcc45, 0x1002,
372   - 0xcc46, 0x2fb4,
373   - 0xcc47, 0x3cd4,
374   - 0xcc48, 0x6624,
375   - 0xcc49, 0x5563,
376   - 0xcc4a, 0x2d42,
377   - 0xcc4b, 0x3002,
378   - 0xcc4c, 0x13d2,
379   - 0xcc4d, 0x2ed2,
380   - 0xcc4e, 0x3002,
381   - 0xcc4f, 0x1002,
382   - 0xcc50, 0x2fd2,
383   - 0xcc51, 0x3002,
384   - 0xcc52, 0x1002,
385   - 0xcc53, 0x004,
386   - 0xcc54, 0x2942,
387   - 0xcc55, 0x3002,
388   - 0xcc56, 0x1002,
389   - 0xcc57, 0x2092,
390   - 0xcc58, 0x3012,
391   - 0xcc59, 0x1002,
392   - 0xcc5a, 0x5cc3,
393   - 0xcc5b, 0x317,
394   - 0xcc5c, 0x2f72,
395   - 0xcc5d, 0x3002,
396   - 0xcc5e, 0x1002,
397   - 0xcc5f, 0x2942,
398   - 0xcc60, 0x3002,
399   - 0xcc61, 0x1002,
400   - 0xcc62, 0x22cd,
401   - 0xcc63, 0x301d,
402   - 0xcc64, 0x2862,
403   - 0xcc65, 0x3012,
404   - 0xcc66, 0x1002,
405   - 0xcc67, 0x2ed2,
406   - 0xcc68, 0x3002,
407   - 0xcc69, 0x1002,
408   - 0xcc6a, 0x2d72,
409   - 0xcc6b, 0x3002,
410   - 0xcc6c, 0x1002,
411   - 0xcc6d, 0x628f,
412   - 0xcc6e, 0x2112,
413   - 0xcc6f, 0x3012,
414   - 0xcc70, 0x1002,
415   - 0xcc71, 0x5aa3,
416   - 0xcc72, 0x2dc2,
417   - 0xcc73, 0x3002,
418   - 0xcc74, 0x1312,
419   - 0xcc75, 0x6f72,
420   - 0xcc76, 0x1002,
421   - 0xcc77, 0x2807,
422   - 0xcc78, 0x31a7,
423   - 0xcc79, 0x20c4,
424   - 0xcc7a, 0x3c24,
425   - 0xcc7b, 0x6724,
426   - 0xcc7c, 0x1002,
427   - 0xcc7d, 0x2807,
428   - 0xcc7e, 0x3187,
429   - 0xcc7f, 0x20c4,
430   - 0xcc80, 0x3c24,
431   - 0xcc81, 0x6724,
432   - 0xcc82, 0x1002,
433   - 0xcc83, 0x2514,
434   - 0xcc84, 0x3c64,
435   - 0xcc85, 0x6436,
436   - 0xcc86, 0xdff4,
437   - 0xcc87, 0x6436,
438   - 0xcc88, 0x1002,
439   - 0xcc89, 0x40a4,
440   - 0xcc8a, 0x643c,
441   - 0xcc8b, 0x4016,
442   - 0xcc8c, 0x8c6c,
443   - 0xcc8d, 0x2b24,
444   - 0xcc8e, 0x3c24,
445   - 0xcc8f, 0x6435,
446   - 0xcc90, 0x1002,
447   - 0xcc91, 0x2b24,
448   - 0xcc92, 0x3c24,
449   - 0xcc93, 0x643a,
450   - 0xcc94, 0x4025,
451   - 0xcc95, 0x8a5a,
452   - 0xcc96, 0x1002,
453   - 0xcc97, 0x2731,
454   - 0xcc98, 0x3011,
455   - 0xcc99, 0x1001,
456   - 0xcc9a, 0xc7a0,
457   - 0xcc9b, 0x100,
458   - 0xcc9c, 0xc502,
459   - 0xcc9d, 0x53ac,
460   - 0xcc9e, 0xc503,
461   - 0xcc9f, 0xd5d5,
462   - 0xcca0, 0xc600,
463   - 0xcca1, 0x2a6d,
464   - 0xcca2, 0xc601,
465   - 0xcca3, 0x2a4c,
466   - 0xcca4, 0xc602,
467   - 0xcca5, 0x111,
468   - 0xcca6, 0xc60c,
469   - 0xcca7, 0x5900,
470   - 0xcca8, 0xc710,
471   - 0xcca9, 0x700,
472   - 0xccaa, 0xc718,
473   - 0xccab, 0x700,
474   - 0xccac, 0xc720,
475   - 0xccad, 0x4700,
476   - 0xccae, 0xc801,
477   - 0xccaf, 0x7f50,
478   - 0xccb0, 0xc802,
479   - 0xccb1, 0x7760,
480   - 0xccb2, 0xc803,
481   - 0xccb3, 0x7fce,
482   - 0xccb4, 0xc804,
483   - 0xccb5, 0x5700,
484   - 0xccb6, 0xc805,
485   - 0xccb7, 0x5f11,
486   - 0xccb8, 0xc806,
487   - 0xccb9, 0x4751,
488   - 0xccba, 0xc807,
489   - 0xccbb, 0x57e1,
490   - 0xccbc, 0xc808,
491   - 0xccbd, 0x2700,
492   - 0xccbe, 0xc809,
493   - 0xccbf, 0x000,
494   - 0xccc0, 0xc821,
495   - 0xccc1, 0x002,
496   - 0xccc2, 0xc822,
497   - 0xccc3, 0x014,
498   - 0xccc4, 0xc832,
499   - 0xccc5, 0x1186,
500   - 0xccc6, 0xc847,
501   - 0xccc7, 0x1e02,
502   - 0xccc8, 0xc013,
503   - 0xccc9, 0xf341,
504   - 0xccca, 0xc01a,
505   - 0xcccb, 0x446,
506   - 0xcccc, 0xc024,
507   - 0xcccd, 0x1000,
508   - 0xccce, 0xc025,
509   - 0xcccf, 0xa00,
510   - 0xccd0, 0xc026,
511   - 0xccd1, 0xc0c,
512   - 0xccd2, 0xc027,
513   - 0xccd3, 0xc0c,
514   - 0xccd4, 0xc029,
515   - 0xccd5, 0x0a0,
516   - 0xccd6, 0xc030,
517   - 0xccd7, 0xa00,
518   - 0xccd8, 0xc03c,
519   - 0xccd9, 0x01c,
520   - 0xccda, 0xc005,
521   - 0xccdb, 0x7a06,
522   - 0xccdc, 0x000,
523   - 0xccdd, 0x2731,
524   - 0xccde, 0x3011,
525   - 0xccdf, 0x1001,
526   - 0xcce0, 0xc620,
527   - 0xcce1, 0x000,
528   - 0xcce2, 0xc621,
529   - 0xcce3, 0x03f,
530   - 0xcce4, 0xc622,
531   - 0xcce5, 0x000,
532   - 0xcce6, 0xc623,
533   - 0xcce7, 0x000,
534   - 0xcce8, 0xc624,
535   - 0xcce9, 0x000,
536   - 0xccea, 0xc625,
537   - 0xcceb, 0x000,
538   - 0xccec, 0xc627,
539   - 0xcced, 0x000,
540   - 0xccee, 0xc628,
541   - 0xccef, 0x000,
542   - 0xccf0, 0xc62c,
543   - 0xccf1, 0x000,
544   - 0xccf2, 0x000,
545   - 0xccf3, 0x2806,
546   - 0xccf4, 0x3cb6,
547   - 0xccf5, 0xc161,
548   - 0xccf6, 0x6134,
549   - 0xccf7, 0x6135,
550   - 0xccf8, 0x5443,
551   - 0xccf9, 0x303,
552   - 0xccfa, 0x6524,
553   - 0xccfb, 0x00b,
554   - 0xccfc, 0x1002,
555   - 0xccfd, 0x2104,
556   - 0xccfe, 0x3c24,
557   - 0xccff, 0x2105,
558   - 0xcd00, 0x3805,
559   - 0xcd01, 0x6524,
560   - 0xcd02, 0xdff4,
561   - 0xcd03, 0x4005,
562   - 0xcd04, 0x6524,
563   - 0xcd05, 0x1002,
564   - 0xcd06, 0x5dd3,
565   - 0xcd07, 0x306,
566   - 0xcd08, 0x2ff7,
567   - 0xcd09, 0x38f7,
568   - 0xcd0a, 0x60b7,
569   - 0xcd0b, 0xdffd,
570   - 0xcd0c, 0x00a,
571   - 0xcd0d, 0x1002,
572   - 0xcd0e, 0
573   - };
  301 +
574 302 int i, err;
575 303  
576 304 err = set_phy_regs(phy, regs);
... ... @@ -579,9 +307,16 @@
579 307  
580 308 msleep(50);
581 309  
582   - for (i = 0; i < ARRAY_SIZE(sr_edc) && !err; i += 2)
583   - err = t3_mdio_write(phy, MDIO_MMD_PMAPMD, sr_edc[i],
584   - sr_edc[i + 1]);
  310 + if (phy->priv != edc_sr)
  311 + err = t3_get_edc_fw(phy, EDC_OPT_AEL2005,
  312 + EDC_OPT_AEL2005_SIZE);
  313 + if (err)
  314 + return err;
  315 +
  316 + for (i = 0; i < EDC_OPT_AEL2005_SIZE / sizeof(u16) && !err; i += 2)
  317 + err = t3_mdio_write(phy, MDIO_MMD_PMAPMD,
  318 + phy->phy_cache[i],
  319 + phy->phy_cache[i + 1]);
585 320 if (!err)
586 321 phy->priv = edc_sr;
587 322 return err;
... ... @@ -598,374 +333,6 @@
598 333 { MDIO_MMD_PMAPMD, 0xc015, 0xffff, 0xa000 },
599 334 { 0, 0, 0, 0 }
600 335 };
601   - static u16 twinax_edc[] = {
602   - 0xcc00, 0x4009,
603   - 0xcc01, 0x27ff,
604   - 0xcc02, 0x300f,
605   - 0xcc03, 0x40aa,
606   - 0xcc04, 0x401c,
607   - 0xcc05, 0x401e,
608   - 0xcc06, 0x2ff4,
609   - 0xcc07, 0x3cd4,
610   - 0xcc08, 0x2035,
611   - 0xcc09, 0x3145,
612   - 0xcc0a, 0x6524,
613   - 0xcc0b, 0x26a2,
614   - 0xcc0c, 0x3012,
615   - 0xcc0d, 0x1002,
616   - 0xcc0e, 0x29c2,
617   - 0xcc0f, 0x3002,
618   - 0xcc10, 0x1002,
619   - 0xcc11, 0x2072,
620   - 0xcc12, 0x3012,
621   - 0xcc13, 0x1002,
622   - 0xcc14, 0x22cd,
623   - 0xcc15, 0x301d,
624   - 0xcc16, 0x2e52,
625   - 0xcc17, 0x3012,
626   - 0xcc18, 0x1002,
627   - 0xcc19, 0x28e2,
628   - 0xcc1a, 0x3002,
629   - 0xcc1b, 0x1002,
630   - 0xcc1c, 0x628f,
631   - 0xcc1d, 0x2ac2,
632   - 0xcc1e, 0x3012,
633   - 0xcc1f, 0x1002,
634   - 0xcc20, 0x5553,
635   - 0xcc21, 0x2ae2,
636   - 0xcc22, 0x3002,
637   - 0xcc23, 0x1302,
638   - 0xcc24, 0x401e,
639   - 0xcc25, 0x2be2,
640   - 0xcc26, 0x3012,
641   - 0xcc27, 0x1002,
642   - 0xcc28, 0x2da2,
643   - 0xcc29, 0x3012,
644   - 0xcc2a, 0x1002,
645   - 0xcc2b, 0x2ba2,
646   - 0xcc2c, 0x3002,
647   - 0xcc2d, 0x1002,
648   - 0xcc2e, 0x5ee3,
649   - 0xcc2f, 0x305,
650   - 0xcc30, 0x400e,
651   - 0xcc31, 0x2bc2,
652   - 0xcc32, 0x3002,
653   - 0xcc33, 0x1002,
654   - 0xcc34, 0x2b82,
655   - 0xcc35, 0x3012,
656   - 0xcc36, 0x1002,
657   - 0xcc37, 0x5663,
658   - 0xcc38, 0x302,
659   - 0xcc39, 0x401e,
660   - 0xcc3a, 0x6f72,
661   - 0xcc3b, 0x1002,
662   - 0xcc3c, 0x628f,
663   - 0xcc3d, 0x2be2,
664   - 0xcc3e, 0x3012,
665   - 0xcc3f, 0x1002,
666   - 0xcc40, 0x22cd,
667   - 0xcc41, 0x301d,
668   - 0xcc42, 0x2e52,
669   - 0xcc43, 0x3012,
670   - 0xcc44, 0x1002,
671   - 0xcc45, 0x2522,
672   - 0xcc46, 0x3012,
673   - 0xcc47, 0x1002,
674   - 0xcc48, 0x2da2,
675   - 0xcc49, 0x3012,
676   - 0xcc4a, 0x1002,
677   - 0xcc4b, 0x2ca2,
678   - 0xcc4c, 0x3012,
679   - 0xcc4d, 0x1002,
680   - 0xcc4e, 0x2fa4,
681   - 0xcc4f, 0x3cd4,
682   - 0xcc50, 0x6624,
683   - 0xcc51, 0x410b,
684   - 0xcc52, 0x56b3,
685   - 0xcc53, 0x3c4,
686   - 0xcc54, 0x2fb2,
687   - 0xcc55, 0x3002,
688   - 0xcc56, 0x1002,
689   - 0xcc57, 0x220b,
690   - 0xcc58, 0x303b,
691   - 0xcc59, 0x56b3,
692   - 0xcc5a, 0x3c3,
693   - 0xcc5b, 0x866b,
694   - 0xcc5c, 0x400c,
695   - 0xcc5d, 0x23a2,
696   - 0xcc5e, 0x3012,
697   - 0xcc5f, 0x1002,
698   - 0xcc60, 0x2da2,
699   - 0xcc61, 0x3012,
700   - 0xcc62, 0x1002,
701   - 0xcc63, 0x2ca2,
702   - 0xcc64, 0x3012,
703   - 0xcc65, 0x1002,
704   - 0xcc66, 0x2fb4,
705   - 0xcc67, 0x3cd4,
706   - 0xcc68, 0x6624,
707   - 0xcc69, 0x56b3,
708   - 0xcc6a, 0x3c3,
709   - 0xcc6b, 0x866b,
710   - 0xcc6c, 0x401c,
711   - 0xcc6d, 0x2205,
712   - 0xcc6e, 0x3035,
713   - 0xcc6f, 0x5b53,
714   - 0xcc70, 0x2c52,
715   - 0xcc71, 0x3002,
716   - 0xcc72, 0x13c2,
717   - 0xcc73, 0x5cc3,
718   - 0xcc74, 0x317,
719   - 0xcc75, 0x2522,
720   - 0xcc76, 0x3012,
721   - 0xcc77, 0x1002,
722   - 0xcc78, 0x2da2,
723   - 0xcc79, 0x3012,
724   - 0xcc7a, 0x1002,
725   - 0xcc7b, 0x2b82,
726   - 0xcc7c, 0x3012,
727   - 0xcc7d, 0x1002,
728   - 0xcc7e, 0x5663,
729   - 0xcc7f, 0x303,
730   - 0xcc80, 0x401e,
731   - 0xcc81, 0x004,
732   - 0xcc82, 0x2c42,
733   - 0xcc83, 0x3012,
734   - 0xcc84, 0x1002,
735   - 0xcc85, 0x6f72,
736   - 0xcc86, 0x1002,
737   - 0xcc87, 0x628f,
738   - 0xcc88, 0x2304,
739   - 0xcc89, 0x3c84,
740   - 0xcc8a, 0x6436,
741   - 0xcc8b, 0xdff4,
742   - 0xcc8c, 0x6436,
743   - 0xcc8d, 0x2ff5,
744   - 0xcc8e, 0x3005,
745   - 0xcc8f, 0x8656,
746   - 0xcc90, 0xdfba,
747   - 0xcc91, 0x56a3,
748   - 0xcc92, 0xd05a,
749   - 0xcc93, 0x21c2,
750   - 0xcc94, 0x3012,
751   - 0xcc95, 0x1392,
752   - 0xcc96, 0xd05a,
753   - 0xcc97, 0x56a3,
754   - 0xcc98, 0xdfba,
755   - 0xcc99, 0x383,
756   - 0xcc9a, 0x6f72,
757   - 0xcc9b, 0x1002,
758   - 0xcc9c, 0x28c5,
759   - 0xcc9d, 0x3005,
760   - 0xcc9e, 0x4178,
761   - 0xcc9f, 0x5653,
762   - 0xcca0, 0x384,
763   - 0xcca1, 0x22b2,
764   - 0xcca2, 0x3012,
765   - 0xcca3, 0x1002,
766   - 0xcca4, 0x2be5,
767   - 0xcca5, 0x3005,
768   - 0xcca6, 0x41e8,
769   - 0xcca7, 0x5653,
770   - 0xcca8, 0x382,
771   - 0xcca9, 0x002,
772   - 0xccaa, 0x4258,
773   - 0xccab, 0x2474,
774   - 0xccac, 0x3c84,
775   - 0xccad, 0x6437,
776   - 0xccae, 0xdff4,
777   - 0xccaf, 0x6437,
778   - 0xccb0, 0x2ff5,
779   - 0xccb1, 0x3c05,
780   - 0xccb2, 0x8757,
781   - 0xccb3, 0xb888,
782   - 0xccb4, 0x9787,
783   - 0xccb5, 0xdff4,
784   - 0xccb6, 0x6724,
785   - 0xccb7, 0x866a,
786   - 0xccb8, 0x6f72,
787   - 0xccb9, 0x1002,
788   - 0xccba, 0x2d01,
789   - 0xccbb, 0x3011,
790   - 0xccbc, 0x1001,
791   - 0xccbd, 0xc620,
792   - 0xccbe, 0x14e5,
793   - 0xccbf, 0xc621,
794   - 0xccc0, 0xc53d,
795   - 0xccc1, 0xc622,
796   - 0xccc2, 0x3cbe,
797   - 0xccc3, 0xc623,
798   - 0xccc4, 0x4452,
799   - 0xccc5, 0xc624,
800   - 0xccc6, 0xc5c5,
801   - 0xccc7, 0xc625,
802   - 0xccc8, 0xe01e,
803   - 0xccc9, 0xc627,
804   - 0xccca, 0x000,
805   - 0xcccb, 0xc628,
806   - 0xcccc, 0x000,
807   - 0xcccd, 0xc62b,
808   - 0xccce, 0x000,
809   - 0xcccf, 0xc62c,
810   - 0xccd0, 0x000,
811   - 0xccd1, 0x000,
812   - 0xccd2, 0x2d01,
813   - 0xccd3, 0x3011,
814   - 0xccd4, 0x1001,
815   - 0xccd5, 0xc620,
816   - 0xccd6, 0x000,
817   - 0xccd7, 0xc621,
818   - 0xccd8, 0x000,
819   - 0xccd9, 0xc622,
820   - 0xccda, 0x0ce,
821   - 0xccdb, 0xc623,
822   - 0xccdc, 0x07f,
823   - 0xccdd, 0xc624,
824   - 0xccde, 0x032,
825   - 0xccdf, 0xc625,
826   - 0xcce0, 0x000,
827   - 0xcce1, 0xc627,
828   - 0xcce2, 0x000,
829   - 0xcce3, 0xc628,
830   - 0xcce4, 0x000,
831   - 0xcce5, 0xc62b,
832   - 0xcce6, 0x000,
833   - 0xcce7, 0xc62c,
834   - 0xcce8, 0x000,
835   - 0xcce9, 0x000,
836   - 0xccea, 0x2d01,
837   - 0xcceb, 0x3011,
838   - 0xccec, 0x1001,
839   - 0xcced, 0xc502,
840   - 0xccee, 0x609f,
841   - 0xccef, 0xc600,
842   - 0xccf0, 0x2a6e,
843   - 0xccf1, 0xc601,
844   - 0xccf2, 0x2a2c,
845   - 0xccf3, 0xc60c,
846   - 0xccf4, 0x5400,
847   - 0xccf5, 0xc710,
848   - 0xccf6, 0x700,
849   - 0xccf7, 0xc718,
850   - 0xccf8, 0x700,
851   - 0xccf9, 0xc720,
852   - 0xccfa, 0x4700,
853   - 0xccfb, 0xc728,
854   - 0xccfc, 0x700,
855   - 0xccfd, 0xc729,
856   - 0xccfe, 0x1207,
857   - 0xccff, 0xc801,
858   - 0xcd00, 0x7f50,
859   - 0xcd01, 0xc802,
860   - 0xcd02, 0x7760,
861   - 0xcd03, 0xc803,
862   - 0xcd04, 0x7fce,
863   - 0xcd05, 0xc804,
864   - 0xcd06, 0x520e,
865   - 0xcd07, 0xc805,
866   - 0xcd08, 0x5c11,
867   - 0xcd09, 0xc806,
868   - 0xcd0a, 0x3c51,
869   - 0xcd0b, 0xc807,
870   - 0xcd0c, 0x4061,
871   - 0xcd0d, 0xc808,
872   - 0xcd0e, 0x49c1,
873   - 0xcd0f, 0xc809,
874   - 0xcd10, 0x3840,
875   - 0xcd11, 0xc80a,
876   - 0xcd12, 0x000,
877   - 0xcd13, 0xc821,
878   - 0xcd14, 0x002,
879   - 0xcd15, 0xc822,
880   - 0xcd16, 0x046,
881   - 0xcd17, 0xc844,
882   - 0xcd18, 0x182f,
883   - 0xcd19, 0xc013,
884   - 0xcd1a, 0xf341,
885   - 0xcd1b, 0xc01a,
886   - 0xcd1c, 0x446,
887   - 0xcd1d, 0xc024,
888   - 0xcd1e, 0x1000,
889   - 0xcd1f, 0xc025,
890   - 0xcd20, 0xa00,
891   - 0xcd21, 0xc026,
892   - 0xcd22, 0xc0c,
893   - 0xcd23, 0xc027,
894   - 0xcd24, 0xc0c,
895   - 0xcd25, 0xc029,
896   - 0xcd26, 0x0a0,
897   - 0xcd27, 0xc030,
898   - 0xcd28, 0xa00,
899   - 0xcd29, 0xc03c,
900   - 0xcd2a, 0x01c,
901   - 0xcd2b, 0x000,
902   - 0xcd2c, 0x2b84,
903   - 0xcd2d, 0x3c74,
904   - 0xcd2e, 0x6435,
905   - 0xcd2f, 0xdff4,
906   - 0xcd30, 0x6435,
907   - 0xcd31, 0x2806,
908   - 0xcd32, 0x3006,
909   - 0xcd33, 0x8565,
910   - 0xcd34, 0x2b24,
911   - 0xcd35, 0x3c24,
912   - 0xcd36, 0x6436,
913   - 0xcd37, 0x1002,
914   - 0xcd38, 0x2b24,
915   - 0xcd39, 0x3c24,
916   - 0xcd3a, 0x6436,
917   - 0xcd3b, 0x4045,
918   - 0xcd3c, 0x8656,
919   - 0xcd3d, 0x1002,
920   - 0xcd3e, 0x2807,
921   - 0xcd3f, 0x31a7,
922   - 0xcd40, 0x20c4,
923   - 0xcd41, 0x3c24,
924   - 0xcd42, 0x6724,
925   - 0xcd43, 0x1002,
926   - 0xcd44, 0x2807,
927   - 0xcd45, 0x3187,
928   - 0xcd46, 0x20c4,
929   - 0xcd47, 0x3c24,
930   - 0xcd48, 0x6724,
931   - 0xcd49, 0x1002,
932   - 0xcd4a, 0x2514,
933   - 0xcd4b, 0x3c64,
934   - 0xcd4c, 0x6436,
935   - 0xcd4d, 0xdff4,
936   - 0xcd4e, 0x6436,
937   - 0xcd4f, 0x1002,
938   - 0xcd50, 0x2806,
939   - 0xcd51, 0x3cb6,
940   - 0xcd52, 0xc161,
941   - 0xcd53, 0x6134,
942   - 0xcd54, 0x6135,
943   - 0xcd55, 0x5443,
944   - 0xcd56, 0x303,
945   - 0xcd57, 0x6524,
946   - 0xcd58, 0x00b,
947   - 0xcd59, 0x1002,
948   - 0xcd5a, 0xd019,
949   - 0xcd5b, 0x2104,
950   - 0xcd5c, 0x3c24,
951   - 0xcd5d, 0x2105,
952   - 0xcd5e, 0x3805,
953   - 0xcd5f, 0x6524,
954   - 0xcd60, 0xdff4,
955   - 0xcd61, 0x4005,
956   - 0xcd62, 0x6524,
957   - 0xcd63, 0x2e8d,
958   - 0xcd64, 0x303d,
959   - 0xcd65, 0x5dd3,
960   - 0xcd66, 0x306,
961   - 0xcd67, 0x2ff7,
962   - 0xcd68, 0x38f7,
963   - 0xcd69, 0x60b7,
964   - 0xcd6a, 0xdffd,
965   - 0xcd6b, 0x00a,
966   - 0xcd6c, 0x1002,
967   - 0xcd6d, 0
968   - };
969 336 int i, err;
970 337  
971 338 err = set_phy_regs(phy, regs);
... ... @@ -976,9 +343,16 @@
976 343  
977 344 msleep(50);
978 345  
979   - for (i = 0; i < ARRAY_SIZE(twinax_edc) && !err; i += 2)
980   - err = t3_mdio_write(phy, MDIO_MMD_PMAPMD, twinax_edc[i],
981   - twinax_edc[i + 1]);
  346 + if (phy->priv != edc_twinax)
  347 + err = t3_get_edc_fw(phy, EDC_TWX_AEL2005,
  348 + EDC_TWX_AEL2005_SIZE);
  349 + if (err)
  350 + return err;
  351 +
  352 + for (i = 0; i < EDC_TWX_AEL2005_SIZE / sizeof(u16) && !err; i += 2)
  353 + err = t3_mdio_write(phy, MDIO_MMD_PMAPMD,
  354 + phy->phy_cache[i],
  355 + phy->phy_cache[i + 1]);
982 356 if (!err)
983 357 phy->priv = edc_twinax;
984 358 return err;
... ... @@ -1195,405 +569,6 @@
1195 569 { MDIO_MMD_PMAPMD, 0xd092, 0xffff, 0x0000 },
1196 570 { 0, 0, 0, 0 }
1197 571 };
1198   -
1199   - /* TWINAX EDC firmware */
1200   - static u16 twinax_edc[] = {
1201   - 0xd800, 0x4009,
1202   - 0xd801, 0x2fff,
1203   - 0xd802, 0x300f,
1204   - 0xd803, 0x40aa,
1205   - 0xd804, 0x401c,
1206   - 0xd805, 0x401e,
1207   - 0xd806, 0x2ff4,
1208   - 0xd807, 0x3dc4,
1209   - 0xd808, 0x2035,
1210   - 0xd809, 0x3035,
1211   - 0xd80a, 0x6524,
1212   - 0xd80b, 0x2cb2,
1213   - 0xd80c, 0x3012,
1214   - 0xd80d, 0x1002,
1215   - 0xd80e, 0x26e2,
1216   - 0xd80f, 0x3022,
1217   - 0xd810, 0x1002,
1218   - 0xd811, 0x27d2,
1219   - 0xd812, 0x3022,
1220   - 0xd813, 0x1002,
1221   - 0xd814, 0x2822,
1222   - 0xd815, 0x3012,
1223   - 0xd816, 0x1002,
1224   - 0xd817, 0x2492,
1225   - 0xd818, 0x3022,
1226   - 0xd819, 0x1002,
1227   - 0xd81a, 0x2772,
1228   - 0xd81b, 0x3012,
1229   - 0xd81c, 0x1002,
1230   - 0xd81d, 0x23d2,
1231   - 0xd81e, 0x3022,
1232   - 0xd81f, 0x1002,
1233   - 0xd820, 0x22cd,
1234   - 0xd821, 0x301d,
1235   - 0xd822, 0x27f2,
1236   - 0xd823, 0x3022,
1237   - 0xd824, 0x1002,
1238   - 0xd825, 0x5553,
1239   - 0xd826, 0x0307,
1240   - 0xd827, 0x2522,
1241   - 0xd828, 0x3022,
1242   - 0xd829, 0x1002,
1243   - 0xd82a, 0x2142,
1244   - 0xd82b, 0x3012,
1245   - 0xd82c, 0x1002,
1246   - 0xd82d, 0x4016,
1247   - 0xd82e, 0x5e63,
1248   - 0xd82f, 0x0344,
1249   - 0xd830, 0x2142,
1250   - 0xd831, 0x3012,
1251   - 0xd832, 0x1002,
1252   - 0xd833, 0x400e,
1253   - 0xd834, 0x2522,
1254   - 0xd835, 0x3022,
1255   - 0xd836, 0x1002,
1256   - 0xd837, 0x2b52,
1257   - 0xd838, 0x3012,
1258   - 0xd839, 0x1002,
1259   - 0xd83a, 0x2742,
1260   - 0xd83b, 0x3022,
1261   - 0xd83c, 0x1002,
1262   - 0xd83d, 0x25e2,
1263   - 0xd83e, 0x3022,
1264   - 0xd83f, 0x1002,
1265   - 0xd840, 0x2fa4,
1266   - 0xd841, 0x3dc4,
1267   - 0xd842, 0x6624,
1268   - 0xd843, 0x414b,
1269   - 0xd844, 0x56b3,
1270   - 0xd845, 0x03c6,
1271   - 0xd846, 0x866b,
1272   - 0xd847, 0x400c,
1273   - 0xd848, 0x2712,
1274   - 0xd849, 0x3012,
1275   - 0xd84a, 0x1002,
1276   - 0xd84b, 0x2c4b,
1277   - 0xd84c, 0x309b,
1278   - 0xd84d, 0x56b3,
1279   - 0xd84e, 0x03c3,
1280   - 0xd84f, 0x866b,
1281   - 0xd850, 0x400c,
1282   - 0xd851, 0x2272,
1283   - 0xd852, 0x3022,
1284   - 0xd853, 0x1002,
1285   - 0xd854, 0x2742,
1286   - 0xd855, 0x3022,
1287   - 0xd856, 0x1002,
1288   - 0xd857, 0x25e2,
1289   - 0xd858, 0x3022,
1290   - 0xd859, 0x1002,
1291   - 0xd85a, 0x2fb4,
1292   - 0xd85b, 0x3dc4,
1293   - 0xd85c, 0x6624,
1294   - 0xd85d, 0x56b3,
1295   - 0xd85e, 0x03c3,
1296   - 0xd85f, 0x866b,
1297   - 0xd860, 0x401c,
1298   - 0xd861, 0x2c45,
1299   - 0xd862, 0x3095,
1300   - 0xd863, 0x5b53,
1301   - 0xd864, 0x2372,
1302   - 0xd865, 0x3012,
1303   - 0xd866, 0x13c2,
1304   - 0xd867, 0x5cc3,
1305   - 0xd868, 0x2712,
1306   - 0xd869, 0x3012,
1307   - 0xd86a, 0x1312,
1308   - 0xd86b, 0x2b52,
1309   - 0xd86c, 0x3012,
1310   - 0xd86d, 0x1002,
1311   - 0xd86e, 0x2742,
1312   - 0xd86f, 0x3022,
1313   - 0xd870, 0x1002,
1314   - 0xd871, 0x2582,
1315   - 0xd872, 0x3022,
1316   - 0xd873, 0x1002,
1317   - 0xd874, 0x2142,
1318   - 0xd875, 0x3012,
1319   - 0xd876, 0x1002,
1320   - 0xd877, 0x628f,
1321   - 0xd878, 0x2985,
1322   - 0xd879, 0x33a5,
1323   - 0xd87a, 0x25e2,
1324   - 0xd87b, 0x3022,
1325   - 0xd87c, 0x1002,
1326   - 0xd87d, 0x5653,
1327   - 0xd87e, 0x03d2,
1328   - 0xd87f, 0x401e,
1329   - 0xd880, 0x6f72,
1330   - 0xd881, 0x1002,
1331   - 0xd882, 0x628f,
1332   - 0xd883, 0x2304,
1333   - 0xd884, 0x3c84,
1334   - 0xd885, 0x6436,
1335   - 0xd886, 0xdff4,
1336   - 0xd887, 0x6436,
1337   - 0xd888, 0x2ff5,
1338   - 0xd889, 0x3005,
1339   - 0xd88a, 0x8656,
1340   - 0xd88b, 0xdfba,
1341   - 0xd88c, 0x56a3,
1342   - 0xd88d, 0xd05a,
1343   - 0xd88e, 0x2972,
1344   - 0xd88f, 0x3012,
1345   - 0xd890, 0x1392,
1346   - 0xd891, 0xd05a,
1347   - 0xd892, 0x56a3,
1348   - 0xd893, 0xdfba,
1349   - 0xd894, 0x0383,
1350   - 0xd895, 0x6f72,
1351   - 0xd896, 0x1002,
1352   - 0xd897, 0x2b45,
1353   - 0xd898, 0x3005,
1354   - 0xd899, 0x4178,
1355   - 0xd89a, 0x5653,
1356   - 0xd89b, 0x0384,
1357   - 0xd89c, 0x2a62,
1358   - 0xd89d, 0x3012,
1359   - 0xd89e, 0x1002,
1360   - 0xd89f, 0x2f05,
1361   - 0xd8a0, 0x3005,
1362   - 0xd8a1, 0x41c8,
1363   - 0xd8a2, 0x5653,
1364   - 0xd8a3, 0x0382,
1365   - 0xd8a4, 0x0002,
1366   - 0xd8a5, 0x4218,
1367   - 0xd8a6, 0x2474,
1368   - 0xd8a7, 0x3c84,
1369   - 0xd8a8, 0x6437,
1370   - 0xd8a9, 0xdff4,
1371   - 0xd8aa, 0x6437,
1372   - 0xd8ab, 0x2ff5,
1373   - 0xd8ac, 0x3c05,
1374   - 0xd8ad, 0x8757,
1375   - 0xd8ae, 0xb888,
1376   - 0xd8af, 0x9787,
1377   - 0xd8b0, 0xdff4,
1378   - 0xd8b1, 0x6724,
1379   - 0xd8b2, 0x866a,
1380   - 0xd8b3, 0x6f72,
1381   - 0xd8b4, 0x1002,
1382   - 0xd8b5, 0x2641,
1383   - 0xd8b6, 0x3021,
1384   - 0xd8b7, 0x1001,
1385   - 0xd8b8, 0xc620,
1386   - 0xd8b9, 0x0000,
1387   - 0xd8ba, 0xc621,
1388   - 0xd8bb, 0x0000,
1389   - 0xd8bc, 0xc622,
1390   - 0xd8bd, 0x00ce,
1391   - 0xd8be, 0xc623,
1392   - 0xd8bf, 0x007f,
1393   - 0xd8c0, 0xc624,
1394   - 0xd8c1, 0x0032,
1395   - 0xd8c2, 0xc625,
1396   - 0xd8c3, 0x0000,
1397   - 0xd8c4, 0xc627,
1398   - 0xd8c5, 0x0000,
1399   - 0xd8c6, 0xc628,
1400   - 0xd8c7, 0x0000,
1401   - 0xd8c8, 0xc62c,
1402   - 0xd8c9, 0x0000,
1403   - 0xd8ca, 0x0000,
1404   - 0xd8cb, 0x2641,
1405   - 0xd8cc, 0x3021,
1406   - 0xd8cd, 0x1001,
1407   - 0xd8ce, 0xc502,
1408   - 0xd8cf, 0x53ac,
1409   - 0xd8d0, 0xc503,
1410   - 0xd8d1, 0x2cd3,
1411   - 0xd8d2, 0xc600,
1412   - 0xd8d3, 0x2a6e,
1413   - 0xd8d4, 0xc601,
1414   - 0xd8d5, 0x2a2c,
1415   - 0xd8d6, 0xc605,
1416   - 0xd8d7, 0x5557,
1417   - 0xd8d8, 0xc60c,
1418   - 0xd8d9, 0x5400,
1419   - 0xd8da, 0xc710,
1420   - 0xd8db, 0x0700,
1421   - 0xd8dc, 0xc711,
1422   - 0xd8dd, 0x0f06,
1423   - 0xd8de, 0xc718,
1424   - 0xd8df, 0x0700,
1425   - 0xd8e0, 0xc719,
1426   - 0xd8e1, 0x0f06,
1427   - 0xd8e2, 0xc720,
1428   - 0xd8e3, 0x4700,
1429   - 0xd8e4, 0xc721,
1430   - 0xd8e5, 0x0f06,
1431   - 0xd8e6, 0xc728,
1432   - 0xd8e7, 0x0700,
1433   - 0xd8e8, 0xc729,
1434   - 0xd8e9, 0x1207,
1435   - 0xd8ea, 0xc801,
1436   - 0xd8eb, 0x7f50,
1437   - 0xd8ec, 0xc802,
1438   - 0xd8ed, 0x7760,
1439   - 0xd8ee, 0xc803,
1440   - 0xd8ef, 0x7fce,
1441   - 0xd8f0, 0xc804,
1442   - 0xd8f1, 0x520e,
1443   - 0xd8f2, 0xc805,
1444   - 0xd8f3, 0x5c11,
1445   - 0xd8f4, 0xc806,
1446   - 0xd8f5, 0x3c51,
1447   - 0xd8f6, 0xc807,
1448   - 0xd8f7, 0x4061,
1449   - 0xd8f8, 0xc808,
1450   - 0xd8f9, 0x49c1,
1451   - 0xd8fa, 0xc809,
1452   - 0xd8fb, 0x3840,
1453   - 0xd8fc, 0xc80a,
1454   - 0xd8fd, 0x0000,
1455   - 0xd8fe, 0xc821,
1456   - 0xd8ff, 0x0002,
1457   - 0xd900, 0xc822,
1458   - 0xd901, 0x0046,
1459   - 0xd902, 0xc844,
1460   - 0xd903, 0x182f,
1461   - 0xd904, 0xc013,
1462   - 0xd905, 0xf341,
1463   - 0xd906, 0xc084,
1464   - 0xd907, 0x0030,
1465   - 0xd908, 0xc904,
1466   - 0xd909, 0x1401,
1467   - 0xd90a, 0xcb0c,
1468   - 0xd90b, 0x0004,
1469   - 0xd90c, 0xcb0e,
1470   - 0xd90d, 0xa00a,
1471   - 0xd90e, 0xcb0f,
1472   - 0xd90f, 0xc0c0,
1473   - 0xd910, 0xcb10,
1474   - 0xd911, 0xc0c0,
1475   - 0xd912, 0xcb11,
1476   - 0xd913, 0x00a0,
1477   - 0xd914, 0xcb12,
1478   - 0xd915, 0x0007,
1479   - 0xd916, 0xc241,
1480   - 0xd917, 0xa000,
1481   - 0xd918, 0xc243,
1482   - 0xd919, 0x7fe0,
1483   - 0xd91a, 0xc604,
1484   - 0xd91b, 0x000e,
1485   - 0xd91c, 0xc609,
1486   - 0xd91d, 0x00f5,
1487   - 0xd91e, 0xc611,
1488   - 0xd91f, 0x000e,
1489   - 0xd920, 0xc660,
1490   - 0xd921, 0x9600,
1491   - 0xd922, 0xc687,
1492   - 0xd923, 0x0004,
1493   - 0xd924, 0xc60a,
1494   - 0xd925, 0x04f5,
1495   - 0xd926, 0x0000,
1496   - 0xd927, 0x2641,
1497   - 0xd928, 0x3021,
1498   - 0xd929, 0x1001,
1499   - 0xd92a, 0xc620,
1500   - 0xd92b, 0x14e5,
1501   - 0xd92c, 0xc621,
1502   - 0xd92d, 0xc53d,
1503   - 0xd92e, 0xc622,
1504   - 0xd92f, 0x3cbe,
1505   - 0xd930, 0xc623,
1506   - 0xd931, 0x4452,
1507   - 0xd932, 0xc624,
1508   - 0xd933, 0xc5c5,
1509   - 0xd934, 0xc625,
1510   - 0xd935, 0xe01e,
1511   - 0xd936, 0xc627,
1512   - 0xd937, 0x0000,
1513   - 0xd938, 0xc628,
1514   - 0xd939, 0x0000,
1515   - 0xd93a, 0xc62c,
1516   - 0xd93b, 0x0000,
1517   - 0xd93c, 0x0000,
1518   - 0xd93d, 0x2b84,
1519   - 0xd93e, 0x3c74,
1520   - 0xd93f, 0x6435,
1521   - 0xd940, 0xdff4,
1522   - 0xd941, 0x6435,
1523   - 0xd942, 0x2806,
1524   - 0xd943, 0x3006,
1525   - 0xd944, 0x8565,
1526   - 0xd945, 0x2b24,
1527   - 0xd946, 0x3c24,
1528   - 0xd947, 0x6436,
1529   - 0xd948, 0x1002,
1530   - 0xd949, 0x2b24,
1531   - 0xd94a, 0x3c24,
1532   - 0xd94b, 0x6436,
1533   - 0xd94c, 0x4045,
1534   - 0xd94d, 0x8656,
1535   - 0xd94e, 0x5663,
1536   - 0xd94f, 0x0302,
1537   - 0xd950, 0x401e,
1538   - 0xd951, 0x1002,
1539   - 0xd952, 0x2807,
1540   - 0xd953, 0x31a7,
1541   - 0xd954, 0x20c4,
1542   - 0xd955, 0x3c24,
1543   - 0xd956, 0x6724,
1544   - 0xd957, 0x1002,
1545   - 0xd958, 0x2807,
1546   - 0xd959, 0x3187,
1547   - 0xd95a, 0x20c4,
1548   - 0xd95b, 0x3c24,
1549   - 0xd95c, 0x6724,
1550   - 0xd95d, 0x1002,
1551   - 0xd95e, 0x24f4,
1552   - 0xd95f, 0x3c64,
1553   - 0xd960, 0x6436,
1554   - 0xd961, 0xdff4,
1555   - 0xd962, 0x6436,
1556   - 0xd963, 0x1002,
1557   - 0xd964, 0x2006,
1558   - 0xd965, 0x3d76,
1559   - 0xd966, 0xc161,
1560   - 0xd967, 0x6134,
1561   - 0xd968, 0x6135,
1562   - 0xd969, 0x5443,
1563   - 0xd96a, 0x0303,
1564   - 0xd96b, 0x6524,
1565   - 0xd96c, 0x00fb,
1566   - 0xd96d, 0x1002,
1567   - 0xd96e, 0x20d4,
1568   - 0xd96f, 0x3c24,
1569   - 0xd970, 0x2025,
1570   - 0xd971, 0x3005,
1571   - 0xd972, 0x6524,
1572   - 0xd973, 0x1002,
1573   - 0xd974, 0xd019,
1574   - 0xd975, 0x2104,
1575   - 0xd976, 0x3c24,
1576   - 0xd977, 0x2105,
1577   - 0xd978, 0x3805,
1578   - 0xd979, 0x6524,
1579   - 0xd97a, 0xdff4,
1580   - 0xd97b, 0x4005,
1581   - 0xd97c, 0x6524,
1582   - 0xd97d, 0x2e8d,
1583   - 0xd97e, 0x303d,
1584   - 0xd97f, 0x2408,
1585   - 0xd980, 0x35d8,
1586   - 0xd981, 0x5dd3,
1587   - 0xd982, 0x0307,
1588   - 0xd983, 0x8887,
1589   - 0xd984, 0x63a7,
1590   - 0xd985, 0x8887,
1591   - 0xd986, 0x63a7,
1592   - 0xd987, 0xdffd,
1593   - 0xd988, 0x00f9,
1594   - 0xd989, 0x1002,
1595   - 0xd98a, 0x0000,
1596   - };
1597 572 int i, err;
1598 573  
1599 574 /* set uC clock and activate it */
... ... @@ -1606,10 +581,16 @@
1606 581 if (err)
1607 582 return err;
1608 583  
1609   - /* write TWINAX EDC firmware into PHY */
1610   - for (i = 0; i < ARRAY_SIZE(twinax_edc) && !err; i += 2)
1611   - err = t3_mdio_write(phy, MDIO_MMD_PMAPMD, twinax_edc[i],
1612   - twinax_edc[i + 1]);
  584 + if (phy->priv != edc_twinax)
  585 + err = t3_get_edc_fw(phy, EDC_TWX_AEL2020,
  586 + EDC_TWX_AEL2020_SIZE);
  587 + if (err)
  588 + return err;
  589 +
  590 + for (i = 0; i < EDC_TWX_AEL2020_SIZE / sizeof(u16) && !err; i += 2)
  591 + err = t3_mdio_write(phy, MDIO_MMD_PMAPMD,
  592 + phy->phy_cache[i],
  593 + phy->phy_cache[i + 1]);
1613 594 /* activate uC */
1614 595 err = set_phy_regs(phy, uCactivate);
1615 596 if (!err)
drivers/net/cxgb3/common.h
... ... @@ -566,6 +566,15 @@
566 566  
567 567 u32 mmds;
568 568 };
  569 +enum {
  570 + EDC_OPT_AEL2005 = 0,
  571 + EDC_OPT_AEL2005_SIZE = 1084,
  572 + EDC_TWX_AEL2005 = 1,
  573 + EDC_TWX_AEL2005_SIZE = 1464,
  574 + EDC_TWX_AEL2020 = 2,
  575 + EDC_TWX_AEL2020_SIZE = 1628,
  576 + EDC_MAX_SIZE = EDC_TWX_AEL2020_SIZE, /* Max cache size */
  577 +};
569 578  
570 579 /* A PHY instance */
571 580 struct cphy {
... ... @@ -577,6 +586,7 @@
577 586 unsigned long fifo_errors; /* FIFO over/under-flows */
578 587 const struct cphy_ops *ops; /* PHY operations */
579 588 struct mdio_if_info mdio;
  589 + u16 phy_cache[EDC_MAX_SIZE]; /* EDC cache */
580 590 };
581 591  
582 592 /* Convenience MDIO read/write wrappers */
drivers/net/cxgb3/cxgb3_main.c
... ... @@ -964,6 +964,75 @@
964 964  
965 965 #define FW_FNAME "cxgb3/t3fw-%d.%d.%d.bin"
966 966 #define TPSRAM_NAME "cxgb3/t3%c_psram-%d.%d.%d.bin"
  967 +#define AEL2005_OPT_EDC_NAME "cxgb3/ael2005_opt_edc.bin"
  968 +#define AEL2005_TWX_EDC_NAME "cxgb3/ael2005_twx_edc.bin"
  969 +#define AEL2020_TWX_EDC_NAME "cxgb3/ael2005_twx_edc.bin"
  970 +
  971 +static inline const char *get_edc_fw_name(int edc_idx)
  972 +{
  973 + const char *fw_name = NULL;
  974 +
  975 + switch (edc_idx) {
  976 + case EDC_OPT_AEL2005:
  977 + fw_name = AEL2005_OPT_EDC_NAME;
  978 + break;
  979 + case EDC_TWX_AEL2005:
  980 + fw_name = AEL2005_TWX_EDC_NAME;
  981 + break;
  982 + case EDC_TWX_AEL2020:
  983 + fw_name = AEL2020_TWX_EDC_NAME;
  984 + break;
  985 + }
  986 + return fw_name;
  987 +}
  988 +
  989 +int t3_get_edc_fw(struct cphy *phy, int edc_idx, int size)
  990 +{
  991 + struct adapter *adapter = phy->adapter;
  992 + const struct firmware *fw;
  993 + char buf[64];
  994 + u32 csum;
  995 + const __be32 *p;
  996 + u16 *cache = phy->phy_cache;
  997 + int i, ret;
  998 +
  999 + snprintf(buf, sizeof(buf), get_edc_fw_name(edc_idx));
  1000 +
  1001 + ret = request_firmware(&fw, buf, &adapter->pdev->dev);
  1002 + if (ret < 0) {
  1003 + dev_err(&adapter->pdev->dev,
  1004 + "could not upgrade firmware: unable to load %s\n",
  1005 + buf);
  1006 + return ret;
  1007 + }
  1008 +
  1009 + /* check size, take checksum in account */
  1010 + if (fw->size > size + 4) {
  1011 + CH_ERR(adapter, "firmware image too large %u, expected %d\n",
  1012 + (unsigned int)fw->size, size + 4);
  1013 + ret = -EINVAL;
  1014 + }
  1015 +
  1016 + /* compute checksum */
  1017 + p = (const __be32 *)fw->data;
  1018 + for (csum = 0, i = 0; i < fw->size / sizeof(csum); i++)
  1019 + csum += ntohl(p[i]);
  1020 +
  1021 + if (csum != 0xffffffff) {
  1022 + CH_ERR(adapter, "corrupted firmware image, checksum %u\n",
  1023 + csum);
  1024 + ret = -EINVAL;
  1025 + }
  1026 +
  1027 + for (i = 0; i < size / 4 ; i++) {
  1028 + *cache++ = (be32_to_cpu(p[i]) & 0xffff0000) >> 16;
  1029 + *cache++ = be32_to_cpu(p[i]) & 0xffff;
  1030 + }
  1031 +
  1032 + release_firmware(fw);
  1033 +
  1034 + return ret;
  1035 +}
967 1036  
968 1037 static int upgrade_fw(struct adapter *adap)
969 1038 {
... ... @@ -41,7 +41,10 @@
41 41 fw-shipped-$(CONFIG_COMPUTONE) += intelliport2.bin
42 42 fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \
43 43 cxgb3/t3c_psram-1.1.0.bin \
44   - cxgb3/t3fw-7.4.0.bin
  44 + cxgb3/t3fw-7.4.0.bin \
  45 + cxgb3/ael2005_opt_edc.bin \
  46 + cxgb3/ael2005_twx_edc.bin \
  47 + cxgb3/ael2020_twx_edc.bin
45 48 fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin
46 49 fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin
47 50 fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \
... ... @@ -418,6 +418,23 @@
418 418  
419 419 --------------------------------------------------------------------------
420 420  
  421 +Driver: cxgb3 - Chelsio Terminator 3 1G/10G Ethernet adapter
  422 +
  423 +File: cxgb3/ael2005_opt_edc.bin.ihex
  424 +File: cxgb3/ael2005_twx_edc.bin.ihex
  425 +File: cxgb3/ael2020_twx_edc.bin.ihex
  426 +
  427 +Licence:
  428 + * Copyright (c) 2007-2009 NetLogic Microsystems, Inc.
  429 + *
  430 + * Permission is hereby granted for the distribution of this firmware
  431 + * data in hexadecimal or equivalent format, provided this copyright
  432 + * notice is accompanying it.
  433 +
  434 +Found in hex form in kernel source.
  435 +
  436 +--------------------------------------------------------------------------
  437 +
421 438 Driver: e100 -- Intel PRO/100 Ethernet NIC
422 439  
423 440 File: e100/d101m_ucode.bin
firmware/cxgb3/ael2005_opt_edc.bin.ihex
  1 +:10000000CC002FF4CC013CD4CC022015CC0331051C
  2 +:10001000CC046524CC0527FFCC06300FCC072C8BF5
  3 +:10002000CC08300BCC094009CC0A400ECC0B2F7207
  4 +:10003000CC0C3002CC0D1002CC0E2172CC0F301241
  5 +:10004000CC101002CC1125D2CC123012CC131002DD
  6 +:10005000CC14D01ECC1527D2CC163012CC171002DF
  7 +:10006000CC182004CC193C84CC1A6436CC1B200755
  8 +:10007000CC1C3F87CC1D8676CC1E40B7CC1FA74634
  9 +:10008000CC204047CC215673CC222982CC2330028D
  10 +:10009000CC2413D2CC258BBDCC262862CC273012A1
  11 +:1000A000CC281002CC292092CC2A3012CC2B100262
  12 +:1000B000CC2C5CC3CC2D0314CC2E2942CC2F300287
  13 +:1000C000CC301002CC31D019CC322032CC333012AB
  14 +:1000D000CC341002CC352A04CC363C74CC37643591
  15 +:1000E000CC382FA4CC393CD4CC3A6624CC3B5563D5
  16 +:1000F000CC3C2D42CC3D3002CC3E13D2CC3F464DC1
  17 +:10010000CC402862CC413012CC421002CC43203289
  18 +:10011000CC443012CC451002CC462FB4CC473CD452
  19 +:10012000CC486624CC495563CC4A2D42CC4B300296
  20 +:10013000CC4C13D2CC4D2ED2CC4E3002CC4F100230
  21 +:10014000CC502FD2CC513002CC521002CC530004F0
  22 +:10015000CC542942CC553002CC561002CC572092B8
  23 +:10016000CC583012CC591002CC5A5CC3CC5B03176C
  24 +:10017000CC5C2F72CC5D3002CC5E1002CC5F294289
  25 +:10018000CC603002CC611002CC6222CDCC63301D39
  26 +:10019000CC642862CC653012CC661002CC672ED2BB
  27 +:1001A000CC683002CC691002CC6A2D72CC6B300264
  28 +:1001B000CC6C1002CC6D628FCC6E2112CC6F3012E1
  29 +:1001C000CC701002CC715AA3CC722DC2CC73300209
  30 +:1001D000CC741312CC756F72CC761002CC772807D2
  31 +:1001E000CC7831A7CC7920C4CC7A3C24CC7B672452
  32 +:1001F000CC7C1002CC7D2807CC7E3187CC7F20C4FC
  33 +:10020000CC803C24CC816724CC821002CC83251482
  34 +:10021000CC843C64CC856436CC86DFF4CC876436F1
  35 +:10022000CC881002CC8940A4CC8A643CCC8B40168C
  36 +:10023000CC8C8C6CCC8D2B24CC8E3C24CC8F643518
  37 +:10024000CC901002CC912B24CC923C24CC93643AD9
  38 +:10025000CC944025CC958A5ACC961002CC97273165
  39 +:10026000CC983011CC991001CC9AC7A0CC9B01003E
  40 +:10027000CC9CC502CC9D53ACCC9EC503CC9FD5D5A0
  41 +:10028000CCA0C600CCA12A6DCCA2C601CCA32A4C1E
  42 +:10029000CCA4C602CCA50111CCA6C60CCCA7590093
  43 +:1002A000CCA8C710CCA90700CCAAC718CCAB0700B4
  44 +:1002B000CCACC720CCAD4700CCAEC801CCAF7F5092
  45 +:1002C000CCB0C802CCB17760CCB2C803CCB37FCE7F
  46 +:1002D000CCB4C804CCB55700CCB6C805CCB75F11B8
  47 +:1002E000CCB8C806CCB94751CCBAC807CCBB57E18B
  48 +:1002F000CCBCC808CCBD2700CCBEC809CCBF000010
  49 +:10030000CCC0C821CCC10002CCC2C822CCC30014CE
  50 +:10031000CCC4C832CCC51186CCC6C847CCC71E02D7
  51 +:10032000CCC8C013CCC9F341CCCAC01ACCCB04464C
  52 +:10033000CCCCC024CCCD1000CCCEC025CCCF0A0074
  53 +:10034000CCD0C026CCD10C0CCCD2C027CCD30C0C3A
  54 +:10035000CCD4C029CCD500A0CCD6C030CCD70A0094
  55 +:10036000CCD8C03CCCD9001CCCDAC005CCDB7A069A
  56 +:10037000CCDC0000CCDD2731CCDE3011CCDF10012D
  57 +:10038000CCE0C620CCE10000CCE2C621CCE3003FAB
  58 +:10039000CCE4C622CCE50000CCE6C623CCE70000C6
  59 +:1003A000CCE8C624CCE90000CCEAC625CCEB0000A2
  60 +:1003B000CCECC627CCED0000CCEEC628CCEF00007C
  61 +:1003C000CCF0C62CCCF10000CCF20000CCF3280617
  62 +:1003D000CCF43CB6CCF5C161CCF66134CCF76135D8
  63 +:1003E000CCF85443CCF90303CCFA6524CCFB000BC6
  64 +:1003F000CCFC1002CCFD2104CCFE3C24CCFF21051A
  65 +:10040000CD003805CD016524CD02DFF4CD034005D4
  66 +:10041000CD046524CD051002CD065DD3CD070306BE
  67 +:10042000CD082FF7CD0938F7CD0A60B7CD0BDFFD2A
  68 +:10043000CD0C000ACD0D1002CD0E00007CC7AE59C8
  69 +:00000001FF
firmware/cxgb3/ael2005_twx_edc.bin.ihex
  1 +:10000000CC004009CC0127FFCC02300FCC0340AA22
  2 +:10001000CC04401CCC05401ECC062FF4CC073CD4AD
  3 +:10002000CC082035CC093145CC0A6524CC0B26A25E
  4 +:10003000CC0C3012CC0D1002CC0E29C2CC0F3002E9
  5 +:10004000CC101002CC112072CC123012CC13100242
  6 +:10005000CC1422CDCC15301DCC162E52CC1730121C
  7 +:10006000CC181002CC1928E2CC1A3002CC1B10029A
  8 +:10007000CC1C628FCC1D2AC2CC1E3012CC1F1002A9
  9 +:10008000CC205553CC212AE2CC223002CC231302BF
  10 +:10009000CC24401ECC252BE2CC263012CC271002DB
  11 +:1000A000CC282DA2CC293012CC2A1002CC2B2BA28A
  12 +:1000B000CC2C3002CC2D1002CC2E5EE3CC2F0305CD
  13 +:1000C000CC30400ECC312BC2CC323002CC331002BB
  14 +:1000D000CC342B82CC353012CC361002CC37566360
  15 +:1000E000CC380302CC39401ECC3A6F72CC3B1002A4
  16 +:1000F000CC3C628FCC3D2BE2CC3E3012CC3F100288
  17 +:10010000CC4022CDCC41301DCC422E52CC433012BB
  18 +:10011000CC441002CC452522CC463012CC471002EC
  19 +:10012000CC482DA2CC493012CC4A1002CC4B2CA288
  20 +:10013000CC4C3012CC4D1002CC4E2FA4CC4F3CD422
  21 +:10014000CC506624CC51410BCC5256B3CC5303C493
  22 +:10015000CC542FB2CC553002CC561002CC57220BC7
  23 +:10016000CC58303BCC5956B3CC5A03C3CC5B866BCE
  24 +:10017000CC5C400CCC5D23A2CC5E3012CC5F100274
  25 +:10018000CC602DA2CC613012CC621002CC632CA2C8
  26 +:10019000CC643012CC651002CC662FB4CC673CD452
  27 +:1001A000CC686624CC6956B3CC6A03C3CC6B866B2F
  28 +:1001B000CC6C401CCC6D2205CC6E3035CC6F5B53C3
  29 +:1001C000CC702C52CC713002CC7213C2CC735CC395
  30 +:1001D000CC740317CC752522CC763012CC77100264
  31 +:1001E000CC782DA2CC793012CC7A1002CC7B2B8229
  32 +:1001F000CC7C3012CC7D1002CC7E5663CC7F0303C6
  33 +:10020000CC80401ECC810004CC822C42CC833012A6
  34 +:10021000CC841002CC856F72CC861002CC87628FA2
  35 +:10022000CC882304CC893C84CC8A6436CC8BDFF424
  36 +:10023000CC8C6436CC8D2FF5CC8E3005CC8F865689
  37 +:10024000CC90DFBACC9156A3CC92D05ACC9321C299
  38 +:10025000CC943012CC951392CC96D05ACC9756A30E
  39 +:10026000CC98DFBACC990383CC9A6F72CC9B1002E6
  40 +:10027000CC9C28C5CC9D3005CC9E4178CC9F565354
  41 +:10028000CCA00384CCA122B2CCA23012CCA3100209
  42 +:10029000CCA42BE5CCA53005CCA641E8CCA7565381
  43 +:1002A000CCA80382CCA90002CCAA4258CCAB2474BF
  44 +:1002B000CCAC3C84CCAD6437CCAEDFF4CCAF64378F
  45 +:1002C000CCB02FF5CCB13C05CCB28757CCB3B888B5
  46 +:1002D000CCB49787CCB5DFF4CCB66724CCB7866AAC
  47 +:1002E000CCB86F72CCB91002CCBA2D01CCBB301196
  48 +:1002F000CCBC1001CCBDC620CCBE14E5CCBFC62101
  49 +:10030000CCC0C53DCCC1C622CCC23CBECCC3C623EA
  50 +:10031000CCC44452CCC5C624CCC6C5C5CCC7C625A2
  51 +:10032000CCC8E01ECCC9C627CCCA0000CCCBC6289E
  52 +:10033000CCCC0000CCCDC62BCCCE0000CCCFC62C74
  53 +:10034000CCD00000CCD10000CCD22D01CCD33011C8
  54 +:10035000CCD41001CCD5C620CCD60000CCD7C62139
  55 +:10036000CCD80000CCD9C622CCDA00CECCDBC62358
  56 +:10037000CCDC007FCCDDC624CCDE0032CCDFC62551
  57 +:10038000CCE00000CCE1C627CCE20000CCE3C628DC
  58 +:10039000CCE40000CCE5C62BCCE60000CCE7C62CB4
  59 +:1003A000CCE80000CCE90000CCEA2D01CCEB301108
  60 +:1003B000CCEC1001CCEDC502CCEE609FCCEFC600BA
  61 +:1003C000CCF02A6ECCF1C601CCF22A2CCCF3C60CB0
  62 +:1003D000CCF45400CCF5C710CCF60700CCF7C71806
  63 +:1003E000CCF80700CCF9C720CCFA4700CCFBC728D3
  64 +:1003F000CCFC0700CCFDC729CCFE1207CCFFC801FE
  65 +:10040000CD007F50CD01C802CD027760CD03C80377
  66 +:10041000CD047FCECD05C804CD06520ECD07C8054C
  67 +:10042000CD085C11CD09C806CD0A3C51CD0BC807DB
  68 +:10043000CD0C4061CD0DC808CD0E49C1CD0FC80906
  69 +:10044000CD103840CD11C80ACD120000CD13C821FF
  70 +:10045000CD140002CD15C822CD160046CD17C844D4
  71 +:10046000CD18182FCD19C013CD1AF341CD1BC01ACA
  72 +:10047000CD1C0446CD1DC024CD1E1000CD1FC025AF
  73 +:10048000CD200A00CD21C026CD220C0CCD23C027C3
  74 +:10049000CD240C0CCD25C029CD2600A0CD27C03001
  75 +:1004A000CD280A00CD29C03CCD2A001CCD2B000050
  76 +:1004B000CD2C2B84CD2D3C74CD2E6435CD2FDFF487
  77 +:1004C000CD306435CD312806CD323006CD3385654B
  78 +:1004D000CD342B24CD353C24CD366436CD371002B7
  79 +:1004E000CD382B24CD393C24CD3A6436CD3B404524
  80 +:1004F000CD3C8656CD3D1002CD3E2807CD3F31A7DD
  81 +:10050000CD4020C4CD413C24CD426724CD431002D0
  82 +:10051000CD442807CD453187CD4620C4CD473C2466
  83 +:10052000CD486724CD491002CD4A2514CD4B3C64FB
  84 +:10053000CD4C6436CD4DDFF4CD4E6436CD4F100238
  85 +:10054000CD502806CD513CB6CD52C161CD5361345A
  86 +:10055000CD546135CD555443CD560303CD57652455
  87 +:10056000CD58000BCD591002CD5AD019CD5B2104C6
  88 +:10057000CD5C3C24CD5D2105CD5E3805CD5F652485
  89 +:10058000CD60DFF4CD614005CD626524CD632E8D55
  90 +:10059000CD64303DCD655DD3CD660306CD672FF7C5
  91 +:1005A000CD6838F7CD6960B7CD6ADFFDCD6B000A45
  92 +:0C05B000CD6C1002CD6D000052A76B0E48
  93 +:00000001FF
firmware/cxgb3/ael2020_twx_edc.bin.ihex
  1 +:10000000D8004009D8012FFFD802300FD80340AAEA
  2 +:10001000D804401CD805401ED8062FF4D8073DC48C
  3 +:10002000D8082035D8093035D80A6524D80B2CB229
  4 +:10003000D80C3012D80D1002D80E26E2D80F30227C
  5 +:10004000D8101002D81127D2D8123022D81310029B
  6 +:10005000D8142822D8153012D8161002D817249296
  7 +:10006000D8183022D8191002D81A2772D81B30128B
  8 +:10007000D81C1002D81D23D2D81E3022D81F10023F
  9 +:10008000D82022CDD821301DD82227F2D8233022E3
  10 +:10009000D8241002D8255553D8260307D82725225F
  11 +:1000A000D8283022D8291002D82A2142D82B301241
  12 +:1000B000D82C1002D82D4016D82E5E63D82F0344BA
  13 +:1000C000D8302142D8313012D8321002D833400E05
  14 +:1000D000D8342522D8353022D8361002D8372B52C2
  15 +:1000E000D8383012D8391002D83A2742D83B3022BB
  16 +:1000F000D83C1002D83D25E2D83E3022D83F10022D
  17 +:10010000D8402FA4D8413DC4D8426624D843414B9F
  18 +:10011000D84456B3D84503C6D846866BD847400C5A
  19 +:10012000D8482712D8493012D84A1002D84B2C4B45
  20 +:10013000D84C309BD84D56B3D84E03C3D84F866B9E
  21 +:10014000D850400CD8512272D8523022D8531002C5
  22 +:10015000D8542742D8553022D8561002D85725E215
  23 +:10016000D8583022D8591002D85A2FB4D85B3DC481
  24 +:10017000D85C6624D85D56B3D85E03C3D85F866B5F
  25 +:10018000D860401CD8612C45D8623095D8635B5349
  26 +:10019000D8642372D8653012D86613C2D8675CC39E
  27 +:1001A000D8682712D8693012D86A1312D86B2B522C
  28 +:1001B000D86C3012D86D1002D86E2742D86F30221A
  29 +:1001C000D8701002D8712582D8723022D8731002EC
  30 +:1001D000D8742142D8753012D8761002D877628F41
  31 +:1001E000D8782985D87933A5D87A25E2D87B3022EA
  32 +:1001F000D87C1002D87D5653D87E03D2D87F401EBB
  33 +:10020000D8806F72D8811002D882628FD88323047D
  34 +:10021000D8843C84D8856436D886DFF4D8876436A1
  35 +:10022000D8882FF5D8893005D88A8656D88BDFBA7A
  36 +:10023000D88C56A3D88DD05AD88E2972D88F301228
  37 +:10024000D8901392D891D05AD89256A3D893DFBAA7
  38 +:10025000D8940383D8956F72D8961002D8972B45FF
  39 +:10026000D8983005D8994178D89A5653D89B0384AA
  40 +:10027000D89C2A62D89D3012D89E1002D89F2F0594
  41 +:10028000D8A03005D8A141C8D8A25653D8A303821C
  42 +:10029000D8A40002D8A54218D8A62474D8A73C84B4
  43 +:1002A000D8A86437D8A9DFF4D8AA6437D8AB2FF51B
  44 +:1002B000D8AC3C05D8AD8757D8AEB888D8AF9787AB
  45 +:1002C000D8B0DFF4D8B16724D8B2866AD8B36F72D9
  46 +:1002D000D8B41002D8B52641D8B63021D8B710010D
  47 +:1002E000D8B8C620D8B90000D8BAC621D8BB0000FB
  48 +:1002F000D8BCC622D8BD00CED8BEC623D8BF007F8A
  49 +:10030000D8C0C624D8C10032D8C2C625D8C3000080
  50 +:10031000D8C4C627D8C50000D8C6C628D8C700008C
  51 +:10032000D8C8C62CD8C90000D8CA0000D8CB2641EE
  52 +:10033000D8CC3021D8CD1001D8CEC502D8CF53ACFF
  53 +:10034000D8D0C503D8D12CD3D8D2C600D8D32A6EE2
  54 +:10035000D8D4C601D8D52A2CD8D6C605D8D7555753
  55 +:10036000D8D8C60CD8D95400D8DAC710D8DB0700C3
  56 +:10037000D8DCC711D8DD0F06D8DEC718D8DF0700D4
  57 +:10038000D8E0C719D8E10F06D8E2C720D8E3470064
  58 +:10039000D8E4C721D8E50F06D8E6C728D8E7070074
  59 +:1003A000D8E8C729D8E91207D8EAC801D8EB7F50A6
  60 +:1003B000D8ECC802D8ED7760D8EEC803D8EF7FCE6E
  61 +:1003C000D8F0C804D8F1520ED8F2C805D8F35C11A1
  62 +:1003D000D8F4C806D8F53C51D8F6C807D8F740611C
  63 +:1003E000D8F8C808D8F949C1D8FAC809D8FB3840A4
  64 +:1003F000D8FCC80AD8FD0000D8FEC821D8FF0002EA
  65 +:10040000D900C822D9010046D902C844D903182FFF
  66 +:10041000D904C013D905F341D906C084D9070030E7
  67 +:10042000D908C904D9091401D90ACB0CD90B000485
  68 +:10043000D90CCB0ED90DA00AD90ECB0FD90FC0C045
  69 +:10044000D910CB10D911C0C0D912CB11D91300A02B
  70 +:10045000D914CB12D9150007D916C241D917A0005B
  71 +:10046000D918C243D9197FE0D91AC604D91B000E86
  72 +:10047000D91CC609D91D00F5D91EC611D91F000EF9
  73 +:10048000D920C660D9219600D922C687D923000475
  74 +:10049000D924C60AD92504F5D9260000D927264132
  75 +:1004A000D9283021D9291001D92AC620D92B14E501
  76 +:1004B000D92CC621D92DC53DD92EC622D92F3CBE57
  77 +:1004C000D930C623D9314452D932C624D933C5C50F
  78 +:1004D000D934C625D935E01ED936C627D93700000C
  79 +:1004E000D938C628D9390000D93AC62CD93B0000E2
  80 +:1004F000D93C0000D93D2B84D93E3C74D93F6435AA
  81 +:10050000D940DFF4D9416435D9422806D9433006B1
  82 +:10051000D9448565D9452B24D9463C24D94764362E
  83 +:10052000D9481002D9492B24D94A3C24D94B6436E6
  84 +:10053000D94C4045D94D8656D94E5663D94F030202
  85 +:10054000D950401ED9511002D9522807D95331A78A
  86 +:10055000D95420C4D9553C24D9566724D957100200
  87 +:10056000D9582807D9593187D95A20C4D95B3C2496
  88 +:10057000D95C6724D95D1002D95E24F4D95F3C644C
  89 +:10058000D9606436D961DFF4D9626436D963100268
  90 +:10059000D9642006D9653D76D966C161D9676134D1
  91 +:1005A000D9686135D9695443D96A0303D96B652485
  92 +:1005B000D96C00FBD96D1002D96E20D4D96F3C24C0
  93 +:1005C000D9702025D9713005D9726524D9731002EC
  94 +:1005D000D974D019D9752104D9763C24D97721054D
  95 +:1005E000D9783805D9796524D97ADFF4D97B4005E3
  96 +:1005F000D97C6524D97D2E8DD97E303DD97F2408C4
  97 +:10060000D98035D8D9815DD3D9820307D98388872A
  98 +:10061000D98463A7D9858887D98663A7D987DFFD61
  99 +:10062000D98800F9D9891002D98A0000878C30D97D
  100 +:00000001FF