diff --git a/arch/arm64/src/goldfish/Kconfig b/arch/arm64/src/goldfish/Kconfig index 10ebc931e1e..53ddd2ad2c7 100644 --- a/arch/arm64/src/goldfish/Kconfig +++ b/arch/arm64/src/goldfish/Kconfig @@ -5,4 +5,14 @@ if ARCH_CHIP_GOLDFISH +config GOLDFISH_RTC_PL031_BASE + hex "GOLDFISH RTC PL031 BASE" + default 0x09010000 + depends on RTC_PL031 + +config GOLDFISH_RTC_PL031_IRQ + hex "GOLDFISH RTC PL031 IRQ" + default 0x22 + depends on RTC_PL031 + endif # ARCH_CHIP_GOLDFISH diff --git a/arch/arm64/src/goldfish/Make.defs b/arch/arm64/src/goldfish/Make.defs index 837cf3b293b..8d4b6c94503 100644 --- a/arch/arm64/src/goldfish/Make.defs +++ b/arch/arm64/src/goldfish/Make.defs @@ -23,6 +23,10 @@ include common/Make.defs # qemu-specific C source files CHIP_CSRCS = goldfish_boot.c goldfish_serial.c goldfish_timer.c +ifeq ($(CONFIG_RTC_PL031),y) + CHIP_CSRCS += goldfish_rtc.c +endif + ifeq ($(CONFIG_ARCH_EARLY_PRINT),y) CHIP_ASRCS = goldfish_lowputc.S endif diff --git a/arch/arm64/src/goldfish/goldfish_rtc.c b/arch/arm64/src/goldfish/goldfish_rtc.c new file mode 100644 index 00000000000..7948520181a --- /dev/null +++ b/arch/arm64/src/goldfish/goldfish_rtc.c @@ -0,0 +1,43 @@ +/*************************************************************************** + * arch/arm64/src/goldfish/goldfish_rtc.c + * + * 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 + ***************************************************************************/ + +#include +#include +#include +#include + +/*************************************************************************** + * Public Functions + ***************************************************************************/ + +int up_rtc_initialize(void) +{ + FAR struct rtc_lowerhalf_s *rtc_lowerhalf = + pl031_initialize(CONFIG_GOLDFISH_RTC_PL031_BASE, + CONFIG_GOLDFISH_RTC_PL031_IRQ); + + up_rtc_set_lowerhalf(rtc_lowerhalf, true); + + return rtc_initialize(0, rtc_lowerhalf); +}