On 1 March 2016 at 10:36, Leif Lindholm <[email protected]> wrote:
> On Tue, Mar 01, 2016 at 09:39:18AM +0100, Ard Biesheuvel wrote:
>> >> As far as the Primecell ID is concerned, let's just whitelist whatever
>> >> TC2 exposes, even if in error.
>> >
>> > You mean rather than mask the "stuck bit", specifically check if the
>> > register is 0 or 2?  (Where 2 is added as a #define to the header).
>>
>> I don't care deeply either way, but supporting the documented and the
>> actual ID explicitly seems more correct, unless the difference is in
>> the revision field?
>
> So ... PeriphID3 holds the "Configuration" bits, so in any case, they
> would be irrelevant for identification.
>

Well, the problem is not what they are called, it is what the
refmanual of the IP block explicitly states its value can be expected
to be.

> We really should macroise this up a bit better, like Linux does:
> /* Some drivers don't use the struct amba_device */
> #define AMBA_CONFIG_BITS(a) (((a) >> 24) & 0xff)
> #define AMBA_REV_BITS(a) (((a) >> 20) & 0x0f)
> #define AMBA_MANF_BITS(a) (((a) >> 12) & 0xff)
> #define AMBA_PART_BITS(a) ((a) & 0xfff)
>
> #define amba_config(d)  AMBA_CONFIG_BITS((d)->periphid)
> #define amba_rev(d)     AMBA_REV_BITS((d)->periphid)
> #define amba_manf(d)    AMBA_MANF_BITS((d)->periphid)
> #define amba_part(d)    AMBA_PART_BITS((d)->periphid)
>
> (after proper extraction of the 32-bit value from the 4 registers of
> course)
>
> Amusingly, the Linux driver ignores pretty much everything, and
> accepts any primecell with ARM as designer.
> Opens up for cute devicetree hacks, I guess...
>

As I said, I don't care deeply. If part and manufacturer is
sufficient, then let's drop the other bits
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to