|
|
1.1 ! root 1: /****************************************************************************** ! 2: * Copyright (c) 2004, 2008 IBM Corporation ! 3: * All rights reserved. ! 4: * This program and the accompanying materials ! 5: * are made available under the terms of the BSD License ! 6: * which accompanies this distribution, and is available at ! 7: * http://www.opensource.org/licenses/bsd-license.php ! 8: * ! 9: * Contributors: ! 10: * IBM Corporation - initial implementation ! 11: *****************************************************************************/ ! 12: ! 13: #ifndef __NVRAM_H ! 14: #define __NVRAM_H 1 ! 15: ! 16: /* data structures */ ! 17: ! 18: typedef struct { ! 19: unsigned long addr; ! 20: long len; ! 21: } partition_t; ! 22: ! 23: /* macros */ ! 24: ! 25: #define DEBUG(x...) ! 26: // #define DEBUG(x...) printf(x); ! 27: ! 28: #ifndef ALIGN ! 29: #define ALIGN(x, a) (((x) + ((a) - 1)) & ~((a) - 1)) ! 30: #endif ! 31: ! 32: #define NULL ((void *)0) ! 33: ! 34: #define PARTITION_HEADER_SIZE 16 ! 35: ! 36: /* FIXME this should be done complete and in a more prominent place */ ! 37: #define __LITTLE_ENDIAN 1234 ! 38: #define __BIG_ENDIAN 4321 ! 39: #ifdef __i386__ ! 40: #define __BYTE_ORDER __LITTLE_ENDIAN ! 41: #else ! 42: #define __BYTE_ORDER __BIG_ENDIAN ! 43: #endif ! 44: #if __BYTE_ORDER == __BIG_ENDIAN ! 45: #define cpu_to_be64(x) (x) ! 46: #define be64_to_cpu(x) (x) ! 47: #define cpu_to_be32(x) (x) ! 48: #define be32_to_cpu(x) (x) ! 49: #else ! 50: #include <byteswap.h> ! 51: #define cpu_to_be64(x) bswap_64(x) ! 52: #define be64_to_cpu(x) bswap_64(x) ! 53: #define cpu_to_be32(x) bswap_32(x) ! 54: #define be32_to_cpu(x) bswap_32(x) ! 55: #endif ! 56: ! 57: /* exported functions */ ! 58: ! 59: #define nvram_access_proto(type,name) \ ! 60: type nvram_read_##name(unsigned int offset); \ ! 61: void nvram_write_##name(unsigned int offset, type data); ! 62: ! 63: nvram_access_proto(uint8_t, byte) ! 64: nvram_access_proto(uint16_t, word) ! 65: nvram_access_proto(uint32_t, dword) ! 66: nvram_access_proto(uint64_t, qword) ! 67: ! 68: /* nvram.c */ ! 69: ! 70: char *get_nvram_buffer(int len); ! 71: void free_nvram_buffer(char *buffer); ! 72: int nvramlog_printf(const char* fmt, ...); ! 73: partition_t get_partition(unsigned int type, char *name); ! 74: void erase_nvram(int offset, int len); ! 75: int wipe_partition(partition_t partition, int header_only); ! 76: partition_t new_nvram_partition(int type, char *name, int len); ! 77: int increase_nvram_partition_size(partition_t partition, int newsize); ! 78: int clear_nvram_partition(partition_t part); ! 79: int delete_nvram_partition(partition_t part); ! 80: void reset_nvram(void); ! 81: void wipe_nvram(void); ! 82: void nvram_debug(void); ! 83: ! 84: /* envvar.c */ ! 85: char *get_env(partition_t part, char *envvar); ! 86: int add_env(partition_t part, char *envvar, char *value); ! 87: int del_env(partition_t part, char *envvar); ! 88: int set_env(partition_t part, char *envvar, char *value); ! 89: ! 90: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.