> +struct tsi108_prv_data {
> + volatile u32 regs; /* Base of normal regs */
> + volatile u32 phyregs; /* Base of register bank used for PHY access */
Why volatile? This looks really wrong here.
> + data->regs = (u32)ioremap(einfo->regs, 0x400); /*FIX ME */
> + data->phyregs = (u32)ioremap(einfo->phyregs, 0x400); /*FIX ME */
What needs to be fixed here? And why are you casting the result of
ioremap to u32? Shouldn't you keep the normal return value?