Mercurial > ecos
changeset 1641:23c0a1c0b988
* include/devs_wallclock_arm_aim711.inl:
* cdl/aim711_wallclock_drivers.cdl: New package - RTC support for
the ARM Industrial Module AIM 711.
| author | asl |
|---|---|
| date | Fri, 14 May 2004 14:55:25 +0000 |
| parents | b958d883e5f5 |
| children | b48368553004 |
| files | packages/devs/wallclock/arm/aim711/current/ChangeLog packages/devs/wallclock/arm/aim711/current/cdl/aim711_wallclock_drivers.cdl packages/devs/wallclock/arm/aim711/current/include/devs_wallclock_arm_aim711.inl |
| diffstat | 3 files changed, 217 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/packages/devs/wallclock/arm/aim711/current/ChangeLog @@ -0,0 +1,40 @@ +2004-04-27 Roland Caßebohm <roland.cassebohm@cisionsystems.de> + + * include/devs_wallclock_arm_aim711.inl: + * cdl/aim711_wallclock_drivers.cdl: New package - RTC support for + the ARM Industrial Module AIM 711. + +//####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#### + +
new file mode 100644 --- /dev/null +++ b/packages/devs/wallclock/arm/aim711/current/cdl/aim711_wallclock_drivers.cdl @@ -0,0 +1,70 @@ +# ==================================================================== +# +# aim711_wallclock_drivers.cdl +# +# Wallclock drivers - support for DS1339 RTC on the +# ARM Industrial Module AIM 711 +# +# ==================================================================== +#####ECOSGPLCOPYRIGHTBEGIN#### +## ------------------------------------------- +## This file is part of eCos, the Embedded Configurable Operating System. +## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. +## Copyright (C) 2003 Gary Thomas +## +## 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): rcassebohm +# Contributors: rcassebohm +# Date: 2003-10-05 +# +#####DESCRIPTIONEND#### +# +# ==================================================================== + +cdl_package CYGPKG_DEVICES_WALLCLOCK_ARM_AIM711 { + display "ARM Industrial Module AIM 711 RTC Driver" + description "RTC driver for the ARM Industrial Module AIM 711." + + parent CYGPKG_IO_WALLCLOCK + active_if CYGPKG_IO_WALLCLOCK + active_if CYGPKG_HAL_ARM_AIM711 + requires CYGPKG_DEVICES_WALLCLOCK_DALLAS_DS1307 + + include_dir cyg/io + + define_proc { + puts $::cdl_system_header "/***** AIM 711 RTC driver proc output start *****/" + puts $::cdl_system_header "#define CYGDAT_DEVS_WALLCLOCK_DALLAS_1307_INL <cyg/io/devs_wallclock_arm_aim711.inl>" + puts $::cdl_system_header "#define CYGDAT_DEVS_WALLCLOCK_ARM_AIM711_CFG <pkgconf/devices_wallclock_arm_aim711.h>" + puts $::cdl_system_header "/***** AIM 711 RTC driver proc output end *****/" + } +}
new file mode 100644 --- /dev/null +++ b/packages/devs/wallclock/arm/aim711/current/include/devs_wallclock_arm_aim711.inl @@ -0,0 +1,107 @@ +//========================================================================== +// +// devs/wallclock/arm/aim711/include/devs_wallclock_arm_aim711.inl +// +// ARM Industrial Module AIM 711 RTC IO definitions +// +//========================================================================== +//####ECOSGPLCOPYRIGHTBEGIN#### +// ------------------------------------------- +// This file is part of eCos, the Embedded Configurable Operating System. +// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. +// Copyright (C) 2003 Gary Thomas +// +// 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): rcassebohm +// Contributors:rcassebohm +// Date: 2003-10-05 +// Purpose: AIM 711 RTC definitions for using DS1339 +//####DESCRIPTIONEND#### +//========================================================================== + +#include <cyg/hal/hal_io.h> +#include <string.h> + +#include CYGDAT_DEVS_WALLCLOCK_ARM_AIM711_CFG + +static __inline__ void +DS_GET(cyg_uint8 *regs) +{ + hal_ks32c_i2c_msg_t msgs[2]; + int status; + cyg_uint8 offset = 0x00; + + // write message to set the address + msgs[0].devaddr = AIM711_RTC_ADDR | KS32C_I2C_WR; + msgs[0].pbuf = &offset; + msgs[0].bufsize = sizeof(offset); + + // read message + msgs[1].devaddr = AIM711_RTC_ADDR | KS32C_I2C_RD; + msgs[1].pbuf = regs; + msgs[1].bufsize = DS_REGS_SIZE; + + // transfer the messages + status = hal_ks32c_i2c_transfer(2, msgs); + + if (status < 0) + diag_printf("%s - Can't read RTC\n", __FUNCTION__); + + return; +} + +static __inline__ void +DS_PUT(cyg_uint8 *regs) +{ + hal_ks32c_i2c_msg_t msg; + int status; + cyg_uint8 offset = 0x00; + cyg_uint8 buffer[1 + DS_REGS_SIZE]; + + buffer[0]=offset; + memcpy(&buffer[1], regs, DS_REGS_SIZE); + + // write message + msg.devaddr = AIM711_RTC_ADDR | KS32C_I2C_WR; + msg.pbuf = buffer; + msg.bufsize = sizeof(buffer); + + // transfer the messages + status = hal_ks32c_i2c_transfer(1, &msg); + + if (status < 0) + diag_printf("%s - Can't write RTC\n", __FUNCTION__); + + return; +} + +// EOF devs_wallclock_arm_aim711.inl
