| /**************************************************************************** |
| * arch/arm/src/kinetis/kinetis_rtc_if.h |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. The |
| * ASF licenses this file to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance with the |
| * License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations |
| * under the License. |
| * |
| ****************************************************************************/ |
| |
| /**************************************************************************** |
| * Included Files |
| ****************************************************************************/ |
| |
| #ifndef __ARCH_ARM_SRC_KINETIS_KINETIS_RTC_IF_H |
| #define __ARCH_ARM_SRC_KINETIS_KINETIS_RTC_IF_H |
| |
| #include <nuttx/config.h> |
| |
| #include "chip.h" |
| |
| /* Kinetis parts all have a simple battery-backed 32bit counter for its RTC |
| * KINETIS_RTC_GEN2 have |
| * a Tamper Time seconds - 32bibt |
| * a MONOTONC seconds which is used is 2*32bit registers |
| * |
| */ |
| |
| #include "kinetis_alarm.h" |
| |
| /**************************************************************************** |
| * Public Functions Prototypes |
| ****************************************************************************/ |
| |
| #ifndef __ASSEMBLY__ |
| |
| #undef EXTERN |
| #if defined(__cplusplus) |
| #define EXTERN extern "C" |
| extern "C" |
| { |
| #else |
| #define EXTERN extern |
| #endif |
| |
| /**************************************************************************** |
| * Name: kinetis_rtc_getdatetime_with_subseconds |
| * |
| * Description: |
| * Get the current date and time from the date/time RTC. This interface |
| * is only supported by the date/time RTC hardware implementation. |
| * It is used to replace the system timer. It is only used by the RTOS |
| * during initialization to set up the system time when CONFIG_RTC and |
| * CONFIG_RTC_DATETIME are selected (and CONFIG_RTC_HIRES is not). |
| * |
| * NOTE: Some date/time RTC hardware is capability of sub-second accuracy. |
| * Thatsub-second accuracy is returned through 'nsec'. |
| * |
| * Input Parameters: |
| * tp - The location to return the high resolution time value. |
| * nsec - The location to return the subsecond time value. |
| * |
| * Returned Value: |
| * Zero (OK) on success; a negated errno on failure |
| * |
| ****************************************************************************/ |
| |
| #ifdef CONFIG_KINETIS_HAVE_RTC_SUBSECONDS |
| int kinetis_rtc_getdatetime_with_subseconds(struct tm *tp, |
| long *nsec); |
| #endif |
| |
| /**************************************************************************** |
| * Name: KINETIS_rtc_setdatetime |
| * |
| * Description: |
| * Set the RTC to the provided time. RTC implementations which provide |
| * up_rtc_getdatetime() (CONFIG_RTC_DATETIME is selected) should provide |
| * this function. |
| * |
| * Input Parameters: |
| * tp - the time to use |
| * |
| * Returned Value: |
| * Zero (OK) on success; a negated errno on failure |
| * |
| ****************************************************************************/ |
| |
| #ifdef CONFIG_RTC_DATETIME |
| struct tm; |
| int kinetis_rtc_setdatetime(const struct tm *tp); |
| #endif |
| |
| /**************************************************************************** |
| * Name: KINETIS_rtc_lowerhalf |
| * |
| * Description: |
| * Instantiate the RTC lower half driver for the KINETIS. General usage: |
| * |
| * #include <nuttx/timers/rtc.h> |
| * #include "KINETIS_rtc.h> |
| * |
| * struct rtc_lowerhalf_s *lower; |
| * lower = KINETIS_rtc_lowerhalf(); |
| * rtc_initialize(0, lower); |
| * |
| * Input Parameters: |
| * None |
| * |
| * Returned Value: |
| * On success, a non-NULL RTC lower interface is returned. NULL is |
| * returned on any failure. |
| * |
| ****************************************************************************/ |
| |
| #ifdef CONFIG_RTC_DRIVER |
| struct rtc_lowerhalf_s *kinetis_rtc_lowerhalf(void); |
| #endif |
| |
| #undef EXTERN |
| #if defined(__cplusplus) |
| } |
| #endif |
| |
| #endif /* __ASSEMBLY__ */ |
| #endif /* __ARCH_ARM_SRC_KINETIS_KINETIS_RTC_IF_H */ |