wdenk | 34b613e | 2002-12-17 01:51:00 +0000 | [diff] [blame] | 1 | /* |
Grant Erickson | 73a4e5e | 2008-05-06 20:16:15 -0700 | [diff] [blame] | 2 | * (C) Copyright 2002-2008 |
wdenk | 34b613e | 2002-12-17 01:51:00 +0000 | [diff] [blame] | 3 | * Wolfgang Denk, DENX Software Engineering, wd@denx.de. |
| 4 | * |
Wolfgang Denk | bd8ec7e | 2013-10-07 13:07:26 +0200 | [diff] [blame] | 5 | * SPDX-License-Identifier: GPL-2.0+ |
wdenk | 34b613e | 2002-12-17 01:51:00 +0000 | [diff] [blame] | 6 | */ |
| 7 | |
Andreas Fenkart | aa01f8d | 2015-12-09 13:13:24 +0100 | [diff] [blame] | 8 | #include <aes.h> |
| 9 | #include <stdint.h> |
| 10 | |
Tom Rini | cfd1e54 | 2012-12-20 07:30:27 -0700 | [diff] [blame] | 11 | /* Pull in the current config to define the default environment */ |
Peter Robinson | 217f95b | 2015-06-17 16:58:32 +0100 | [diff] [blame] | 12 | #include <linux/kconfig.h> |
| 13 | |
Tom Rini | cfd1e54 | 2012-12-20 07:30:27 -0700 | [diff] [blame] | 14 | #ifndef __ASSEMBLY__ |
| 15 | #define __ASSEMBLY__ /* get only #defines from config.h */ |
| 16 | #include <config.h> |
| 17 | #undef __ASSEMBLY__ |
| 18 | #else |
| 19 | #include <config.h> |
| 20 | #endif |
| 21 | |
wdenk | 57b2d80 | 2003-06-27 21:31:46 +0000 | [diff] [blame] | 22 | /* |
Frans Meulenbroeks | 014117d | 2012-01-05 08:09:10 +0000 | [diff] [blame] | 23 | * To build the utility with the static configuration |
| 24 | * comment out the next line. |
Wolfgang Denk | 8f399b3 | 2011-05-01 20:44:23 +0200 | [diff] [blame] | 25 | * See included "fw_env.config" sample file |
wdenk | e7f34c6 | 2003-01-11 09:48:40 +0000 | [diff] [blame] | 26 | * for notes on configuration. |
| 27 | */ |
wdenk | 92bbe3f | 2003-04-20 14:04:18 +0000 | [diff] [blame] | 28 | #define CONFIG_FILE "/etc/fw_env.config" |
wdenk | e7f34c6 | 2003-01-11 09:48:40 +0000 | [diff] [blame] | 29 | |
Joe Hershberger | 671adc4 | 2012-10-03 09:38:46 +0000 | [diff] [blame] | 30 | #ifndef CONFIG_FILE |
wdenk | 34b613e | 2002-12-17 01:51:00 +0000 | [diff] [blame] | 31 | #define HAVE_REDUND /* For systems with 2 env sectors */ |
| 32 | #define DEVICE1_NAME "/dev/mtd1" |
| 33 | #define DEVICE2_NAME "/dev/mtd2" |
wdenk | e7f34c6 | 2003-01-11 09:48:40 +0000 | [diff] [blame] | 34 | #define DEVICE1_OFFSET 0x0000 |
wdenk | 34b613e | 2002-12-17 01:51:00 +0000 | [diff] [blame] | 35 | #define ENV1_SIZE 0x4000 |
Frans Meulenbroeks | 416ef38 | 2011-12-01 03:30:04 +0000 | [diff] [blame] | 36 | #define DEVICE1_ESIZE 0x4000 |
| 37 | #define DEVICE1_ENVSECTORS 2 |
wdenk | e7f34c6 | 2003-01-11 09:48:40 +0000 | [diff] [blame] | 38 | #define DEVICE2_OFFSET 0x0000 |
wdenk | 34b613e | 2002-12-17 01:51:00 +0000 | [diff] [blame] | 39 | #define ENV2_SIZE 0x4000 |
Frans Meulenbroeks | 416ef38 | 2011-12-01 03:30:04 +0000 | [diff] [blame] | 40 | #define DEVICE2_ESIZE 0x4000 |
| 41 | #define DEVICE2_ENVSECTORS 2 |
Joe Hershberger | 671adc4 | 2012-10-03 09:38:46 +0000 | [diff] [blame] | 42 | #endif |
wdenk | 34b613e | 2002-12-17 01:51:00 +0000 | [diff] [blame] | 43 | |
Tom Rini | cfd1e54 | 2012-12-20 07:30:27 -0700 | [diff] [blame] | 44 | #ifndef CONFIG_BAUDRATE |
| 45 | #define CONFIG_BAUDRATE 115200 |
| 46 | #endif |
| 47 | |
| 48 | #ifndef CONFIG_BOOTDELAY |
| 49 | #define CONFIG_BOOTDELAY 5 /* autoboot after 5 seconds */ |
| 50 | #endif |
| 51 | |
| 52 | #ifndef CONFIG_BOOTCOMMAND |
| 53 | #define CONFIG_BOOTCOMMAND \ |
| 54 | "bootp; " \ |
| 55 | "setenv bootargs root=/dev/nfs nfsroot=${serverip}:${rootpath} " \ |
| 56 | "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; " \ |
| 57 | "bootm" |
| 58 | #endif |
| 59 | |
Andreas Fenkart | aa01f8d | 2015-12-09 13:13:24 +0100 | [diff] [blame] | 60 | struct common_args { |
| 61 | #ifdef CONFIG_FILE |
| 62 | char *config_file; |
| 63 | #endif |
| 64 | uint8_t aes_key[AES_KEY_LENGTH]; |
| 65 | int aes_flag; /* Is AES encryption used? */ |
| 66 | }; |
| 67 | extern struct common_args common_args; |
| 68 | |
Andreas Fenkart | 33e9177 | 2015-12-09 13:13:23 +0100 | [diff] [blame] | 69 | struct printenv_args { |
Andreas Fenkart | aa01f8d | 2015-12-09 13:13:24 +0100 | [diff] [blame] | 70 | int name_suppress; |
Andreas Fenkart | 33e9177 | 2015-12-09 13:13:23 +0100 | [diff] [blame] | 71 | }; |
| 72 | extern struct printenv_args printenv_args; |
| 73 | |
| 74 | struct setenv_args { |
| 75 | char *script_file; |
| 76 | }; |
| 77 | extern struct setenv_args setenv_args; |
| 78 | |
Andreas Fenkart | aa01f8d | 2015-12-09 13:13:24 +0100 | [diff] [blame] | 79 | int parse_aes_key(char *key, uint8_t *bin_key); |
| 80 | |
Grant Erickson | 73a4e5e | 2008-05-06 20:16:15 -0700 | [diff] [blame] | 81 | extern int fw_printenv(int argc, char *argv[]); |
Markus Klotzbücher | 94db557 | 2007-11-27 10:23:20 +0100 | [diff] [blame] | 82 | extern char *fw_getenv (char *name); |
| 83 | extern int fw_setenv (int argc, char *argv[]); |
Stefano Babic | ada628b | 2010-05-24 12:08:16 +0200 | [diff] [blame] | 84 | extern int fw_parse_script(char *fname); |
| 85 | extern int fw_env_open(void); |
| 86 | extern int fw_env_write(char *name, char *value); |
| 87 | extern int fw_env_close(void); |
wdenk | 34b613e | 2002-12-17 01:51:00 +0000 | [diff] [blame] | 88 | |
| 89 | extern unsigned long crc32 (unsigned long, const unsigned char *, unsigned); |