Lines Matching full:hellcreek
4 * Hirschmann Hellcreek TSN switch.
14 #include "hellcreek.h"
21 struct hellcreek *hellcreek = ds->priv; in hellcreek_get_ts_info() local
23 info->phc_index = hellcreek->ptp_clock ? in hellcreek_get_ts_info()
24 ptp_clock_index(hellcreek->ptp_clock) : -1; in hellcreek_get_ts_info()
42 static int hellcreek_set_hwtstamp_config(struct hellcreek *hellcreek, int port, in hellcreek_set_hwtstamp_config() argument
46 &hellcreek->ports[port].port_hwtstamp; in hellcreek_set_hwtstamp_config()
115 struct hellcreek *hellcreek = ds->priv; in hellcreek_port_hwtstamp_set() local
120 ps = &hellcreek->ports[port].port_hwtstamp; in hellcreek_port_hwtstamp_set()
125 err = hellcreek_set_hwtstamp_config(hellcreek, port, &config); in hellcreek_port_hwtstamp_set()
139 struct hellcreek *hellcreek = ds->priv; in hellcreek_port_hwtstamp_get() local
143 ps = &hellcreek->ports[port].port_hwtstamp; in hellcreek_port_hwtstamp_get()
153 static struct ptp_header *hellcreek_should_tstamp(struct hellcreek *hellcreek, in hellcreek_should_tstamp() argument
158 &hellcreek->ports[port].port_hwtstamp; in hellcreek_should_tstamp()
181 static int hellcreek_ptp_hwtstamp_available(struct hellcreek *hellcreek, in hellcreek_ptp_hwtstamp_available() argument
186 status = hellcreek_ptp_read(hellcreek, ts_reg); in hellcreek_ptp_hwtstamp_available()
189 dev_err(hellcreek->dev, in hellcreek_ptp_hwtstamp_available()
199 static u64 hellcreek_ptp_hwtstamp_read(struct hellcreek *hellcreek, in hellcreek_ptp_hwtstamp_read() argument
204 nsh = hellcreek_ptp_read(hellcreek, ts_reg); in hellcreek_ptp_hwtstamp_read()
205 nsh = hellcreek_ptp_read(hellcreek, ts_reg); in hellcreek_ptp_hwtstamp_read()
206 nsh = hellcreek_ptp_read(hellcreek, ts_reg); in hellcreek_ptp_hwtstamp_read()
207 nsh = hellcreek_ptp_read(hellcreek, ts_reg); in hellcreek_ptp_hwtstamp_read()
208 nsl = hellcreek_ptp_read(hellcreek, ts_reg); in hellcreek_ptp_hwtstamp_read()
213 static int hellcreek_txtstamp_work(struct hellcreek *hellcreek, in hellcreek_txtstamp_work() argument
235 dev_err(hellcreek->dev, "Wrong port for timestamping!\n"); in hellcreek_txtstamp_work()
239 ts_status = hellcreek_ptp_hwtstamp_available(hellcreek, status_reg); in hellcreek_txtstamp_work()
248 dev_err(hellcreek->dev, in hellcreek_txtstamp_work()
259 mutex_lock(&hellcreek->ptp_lock); in hellcreek_txtstamp_work()
260 ns = hellcreek_ptp_hwtstamp_read(hellcreek, data_reg); in hellcreek_txtstamp_work()
261 ns += hellcreek_ptp_gettime_seconds(hellcreek, ns); in hellcreek_txtstamp_work()
262 mutex_unlock(&hellcreek->ptp_lock); in hellcreek_txtstamp_work()
292 static void hellcreek_get_rxts(struct hellcreek *hellcreek, in hellcreek_get_rxts() argument
319 mutex_lock(&hellcreek->ptp_lock); in hellcreek_get_rxts()
320 ns += hellcreek_ptp_gettime_seconds(hellcreek, ns); in hellcreek_get_rxts()
321 mutex_unlock(&hellcreek->ptp_lock); in hellcreek_get_rxts()
331 static void hellcreek_rxtstamp_work(struct hellcreek *hellcreek, in hellcreek_rxtstamp_work() argument
339 hellcreek_get_rxts(hellcreek, ps, skb, &ps->rx_queue, port); in hellcreek_rxtstamp_work()
344 struct hellcreek *hellcreek = ptp_to_hellcreek(ptp); in hellcreek_hwtstamp_work() local
345 struct dsa_switch *ds = hellcreek->ds; in hellcreek_hwtstamp_work()
354 ps = &hellcreek->ports[i].port_hwtstamp; in hellcreek_hwtstamp_work()
357 restart |= hellcreek_txtstamp_work(hellcreek, ps, i); in hellcreek_hwtstamp_work()
359 hellcreek_rxtstamp_work(hellcreek, ps, i); in hellcreek_hwtstamp_work()
368 struct hellcreek *hellcreek = ds->priv; in hellcreek_port_txtstamp() local
374 ps = &hellcreek->ports[port].port_hwtstamp; in hellcreek_port_txtstamp()
384 hdr = hellcreek_should_tstamp(hellcreek, port, skb, type); in hellcreek_port_txtstamp()
405 ptp_schedule_worker(hellcreek->ptp_clock, 0); in hellcreek_port_txtstamp()
411 struct hellcreek *hellcreek = ds->priv; in hellcreek_port_rxtstamp() local
415 ps = &hellcreek->ports[port].port_hwtstamp; in hellcreek_port_rxtstamp()
427 hdr = hellcreek_should_tstamp(hellcreek, port, skb, type); in hellcreek_port_rxtstamp()
435 ptp_schedule_worker(hellcreek->ptp_clock, 0); in hellcreek_port_rxtstamp()
440 static void hellcreek_hwtstamp_port_setup(struct hellcreek *hellcreek, int port) in hellcreek_hwtstamp_port_setup() argument
443 &hellcreek->ports[port].port_hwtstamp; in hellcreek_hwtstamp_port_setup()
448 int hellcreek_hwtstamp_setup(struct hellcreek *hellcreek) in hellcreek_hwtstamp_setup() argument
450 struct dsa_switch *ds = hellcreek->ds; in hellcreek_hwtstamp_setup()
458 hellcreek_hwtstamp_port_setup(hellcreek, i); in hellcreek_hwtstamp_setup()
464 hellcreek_ptp_write(hellcreek, PR_SETTINGS_C_TS_SRC_TK_MASK | in hellcreek_hwtstamp_setup()
471 void hellcreek_hwtstamp_free(struct hellcreek *hellcreek) in hellcreek_hwtstamp_free() argument