History log of /seL4-camkes-master/projects/util_libs/libplatsupport/src/plat/hikey/ltimer.c
Revision Date Author Comments
# 0723c601 03-Jul-2020 Michael Yoo <Michael.Yoo@data61.csiro.au>

libplatsupport: fix rockpro64,hikey ltimer

Fixes an issue discovered by running sel4bench.

First, correctly map secondary timer's IRQ
Second, correctly free secondary timer's mapping


# ef1dfb7d 20-May-2020 Michael Yoo <michael.yoo@data61.csiro.au>

libplatsupport: refactor more timers

- The following platforms are changed: am335x,
fvp, hikey, rockpro64
- All platforms pass build
- Except for fvp which doesn't have a machine handy,
the other 3 platforms pass sel4test
- For each platform, the ltimer.c and device-specific
code is more intertwined than I would have liked,
including things like device code branching on
`LTIMER` constants, but I think cleaning the
interface is a project for later


# ef47d09d 08-Aug-2019 Damon Lee <Damon.Lee@data61.csiro.au>

libplatsupport: Refactor the internal handle_irq

Now that the handle_irq functions are no longer externally visible, this
commits refactors the handle_irq functions so that they can be accessed
internally. Also add logic to invoke the user supplied callbacks after
handling the timer IRQ.


# 80c6eb35 08-Aug-2019 Damon Lee <Damon.Lee@data61.csiro.au>

libplatsupport: Remove handle_irq from ltimers

The 'handle_irq' function is no longer necessary and shouldn't be called
externally as the IRQs will be managed by the IRQ handling functions of
the IRQ interface.


# 6e800582 08-Aug-2019 Damon Lee <Damon.Lee@data61.csiro.au>

libplatsupport: Allow user callbacks for ltimer

With the IRQ changes to the ltimer, IRQs are now managed internally.
This poses a problem with the management of the time manager and other
services which rely on having known that an interrupt arrived for the
timers. This also isn't a good idea as it presents a leaky abstraction
in that the services infers events based on interrupts received.

This commit adds the ability to allow users to supply a callback
that'll be called when certain events occur for the timer, e.g. timeouts
and etc.


# 0431e3a2 01-Aug-2019 Damon Lee <Damon.Lee@data61.csiro.au>

libplatsupport: Add IRQ register logic to ltimers

This commit adds IRQ registration logic to the ltimer driver level.
Instead of treating interrupt allocation being a OS/environment specific
thing, this commit now uses the OS/environment agnostic IRQ interface to
register these interrupts. Also fix bugs/clean-up the logic of the init
and destroy functions.


# 72e08733 06-Dec-2017 Anna Lyons <Anna.Lyons@data61.csiro.au>

hikey ltimer: drop rtc, only use dmt for timestamps

The previous approach of using the RTC and a dm timer for sub
second values was resulting in incorrect absolute time due to these
timers not being synced.

To solve this we drop the RTC and just use a dm timer and program it to overflow as
well as interrupt on overflow to get an absolute timestamp.


# 52da2a1d 05-Dec-2017 Anna Lyons <Anna.Lyons@data61.csiro.au>

Fix unchecked error in hikey ltimer


# 6267aec7 03-Dec-2017 Anna Lyons <Anna.Lyons@data61.csiro.au>

Fixes for hikey timers

- fix get_time, multiply by NS_IN_S rather than incorrect shift
- convert to and from milliseconds in dmtimer calculations to avoid
accuracy loss
- don't round down, irqs are allowe to come in early


# 3fa00c41 21-Jul-2017 Anna Lyons <Anna.Lyons@data61.csiro.au>

Add ltimer implementation for hikey

- uses same approach as previous virtual upcounter
- RTC to count seconds, 1 DMT for counting subseconds
- 1 DMT for timeouts