diff options
Diffstat (limited to 'ecos/packages/devs/flash/powerpc/moab/current')
4 files changed, 333 insertions, 0 deletions
diff --git a/ecos/packages/devs/flash/powerpc/moab/current/ChangeLog b/ecos/packages/devs/flash/powerpc/moab/current/ChangeLog new file mode 100644 index 0000000..e26b685 --- /dev/null +++ b/ecos/packages/devs/flash/powerpc/moab/current/ChangeLog @@ -0,0 +1,23 @@ +//=========================================================================== +// ####GPLCOPYRIGHTBEGIN#### +// ------------------------------------------- +// This file is part of eCos, the Embedded Configurable Operating System. +// Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +// +// 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 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., 51 Franklin Street, +// Fifth Floor, Boston, MA 02110-1301, USA. +// ------------------------------------------- +// ####GPLCOPYRIGHTEND#### +//=========================================================================== diff --git a/ecos/packages/devs/flash/powerpc/moab/current/cdl/flash_moab.cdl b/ecos/packages/devs/flash/powerpc/moab/current/cdl/flash_moab.cdl new file mode 100644 index 0000000..59b7e86 --- /dev/null +++ b/ecos/packages/devs/flash/powerpc/moab/current/cdl/flash_moab.cdl @@ -0,0 +1,99 @@ +# ==================================================================== +# +# flash_moab.cdl +# +# FLASH memory - Hardware support for boot FLASH on TAMS MOAB +# +# ==================================================================== +## ####ECOSGPLCOPYRIGHTBEGIN#### +## ------------------------------------------- +## This file is part of eCos, the Embedded Configurable Operating System. +## Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +## +## eCos 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 or (at your option) any later +## version. +## +## eCos 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 eCos; if not, write to the Free Software Foundation, Inc., +## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +## +## As a special exception, if other files instantiate templates or use +## macros or inline functions from this file, or you compile this file +## and link it with other works to produce a work based on this file, +## this file does not by itself cause the resulting work to be covered by +## the GNU General Public License. However the source code for this file +## must still be made available in accordance with section (3) of the GNU +## General Public License v2. +## +## This exception does not invalidate any other reasons why a work based +## on this file might be covered by the GNU General Public License. +## ------------------------------------------- +## ####ECOSGPLCOPYRIGHTEND#### +# ==================================================================== +######DESCRIPTIONBEGIN#### +# +# Author(s): gthomas, hmt, jskov, tdrury, nickg +# Original data: gthomas +# Contributors: gthomas +# Date: 2001-02-20 +# +#####DESCRIPTIONEND#### +# +# ==================================================================== + +cdl_package CYGPKG_DEVS_FLASH_POWERPC_MOAB { + display "TAMS MOAB FLASH memory support" + description "FLASH memory device(s) support for MOAB board" + + parent CYGPKG_IO_FLASH + active_if CYGPKG_IO_FLASH + requires CYGPKG_HAL_POWERPC_MOAB + requires { CYGSEM_DEVS_FLASH_POWERPC_MOAB_BOOT || CYGSEM_DEVS_FLASH_POWERPC_MOAB_MAIN } + + cdl_component CYGSEM_DEVS_FLASH_POWERPC_MOAB_BOOT { + display "Boot FLASH support" + default_value 0 + no_define + description " + This option enables the drivers for the bootstrap FLASH + device. Note: this device is not suitable for the RedBoot + Flash Image System (FIS)." + + compile moab_flash.c + + # Arguably this should do in the generic package + # but then there is a logic loop so you can never enable it. + cdl_interface CYGINT_DEVS_FLASH_ATMEL_AT49XXXX_REQUIRED { + display "Generic Atmel AM49XXXX driver required" + } + + implements CYGINT_DEVS_FLASH_ATMEL_AT49XXXX_REQUIRED + } + + cdl_component CYGSEM_DEVS_FLASH_POWERPC_MOAB_MAIN { + display "Main (NAND) FLASH support" + default_value 1 + no_define + description " + This option enables the drivers for the main FLASH + device. Note: this device can be used for the RedBoot + Flash Image System (FIS)." + + compile moab_nand_flash.c + + # Arguably this should do in the generic package + # but then there is a logic loop so you can never enable it. + cdl_interface CYGINT_DEVS_FLASH_TOSHIBA_TC58XXX_REQUIRED { + display "Generic Toshiba TC58XXX driver required" + } + + implements CYGINT_DEVS_FLASH_TOSHIBA_TC58XXX_REQUIRED + } +} diff --git a/ecos/packages/devs/flash/powerpc/moab/current/src/moab_flash.c b/ecos/packages/devs/flash/powerpc/moab/current/src/moab_flash.c new file mode 100644 index 0000000..f155cca --- /dev/null +++ b/ecos/packages/devs/flash/powerpc/moab/current/src/moab_flash.c @@ -0,0 +1,65 @@ +//========================================================================== +// +// moab_flash.c +// +// Flash programming for Atmel boot device on MOAB board +// +//========================================================================== +// ####ECOSGPLCOPYRIGHTBEGIN#### +// ------------------------------------------- +// This file is part of eCos, the Embedded Configurable Operating System. +// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +// +// eCos 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 or (at your option) any later +// version. +// +// eCos 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 eCos; if not, write to the Free Software Foundation, Inc., +// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// +// As a special exception, if other files instantiate templates or use +// macros or inline functions from this file, or you compile this file +// and link it with other works to produce a work based on this file, +// this file does not by itself cause the resulting work to be covered by +// the GNU General Public License. However the source code for this file +// must still be made available in accordance with section (3) of the GNU +// General Public License v2. +// +// This exception does not invalidate any other reasons why a work based +// on this file might be covered by the GNU General Public License. +// ------------------------------------------- +// ####ECOSGPLCOPYRIGHTEND#### +//========================================================================== +//#####DESCRIPTIONBEGIN#### +// +// Author(s): gthomas +// Contributors: +// Date: 2003-09-19 +// Purpose: +// Description: +// +//####DESCRIPTIONEND#### +// +//========================================================================== + + +// There's a single AT49LV040 on the MOAB board. + +#define CYGPKG_DEVS_FLASH_ATMEL_AT49LV040 +#define CYGNUM_FLASH_INTERLEAVE (1) +#define CYGNUM_FLASH_WIDTH (8) +#define CYGNUM_FLASH_SERIES (1) +#define CYGNUM_FLASH_BASE (0xFFF80000u) + +#include <cyg/io/flash_at49xxxx.inl> + + +// ------------------------------------------------------------------------ +// EOF moab_flash.c diff --git a/ecos/packages/devs/flash/powerpc/moab/current/src/moab_nand_flash.c b/ecos/packages/devs/flash/powerpc/moab/current/src/moab_nand_flash.c new file mode 100644 index 0000000..cd11518 --- /dev/null +++ b/ecos/packages/devs/flash/powerpc/moab/current/src/moab_nand_flash.c @@ -0,0 +1,146 @@ +//========================================================================== +// +// moab_nand_flash.c +// +// Flash programming for Toshiba NAND FLASH device on MOAB board +// +//========================================================================== +// ####ECOSGPLCOPYRIGHTBEGIN#### +// ------------------------------------------- +// This file is part of eCos, the Embedded Configurable Operating System. +// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. +// +// eCos 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 or (at your option) any later +// version. +// +// eCos 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 eCos; if not, write to the Free Software Foundation, Inc., +// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// +// As a special exception, if other files instantiate templates or use +// macros or inline functions from this file, or you compile this file +// and link it with other works to produce a work based on this file, +// this file does not by itself cause the resulting work to be covered by +// the GNU General Public License. However the source code for this file +// must still be made available in accordance with section (3) of the GNU +// General Public License v2. +// +// This exception does not invalidate any other reasons why a work based +// on this file might be covered by the GNU General Public License. +// ------------------------------------------- +// ####ECOSGPLCOPYRIGHTEND#### +//========================================================================== +//#####DESCRIPTIONBEGIN#### +// +// Author(s): Gary Thomas <gary@mlbassoc.com> +// Contributors: +// Date: 2003-09-02 +// Purpose: +// Description: +// +//####DESCRIPTIONEND#### +// +//========================================================================== + +#include <cyg/infra/cyg_type.h> +#define CYGARC_HAL_COMMON_EXPORT_CPU_MACROS +#include <cyg/hal/ppc_regs.h> // Platform registers +#include <cyg/hal/hal_io.h> // I/O macros +#include <cyg/hal/hal_if.h> // Virtual vector interfaces + +// There's a single TC58256 or TC58DVG02 on the MOAB board. + +#define CYGHWR_DEVS_FLASH_TOSHIBA_TC58256 +#define CYGHWR_DEVS_FLASH_TOSHIBA_TC58DVG02 +#define CYGNUM_FLASH_BLANK (1) +#define CYGNUM_FLASH_INTERLEAVE (1) +#define CYGNUM_FLASH_WIDTH (8) +#define CYGNUM_FLASH_SERIES (1) +#define CYGNUM_FLASH_BASE (_MOAB_NAND) + +#define CYGHWR_FLASH_TC58XXX_CE moab_CE +#define CYGHWR_FLASH_TC58XXX_CLE moab_CLE +#define CYGHWR_FLASH_TC58XXX_ALE moab_ALE +#define CYGHWR_FLASH_TC58XXX_RDY moab_RDY + +// +// Select the NAND device - this will be held until the +// entire command/data sequence has completed (which is +// necessary for read sequential) +// +static void __inline__ +moab_CE(int state) +{ + cyg_uint32 gpio_or; + HAL_READ_UINT32(GPIO_OR, gpio_or); + if (state) { + // Assert CE + gpio_or &= ~_MOAB_CE; + } else { + // De-assert CE + gpio_or |= _MOAB_CE; + } + HAL_WRITE_UINT32(GPIO_OR, gpio_or); +} + +// +// Prepare to send a command byte to the NAND interface +// +static void __inline__ +moab_CLE(int state) +{ + cyg_uint32 gpio_or; + HAL_READ_UINT32(GPIO_OR, gpio_or); + if (state) { + // Assert CLE + gpio_or |= _MOAB_CLE; + } else { + // De-assert CLE + gpio_or &= ~_MOAB_CLE; + } + HAL_WRITE_UINT32(GPIO_OR, gpio_or); +} + +// +// Prepare to send address byte(s) to the NAND interface +// +static void __inline__ +moab_ALE(int state) +{ + cyg_uint32 gpio_or; + + HAL_READ_UINT32(GPIO_OR, gpio_or); + if (state) { + // Assert ALE + gpio_or |= _MOAB_ALE; + } else { + // De-assert ALE + gpio_or &= ~_MOAB_ALE; + } + HAL_WRITE_UINT32(GPIO_OR, gpio_or); +} + +// +// Wait until the NAND device is ready (after a long operation) +// +static bool __inline__ +moab_RDY(void) +{ + cyg_uint32 gpio_ir; + + HAL_READ_UINT32(GPIO_IR, gpio_ir); + return ((gpio_ir & _MOAB_RDY) != 0); +} + +#include <cyg/io/flash_tc58xxx.inl> + + +// ------------------------------------------------------------------------ +// EOF moab_nand_flash.c |