[PATCH v2.6.26] gianfar: Determine TBIPA value dynamically
Andy Fleming
afleming at freescale.com
Sat Apr 12 05:06:07 EST 2008
On Apr 11, 2008, at 10:31, Scott Wood wrote:
> On Thu, Apr 10, 2008 at 06:34:31PM -0500, Andy Fleming wrote:
>>
>> + /*
>> + * This is mildly evil, but so is our hardware for doing this.
>> + * Also, we have to cast back to struct gfar_mii because of
>> + * definition weirdness done in gianfar.h.
>> + */
>> + enet_regs = (struct gfar __iomem *)
>> + ((char *)regs - offsetof(struct gfar, gfar_mii_regs));
>
> Can we use to_container() here?
I tried. Technically, we can. But the issue is that struct gfar
*enet_regs->gfar_mii_regs is declared:
u8 gfar_mii_regs[24];
I could not find any sequence of castings that made the warning go
away about casting that to a struct gfar_mii __iomem *. And that
includes mucking around with the declaration of gfar_mii_regs. I
vaguely recall determining that you couldn't make it a struct, because
you can't guarantee gcc won't much with the size of the struct. Or
something. Suffice it to say, this worked, and wasn't much wordier.
But I really did spend a couple hours banging my head against sparse
trying to get the pointers to agree.
Andy
More information about the Linuxppc-dev
mailing list