Skip to content

Linux kernel PPS generator using GPIO pins

License

Notifications You must be signed in to change notification settings

2128506/pps-gen-gpio

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pps-gen-gpio

Linux kernel PPS generator using GPIO pins.

In kernel 5.10 there is no support for using a GPIO pin as a PPS generator, only a GPIO PPS client is available. This driver is derived from GPIO driver by Juan Solano which is derived from the current parallel port PPS generator and provides a PPS signal through a GPIO pin specified in the device tree. The PPS signal is synchronized to the tv_sec increment of the wall clock.

This version of the driver generates long pulses (200ms by default, configurable) and provides activatin/deactivation via sysfs. Raising or falling edge synchronization mode can be selected.

Tested on Radxa CM3 IO Board.

Usage

Set PPS GPIO pin in your device tree:

	pps-gen {
     compatible = "pps-gen-gpio";
     pinctrl-names = "default";
     pps-gen-gpio = <&gpio3 RK_PD5 GPIO_ACTIVE_HIGH>;
     default-state = "off";
     status = "okay";
  }

After modifying the device tree, add the files into drivers/pps/generators and configure the driver to be built as a module. You need to enable PPS support in the kernel.

When loaded, driver sets configured PPS pin to high and waits for activation command. To activate PPS generation, write 1 to /sys/devices/pps-gen/state/active

To deactivate, write 0 to /sys/devices/pps-gen/state/active

By default driver will be using raising edge for synchronization. This can be changed by providing parameter mode=1.

Pulse width can be set via parameter width=nnn (where nnn is pulse width in milliseconds).

About

Linux kernel PPS generator using GPIO pins

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 98.7%
  • Makefile 1.3%