@@ -257,11 +257,6 @@ typedef struct {
257257 void (* SetTarget )(void * arg );
258258} SYSTEM_DRIVER ;
259259
260- typedef struct {
261- char * * Brand ;
262- enum CODENAME CN ;
263- } ARCH_ST ;
264-
265260typedef struct
266261{
267262 struct SIGNATURE Signature ;
@@ -285,7 +280,7 @@ typedef struct
285280 } Uncore ;
286281 PROCESSOR_SPECIFIC * Specific ;
287282 SYSTEM_DRIVER SystemDriver ;
288- ARCH_ST Architecture ;
283+ char * * Architecture ;
289284} ARCH ;
290285
291286static CLOCK BaseClock_GenericMachine (unsigned int ratio ) ;
@@ -296,19 +291,27 @@ static void Stop_GenericMachine(void *arg) ;
296291static void InitTimer_GenericMachine (unsigned int cpu ) ;
297292
298293/* [Void] */
299- #define _Void_Signature {.ExtFamily=0x00, .Family=0x0, .ExtModel=0x0, .Model=0x0}
294+ #define _Void_Signature {.ExtFamily=0x00,.Family=0x0, .ExtModel=0x0,.Model=0x0}
295+ #define _Andes {.ExtFamily=0x31, .Family=0xE, .ExtModel=0x0, .Model=0x0}
296+ #define _SiFive {.ExtFamily=0x48, .Family=0x9, .ExtModel=0x0, .Model=0x0}
297+ #define _T_Head {.ExtFamily=0x5B, .Family=0x7, .ExtModel=0x0, .Model=0x0}
298+ #define _Veyron {.ExtFamily=0x61, .Family=0xF, .ExtModel=0x0, .Model=0x0}
299+ #define _SpacemiT {.ExtFamily=0x71, .Family=0x0, .ExtModel=0x0, .Model=0x0}
300300
301301typedef kernel_ulong_t (* PCI_CALLBACK )(struct pci_dev * );
302302
303303static struct pci_device_id PCI_Void_ids [] = {
304304 {0 , }
305305};
306306
307- static char * CodeName [CODENAMES ] = {
308- [ RV64 ] = "RV64"
309- };
307+ static char * Arch_Generic [] = ZLIST ("RV64" );
308+ static char * Arch_Andes [] = ZLIST ("Andes" );
309+ static char * Arch_SiFive [] = ZLIST ("SiFive" );
310+ static char * Arch_T_Head [] = ZLIST ("T-Head" );
311+ static char * Arch_Veyron [] = ZLIST ("Veyron" );
312+ static char * Arch_SpacemiT [] = ZLIST ("SpacemiT" );
310313
311- #define Arch_Misc_Processor {.Brand = ZLIST(NULL), .CN = RV64}
314+ static PROCESSOR_SPECIFIC Void_Specific [] = { { 0 } };
312315
313316static PROCESSOR_SPECIFIC Misc_Specific_Processor [] = {
314317 {0 }
@@ -373,6 +376,146 @@ static ARCH Arch[ARCHITECTURES] = {
373376 },
374377 .Specific = Misc_Specific_Processor ,
375378 .SystemDriver = VOID_Driver ,
376- .Architecture = Arch_Misc_Processor
379+ .Architecture = Arch_Generic
380+ },
381+ [Andes ] = {
382+ .Signature = _Andes ,
383+ .Query = Query_GenericMachine ,
384+ .Update = PerCore_GenericMachine ,
385+ .Start = Start_GenericMachine ,
386+ .Stop = Stop_GenericMachine ,
387+ .Exit = NULL ,
388+ .Timer = InitTimer_GenericMachine ,
389+ .BaseClock = BaseClock_GenericMachine ,
390+ .ClockMod = NULL ,
391+ .TurboClock = NULL ,
392+ .thermalFormula = THERMAL_FORMULA_NONE ,
393+ #ifdef CONFIG_PM_OPP
394+ .voltageFormula = VOLTAGE_FORMULA_OPP ,
395+ #else
396+ .voltageFormula = VOLTAGE_FORMULA_NONE ,
397+ #endif
398+ .powerFormula = POWER_FORMULA_NONE ,
399+ .PCI_ids = PCI_Void_ids ,
400+ .Uncore = {
401+ .Start = NULL ,
402+ .Stop = NULL ,
403+ .ClockMod = NULL
404+ },
405+ .Specific = Void_Specific ,
406+ .SystemDriver = VOID_Driver ,
407+ .Architecture = Arch_Andes
408+ },
409+ [SiFive ] = {
410+ .Signature = _SiFive ,
411+ .Query = Query_GenericMachine ,
412+ .Update = PerCore_GenericMachine ,
413+ .Start = Start_GenericMachine ,
414+ .Stop = Stop_GenericMachine ,
415+ .Exit = NULL ,
416+ .Timer = InitTimer_GenericMachine ,
417+ .BaseClock = BaseClock_GenericMachine ,
418+ .ClockMod = NULL ,
419+ .TurboClock = NULL ,
420+ .thermalFormula = THERMAL_FORMULA_NONE ,
421+ #ifdef CONFIG_PM_OPP
422+ .voltageFormula = VOLTAGE_FORMULA_OPP ,
423+ #else
424+ .voltageFormula = VOLTAGE_FORMULA_NONE ,
425+ #endif
426+ .powerFormula = POWER_FORMULA_NONE ,
427+ .PCI_ids = PCI_Void_ids ,
428+ .Uncore = {
429+ .Start = NULL ,
430+ .Stop = NULL ,
431+ .ClockMod = NULL
432+ },
433+ .Specific = Void_Specific ,
434+ .SystemDriver = VOID_Driver ,
435+ .Architecture = Arch_SiFive
377436 },
437+ [T_Head ] = {
438+ .Signature = _T_Head ,
439+ .Query = Query_GenericMachine ,
440+ .Update = PerCore_GenericMachine ,
441+ .Start = Start_GenericMachine ,
442+ .Stop = Stop_GenericMachine ,
443+ .Exit = NULL ,
444+ .Timer = InitTimer_GenericMachine ,
445+ .BaseClock = BaseClock_GenericMachine ,
446+ .ClockMod = NULL ,
447+ .TurboClock = NULL ,
448+ .thermalFormula = THERMAL_FORMULA_NONE ,
449+ #ifdef CONFIG_PM_OPP
450+ .voltageFormula = VOLTAGE_FORMULA_OPP ,
451+ #else
452+ .voltageFormula = VOLTAGE_FORMULA_NONE ,
453+ #endif
454+ .powerFormula = POWER_FORMULA_NONE ,
455+ .PCI_ids = PCI_Void_ids ,
456+ .Uncore = {
457+ .Start = NULL ,
458+ .Stop = NULL ,
459+ .ClockMod = NULL
460+ },
461+ .Specific = Void_Specific ,
462+ .SystemDriver = VOID_Driver ,
463+ .Architecture = Arch_T_Head
464+ },
465+ [Veyron ] = {
466+ .Signature = _Veyron ,
467+ .Query = Query_GenericMachine ,
468+ .Update = PerCore_GenericMachine ,
469+ .Start = Start_GenericMachine ,
470+ .Stop = Stop_GenericMachine ,
471+ .Exit = NULL ,
472+ .Timer = InitTimer_GenericMachine ,
473+ .BaseClock = BaseClock_GenericMachine ,
474+ .ClockMod = NULL ,
475+ .TurboClock = NULL ,
476+ .thermalFormula = THERMAL_FORMULA_NONE ,
477+ #ifdef CONFIG_PM_OPP
478+ .voltageFormula = VOLTAGE_FORMULA_OPP ,
479+ #else
480+ .voltageFormula = VOLTAGE_FORMULA_NONE ,
481+ #endif
482+ .powerFormula = POWER_FORMULA_NONE ,
483+ .PCI_ids = PCI_Void_ids ,
484+ .Uncore = {
485+ .Start = NULL ,
486+ .Stop = NULL ,
487+ .ClockMod = NULL
488+ },
489+ .Specific = Void_Specific ,
490+ .SystemDriver = VOID_Driver ,
491+ .Architecture = Arch_Veyron
492+ },
493+ [SpacemiT ] = {
494+ .Signature = _SpacemiT ,
495+ .Query = Query_GenericMachine ,
496+ .Update = PerCore_GenericMachine ,
497+ .Start = Start_GenericMachine ,
498+ .Stop = Stop_GenericMachine ,
499+ .Exit = NULL ,
500+ .Timer = InitTimer_GenericMachine ,
501+ .BaseClock = BaseClock_GenericMachine ,
502+ .ClockMod = NULL ,
503+ .TurboClock = NULL ,
504+ .thermalFormula = THERMAL_FORMULA_NONE ,
505+ #ifdef CONFIG_PM_OPP
506+ .voltageFormula = VOLTAGE_FORMULA_OPP ,
507+ #else
508+ .voltageFormula = VOLTAGE_FORMULA_NONE ,
509+ #endif
510+ .powerFormula = POWER_FORMULA_NONE ,
511+ .PCI_ids = PCI_Void_ids ,
512+ .Uncore = {
513+ .Start = NULL ,
514+ .Stop = NULL ,
515+ .ClockMod = NULL
516+ },
517+ .Specific = Void_Specific ,
518+ .SystemDriver = VOID_Driver ,
519+ .Architecture = Arch_SpacemiT
520+ }
378521};
0 commit comments