drivers/pps: aesthetic tweaks to PPS-related content
authorRobert P. J. Day <rpjday@crashcourse.ca>
Fri, 8 Sep 2017 23:17:19 +0000 (16:17 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 9 Sep 2017 01:26:51 +0000 (18:26 -0700)
Collection of aesthetic adjustments to various PPS-related files,
directories and Documentation, some quite minor just for the sake of
consistency, including:

 * Updated example of pps device tree node (courtesy Rodolfo G.)
 * "PPS-API" -> "PPS API"
 * "pps_source_info_s" -> "pps_source_info"
 * "ktimer driver" -> "pps-ktimer driver"
 * "ppstest /dev/pps0" -> "ppstest /dev/pps1" to match example
 * Add missing PPS-related entries to MAINTAINERS file
 * Other trivialities

Link: http://lkml.kernel.org/r/alpine.LFD.2.20.1708261048220.8106@localhost.localdomain
Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca>
Acked-by: Rodolfo Giometti <giometti@enneenne.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Documentation/devicetree/bindings/pps/pps-gpio.txt
Documentation/pps/pps.txt
MAINTAINERS
include/linux/pps-gpio.h
include/linux/pps_kernel.h
include/uapi/linux/pps.h
kernel/time/timekeeping.c

index 40bf9c3564a552639cbf8c432b2c3c175d630601..0de23b79365729d376a97032d76231ad70aa9b38 100644 (file)
@@ -13,8 +13,12 @@ Optional properties:
 
 Example:
        pps {
 
 Example:
        pps {
-               compatible = "pps-gpio";
-               gpios = <&gpio2 6 0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_pps>;
 
 
+               gpios = <&gpio1 26 GPIO_ACTIVE_HIGH>;
                assert-falling-edge;
                assert-falling-edge;
+
+               compatible = "pps-gpio";
+               status = "okay";
        };
        };
index 1fdbd544721639a6dc7a48576e0e3f1066873729..99f5d8c4c6525b6e2bd462f5f2b14150424d1c02 100644 (file)
@@ -48,12 +48,12 @@ problem:
    time_pps_create().
 
 This implies that the source has a /dev/... entry. This assumption is
    time_pps_create().
 
 This implies that the source has a /dev/... entry. This assumption is
-ok for the serial and parallel port, where you can do something
+OK for the serial and parallel port, where you can do something
 useful besides(!) the gathering of timestamps as it is the central
 useful besides(!) the gathering of timestamps as it is the central
-task for a PPS-API. But this assumption does not work for a single
+task for a PPS API. But this assumption does not work for a single
 purpose GPIO line. In this case even basic file-related functionality
 (like read() and write()) makes no sense at all and should not be a
 purpose GPIO line. In this case even basic file-related functionality
 (like read() and write()) makes no sense at all and should not be a
-precondition for the use of a PPS-API.
+precondition for the use of a PPS API.
 
 The problem can be simply solved if you consider that a PPS source is
 not always connected with a GPS data source.
 
 The problem can be simply solved if you consider that a PPS source is
 not always connected with a GPS data source.
@@ -88,13 +88,13 @@ Coding example
 --------------
 
 To register a PPS source into the kernel you should define a struct
 --------------
 
 To register a PPS source into the kernel you should define a struct
-pps_source_info_s as follows:
+pps_source_info as follows:
 
     static struct pps_source_info pps_ktimer_info = {
            .name         = "ktimer",
            .path         = "",
 
     static struct pps_source_info pps_ktimer_info = {
            .name         = "ktimer",
            .path         = "",
-           .mode         = PPS_CAPTUREASSERT | PPS_OFFSETASSERT | \
-                           PPS_ECHOASSERT | \
+           .mode         = PPS_CAPTUREASSERT | PPS_OFFSETASSERT |
+                           PPS_ECHOASSERT |
                            PPS_CANWAIT | PPS_TSFMT_TSPEC,
            .echo         = pps_ktimer_echo,
            .owner        = THIS_MODULE,
                            PPS_CANWAIT | PPS_TSFMT_TSPEC,
            .echo         = pps_ktimer_echo,
            .owner        = THIS_MODULE,
@@ -108,13 +108,13 @@ initialization routine as follows:
 
 The pps_register_source() prototype is:
 
 
 The pps_register_source() prototype is:
 
-  int pps_register_source(struct pps_source_info_s *info, int default_params)
+  int pps_register_source(struct pps_source_info *info, int default_params)
 
 where "info" is a pointer to a structure that describes a particular
 PPS source, "default_params" tells the system what the initial default
 parameters for the device should be (it is obvious that these parameters
 must be a subset of ones defined in the struct
 
 where "info" is a pointer to a structure that describes a particular
 PPS source, "default_params" tells the system what the initial default
 parameters for the device should be (it is obvious that these parameters
 must be a subset of ones defined in the struct
-pps_source_info_s which describe the capabilities of the driver).
+pps_source_info which describe the capabilities of the driver).
 
 Once you have registered a new PPS source into the system you can
 signal an assert event (for example in the interrupt handler routine)
 
 Once you have registered a new PPS source into the system you can
 signal an assert event (for example in the interrupt handler routine)
@@ -142,8 +142,10 @@ If the SYSFS filesystem is enabled in the kernel it provides a new class:
 Every directory is the ID of a PPS sources defined in the system and
 inside you find several files:
 
 Every directory is the ID of a PPS sources defined in the system and
 inside you find several files:
 
-   $ ls /sys/class/pps/pps0/
-   assert      clear  echo  mode  name  path  subsystem@  uevent
+   $ ls -F /sys/class/pps/pps0/
+   assert     dev        mode       path       subsystem@
+   clear      echo       name       power/     uevent
+
 
 Inside each "assert" and "clear" file you can find the timestamp and a
 sequence number:
 
 Inside each "assert" and "clear" file you can find the timestamp and a
 sequence number:
@@ -154,32 +156,32 @@ sequence number:
 Where before the "#" is the timestamp in seconds; after it is the
 sequence number. Other files are:
 
 Where before the "#" is the timestamp in seconds; after it is the
 sequence number. Other files are:
 
-* echo: reports if the PPS source has an echo function or not;
+ * echo: reports if the PPS source has an echo function or not;
 
 
-* mode: reports available PPS functioning modes;
+ * mode: reports available PPS functioning modes;
 
 
-* name: reports the PPS source's name;
+ * name: reports the PPS source's name;
 
 
-* path: reports the PPS source's device path, that is the device the
-  PPS source is connected to (if it exists).
+ * path: reports the PPS source's device path, that is the device the
+   PPS source is connected to (if it exists).
 
 
 Testing the PPS support
 -----------------------
 
 In order to test the PPS support even without specific hardware you can use
 
 
 Testing the PPS support
 -----------------------
 
 In order to test the PPS support even without specific hardware you can use
-the ktimer driver (see the client subsection in the PPS configuration menu)
+the pps-ktimer driver (see the client subsection in the PPS configuration menu)
 and the userland tools available in your distribution's pps-tools package,
 and the userland tools available in your distribution's pps-tools package,
-http://linuxpps.org , or https://github.com/ago/pps-tools .
+http://linuxpps.org , or https://github.com/redlab-i/pps-tools.
 
 
-Once you have enabled the compilation of ktimer just modprobe it (if
+Once you have enabled the compilation of pps-ktimer just modprobe it (if
 not statically compiled):
 
 not statically compiled):
 
-   # modprobe ktimer
+   # modprobe pps-ktimer
 
 and the run ppstest as follow:
 
 
 and the run ppstest as follow:
 
-   $ ./ppstest /dev/pps0
+   $ ./ppstest /dev/pps1
    trying PPS source "/dev/pps1"
    found PPS source "/dev/pps1"
    ok, found 1 source(s), now start fetching data...
    trying PPS source "/dev/pps1"
    found PPS source "/dev/pps1"
    ok, found 1 source(s), now start fetching data...
@@ -187,7 +189,7 @@ and the run ppstest as follow:
    source 0 - assert 1186592700.388931295, sequence: 365 - clear  0.000000000, sequence: 0
    source 0 - assert 1186592701.389032765, sequence: 366 - clear  0.000000000, sequence: 0
 
    source 0 - assert 1186592700.388931295, sequence: 365 - clear  0.000000000, sequence: 0
    source 0 - assert 1186592701.389032765, sequence: 366 - clear  0.000000000, sequence: 0
 
-Please, note that to compile userland programs you need the file timepps.h .
+Please note that to compile userland programs, you need the file timepps.h.
 This is available in the pps-tools repository mentioned above.
 
 
 This is available in the pps-tools repository mentioned above.
 
 
index ff3a349f24e45cd9a156b0a304e580dbf242c91b..109c5d9a04c4bd2149af9f5480f7ca1b1a0e5beb 100644 (file)
@@ -10725,8 +10725,11 @@ W:     http://wiki.enneenne.com/index.php/LinuxPPS_support
 L:     linuxpps@ml.enneenne.com (subscribers-only)
 S:     Maintained
 F:     Documentation/pps/
 L:     linuxpps@ml.enneenne.com (subscribers-only)
 S:     Maintained
 F:     Documentation/pps/
+F:     Documentation/devicetree/bindings/pps/pps-gpio.txt
+F:     Documentation/ABI/testing/sysfs-pps
 F:     drivers/pps/
 F:     include/linux/pps*.h
 F:     drivers/pps/
 F:     include/linux/pps*.h
+F:     include/uapi/linux/pps.h
 
 PPTP DRIVER
 M:     Dmitry Kozlov <xeb@mail.ru>
 
 PPTP DRIVER
 M:     Dmitry Kozlov <xeb@mail.ru>
index 0035abe41b9a4547f70a65c94f2477b11c320f30..56f35dd3d01d382820c18283500f4a6f725c854f 100644 (file)
@@ -29,4 +29,4 @@ struct pps_gpio_platform_data {
        const char *gpio_label;
 };
 
        const char *gpio_label;
 };
 
-#endif
+#endif /* _PPS_GPIO_H */
index 35ac903956c7c0c282a9b0cfd74004212c8eb10d..80a980cc8d95f174a120fbd1aece4bdf7e55315b 100644 (file)
@@ -22,7 +22,6 @@
 #define LINUX_PPS_KERNEL_H
 
 #include <linux/pps.h>
 #define LINUX_PPS_KERNEL_H
 
 #include <linux/pps.h>
-
 #include <linux/cdev.h>
 #include <linux/device.h>
 #include <linux/time.h>
 #include <linux/cdev.h>
 #include <linux/device.h>
 #include <linux/time.h>
@@ -35,9 +34,9 @@ struct pps_device;
 
 /* The specific PPS source info */
 struct pps_source_info {
 
 /* The specific PPS source info */
 struct pps_source_info {
-       char name[PPS_MAX_NAME_LEN];            /* simbolic name */
+       char name[PPS_MAX_NAME_LEN];            /* symbolic name */
        char path[PPS_MAX_NAME_LEN];            /* path of connected device */
        char path[PPS_MAX_NAME_LEN];            /* path of connected device */
-       int mode;                               /* PPS's allowed mode */
+       int mode;                               /* PPS allowed mode */
 
        void (*echo)(struct pps_device *pps,
                        int event, void *data); /* PPS echo function */
 
        void (*echo)(struct pps_device *pps,
                        int event, void *data); /* PPS echo function */
@@ -57,10 +56,10 @@ struct pps_event_time {
 struct pps_device {
        struct pps_source_info info;            /* PSS source info */
 
 struct pps_device {
        struct pps_source_info info;            /* PSS source info */
 
-       struct pps_kparams params;              /* PPS's current params */
+       struct pps_kparams params;              /* PPS current params */
 
 
-       __u32 assert_sequence;                  /* PPS' assert event seq # */
-       __u32 clear_sequence;                   /* PPS' clear event seq # */
+       __u32 assert_sequence;                  /* PPS assert event seq # */
+       __u32 clear_sequence;                   /* PPS clear event seq # */
        struct pps_ktime assert_tu;
        struct pps_ktime clear_tu;
        int current_mode;                       /* PPS mode at event time */
        struct pps_ktime assert_tu;
        struct pps_ktime clear_tu;
        int current_mode;                       /* PPS mode at event time */
@@ -69,7 +68,7 @@ struct pps_device {
        wait_queue_head_t queue;                /* PPS event queue */
 
        unsigned int id;                        /* PPS source unique ID */
        wait_queue_head_t queue;                /* PPS event queue */
 
        unsigned int id;                        /* PPS source unique ID */
-       void const *lookup_cookie;              /* pps_lookup_dev only */
+       void const *lookup_cookie;              /* For pps_lookup_dev() only */
        struct cdev cdev;
        struct device *dev;
        struct fasync_struct *async_queue;      /* fasync method */
        struct cdev cdev;
        struct device *dev;
        struct fasync_struct *async_queue;      /* fasync method */
@@ -101,7 +100,7 @@ extern struct pps_device *pps_register_source(
 extern void pps_unregister_source(struct pps_device *pps);
 extern void pps_event(struct pps_device *pps,
                struct pps_event_time *ts, int event, void *data);
 extern void pps_unregister_source(struct pps_device *pps);
 extern void pps_event(struct pps_device *pps,
                struct pps_event_time *ts, int event, void *data);
-/* Look up a pps device by magic cookie */
+/* Look up a pps_device by magic cookie */
 struct pps_device *pps_lookup_dev(void const *cookie);
 
 static inline void timespec_to_pps_ktime(struct pps_ktime *kt,
 struct pps_device *pps_lookup_dev(void const *cookie);
 
 static inline void timespec_to_pps_ktime(struct pps_ktime *kt,
@@ -132,4 +131,3 @@ static inline void pps_sub_ts(struct pps_event_time *ts, struct timespec64 delta
 }
 
 #endif /* LINUX_PPS_KERNEL_H */
 }
 
 #endif /* LINUX_PPS_KERNEL_H */
-
index c1cb3825a8bc805e804f88c4e759e77716c6efef..c29d6b791c0816e35b0e025b80ed8d9f0eb0400a 100644 (file)
@@ -95,8 +95,8 @@ struct pps_kparams {
 #define PPS_CAPTURECLEAR       0x02    /* capture clear events */
 #define PPS_CAPTUREBOTH                0x03    /* capture assert and clear events */
 
 #define PPS_CAPTURECLEAR       0x02    /* capture clear events */
 #define PPS_CAPTUREBOTH                0x03    /* capture assert and clear events */
 
-#define PPS_OFFSETASSERT       0x10    /* apply compensation for assert ev. */
-#define PPS_OFFSETCLEAR                0x20    /* apply compensation for clear ev. */
+#define PPS_OFFSETASSERT       0x10    /* apply compensation for assert event */
+#define PPS_OFFSETCLEAR                0x20    /* apply compensation for clear event */
 
 #define PPS_CANWAIT            0x100   /* can we wait for an event? */
 #define PPS_CANPOLL            0x200   /* bit reserved for future use */
 
 #define PPS_CANWAIT            0x100   /* can we wait for an event? */
 #define PPS_CANPOLL            0x200   /* bit reserved for future use */
index 8ea4fb31571928913781b75b70b75210a46b3d8d..2cafb49aa65e13b5b1d29223e8943d53386a795d 100644 (file)
@@ -2316,7 +2316,7 @@ void hardpps(const struct timespec64 *phase_ts, const struct timespec64 *raw_ts)
        raw_spin_unlock_irqrestore(&timekeeper_lock, flags);
 }
 EXPORT_SYMBOL(hardpps);
        raw_spin_unlock_irqrestore(&timekeeper_lock, flags);
 }
 EXPORT_SYMBOL(hardpps);
-#endif
+#endif /* CONFIG_NTP_PPS */
 
 /**
  * xtime_update() - advances the timekeeping infrastructure
 
 /**
  * xtime_update() - advances the timekeeping infrastructure