Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions arch/sim/src/sim/sim_initialize.c
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,14 @@ void up_initialize(void)
sim_init_cmdline();
#endif

#ifdef CONFIG_RTC_DRIVER
/* Register the RTC after clock_initialize() has synchronized system
* time.
*/

sim_rtc_initialize();
#endif

/* Register some tty-port to access tty-port on sim platform */

sim_uartinit();
Expand Down
6 changes: 6 additions & 0 deletions arch/sim/src/sim/sim_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,12 @@ int sim_init_func_call_ipi(int irq);
void sim_timer_update(void);
#endif

/* sim_rtc.c ****************************************************************/

#ifdef CONFIG_RTC_DRIVER
int sim_rtc_initialize(void);
#endif

/* sim_uart.c ***************************************************************/

void sim_uartinit(void);
Expand Down
25 changes: 24 additions & 1 deletion arch/sim/src/sim/sim_rtc.c
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ static struct rtc_lowerhalf_s g_sim_rtc =
.ops = &g_sim_rtc_ops,
};

static struct rtc_lowerhalf_s *g_sim_rtc_lower;
static int64_t g_sim_delta;

/****************************************************************************
Expand Down Expand Up @@ -134,6 +135,28 @@ int up_rtc_initialize(void)
rtc = rpmsg_rtc_initialize();
sync = false;
#endif

g_sim_rtc_lower = rtc;
up_rtc_set_lowerhalf(rtc, sync);
return rtc_initialize(0, rtc);
return OK;
}

/****************************************************************************
* Name: sim_rtc_initialize
*
* Description:
* Register the SIM RTC driver after the system clock has been initialized.
* This ensures that the /dev/rtc0 inode receives a valid timestamp.
*
* Input Parameters:
* None
*
* Returned Value:
* Zero (OK) on success; a negated errno on failure
*
****************************************************************************/

int sim_rtc_initialize(void)
{
return rtc_initialize(0, g_sim_rtc_lower);
}
Loading