net: phy: micrel: Add support for PTP_PF_PEROUT for lan8841
authorHoratiu Vultur <horatiu.vultur@microchip.com>
Tue, 7 Mar 2023 21:44:02 +0000 (22:44 +0100)
committerJakub Kicinski <kuba@kernel.org>
Mon, 13 Mar 2023 22:36:32 +0000 (15:36 -0700)
commite4ed8ba08e3f1ef24771eb95f87da129ad752063
tree3e559b5c67afddeb3d8b3277cadaa8f10df8f254
parent95b744508d4d5135ae2a096ff3f0ee882bcc52b3
net: phy: micrel: Add support for PTP_PF_PEROUT for lan8841

Lan8841 has 10 GPIOs and it has 2 events(EVENT_A and EVENT_B). It is
possible to assigned the 2 events to any of the GPIOs, but a GPIO can
have only 1 event at a time.
These events are used to generate periodic signals. It is possible to
configure the length, the start time and the period of the signal by
configuring the event.
Currently the SW uses only EVENT_A to generate the perout.

These events are generated by comparing the target time with the PHC
time. In case the PHC time is changed to a value bigger than the target
time + reload time, then it would generate only 1 event and then it
would stop because target time + reload time is small than PHC time.
Therefore it is required to change also the target time every time when
the PHC is changed. The same will apply also when the PHC time is
changed to a smaller value.

This was tested using:
testptp -L 6,2
testptp -p 1000000000 -w 200000000

Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
Link: https://lore.kernel.org/r/20230307214402.793057-1-horatiu.vultur@microchip.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/phy/micrel.c