[U-Boot] what's the uboot way to pass eth*addr to linux ?

Maxim Podbereznyi lisarden at gmail.com
Sat Feb 20 15:49:53 CET 2010


Hi!

Well, I know nothing about coldfire but for osk5912 it is well known where
all partitions reside on the flash. You can find it the u-boot config file
for coldfire.

The code for MontaVista with kernel 2.4:

static int nicGetMacAddress(u8* macaddr)
{
    int ret = 0;

    if (check_mem_region(FLASH_PARAM_
ADDR, FLASH_PARAM_SIZE)) {
      printk("enc28j60: flash memory already in use\n");
      return ENXIO;
    }
    else {
      unsigned long base = FLASH_PARAM_ADDR;
      unsigned long size = FLASH_PARAM_SIZE;
      void *vbase;
      unsigned char *sf = NULL;
      int res;
      int i;
      char *endptr;

      res = request_mem_region(base, size, "enc28j60-flash");
      if (!res) {
        printk("enc28j60: flash memory mapping failed\n");
        return ENXIO;
      }
      vbase = ioremap(base, size);
      if (!vbase) {
        printk("enc28j60: flash memory ioremap failed\n");
        return ENOMEM;
      }
      sf = (char *)vbase;

      endptr = fw_getenv(sf, "ethaddr");
      if (endptr)
      for (i=0; i<6; i++) { // IPv4
        unsigned long tmp;
        char *str = endptr+1;
        tmp = enc28_strtoul(str, &endptr, 16);
        *macaddr++ = tmp;
      }
      else {
        printk("enc28j60: no ethaddr variable in u-boot environment");
        ret = EINVAL;
      }

      iounmap(vbase);
      release_resource(res);
    }

    return ret;
}

Hope you can easily adapt it to your kernel!


2010/2/20 Philippe De Muyter <phdm at macqel.be>

> Hi Maxim,
>
> On Sat, Feb 20, 2010 at 10:30:32AM +0300, Maxim Podbereznyi wrote:
> > Hi Philippe!
> >
> > May be it is a little bit tricky but you can just read the u-boot
> > environment from you Linux driver and use the "ethaddr" variable. I did
> the
> > same for osk5912
>
> Sorry, I replied too fast, It seems that I misunderstood your answer.
> How do you access the U-boot environment from the linux driver ?
> Is there a linux kernel library function to retrieve one element of a
> U-boot environment ?  Does U-boot tell linux where the U-boot environment
> resides in memory ?
>
> Philippe
>


More information about the U-Boot mailing list