1212
1313#include <xuantie/xuantie_quirk.h>
1414#include <xuantie/xuantie_pmc.h>
15+ #include <xuantie/xuantie_link.h>
16+
17+ static u32 gquirk = 0 ;
1518
1619int xuantie_final_init (bool cold_boot )
1720{
1821 if (cold_boot ) {
19- xuantie_pmc_device_init ();
22+ if (gquirk & QUIRK_XUANTIE_PMC )
23+ xuantie_pmc_device_init ();
24+ if (gquirk & QUIRK_XUANTIE_LINK )
25+ xuantie_link_pmu_device_init ();
2026 }
2127
2228 return generic_final_init (cold_boot );
@@ -27,19 +33,28 @@ static int xuantie_dummy_platform_init(const void *fdt, int nodeoff,
2733{
2834 const struct xuantie_generic_quirks * data = match -> data ;
2935
30- if ( data -> quirk & QUIRK_XUANTIE_PMC )
31- generic_platform_ops .final_init = xuantie_final_init ;
36+ gquirk = data -> quirk ;
37+ generic_platform_ops .final_init = xuantie_final_init ;
3238
3339 return 0 ;
3440}
3541
42+ static const struct xuantie_generic_quirks xuantie_quirks = {
43+ .quirk = QUIRK_XUANTIE_PMC | QUIRK_XUANTIE_LINK ,
44+ };
45+
3646static const struct xuantie_generic_quirks xuantie_pmc_quirks = {
3747 .quirk = QUIRK_XUANTIE_PMC ,
3848};
3949
50+ static const struct xuantie_generic_quirks xuantie_link_quirks = {
51+ .quirk = QUIRK_XUANTIE_LINK ,
52+ };
53+
4054static const struct fdt_match xuantie_dummy_match [] = {
41- { .compatible = "xuantie,dummy" , .data = & xuantie_pmc_quirks },
55+ { .compatible = "xuantie,dummy" , .data = & xuantie_quirks },
4256 { .compatible = "xuantie,pmc" , .data = & xuantie_pmc_quirks },
57+ { .compatible = "xuantie,link" , .data = & xuantie_link_quirks },
4358 { },
4459};
4560
0 commit comments