mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-18 06:58:54 +00:00
net: tsec: Fix mac addr setup portability, cleanup
Fix the 32-bit memory access that is not "endianess safe", i.e. not giving the desired byte layout for LE cpus: tempval = *((uint *) (tmpbuf + 4)), where 'char tmpbuf[]'. Free the stack from rendundant local vars: tmpbuf[] and i. Use a portable type (u32) for the 32bit tsec register value holder: tempval. Signed-off-by: Claudiu Manoil <claudiu.manoil@freescale.com>
This commit is contained in:
parent
82ef75ca5c
commit
b1690bc39c
1 changed files with 8 additions and 10 deletions
|
@ -473,11 +473,9 @@ static void tsec_halt(struct eth_device *dev)
|
|||
*/
|
||||
static int tsec_init(struct eth_device *dev, bd_t * bd)
|
||||
{
|
||||
uint tempval;
|
||||
char tmpbuf[MAC_ADDR_LEN];
|
||||
int i;
|
||||
struct tsec_private *priv = (struct tsec_private *)dev->priv;
|
||||
struct tsec __iomem *regs = priv->regs;
|
||||
u32 tempval;
|
||||
int ret;
|
||||
|
||||
/* Make sure the controller is stopped */
|
||||
|
@ -490,16 +488,16 @@ static int tsec_init(struct eth_device *dev, bd_t * bd)
|
|||
out_be32(®s->ecntrl, ECNTRL_INIT_SETTINGS);
|
||||
|
||||
/* Copy the station address into the address registers.
|
||||
* Backwards, because little endian MACS are dumb */
|
||||
for (i = 0; i < MAC_ADDR_LEN; i++)
|
||||
tmpbuf[MAC_ADDR_LEN - 1 - i] = dev->enetaddr[i];
|
||||
|
||||
tempval = (tmpbuf[0] << 24) | (tmpbuf[1] << 16) | (tmpbuf[2] << 8) |
|
||||
tmpbuf[3];
|
||||
* For a station address of 0x12345678ABCD in transmission
|
||||
* order (BE), MACnADDR1 is set to 0xCDAB7856 and
|
||||
* MACnADDR2 is set to 0x34120000.
|
||||
*/
|
||||
tempval = (dev->enetaddr[5] << 24) | (dev->enetaddr[4] << 16) |
|
||||
(dev->enetaddr[3] << 8) | dev->enetaddr[2];
|
||||
|
||||
out_be32(®s->macstnaddr1, tempval);
|
||||
|
||||
tempval = *((uint *) (tmpbuf + 4));
|
||||
tempval = (dev->enetaddr[1] << 24) | (dev->enetaddr[0] << 16);
|
||||
|
||||
out_be32(®s->macstnaddr2, tempval);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue