|
@@ -52,6 +52,14 @@ static void pps_add_offset(struct pps_ktime *ts, struct pps_ktime *offset)
|
|
|
ts->sec += offset->sec;
|
|
|
}
|
|
|
|
|
|
+static void pps_echo_client_default(struct pps_device *pps, int event,
|
|
|
+ void *data)
|
|
|
+{
|
|
|
+ dev_info(pps->dev, "echo %s %s\n",
|
|
|
+ event & PPS_CAPTUREASSERT ? "assert" : "",
|
|
|
+ event & PPS_CAPTURECLEAR ? "clear" : "");
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* Exported functions
|
|
|
*/
|
|
@@ -80,13 +88,6 @@ struct pps_device *pps_register_source(struct pps_source_info *info,
|
|
|
err = -EINVAL;
|
|
|
goto pps_register_source_exit;
|
|
|
}
|
|
|
- if ((info->mode & (PPS_ECHOASSERT | PPS_ECHOCLEAR)) != 0 &&
|
|
|
- info->echo == NULL) {
|
|
|
- pr_err("%s: echo function is not defined\n",
|
|
|
- info->name);
|
|
|
- err = -EINVAL;
|
|
|
- goto pps_register_source_exit;
|
|
|
- }
|
|
|
if ((info->mode & (PPS_TSFMT_TSPEC | PPS_TSFMT_NTPFP)) == 0) {
|
|
|
pr_err("%s: unspecified time format\n",
|
|
|
info->name);
|
|
@@ -108,6 +109,11 @@ struct pps_device *pps_register_source(struct pps_source_info *info,
|
|
|
pps->params.mode = default_params;
|
|
|
pps->info = *info;
|
|
|
|
|
|
+ /* check for default echo function */
|
|
|
+ if ((pps->info.mode & (PPS_ECHOASSERT | PPS_ECHOCLEAR)) &&
|
|
|
+ pps->info.echo == NULL)
|
|
|
+ pps->info.echo = pps_echo_client_default;
|
|
|
+
|
|
|
init_waitqueue_head(&pps->queue);
|
|
|
spin_lock_init(&pps->lock);
|
|
|
|