commit
9dd5dad887
@ -1,118 +0,0 @@ |
||||
/*
|
||||
* Control GPIO pins on the fly |
||||
* |
||||
* Copyright (c) 2008-2010 Analog Devices Inc. |
||||
* |
||||
* Licensed under the GPL-2 or later. |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
#include <command.h> |
||||
#include <linux/ctype.h> |
||||
|
||||
#include <asm/blackfin.h> |
||||
#include <asm/gpio.h> |
||||
|
||||
enum { |
||||
GPIO_INPUT, |
||||
GPIO_SET, |
||||
GPIO_CLEAR, |
||||
GPIO_TOGGLE, |
||||
}; |
||||
|
||||
int do_gpio(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) |
||||
{ |
||||
if (argc == 2 && !strcmp(argv[1], "status")) { |
||||
bfin_gpio_labels(); |
||||
return 0; |
||||
} |
||||
|
||||
if (argc != 3) |
||||
show_usage: |
||||
return cmd_usage(cmdtp); |
||||
|
||||
/* parse the behavior */ |
||||
ulong sub_cmd; |
||||
switch (argv[1][0]) { |
||||
case 'i': sub_cmd = GPIO_INPUT; break; |
||||
case 's': sub_cmd = GPIO_SET; break; |
||||
case 'c': sub_cmd = GPIO_CLEAR; break; |
||||
case 't': sub_cmd = GPIO_TOGGLE; break; |
||||
default: goto show_usage; |
||||
} |
||||
|
||||
/* parse the pin with format: [p][port]<#> */ |
||||
const char *str_pin = argv[2]; |
||||
|
||||
/* grab the [p]<port> portion */ |
||||
ulong port_base; |
||||
if (tolower(*str_pin) == 'p') ++str_pin; |
||||
switch (tolower(*str_pin)) { |
||||
#ifdef GPIO_PA0 |
||||
case 'a': port_base = GPIO_PA0; break; |
||||
#endif |
||||
#ifdef GPIO_PB0 |
||||
case 'b': port_base = GPIO_PB0; break; |
||||
#endif |
||||
#ifdef GPIO_PC0 |
||||
case 'c': port_base = GPIO_PC0; break; |
||||
#endif |
||||
#ifdef GPIO_PD0 |
||||
case 'd': port_base = GPIO_PD0; break; |
||||
#endif |
||||
#ifdef GPIO_PE0 |
||||
case 'e': port_base = GPIO_PE0; break; |
||||
#endif |
||||
#ifdef GPIO_PF0 |
||||
case 'f': port_base = GPIO_PF0; break; |
||||
#endif |
||||
#ifdef GPIO_PG0 |
||||
case 'g': port_base = GPIO_PG0; break; |
||||
#endif |
||||
#ifdef GPIO_PH0 |
||||
case 'h': port_base = GPIO_PH0; break; |
||||
#endif |
||||
#ifdef GPIO_PI0 |
||||
case 'i': port_base = GPIO_PI0; break; |
||||
#endif |
||||
#ifdef GPIO_PJ |
||||
case 'j': port_base = GPIO_PJ0; break; |
||||
#endif |
||||
default: goto show_usage; |
||||
} |
||||
|
||||
/* grab the <#> portion */ |
||||
ulong pin = simple_strtoul(str_pin + 1, NULL, 10); |
||||
if (pin > 15) |
||||
goto show_usage; |
||||
|
||||
/* grab the pin before we tweak it */ |
||||
ulong gpio = port_base + pin; |
||||
gpio_request(gpio, "cmd_gpio"); |
||||
|
||||
/* finally, let's do it: set direction and exec command */ |
||||
ulong value; |
||||
if (sub_cmd == GPIO_INPUT) { |
||||
gpio_direction_input(gpio); |
||||
value = gpio_get_value(gpio); |
||||
} else { |
||||
switch (sub_cmd) { |
||||
case GPIO_SET: value = 1; break; |
||||
case GPIO_CLEAR: value = 0; break; |
||||
case GPIO_TOGGLE: value = !gpio_get_value(gpio); break; |
||||
default: goto show_usage; |
||||
} |
||||
gpio_direction_output(gpio, value); |
||||
} |
||||
printf("gpio: pin %lu on port %c (gpio %lu) value is %lu\n", |
||||
pin, *str_pin, gpio, value); |
||||
|
||||
gpio_free(gpio); |
||||
|
||||
return value; |
||||
} |
||||
|
||||
U_BOOT_CMD(gpio, 3, 0, do_gpio, |
||||
"input/set/clear/toggle gpio output pins", |
||||
"<input|set|clear|toggle> <port><pin>\n" |
||||
" - input/set/clear/toggle the specified pin (e.g. PF10)"); |
@ -0,0 +1,89 @@ |
||||
/*
|
||||
* Control GPIO pins on the fly |
||||
* |
||||
* Copyright (c) 2008-2011 Analog Devices Inc. |
||||
* |
||||
* Licensed under the GPL-2 or later. |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
#include <command.h> |
||||
|
||||
#include <asm/gpio.h> |
||||
|
||||
#ifndef name_to_gpio |
||||
#define name_to_gpio(name) simple_strtoul(name, NULL, 10) |
||||
#endif |
||||
|
||||
enum gpio_cmd { |
||||
GPIO_INPUT, |
||||
GPIO_SET, |
||||
GPIO_CLEAR, |
||||
GPIO_TOGGLE, |
||||
}; |
||||
|
||||
static int do_gpio(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) |
||||
{ |
||||
int gpio; |
||||
enum gpio_cmd sub_cmd; |
||||
ulong value; |
||||
const char *str_cmd, *str_gpio; |
||||
|
||||
#ifdef gpio_status |
||||
if (argc == 2 && !strcmp(argv[1], "status")) { |
||||
gpio_status(); |
||||
return 0; |
||||
} |
||||
#endif |
||||
|
||||
if (argc != 3) |
||||
show_usage: |
||||
return cmd_usage(cmdtp); |
||||
str_cmd = argv[1]; |
||||
str_gpio = argv[2]; |
||||
|
||||
/* parse the behavior */ |
||||
switch (*str_cmd) { |
||||
case 'i': sub_cmd = GPIO_INPUT; break; |
||||
case 's': sub_cmd = GPIO_SET; break; |
||||
case 'c': sub_cmd = GPIO_CLEAR; break; |
||||
case 't': sub_cmd = GPIO_TOGGLE; break; |
||||
default: goto show_usage; |
||||
} |
||||
|
||||
/* turn the gpio name into a gpio number */ |
||||
gpio = name_to_gpio(str_gpio); |
||||
if (gpio < 0) |
||||
goto show_usage; |
||||
|
||||
/* grab the pin before we tweak it */ |
||||
if (gpio_request(gpio, "cmd_gpio")) { |
||||
printf("gpio: requesting pin %u failed\n", gpio); |
||||
return -1; |
||||
} |
||||
|
||||
/* finally, let's do it: set direction and exec command */ |
||||
if (sub_cmd == GPIO_INPUT) { |
||||
gpio_direction_input(gpio); |
||||
value = gpio_get_value(gpio); |
||||
} else { |
||||
switch (sub_cmd) { |
||||
case GPIO_SET: value = 1; break; |
||||
case GPIO_CLEAR: value = 0; break; |
||||
case GPIO_TOGGLE: value = !gpio_get_value(gpio); break; |
||||
default: goto show_usage; |
||||
} |
||||
gpio_direction_output(gpio, value); |
||||
} |
||||
printf("gpio: pin %s (gpio %i) value is %lu\n", |
||||
str_gpio, gpio, value); |
||||
|
||||
gpio_free(gpio); |
||||
|
||||
return value; |
||||
} |
||||
|
||||
U_BOOT_CMD(gpio, 3, 0, do_gpio, |
||||
"input/set/clear/toggle gpio pins", |
||||
"<input|set|clear|toggle> <pin>\n" |
||||
" - input/set/clear/toggle the specified pin"); |
@ -0,0 +1,53 @@ |
||||
/*
|
||||
* (C) Copyright 2000 |
||||
* Wolfgang Denk, DENX Software Engineering, wd@denx.de. |
||||
* |
||||
* See file CREDITS for list of people who contributed to this |
||||
* project. |
||||
* |
||||
* This program is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU General Public License as |
||||
* published by the Free Software Foundation; either version 2 of |
||||
* the License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program; if not, write to the Free Software |
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
||||
* MA 02111-1307 USA |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
#include <command.h> |
||||
#include <u-boot/md5.h> |
||||
|
||||
static int do_md5sum(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) |
||||
{ |
||||
unsigned long addr, len; |
||||
unsigned int i; |
||||
u8 output[16]; |
||||
|
||||
if (argc < 3) |
||||
return cmd_usage(cmdtp); |
||||
|
||||
addr = simple_strtoul(argv[1], NULL, 16); |
||||
len = simple_strtoul(argv[2], NULL, 16); |
||||
|
||||
md5((unsigned char *) addr, len, output); |
||||
printf("md5 for %08lx ... %08lx ==> ", addr, addr + len - 1); |
||||
for (i = 0; i < 16; i++) |
||||
printf("%02x", output[i]); |
||||
printf("\n"); |
||||
|
||||
return 0; |
||||
} |
||||
|
||||
U_BOOT_CMD( |
||||
md5sum, 3, 1, do_md5sum, |
||||
"compute MD5 message digest", |
||||
"address count" |
||||
); |
@ -0,0 +1,53 @@ |
||||
/*
|
||||
* (C) Copyright 2000 |
||||
* Wolfgang Denk, DENX Software Engineering, wd@denx.de. |
||||
* |
||||
* See file CREDITS for list of people who contributed to this |
||||
* project. |
||||
* |
||||
* This program is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU General Public License as |
||||
* published by the Free Software Foundation; either version 2 of |
||||
* the License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program; if not, write to the Free Software |
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
||||
* MA 02111-1307 USA |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
#include <command.h> |
||||
#include <sha1.h> |
||||
|
||||
static int do_sha1sum(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) |
||||
{ |
||||
unsigned long addr, len; |
||||
unsigned int i; |
||||
u8 output[20]; |
||||
|
||||
if (argc < 3) |
||||
return cmd_usage(cmdtp); |
||||
|
||||
addr = simple_strtoul(argv[1], NULL, 16); |
||||
len = simple_strtoul(argv[2], NULL, 16); |
||||
|
||||
sha1_csum((unsigned char *) addr, len, output); |
||||
printf("SHA1 for %08lx ... %08lx ==> ", addr, addr + len - 1); |
||||
for (i = 0; i < 20; i++) |
||||
printf("%02x", output[i]); |
||||
printf("\n"); |
||||
|
||||
return 0; |
||||
} |
||||
|
||||
U_BOOT_CMD( |
||||
sha1sum, 3, 1, do_sha1sum, |
||||
"compute SHA1 message digest", |
||||
"address count" |
||||
); |
@ -0,0 +1,59 @@ |
||||
/*
|
||||
* (C) Copyright 2000 |
||||
* Wolfgang Denk, DENX Software Engineering, wd@denx.de. |
||||
* |
||||
* See file CREDITS for list of people who contributed to this |
||||
* project. |
||||
* |
||||
* This program is free software; you can redistribute it and/or |
||||
* modify it under the terms of the GNU General Public License as |
||||
* published by the Free Software Foundation; either version 2 of |
||||
* the License, or (at your option) any later version. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with this program; if not, write to the Free Software |
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, |
||||
* MA 02111-1307 USA |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
#include <command.h> |
||||
|
||||
static int do_unzip(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) |
||||
{ |
||||
unsigned long src, dst; |
||||
unsigned long src_len = ~0UL, dst_len = ~0UL; |
||||
char buf[32]; |
||||
|
||||
switch (argc) { |
||||
case 4: |
||||
dst_len = simple_strtoul(argv[3], NULL, 16); |
||||
/* fall through */ |
||||
case 3: |
||||
src = simple_strtoul(argv[1], NULL, 16); |
||||
dst = simple_strtoul(argv[2], NULL, 16); |
||||
break; |
||||
default: |
||||
return cmd_usage(cmdtp); |
||||
} |
||||
|
||||
if (gunzip((void *) dst, dst_len, (void *) src, &src_len) != 0) |
||||
return 1; |
||||
|
||||
printf("Uncompressed size: %ld = 0x%lX\n", src_len, src_len); |
||||
sprintf(buf, "%lX", src_len); |
||||
setenv("filesize", buf); |
||||
|
||||
return 0; |
||||
} |
||||
|
||||
U_BOOT_CMD( |
||||
unzip, 4, 1, do_unzip, |
||||
"unzip a memory region", |
||||
"srcaddr dstaddr [dstsize]" |
||||
); |
Loading…
Reference in new issue