Index: u-boot-1.3.2/board/freescale/mpc8313erdb/mpc8313erdb.c =================================================================== --- u-boot-1.3.2.orig/board/freescale/mpc8313erdb/mpc8313erdb.c +++ u-boot-1.3.2/board/freescale/mpc8313erdb/mpc8313erdb.c @@ -29,6 +29,7 @@ #include #include #include +#include DECLARE_GLOBAL_DATA_PTR; @@ -44,6 +45,48 @@ int board_early_init_f(void) return 0; } +int misc_init_f(void) +{ + uchar value; + uchar i; + +#ifdef PRE_INIT_GPIO + value=PRE_INIT_GPIO; + + for(i=0;igpio[0]; + if(ucGpio<32) + { + ulMask=1<<(31-ucGpio); + iopd->dir |= ulMask; + iopd->dat |= ulMask; + } +} + +void gpio_clear(unsigned char ucGpio) +{ + unsigned long ulMask=0; + volatile gpio83xx_t *iopd = &((immap_t *)CFG_IMMR)->gpio[0]; + if(ucGpio<32) + { + ulMask=1<<(31-ucGpio); + iopd->dir |= ulMask; + iopd->dat &= ~ulMask; + } +} +char gpio_get(unsigned char ucGpio) +{ + unsigned long ulMask=0; + volatile gpio83xx_t *iopd = &((immap_t *)CFG_IMMR)->gpio[0]; + if(ucGpio<32) + { + ulMask=1<<(31-ucGpio); + } + return (iopd->dat& ulMask)? 1:0; +} +#endif /* * The following are used to control the SPI chip selects for the SPI command. */ Index: u-boot-1.3.2/common/cmd_gpio.c =================================================================== --- /dev/null +++ u-boot-1.3.2/common/cmd_gpio.c @@ -0,0 +1,76 @@ +/* + * (C) Copyright 2001 + * Alexandre Coffignal, CenoSYS, alexandre.coffignal@cenosys.com + * + * 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 +#include +#include +#include + + +int do_gpio (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) +{ + unsigned char ucGpio; + + if (argc < 3) + goto usage; + + ucGpio = simple_strtoul (argv[2], NULL, 10); + + if (!strncmp(argv[1], "set", 3)) + { + gpio_set(ucGpio); + } + else + if (!strncmp(argv[1], "clear", 5)) + { + gpio_clear(ucGpio); + } + else + if (!strncmp(argv[1], "get", 3)) + { + printf("%s %s %d = %d\n",argv[0],argv[1],ucGpio, gpio_get(ucGpio)); + return 0; + } + else + goto usage; + + printf("%s %s %d\n",argv[0],argv[1],ucGpio); + + return 0; + +usage : + printf ("Usage:\n%s\n", cmdtp->usage); + return 1; +} /* do_gpio() */ + +/***************************************************/ + +U_BOOT_CMD( + gpio, 3, 1, do_gpio, + "gpio - General Purpose Input/Output\n", + " - Set or clear General Purpose Output.\n" + " - Set or clear General Purpose Output.\n" + " - number of gpio to be set/clear/get \n" +); + Index: u-boot-1.3.2/common/Makefile =================================================================== --- u-boot-1.3.2.orig/common/Makefile +++ u-boot-1.3.2/common/Makefile @@ -50,6 +50,7 @@ endif COBJS-$(CONFIG_CMD_DISPLAY) += cmd_display.o COBJS-$(CONFIG_CMD_DOC) += cmd_doc.o COBJS-$(CONFIG_CMD_DTT) += cmd_dtt.o +COBJS-$(CONFIG_CMD_GPIO) += cmd_gpio.o COBJS-y += cmd_eeprom.o COBJS-$(CONFIG_CMD_ELF) += cmd_elf.o COBJS-$(CONFIG_CMD_EXT2) += cmd_ext2.o Index: u-boot-1.3.2/include/configs/MPC8313ERDB.h =================================================================== --- u-boot-1.3.2.orig/include/configs/MPC8313ERDB.h +++ u-boot-1.3.2/include/configs/MPC8313ERDB.h @@ -49,6 +49,7 @@ #define CONFIG_SYS_CLK_FREQ CONFIG_83XX_CLKIN #define CONFIG_BOARD_EARLY_INIT_F /* call board_pre_init */ +#define CONFIG_MISC_INIT_F #define CFG_IMMR 0xE0000000 @@ -370,6 +371,7 @@ #define CONFIG_CMD_NAND #define CONFIG_CMD_JFFS2 #define CONFIG_CMD_SPI +#define CONFIG_CMD_GPIO #if defined(CFG_RAMBOOT) #undef CONFIG_CMD_ENV @@ -392,6 +394,11 @@ #define CONFIG_HARD_SPI /* SPI with hardware support */ #undef CONFIG_SOFT_SPI /* SPI bit-banged */ +/* GPIO */ +#define PRE_INIT_GPIO 0x28 +#define INIT_GPIO 0x08 +#define MAX_GPIO_OUT 7 + /* * Miscellaneous configurable options */ @@ -457,7 +464,7 @@ /* System IO Config */ #define CFG_SICRH (SICRH_TSOBI1 | SICRH_TSOBI2) /* RGMII */ -#define CFG_SICRL SICRL_USBDR /* Enable Internal USB Phy */ +#define CFG_SICRL (SICRL_USBDR |SICRL_LBC) /* Enable Internal USB Phy */ #define CFG_HID0_INIT 0x000000000 #define CFG_HID0_FINAL (HID0_ENABLE_MACHINE_CHECK | \ Index: u-boot-1.3.2/include/gpio.h =================================================================== --- /dev/null +++ u-boot-1.3.2/include/gpio.h @@ -0,0 +1,9 @@ +#ifndef __GPIO_H__ +#define __GPIO_H__ + +extern void gpio_set(unsigned char ucGpio); +extern void gpio_clear(unsigned char ucGpio); +extern char gpio_get(unsigned char ucGpio); + +#endif /* __GPIO_H__ */ +