Nit: AcpiView, not Acpivew On Wed, Jul 12, 2023 at 4:16 PM levi.yun <yeoreum....@arm.com> wrote: > > Currently, GTDT only prints the value of timer flags in hex. > This change prints the detail informaiton about Timer flags in GTDT. Nit: information
> > before: > Shell> acpiview -s GTDT > ... > Non-Secure EL1 timer FLAGS : 0x2 > Virtual timer GSIV : 0x1B > Virtual timer FLAGS : 0x2 > ... > > after: > Shell> acpiview -s GTDT > ... > Non-Secure EL1 timer FLAGS : 0x2 > Timer Interrupt Mode : Level Trigger(0) > Timer Interrupt Polarity : Active Low(1) > Always-on Capability : 0 > Reserved : 0 > > Virtual timer GSIV : 0x1B > Virtual timer FLAGS : 0x2 > > Signed-off-by: levi.yun <yeoreum....@arm.com> > --- > The changes can be seen at > https://github.com/LeviYeoReum/edk2/compare/master...LeviYeoReum:edk2:refs.geads/2711_gtdt_flags_v1 > ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Gtdt/GtdtParser.c | 111 > +++++++++++++++++--- > 1 file changed, 98 insertions(+), 13 deletions(-) > > diff --git > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Gtdt/GtdtParser.c > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Gtdt/GtdtParser.c > index > e62927098a010a0e1dad8361dcfc6559d32dcebf..0001d4231e88c03fa1e296539e9fbc76eb5dd7e1 > 100644 > --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Gtdt/GtdtParser.c > +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Gtdt/GtdtParser.c > @@ -84,33 +84,118 @@ ValidateGtFrameNumber ( > } > > } > > > > +/** > > + This function prints Triggermode information in timer flags. typo: trigger mode > > + > > + @param [in] Format Print format. > > + @param [in] Ptr Pointer to the start of the field data. > > +**/ > > +STATIC > > +VOID > > +EFIAPI > > +PrintTimerInterruptMode ( > > + IN CONST CHAR16 *Format OPTIONAL, > > + IN UINT8 *Ptr > > + ) > > +{ > > + UINT8 TriggerMode; > > + > > + TriggerMode = (*(UINT8 *)Ptr); You don't need parenthesis here, nor a cast. > > + > > + Print ( > > + L"%s(%d)", Personal opinion, but a space between %s and (%d) would look better maybe? > > + ((TriggerMode) ? L"Edge Trigger" : L"Level Trigger"), You don't need parenthesis around TriggerMode either AFAIK (unless this is some uncrustify BS). > > + TriggerMode > > + ); > > +} > > + > > +/** > > + This function prints Polarity information in timer flags. polarity (lowercase) > > + > > + @param [in] Format Print format. > > + @param [in] Ptr Pointer to the start of the field data. > > +**/ > > +STATIC > > +VOID > > +EFIAPI > > +PrintTimerInterruptPolarity ( > > + IN CONST CHAR16 *Format OPTIONAL, > > + IN UINT8 *Ptr > > + ) > > +{ > > + UINT8 Polarity; > > + > > + Polarity = (*(UINT8 *)Ptr); > > + > > + Print ( > > + L"%s(%d)", > > + ((Polarity) ? L"Active Low" : L"Active High"), > > + Polarity > > + ); Same comments as the above function > > +} > > + > > +/** > > + An ACPI_PARSER array describing the Timer Flags Field in GTDT Table. > > +**/ > > +STATIC CONST ACPI_PARSER TimerFlagsParser[] = { > > + { L"Timer Interrupt Mode", 1, 0, NULL, PrintTimerInterruptMode, > NULL, NULL, NULL }, > > + { L"Timer Interrupt Polarity", 1, 1, NULL, PrintTimerInterruptPolarity, > NULL, NULL, NULL }, > > + { L"Always-on Capability", 1, 2, L"%d", NULL, > NULL, NULL, NULL }, > > + { L"Reserved", 29, 3, L"%d", NULL, > NULL, NULL, NULL }, > > +}; > > + > > +/** > > + This function parses the Timer Flags. > > + > > + @param [in] Format Print format. > > + @param [in] Ptr Pointer to the start of the Timer flags. > > + **/ > > +STATIC > > +VOID > > +EFIAPI > > +DumpTimerFlags ( > > + IN CONST CHAR16 *Format OPTIONAL, > > + IN UINT8 *Ptr > > + ) > > +{ > > + DumpUint32 (L"0x%x\n", Ptr); > > + ParseAcpiBitFields ( > > + TRUE, > > + 2, > > + NULL, > > + Ptr, > > + 4, > > + PARSER_PARAMS (TimerFlagsParser) > > + ); > > +} > > + > > /** > > An ACPI_PARSER array describing the ACPI GTDT Table. > > **/ > > STATIC CONST ACPI_PARSER GtdtParser[] = { > > PARSE_ACPI_HEADER (&AcpiHdrInfo), > > - { L"CntControlBase Physical Address",8, 36, L"0x%lx", NULL, NULL, > > + { L"CntControlBase Physical Address",8, 36, L"0x%lx", NULL, > NULL, > > NULL, NULL }, > > - { L"Reserved", 4, 44, L"0x%x", NULL, > NULL,NULL, NULL }, > > - { L"Secure EL1 timer GSIV", 4, 48, L"0x%x", NULL, > NULL,NULL, NULL }, > > - { L"Secure EL1 timer FLAGS", 4, 52, L"0x%x", NULL, > NULL,NULL, NULL }, > > + { L"Reserved", 4, 44, L"0x%x", NULL, > NULL,NULL, NULL }, > > + { L"Secure EL1 timer GSIV", 4, 48, L"0x%x", NULL, > NULL,NULL, NULL }, > > + { L"Secure EL1 timer FLAGS", 4, 52, NULL, DumpTimerFlags, > NULL,NULL, NULL }, > > > > - { L"Non-Secure EL1 timer GSIV", 4, 56, L"0x%x", NULL, > NULL,NULL, NULL }, > > - { L"Non-Secure EL1 timer FLAGS", 4, 60, L"0x%x", NULL, > NULL,NULL, NULL }, > > + { L"Non-Secure EL1 timer GSIV", 4, 56, L"0x%x", NULL, > NULL,NULL, NULL }, > > + { L"Non-Secure EL1 timer FLAGS", 4, 60, NULL, DumpTimerFlags, > NULL,NULL, NULL }, > > > > - { L"Virtual timer GSIV", 4, 64, L"0x%x", NULL, > NULL,NULL, NULL }, > > - { L"Virtual timer FLAGS", 4, 68, L"0x%x", NULL, > NULL,NULL, NULL }, > > + { L"Virtual timer GSIV", 4, 64, L"0x%x", NULL, > NULL,NULL, NULL }, > > + { L"Virtual timer FLAGS", 4, 68, L"0x%x", DumpTimerFlags, > NULL,NULL, NULL }, > > > > - { L"Non-Secure EL2 timer GSIV", 4, 72, L"0x%x", NULL, > NULL,NULL, NULL }, > > - { L"Non-Secure EL2 timer FLAGS", 4, 76, L"0x%x", NULL, > NULL,NULL, NULL }, > > + { L"Non-Secure EL2 timer GSIV", 4, 72, L"0x%x", NULL, > NULL,NULL, NULL }, > > + { L"Non-Secure EL2 timer FLAGS", 4, 76, L"0x%x", DumpTimerFlags, > NULL,NULL, NULL }, > > > > - { L"CntReadBase Physical address", 8, 80, L"0x%lx", NULL, > NULL,NULL, NULL }, > > + { L"CntReadBase Physical address", 8, 80, L"0x%lx", NULL, > NULL,NULL, NULL }, > > { L"Platform Timer Count", 4, 88, L"%d", NULL, > > (VOID **)&GtdtPlatformTimerCount, NULL, NULL }, > > { L"Platform Timer Offset", 4, 92, L"0x%x", NULL, > > (VOID **)&GtdtPlatformTimerOffset,NULL, NULL }, > > - { L"Virtual EL2 Timer GSIV", 4, 96, L"0x%x", NULL, > NULL,NULL, NULL }, > > - { L"Virtual EL2 Timer Flags", 4, 100, L"0x%x", NULL, > NULL,NULL, NULL } > > + { L"Virtual EL2 Timer GSIV", 4, 96, L"0x%x", NULL, > NULL,NULL, NULL }, > > + { L"Virtual EL2 Timer Flags", 4, 100, L"0x%x", NULL, > NULL,NULL, NULL } > > }; > > > > /** > > -- > Guid("CE165669-3EF3-493F-B85D-6190EE5B9759") > IMPORTANT NOTICE: The contents of this email and any attachments are > confidential and may also be privileged. If you are not the intended > recipient, please notify the sender immediately and do not disclose the > contents to any other person, use it for any purpose, or store or copy the > information in any medium. Thank you. > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#106903): https://edk2.groups.io/g/devel/message/106903 Mute This Topic: https://groups.io/mt/100101594/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-