This is the mail archive of the
ecos-patches@sources.redhat.com
mailing list for the eCos project.
H8/300 WatchDog Timer Driver
- From: Yoshinori Sato <qzb04471 at nifty dot ne dot jp>
- To: ecos-patches at sources dot redhat dot com
- Date: Thu, 06 Jun 2002 22:18:25 +0900
- Subject: H8/300 WatchDog Timer Driver
diff -Nrc ecos/packages/ecos.db ecos.ysato/packages/ecos.db
*** ecos/packages/ecos.db Sun Jun 2 00:21:32 2002
--- ecos.ysato/packages/ecos.db Sun Jun 2 23:03:43 2002
***************
*** 1451,1456 ****
--- 1451,1466 ----
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 -Nrc ecos/packages/devs/watchdog/h8300/h8300h/current/cdl/watchdog_h8300h.cdl ecos.ysato/packages/devs/watchdog/h8300/h8300h/current/cdl/watchdog_h8300h.cdl
*** ecos/packages/devs/watchdog/h8300/h8300h/current/cdl/watchdog_h8300h.cdl Thu Jan 1 09:00:00 1970
--- ecos.ysato/packages/devs/watchdog/h8300/h8300h/current/cdl/watchdog_h8300h.cdl Sun Jun 2 19:45:20 2002
***************
*** 0 ****
--- 1,102 ----
+ # ====================================================================
+ #
+ # 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
+ requires CYGPKG_KERNEL
+ 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."
+ }
+
+ }
+ }
diff -Nrc ecos/packages/devs/watchdog/h8300/h8300h/current/src/watchdog_h8300h.cxx ecos.ysato/packages/devs/watchdog/h8300/h8300h/current/src/watchdog_h8300h.cxx
*** ecos/packages/devs/watchdog/h8300/h8300h/current/src/watchdog_h8300h.cxx Thu Jan 1 09:00:00 1970
--- ecos.ysato/packages/devs/watchdog/h8300/h8300h/current/src/watchdog_h8300h.cxx Sun Jun 2 19:43:11 2002
***************
*** 0 ****
--- 1,115 ----
+ //==========================================================================
+ //
+ // 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 <pkgconf/system.h> // system configuration file
+ #include <pkgconf/watchdog.h> // configuration for this package
+ #include <pkgconf/kernel.h> // kernel config
+
+ #include <cyg/infra/cyg_trac.h> // tracing macros
+ #include <cyg/kernel/instrmnt.h> // instrumentation
+
+ #include <cyg/hal/hal_io.h> // IO register access
+ #include <cyg/hal/mod_regs_wdt.h> // watchdog register definitions
+
+ #include <cyg/io/watchdog.hxx> // 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 -Nrc ecos/packages/hal/h8300/h8300h/current/include/mod_regs_wdt.h ecos.ysato/packages/hal/h8300/h8300h/current/include/mod_regs_wdt.h
*** ecos/packages/hal/h8300/h8300h/current/include/mod_regs_wdt.h Thu Jan 1 09:00:00 1970
--- ecos.ysato/packages/hal/h8300/h8300h/current/include/mod_regs_wdt.h Sun Jun 2 20:34:04 2002
***************
*** 0 ****
--- 1,73 ----
+ #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
--
Yoshinori Sato
<qzb04471@nifty.ne.jp>