pps-gpio: Add new property to use system time timestamp for PPS GPIO

If the device tree property "use-system-time-ts" is defined
then the timestamp used for PPS events will be the system time,
otherwise it will be the monotonic boot time.

Change-Id: I92fab1d8861e1d652fcb68066b417f44c1f8e29b
Signed-off-by: Gustavo Solaira <gustavos@codeaurora.org>
This commit is contained in:
Gustavo Solaira 2017-10-21 16:36:02 -07:00
parent 3f7ce4d543
commit 215533f02a
2 changed files with 13 additions and 3 deletions

View file

@ -10,6 +10,9 @@ Required properties:
Optional properties:
- assert-falling-edge: when present, assert is indicated by a falling edge
(instead of by a rising edge)
- use-system-time-ts: use the system time via pps_get_ts as the timestamp
if this is not defined then the timestamp will come
from the monotonic boot time
Example:
pps {

View file

@ -44,6 +44,7 @@ struct pps_gpio_device_data {
bool assert_falling_edge;
bool capture_clear;
unsigned int gpio_pin;
bool use_system_time_ts;
};
/*
@ -56,11 +57,14 @@ static irqreturn_t pps_gpio_irq_handler(int irq, void *data)
struct pps_event_time ts;
int rising_edge;
/* Get the time stamp first */
get_monotonic_boottime(&ts.ts_real);
info = data;
/* Get the time stamp first */
if (!info->use_system_time_ts)
get_monotonic_boottime(&ts.ts_real);
else
pps_get_ts(&ts);
rising_edge = gpio_get_value(info->gpio_pin);
if ((rising_edge && !info->assert_falling_edge) ||
(!rising_edge && info->assert_falling_edge))
@ -119,6 +123,9 @@ static int pps_gpio_probe(struct platform_device *pdev)
if (of_get_property(np, "assert-falling-edge", NULL))
data->assert_falling_edge = true;
if (of_get_property(np, "use-system-time-ts", NULL))
data->use_system_time_ts = true;
}
/* GPIO setup */