On Fri, Nov 06, 2015 at 04:21:47PM +0100, Ard Biesheuvel wrote: > On 6 November 2015 at 16:11, Jeremy Linton <jeremy.lin...@arm.com> wrote: > > On 11/06/2015 01:31 AM, Ard Biesheuvel wrote: > >> > >> On 5 November 2015 at 22:51, Jeremy Linton <jeremy.lin...@arm.com> wrote: > >>> > >>> > >>> [Guids.common] > >>> gArmJunoTokenSpaceGuid = { 0xa1147a20, 0x3144, 0x4f8d, { 0x82, > >>> 0x95, 0xb4, 0x83, 0x11, 0xc8, 0xe4, 0xa4 } } > >>> + gArmJunoDxe = { 0x1484ebe8, 0x2681, 0x45f1, { 0xa2, > >>> 0xe5, 0x12, 0xec, 0xad, 0x89, 0x3b, 0x62 } } # match the ArmJunoDxe FILE > >>> GUID > >>> > >> > >> I am not too crazy about using the BEFORE/AFTER depexes. Is this the > >> only way to achieve the ordering? > >> > > > > Ard, > > > > I'm sort of a EDK2 newbie, so there may be a lot of alternatives I didn't > > consider. > > > > That said, that dependency is there to assure that the PcdJunoRevision is > > set before the SMBIOS module loads. Initially I tried to make this module > > sort of "generic" but as I progressed it became more Juno specific, so I > > moved it into the Juno directory and set this dependency. > > > > I am keenly aware of the fact that there isn't a single BEFORE/AFTER > > dependency in the whole project. Further I don't really like the fact that i > > couldn't directly reference the FILE GUID (rather having to duplicate it). I > > considered SOR (which results in a reverse dependency if you will) and > > adding a bogus protocol/etc, duplicating the juno revision detection logic, > > none of which seemed like a particularly clean implementation. To my > > limited knowledge this seemed like the least evil solution. It also bothered > > me that I couldn't set an AFTER with a protocol dependency.... > > > > Suggestions welcome, > > > > AFAICT, this is all you need to do to get the revision, right? > > ----------8<---------------- > // > // We detect whether we are running on a Juno r0 or Juno r1 board at > // runtime by checking the value of the MIDR register. > // > > Midr = ArmReadMidr (); > CpuType = (Midr >> ARM_CPU_TYPE_SHIFT) & ARM_CPU_TYPE_MASK; > CpuRev = Midr & ARM_CPU_REV_MASK; > > switch (CpuType) { > case ARM_CPU_TYPE_A53: > if (CpuRev == ARM_CPU_REV (0, 0)) { > JunoRevision = JUNO_R0; > } else if (CpuRev == ARM_CPU_REV (0, 3)) { > JunoRevision = JUNO_R1; > } > break; > > case ARM_CPU_TYPE_A57: > if (CpuRev == ARM_CPU_REV (0, 0)) { > JunoRevision = JUNO_R0; > } else if (CpuRev == ARM_CPU_REV (1, 1)) { > JunoRevision = JUNO_R1; > } > } > ----------8<---------------- > > I would much prefer duplicating this over adding dynamic PCDs and > BEFORE/AFTER depexes. If you really insist, you can break it out into > a separate static library, but I wouldn't even bother tbh.
Static inline macro in ArmJunoPkg/Include/ArmPlatform.h? / Leif _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel