nvram.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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 __NVRAM_H
  11. #define __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. #define NVRAM_ERR_INV_PARAM -8
  29. #define NVRAM_ERR_ENVNOTFOUND -9
  30. extern int nvram_getenv(char *name, char *val, size_t val_len);
  31. static inline void nvram_parse_macaddr(char *buf, u8 *macaddr)
  32. {
  33. if (strchr(buf, ':'))
  34. sscanf(buf, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", &macaddr[0],
  35. &macaddr[1], &macaddr[2], &macaddr[3], &macaddr[4],
  36. &macaddr[5]);
  37. else if (strchr(buf, '-'))
  38. sscanf(buf, "%hhx-%hhx-%hhx-%hhx-%hhx-%hhx", &macaddr[0],
  39. &macaddr[1], &macaddr[2], &macaddr[3], &macaddr[4],
  40. &macaddr[5]);
  41. else
  42. printk(KERN_WARNING "Can not parse mac address: %s\n", buf);
  43. }
  44. #endif