blob: 676be22bcab3a1b3c900990ab35f80a2b8f893a2 [file] [log] [blame]
Waldemar Brodkorb121915c2010-06-08 19:06:01 +02001/*
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
Hauke Mehrtens111bd982012-12-26 19:51:14 +000011#ifndef __BCM47XX_NVRAM_H
12#define __BCM47XX_NVRAM_H
Waldemar Brodkorb121915c2010-06-08 19:06:01 +020013
14#include <linux/types.h>
Hauke Mehrtens59833fc2010-11-27 17:46:00 +010015#include <linux/kernel.h>
Waldemar Brodkorb121915c2010-06-08 19:06:01 +020016
17struct nvram_header {
18 u32 magic;
19 u32 len;
20 u32 crc_ver_init; /* 0:7 crc, 8:15 ver, 16:31 sdram_init */
21 u32 config_refresh; /* 0:15 sdram_config, 16:31 sdram_refresh */
22 u32 config_ncdl; /* ncdl values for memc */
23};
24
25#define NVRAM_HEADER 0x48534C46 /* 'FLSH' */
26#define NVRAM_VERSION 1
27#define NVRAM_HEADER_SIZE 20
28#define NVRAM_SPACE 0x8000
29
30#define FLASH_MIN 0x00020000 /* Minimum flash size */
31
32#define NVRAM_MAX_VALUE_LEN 255
33#define NVRAM_MAX_PARAM_LEN 64
34
Rafał Miłecki21400f22014-09-03 22:59:45 +020035int bcm47xx_nvram_init_from_mem(u32 base, u32 lim);
Hauke Mehrtens111bd982012-12-26 19:51:14 +000036extern int bcm47xx_nvram_getenv(char *name, char *val, size_t val_len);
Waldemar Brodkorb121915c2010-06-08 19:06:01 +020037
Hauke Mehrtens111bd982012-12-26 19:51:14 +000038static inline void bcm47xx_nvram_parse_macaddr(char *buf, u8 macaddr[6])
Hauke Mehrtens59833fc2010-11-27 17:46:00 +010039{
Hauke Mehrtens9cbda722011-05-10 23:31:34 +020040 if (strchr(buf, ':'))
41 sscanf(buf, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", &macaddr[0],
42 &macaddr[1], &macaddr[2], &macaddr[3], &macaddr[4],
43 &macaddr[5]);
44 else if (strchr(buf, '-'))
45 sscanf(buf, "%hhx-%hhx-%hhx-%hhx-%hhx-%hhx", &macaddr[0],
46 &macaddr[1], &macaddr[2], &macaddr[3], &macaddr[4],
47 &macaddr[5]);
48 else
49 printk(KERN_WARNING "Can not parse mac address: %s\n", buf);
Hauke Mehrtens59833fc2010-11-27 17:46:00 +010050}
51
Hauke Mehrtens62cf3bc2013-09-18 13:31:15 +020052int bcm47xx_nvram_gpio_pin(const char *name);
53
Hauke Mehrtens111bd982012-12-26 19:51:14 +000054#endif /* __BCM47XX_NVRAM_H */