No PPS output from PTP clock with i.MX7

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

No PPS output from PTP clock with i.MX7

504 Views
greentea
Contributor I

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 = <&ethphy0>;
    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?

 

0 Kudos
Reply
0 Replies