# HG changeset patch # User jlarmour # Date 1029351662 0 # Node ID 542103a53d531fa94e4b65a2e5ecb817ba61b47a # Parent 953d23c104a12c36c6e08a1746c282cd695080e6 Add new Hitachi H8/300H package contribution from Yoshinori Sato diff --git a/packages/ChangeLog b/packages/ChangeLog --- a/packages/ChangeLog +++ b/packages/ChangeLog @@ -1,3 +1,7 @@ +2002-08-14 Yoshinori Sato + + * ecos.db: Add H8/300H watchdog driver package. + 2002-08-07 Andrew Lunn * ecos.db: Added CRC package. @@ -24,6 +28,7 @@ 2002-05-08 Jesper Skov * ecos.db: Add H8/300 serial driver. diff --git a/packages/NEWS b/packages/NEWS --- a/packages/NEWS +++ b/packages/NEWS @@ -1,3 +1,4 @@ +* Yoshinori Sato has contributed a watchdog driver for the Hitachi H8/300H. * Add AT91 watchdog driver. Contributed by Thomas Koeller of Basler Vision Technologies. * SMP support added for x86. diff --git a/packages/devs/watchdog/h8300/h8300h/current/ChangeLog b/packages/devs/watchdog/h8300/h8300h/current/ChangeLog new file mode 100644 --- /dev/null +++ b/packages/devs/watchdog/h8300/h8300h/current/ChangeLog @@ -0,0 +1,36 @@ +2002-08-14 Yoshinori Sato + + * New package. + +//####ECOSGPLCOPYRIGHTBEGIN#### +// ------------------------------------------- +// This file is part of eCos, the Embedded Configurable Operating System. +// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, 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., +// 59 Temple Place, Suite 330, Boston, MA 02111-1307 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. +// +// This exception does not invalidate any other reasons why a work based on +// this file might be covered by the GNU General Public License. +// +// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. +// at http://sources.redhat.com/ecos/ecos-license/ +// ------------------------------------------- +//####ECOSGPLCOPYRIGHTEND#### diff --git a/packages/devs/watchdog/h8300/h8300h/current/cdl/watchdog_h8300h.cdl b/packages/devs/watchdog/h8300/h8300h/current/cdl/watchdog_h8300h.cdl new file mode 100644 --- /dev/null +++ b/packages/devs/watchdog/h8300/h8300h/current/cdl/watchdog_h8300h.cdl @@ -0,0 +1,103 @@ +# ==================================================================== +# +# watchdog_h8300h.cdl +# +# eCos watchdog for the Hitachi H8/300H driver configuration data +# +# ==================================================================== +#####ECOSGPLCOPYRIGHTBEGIN#### +## ------------------------------------------- +## This file is part of eCos, the Embedded Configurable Operating System. +## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, 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., +## 59 Temple Place, Suite 330, Boston, MA 02111-1307 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. +## +## This exception does not invalidate any other reasons why a work based on +## this file might be covered by the GNU General Public License. +## +## Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. +## at http://sources.redhat.com/ecos/ecos-license/ +## ------------------------------------------- +#####ECOSGPLCOPYRIGHTEND#### +# ==================================================================== +######DESCRIPTIONBEGIN#### +# +# Author(s): ysato +# Contributors: ysato +# Date: 2002-04-29 +# +#####DESCRIPTIONEND#### +# +# ==================================================================== + +cdl_package CYGPKG_DEVICES_WATCHDOG_H8300_H8300H { + parent CYGPKG_IO_WATCHDOG + active_if CYGPKG_IO_WATCHDOG + display "H8/300H watchdog driver" + requires CYGPKG_HAL_H8300_H8300H + hardware + compile watchdog_h8300h.cxx + implements CYGINT_WATCHDOG_HW_IMPLEMENTATIONS + implements CYGINT_WATCHDOG_RESETS_ON_TIMEOUT + active_if CYGIMP_WATCHDOG_HARDWARE + + cdl_option CYGIMP_WATCHDOG_HARDWARE { + parent CYGPKG_IO_WATCHDOG_IMPLEMENTATION + display "Hardware watchdog" + default_value 1 + implements CYGINT_WATCHDOG_IMPLEMENTATIONS + } + + cdl_component CYGPKG_DEVICES_WATCHDOG_H8300_H8300H_OPTIONS { + display "H8/300H watchdog build options" + flavor none + description " + Package specific build options including control over + compiler flags used only in building this package, + and details of which tests are built." + + + cdl_option CYGPKG_DEVICES_WATCHDOG_H8300_H8300H_CFLAGS_ADD { + display "Additional compiler flags" + flavor data + no_define + default_value { "" } + description " + This option modifies the set of compiler flags for + building the watchdog device. These flags are used in addition + to the set of global flags." + } + + cdl_option CYGPKG_DEVICES_WATCHDOG_H8300_H8300H_CFLAGS_REMOVE { + display "Suppressed compiler flags" + flavor data + no_define + default_value { "" } + description " + This option modifies the set of compiler flags for + building the watchdog device. These flags are removed from + the set of global flags if present." + } + + } +} + +# EOF watchdog_h8300h.cdl diff --git a/packages/devs/watchdog/h8300/h8300h/current/src/watchdog_h8300h.cxx b/packages/devs/watchdog/h8300/h8300h/current/src/watchdog_h8300h.cxx new file mode 100644 --- /dev/null +++ b/packages/devs/watchdog/h8300/h8300h/current/src/watchdog_h8300h.cxx @@ -0,0 +1,113 @@ +//========================================================================== +// +// devs/watchdog/h8300/h83000/watchdog_h8300.cxx +// +// Watchdog implementation for Hitachi H8/300H CPUs +// +//========================================================================== +//####ECOSGPLCOPYRIGHTBEGIN#### +// ------------------------------------------- +// This file is part of eCos, the Embedded Configurable Operating System. +// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, 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., +// 59 Temple Place, Suite 330, Boston, MA 02111-1307 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. +// +// This exception does not invalidate any other reasons why a work based on +// this file might be covered by the GNU General Public License. +// +// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. +// at http://sources.redhat.com/ecos/ecos-license/ +// ------------------------------------------- +//####ECOSGPLCOPYRIGHTEND#### +//========================================================================== +//#####DESCRIPTIONBEGIN#### +// +// Author(s): yoshinori sato +// Contributors: yoshinori sato +// Date: 2002-04-29 +// Purpose: Watchdog class implementation +// Description: Contains an implementation of the Watchdog class for use +// with the Hitachi H8/300H watchdog timer. +// +//####DESCRIPTIONEND#### +// +//========================================================================== + +#include // system configuration file +#include // configuration for this package + +#include // tracing macros + +#include // IO register access +#include // watchdog register definitions + +#include // watchdog API + +// ------------------------------------------------------------------------- +// Constructor + +void +Cyg_Watchdog::init_hw(void) +{ + CYG_REPORT_FUNCTION(); + + // No hardware init needed. + + resolution = CYGARC_WDT_PERIOD; + + CYG_REPORT_RETURN(); +} + +// ------------------------------------------------------------------------- +// Start the watchdog running. + +void +Cyg_Watchdog::start() +{ + CYG_REPORT_FUNCTION(); + + //Stop WDT + HAL_WRITE_UINT16(CYGARC_TCSR,CYGARC_TCSR_MAGIC); + //Clear WDT Count + HAL_WRITE_UINT16(CYGARC_TCSR,CYGARC_TCNT_MAGIC); + //Start WDT + HAL_WRITE_UINT16(CYGARC_TCSR,CYGARC_TCSR_MAGIC| + CYGARC_WDT_WT|CYGARC_WDT_TME|CYGARC_WDT_CKS); + + CYG_REPORT_RETURN(); +} + +// ------------------------------------------------------------------------- +// Reset watchdog timer. This needs to be called regularly to prevent +// the watchdog firing. + +void +Cyg_Watchdog::reset() +{ + CYG_REPORT_FUNCTION(); + + HAL_WRITE_UINT16(CYGARC_TCSR,CYGARC_TCNT_MAGIC); + + CYG_REPORT_RETURN(); +} + +// ------------------------------------------------------------------------- +// EOF watchdog_h8300.cxx diff --git a/packages/ecos.db b/packages/ecos.db --- a/packages/ecos.db +++ b/packages/ecos.db @@ -1461,6 +1461,16 @@ package CYGPKG_DEVICES_WATCHDOG_SH_SH3 { Hitachi SH3 chip." } +package CYGPKG_DEVICES_WATCHDOG_H8300_H8300H { + alias { "Watchdog driver for the Hitachi H8/300H chip" devices_watchdog_h8300h device_watchdog_h8300h } + directory devs/watchdog/h8300/h8300h + script watchdog_h8300h.cdl + hardware + description " + This package provides a watchdog driver implementation for the + Hitachi H8/300H chip." +} + package CYGPKG_IO_WATCHDOG { alias { "Watchdog IO device" watchdog io_watchdog } directory io/watchdog diff --git a/packages/hal/h8300/h8300h/current/ChangeLog b/packages/hal/h8300/h8300h/current/ChangeLog --- a/packages/hal/h8300/h8300h/current/ChangeLog +++ b/packages/hal/h8300/h8300h/current/ChangeLog @@ -1,3 +1,7 @@ +2002-08-14 Yoshinori Sato + + * include/mod_regs_wdt.h: New file. Providing watchdog hardware data. + 2002-04-24 Yoshinori Sato * New package. diff --git a/packages/hal/h8300/h8300h/current/include/mod_regs_wdt.h b/packages/hal/h8300/h8300h/current/include/mod_regs_wdt.h new file mode 100644 --- /dev/null +++ b/packages/hal/h8300/h8300h/current/include/mod_regs_wdt.h @@ -0,0 +1,75 @@ +#ifndef CYGONCE_MOD_REGS_WDT_H +#define CYGONCE_MOD_REGS_WDT_H + +//========================================================================== +// +// mod_regs_wdt.h +// +// Watchdog Timer Register +// +//========================================================================== +//####ECOSGPLCOPYRIGHTBEGIN#### +// ------------------------------------------- +// This file is part of eCos, the Embedded Configurable Operating System. +// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, 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., +// 59 Temple Place, Suite 330, Boston, MA 02111-1307 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. +// +// This exception does not invalidate any other reasons why a work based on +// this file might be covered by the GNU General Public License. +// +// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. +// at http://sources.redhat.com/ecos/ecos-license/ +// ------------------------------------------- +//####ECOSGPLCOPYRIGHTEND#### +//========================================================================== +//#####DESCRIPTIONBEGIN#### +// +// Author(s): yoshinori sato +// Contributors: yoshinori sato +// Date: 2002-02-19 +// +//####DESCRIPTIONEND#### +// +//========================================================================== + +#define CYGARC_TCSR 0xFFFF8C +#define CYGARC_TCNT 0xFFFF8D +#define CYGARC_RSTCSRW 0xFFFF8E +#define CYGARC_RSTCSRR 0xFFFF8F + +#define CYGARC_TCNT_MAGIC 0x5A00 +#define CYGARC_TCSR_MAGIC 0xA500 + +#define CYGARC_WDT_OVF 0x80 +#define CYGARC_WDT_WT 0x40 +#define CYGARC_WDT_TME 0x20 +#define CYGARC_WDT_CKS2 0x04 +#define CYGARC_WDT_CKS1 0x02 +#define CYGARC_WDT_CKS0 0x01 + +#define CYGARC_WDT_CKS 0x07 //Max Delay + +#define CYGARC_WDT_PERIOD ((1000000000/(CYGHWR_HAL_H8300_PROCESSOR_SPEED/4096))*256) + +#endif + +// EOF mod_regs_wdt.h