URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Subversion Repositories openrisc_me
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/trunk/rtos/ecos-2.0/packages/devs/wallclock/sh
- from Rev 27 to Rev 174
- ↔ Reverse comparison
Rev 27 → Rev 174
/hs7729pci/v2_0/cdl/wallclock_hs7729pci.cdl
0,0 → 1,65
# ==================================================================== |
# |
# wallclock_hs7729pci.cdl |
# |
# eCos wallclock for HS7729PCI 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): jskov |
# Contributors: jskov |
# Date: 2001-07-06 |
# |
#####DESCRIPTIONEND#### |
# |
# ==================================================================== |
|
cdl_package CYGPKG_DEVICES_WALLCLOCK_SH_HS7729PCI { |
parent CYGPKG_IO_WALLCLOCK |
active_if CYGPKG_IO_WALLCLOCK |
display "HS7729PCI wallclock driver" |
requires CYGPKG_DEVICES_WALLCLOCK_DALLAS_DS12887 |
requires CYGPKG_HAL_SH_SH7729_HS7729PCI |
hardware |
include_dir cyg/io |
|
define_proc { |
puts $::cdl_system_header "/***** wallclock driver proc output start *****/" |
puts $::cdl_system_header "#define CYGDAT_DEVS_WALLCLOCK_DALLAS_12887_INL <cyg/io/devs_wallclock_sh_hs7729pci.inl>" |
puts $::cdl_system_header "/***** wallclock driver proc output end *****/" |
} |
} |
/hs7729pci/v2_0/include/devs_wallclock_sh_hs7729pci.inl
0,0 → 1,70
//========================================================================== |
// |
// wallclock_hs7729pci.inl |
// |
// HS7729PCI wallclock details |
// |
//========================================================================== |
//####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): jskov |
// Contributors: jskov |
// Date: 2001-07-06 |
// Purpose: Wallclock driver details for HS7729PCI |
// |
//####DESCRIPTIONEND#### |
// |
//========================================================================== |
|
#define nDS_LINEAR |
#define DS_ADDR 0xa80000e0 |
#define DS_DATA 0xa80000e2 |
|
#define DS_READ_UINT8(_a_, _d_) \ |
CYG_MACRO_START \ |
cyg_uint16 t; \ |
HAL_READ_UINT16((_a_), t); \ |
(_d_) = (t >> 8) & 0xff; \ |
CYG_MACRO_END |
|
#define DS_WRITE_UINT8(_a_, _d_) \ |
CYG_MACRO_START \ |
HAL_WRITE_UINT16((_a_), (_d_)<<8); \ |
CYG_MACRO_END |
|
|
//----------------------------------------------------------------------------- |
// End of wallclock_hs7729pci.inl |
/hs7729pci/v2_0/ChangeLog
0,0 → 1,38
2001-07-06 Jesper Skov <jskov@redhat.com> |
|
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#### |
|
|
/sh3/v2_0/cdl/wallclock_sh3.cdl
0,0 → 1,101
# ==================================================================== |
# |
# wallclock_sh3.cdl |
# |
# eCos wallclock SH3 RTC-module 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): jskov |
# Original data: nickg |
# Contributors: |
# Date: 2000-04-05 |
# |
#####DESCRIPTIONEND#### |
# |
# ==================================================================== |
|
cdl_package CYGPKG_DEVICES_WALLCLOCK_SH3 { |
parent CYGPKG_IO_WALLCLOCK |
active_if CYGPKG_IO_WALLCLOCK |
display "SH3 RTC-module wallclock driver" |
requires CYGPKG_HAL_SH |
hardware |
compile wallclock_sh3.cxx |
implements CYGINT_WALLCLOCK_HW_IMPLEMENTATIONS |
active_if CYGIMP_WALLCLOCK_HARDWARE |
|
cdl_option CYGIMP_WALLCLOCK_HARDWARE { |
parent CYGPKG_IO_WALLCLOCK_IMPLEMENTATION |
display "Hardware wallclock" |
default_value 1 |
implements CYGINT_WALLCLOCK_IMPLEMENTATIONS |
} |
|
cdl_component CYGPKG_DEVICES_WALLCLOCK_SH3_OPTIONS { |
display "SH3 RTC-module wallclock 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_WALLCLOCK_SH3_CFLAGS_ADD { |
display "Additional compiler flags" |
flavor data |
no_define |
default_value { "" } |
description " |
This option modifies the set of compiler flags for |
building the wallclock device. These flags are used in addition |
to the set of global flags." |
} |
|
cdl_option CYGPKG_DEVICES_WALLCLOCK_SH3_CFLAGS_REMOVE { |
display "Suppressed compiler flags" |
flavor data |
no_define |
default_value { "" } |
description " |
This option modifies the set of compiler flags for |
building the wallclock device. These flags are removed from |
the set of global flags if present." |
} |
|
} |
} |
/sh3/v2_0/src/wallclock_sh3.cxx
0,0 → 1,175
//========================================================================== |
// |
// devs/wallclock/sh3.cxx |
// |
// SH3 RTC module driver. |
// |
//========================================================================== |
//####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): jskov |
// Contributors: jskov |
// Date: 2000-03-17 |
// Purpose: Wallclock driver for SH3 CPU RTC module |
// |
//####DESCRIPTIONEND#### |
// |
//========================================================================== |
|
#include <pkgconf/wallclock.h> // Wallclock device config |
|
#include <cyg/hal/hal_io.h> // IO macros |
#include <cyg/infra/cyg_type.h> // Common type definitions and support |
|
#include <cyg/io/wallclock.hxx> // The WallClock API |
#include <cyg/io/wallclock/wallclock.inl> // Helpers |
|
#include <cyg/hal/sh_regs.h> // RTC register definitions |
|
#include <cyg/infra/diag.h> // For debugging |
|
|
|
//----------------------------------------------------------------------------- |
// Functions for setting and getting the hardware clock counters |
|
// Year must be last two digits of "western calendar year". Leap year when |
// divisible by four. |
static void |
set_sh3_hwclock(cyg_uint32 year, cyg_uint32 month, cyg_uint32 mday, |
cyg_uint32 hour, cyg_uint32 minute, cyg_uint32 second) |
{ |
// Stop RTC |
HAL_WRITE_UINT8(CYGARC_REG_RCR2, CYGARC_REG_RCR2_RESET); |
|
// Program it |
HAL_WRITE_UINT8(CYGARC_REG_RYRCNT, TO_BCD(year)); |
HAL_WRITE_UINT8(CYGARC_REG_RMONCNT, TO_BCD(month)); |
HAL_WRITE_UINT8(CYGARC_REG_RDAYCNT, TO_BCD(mday)); |
HAL_WRITE_UINT8(CYGARC_REG_RHRCNT, TO_BCD(hour)); |
HAL_WRITE_UINT8(CYGARC_REG_RMINCNT, TO_BCD(minute)); |
HAL_WRITE_UINT8(CYGARC_REG_RSECCNT, TO_BCD(second)); |
|
// Start RTC |
HAL_WRITE_UINT8(CYGARC_REG_RCR1, CYGARC_REG_RCR1_CIE); |
HAL_WRITE_UINT8(CYGARC_REG_RCR2, |
CYGARC_REG_RCR2_RTCEN | CYGARC_REG_RCR2_START); |
|
} |
|
static void |
get_sh3_hwclock(cyg_uint32* year, cyg_uint32* month, cyg_uint32* mday, |
cyg_uint32* hour, cyg_uint32* minute, cyg_uint32* second) |
{ |
cyg_uint8 tmp; |
|
do { |
// Clear carry flag |
HAL_WRITE_UINT8(CYGARC_REG_RCR1, 0); |
|
// Read time |
HAL_READ_UINT8(CYGARC_REG_RYRCNT, tmp); |
*year = TO_DEC(tmp); |
HAL_READ_UINT8(CYGARC_REG_RMONCNT, tmp); |
*month = TO_DEC(tmp); |
HAL_READ_UINT8(CYGARC_REG_RDAYCNT, tmp); |
*mday = TO_DEC(tmp); |
HAL_READ_UINT8(CYGARC_REG_RHRCNT, tmp); |
*hour = TO_DEC(tmp); |
HAL_READ_UINT8(CYGARC_REG_RMINCNT, tmp); |
*minute = TO_DEC(tmp); |
HAL_READ_UINT8(CYGARC_REG_RSECCNT, tmp); |
*second = TO_DEC(tmp); |
|
// Read carry flag |
HAL_READ_UINT8(CYGARC_REG_RCR1, tmp); |
} while (CYGARC_REG_RCR1_CF & tmp); // loop if carry set |
} |
|
//----------------------------------------------------------------------------- |
// Functions required for the hardware-driver API. |
|
// Returns the number of seconds elapsed since 1970-01-01 00:00:00. |
cyg_uint32 |
Cyg_WallClock::get_hw_seconds(void) |
{ |
cyg_uint32 year, month, mday, hour, minute, second; |
|
get_sh3_hwclock(&year, &month, &mday, &hour, &minute, &second); |
|
#if 0 |
// This will cause the test to eventually fail due to these printouts |
// causing timer interrupts to be lost... |
diag_printf("year %02d\n", year); |
diag_printf("month %02d\n", month); |
diag_printf("mday %02d\n", mday); |
diag_printf("hour %02d\n", hour); |
diag_printf("minute %02d\n", minute); |
diag_printf("second %02d\n", second); |
#endif |
|
#ifndef CYGSEM_WALLCLOCK_SET_GET_MODE |
// We know what we initialized the hardware for : 1970, so by doing this |
// the returned time should be OK for 30 years uptime. |
year += 1900; |
#else |
// Need to use sliding window or similar to figure out what the |
// century should be... Patent issue is unclear, and since there's |
// no battery backup of the clock, there's little point in |
// investigating. |
# error "Need some magic here to figure out century counter" |
#endif |
|
cyg_uint32 now = _simple_mktime(year, month, mday, hour, minute, second); |
return now; |
} |
|
#ifndef CYGSEM_WALLCLOCK_SET_GET_MODE |
|
void |
Cyg_WallClock::init_hw_seconds(void) |
{ |
// This is our base: 1970-01-01 00:00:00 |
// Set the HW clock - if for nothing else, just to be sure it's in a |
// legal range. Any arbitrary base could be used. |
// After this the hardware clock is only read. |
set_sh3_hwclock(70,1,1,0,0,0); |
} |
|
#endif // CYGSEM_WALLCLOCK_SET_GET_MODE |
|
//----------------------------------------------------------------------------- |
// End of devs/wallclock/sh3.cxx |
/sh3/v2_0/ChangeLog
0,0 → 1,83
2001-07-09 Jesper Skov <jskov@redhat.com> |
|
* src/wallclock_sh3.cxx: fix description. |
|
2001-03-20 Jesper Skov <jskov@redhat.com> |
|
* src/wallclock_sh3.cxx: Don't include kernel config. |
|
2000-05-26 Jesper Skov <jskov@redhat.com> |
|
* cdl/wallclock_sh3.cdl: CYGSEM_WALLCLOCK_SET_GET_MODE moved to IO |
package. |
|
* src/wallclock_sh3.cxx: Get helpers from new file. |
|
2000-04-06 Jesper Skov <jskov@redhat.com> |
|
* cdl/wallclock_sh3.cdl: Only active when wallclock is. |
|
2000-04-05 John Dallaway <jld@cygnus.co.uk> |
|
* cdl/wallclock_sh3.cdl: |
|
Provide hardware wallclock implementation as a radio button. |
|
2000-04-05 Jesper Skov <jskov@redhat.com> |
|
* src/wallclock_sh3.cxx: |
Moved from devs/wallclock/current to here. |
Get API from io/wallclock. |
Deleted all non-SH3 changelog entries |
|
2000-03-29 Jesper Skov <jskov@redhat.com> |
|
* tests/wallclock2.cxx: |
* include/wallclock.hxx: |
* src/sh3.cxx: |
* src/wallclock.cxx: |
* cdl/wallclock.cdl: |
Reworked WallClock API. It should now be simpler to add new |
wallclock drivers. Added a simple test to print out the current |
wallclock value so a human can verify battery backup works. |
|
2000-03-17 Jesper Skov <jskov@redhat.com> |
|
* cdl/wallclock.cdl: |
* src/sh3.cxx: |
Added wallclock driver for SH3 RTC module. |
|
//####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#### |
|
|