Commit dadc5187 authored by Vadim Fedorenko's avatar Vadim Fedorenko Committed by Jakub Kicinski
Browse files

ptp: ptp_ines: add HW timestamp configuration reporting



The driver partially stores HW timestamping configuration, but missing
pieces can be read from HW. Add callback to report configuration.

Reviewed-by: default avatarKory Maincent <kory.maincent@bootlin.com>
Signed-off-by: default avatarVadim Fedorenko <vadim.fedorenko@linux.dev>
Link: https://patch.msgid.link/20251124181151.277256-8-vadim.fedorenko@linux.dev


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent d51de60b
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -328,6 +328,28 @@ static u64 ines_find_txts(struct ines_port *port, struct sk_buff *skb)
	return ns;
}

static int ines_hwtstamp_get(struct mii_timestamper *mii_ts,
			     struct kernel_hwtstamp_config *cfg)
{
	struct ines_port *port = container_of(mii_ts, struct ines_port, mii_ts);
	unsigned long flags;
	u32 port_conf;

	cfg->rx_filter = port->rxts_enabled ? HWTSTAMP_FILTER_PTP_V2_EVENT
					    : HWTSTAMP_FILTER_NONE;
	if (port->txts_enabled) {
		spin_lock_irqsave(&port->lock, flags);
		port_conf = ines_read32(port, port_conf);
		spin_unlock_irqrestore(&port->lock, flags);
		cfg->tx_type = (port_conf & CM_ONE_STEP) ? HWTSTAMP_TX_ONESTEP_P2P
							 : HWTSTAMP_TX_OFF;
	} else {
		cfg->tx_type = HWTSTAMP_TX_OFF;
	}

	return 0;
}

static int ines_hwtstamp_set(struct mii_timestamper *mii_ts,
			     struct kernel_hwtstamp_config *cfg,
			     struct netlink_ext_ack *extack)
@@ -710,6 +732,7 @@ static struct mii_timestamper *ines_ptp_probe_channel(struct device *device,
	port->mii_ts.rxtstamp = ines_rxtstamp;
	port->mii_ts.txtstamp = ines_txtstamp;
	port->mii_ts.hwtstamp_set = ines_hwtstamp_set;
	port->mii_ts.hwtstamp_get = ines_hwtstamp_get;
	port->mii_ts.link_state = ines_link_state;
	port->mii_ts.ts_info = ines_ts_info;