.. | .. |
---|
668 | 668 | * TRCDEVARCH - CoreSight architected register |
---|
669 | 669 | * - Bits[15:12] - Major version |
---|
670 | 670 | * - Bits[19:16] - Minor version |
---|
671 | | - * TRCIDR1 - ETM architected register |
---|
672 | | - * - Bits[11:8] - Major version |
---|
673 | | - * - Bits[7:4] - Minor version |
---|
674 | | - * We must rely on TRCDEVARCH for the version information, |
---|
675 | | - * however we don't want to break the support for potential |
---|
676 | | - * old implementations which might not implement it. Thus |
---|
677 | | - * we fall back to TRCIDR1 if TRCDEVARCH is not implemented |
---|
678 | | - * for memory mapped components. |
---|
| 671 | + * |
---|
| 672 | + * We must rely only on TRCDEVARCH for the version information. Even though, |
---|
| 673 | + * TRCIDR1 also provides the architecture version, it is a "Trace" register |
---|
| 674 | + * and as such must be accessed only with Trace power domain ON. This may |
---|
| 675 | + * not be available at probe time. |
---|
| 676 | + * |
---|
679 | 677 | * Now to make certain decisions easier based on the version |
---|
680 | 678 | * we use an internal representation of the version in the |
---|
681 | 679 | * driver, as follows : |
---|
.. | .. |
---|
699 | 697 | { |
---|
700 | 698 | return ETM_ARCH_VERSION(ETM_DEVARCH_ARCHID_ARCH_VER(devarch), |
---|
701 | 699 | ETM_DEVARCH_REVISION(devarch)); |
---|
702 | | -} |
---|
703 | | - |
---|
704 | | -static inline u8 etm_trcidr_to_arch(u32 trcidr1) |
---|
705 | | -{ |
---|
706 | | - return ETM_ARCH_VERSION(ETM_TRCIDR1_ARCH_MAJOR(trcidr1), |
---|
707 | | - ETM_TRCIDR1_ARCH_MINOR(trcidr1)); |
---|
708 | 700 | } |
---|
709 | 701 | |
---|
710 | 702 | enum etm_impdef_type { |
---|