I'm using a VAR-SOM-MX7 board (has i.MX7 on-board) from Variscite.
I wish ro run it as PTP slave (succeded) and output a PPS for external use (couldn't so far).
The pad for PPS out is LCD_DATA20 (ENET1_1588_EVENT2_OUT).
I have my custom device tree configured this way:
/dts-v1/;
#include <dt-bindings/input/input.h>
#include <dt-bindings/thermal/thermal.h>
#include "imx7d.dtsi"
<...>
&iomuxc {
imx7d-sdb {
pinctrl_enet1: enet1grp {
fsl,pins = <
MX7D_PAD_SD2_CD_B__ENET1_MDIO 0x3
MX7D_PAD_SD2_WP__ENET1_MDC 0x3
MX7D_PAD_ENET1_RGMII_TXC__ENET1_RGMII_TXC 0x1
MX7D_PAD_ENET1_RGMII_TD0__ENET1_RGMII_TD0 0x1
MX7D_PAD_ENET1_RGMII_TD1__ENET1_RGMII_TD1 0x1
MX7D_PAD_ENET1_RGMII_TD2__ENET1_RGMII_TD2 0x1
MX7D_PAD_ENET1_RGMII_TD3__ENET1_RGMII_TD3 0x1
MX7D_PAD_ENET1_RGMII_TX_CTL__ENET1_RGMII_TX_CTL 0x1
MX7D_PAD_ENET1_RGMII_RXC__ENET1_RGMII_RXC 0x1
MX7D_PAD_ENET1_RGMII_RD0__ENET1_RGMII_RD0 0x1
MX7D_PAD_ENET1_RGMII_RD1__ENET1_RGMII_RD1 0x1
MX7D_PAD_ENET1_RGMII_RD2__ENET1_RGMII_RD2 0x1
MX7D_PAD_ENET1_RGMII_RD3__ENET1_RGMII_RD3 0x1
MX7D_PAD_ENET1_RGMII_RX_CTL__ENET1_RGMII_RX_CTL 0x1
MX7D_PAD_LCD_CLK__ENET1_1588_EVENT2_IN 0x1
MX7D_PAD_LCD_DATA20__ENET1_1588_EVENT2_OUT 0x79
>;
};
};
};
<...>
&fec1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_enet1>;
phy-supply=<&vgen3_reg>;
assigned-clocks = <&clks IMX7D_ENET_PHY_REF_ROOT_SRC>,
<&clks IMX7D_ENET_AXI_ROOT_SRC>,
<&clks IMX7D_ENET1_TIME_ROOT_SRC>,
<&clks IMX7D_ENET1_TIME_ROOT_CLK>,
<&clks IMX7D_ENET_AXI_ROOT_CLK>;
assigned-clock-parents = <&clks IMX7D_PLL_ENET_MAIN_25M_CLK>,
<&clks IMX7D_PLL_ENET_MAIN_250M_CLK>,
<&clks IMX7D_PLL_ENET_MAIN_100M_CLK>;
assigned-clock-rates = <0>, <0>, <0>, <100000000>, <250000000>;
phy-mode = "rgmii-id";
phy-handle = <ðphy0>;
phy-reset-gpios = <&gpio5 11 GPIO_ACTIVE_LOW>;
fsl,magic-packet;
status = "okay";
mdio {
ethphy0: ethernet-phy@0 {
compatible = "ethernet-phy-ieee802.3-c22";
reg = <0>;
};
};
};
# dmesg | grep pps[ 0.259649] pps_core: LinuxPPS API ver. 1 registered
[ 0.259658] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 1.103317] pps pps0: new PPS source ptp0
I can successfully run ptp4l from linuxptp to sync time from remote source, which means 1588 hardware timestamping is functional and I enable PPS this way:
$ echo 1 > /sys/class/ptp/ptp0/pps_enable
However, I don't register any output on EVENT2_OUT pin. I feel like I miss something fundamental. What could be wrong here?