bcm47xx_nvram.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /*
  2. * Copyright (C) 2005, Broadcom Corporation
  3. * Copyright (C) 2006, Felix Fietkau <nbd@openwrt.org>
  4. *
  5. * This program is free software; you can redistribute it and/or modify it
  6. * under the terms of the GNU General Public License as published by the
  7. * Free Software Foundation; either version 2 of the License, or (at your
  8. * option) any later version.
  9. */
  10. #ifndef __BCM47XX_NVRAM_H
  11. #define __BCM47XX_NVRAM_H
  12. #include <linux/types.h>
  13. #include <linux/kernel.h>
  14. struct nvram_header {
  15. u32 magic;
  16. u32 len;
  17. u32 crc_ver_init; /* 0:7 crc, 8:15 ver, 16:31 sdram_init */
  18. u32 config_refresh; /* 0:15 sdram_config, 16:31 sdram_refresh */
  19. u32 config_ncdl; /* ncdl values for memc */
  20. };
  21. #define NVRAM_HEADER 0x48534C46 /* 'FLSH' */
  22. #define NVRAM_VERSION 1
  23. #define NVRAM_HEADER_SIZE 20
  24. #define NVRAM_SPACE 0x8000
  25. #define FLASH_MIN 0x00020000 /* Minimum flash size */
  26. #define NVRAM_MAX_VALUE_LEN 255
  27. #define NVRAM_MAX_PARAM_LEN 64
  28. extern int bcm47xx_nvram_getenv(char *name, char *val, size_t val_len);
  29. static inline void bcm47xx_nvram_parse_macaddr(char *buf, u8 macaddr[6])
  30. {
  31. if (strchr(buf, ':'))
  32. sscanf(buf, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", &macaddr[0],
  33. &macaddr[1], &macaddr[2], &macaddr[3], &macaddr[4],
  34. &macaddr[5]);
  35. else if (strchr(buf, '-'))
  36. sscanf(buf, "%hhx-%hhx-%hhx-%hhx-%hhx-%hhx", &macaddr[0],
  37. &macaddr[1], &macaddr[2], &macaddr[3], &macaddr[4],
  38. &macaddr[5]);
  39. else
  40. printk(KERN_WARNING "Can not parse mac address: %s\n", buf);
  41. }
  42. #endif /* __BCM47XX_NVRAM_H */