• Home
  • Raw
  • Download

Lines Matching refs:clock

112 	struct dp83640_clock *clock;  member
235 if (dp83640->clock->page != page) { in ext_read()
237 dp83640->clock->page = page; in ext_read()
250 if (dp83640->clock->page != page) { in ext_write()
252 dp83640->clock->page = page; in ext_write()
307 static int periodic_output(struct dp83640_clock *clock, in periodic_output() argument
311 struct dp83640_private *dp83640 = clock->chosen; in periodic_output()
317 gpio = 1 + ptp_find_pin(clock->ptp_clock, PTP_PF_PEROUT, in periodic_output()
335 mutex_lock(&clock->extreg_lock); in periodic_output()
338 mutex_unlock(&clock->extreg_lock); in periodic_output()
348 mutex_lock(&clock->extreg_lock); in periodic_output()
372 mutex_unlock(&clock->extreg_lock); in periodic_output()
380 struct dp83640_clock *clock = in ptp_dp83640_adjfine() local
382 struct phy_device *phydev = clock->chosen->phydev; in ptp_dp83640_adjfine()
401 mutex_lock(&clock->extreg_lock); in ptp_dp83640_adjfine()
406 mutex_unlock(&clock->extreg_lock); in ptp_dp83640_adjfine()
413 struct dp83640_clock *clock = in ptp_dp83640_adjtime() local
415 struct phy_device *phydev = clock->chosen->phydev; in ptp_dp83640_adjtime()
423 mutex_lock(&clock->extreg_lock); in ptp_dp83640_adjtime()
427 mutex_unlock(&clock->extreg_lock); in ptp_dp83640_adjtime()
435 struct dp83640_clock *clock = in ptp_dp83640_gettime() local
437 struct phy_device *phydev = clock->chosen->phydev; in ptp_dp83640_gettime()
440 mutex_lock(&clock->extreg_lock); in ptp_dp83640_gettime()
449 mutex_unlock(&clock->extreg_lock); in ptp_dp83640_gettime()
460 struct dp83640_clock *clock = in ptp_dp83640_settime() local
462 struct phy_device *phydev = clock->chosen->phydev; in ptp_dp83640_settime()
465 mutex_lock(&clock->extreg_lock); in ptp_dp83640_settime()
469 mutex_unlock(&clock->extreg_lock); in ptp_dp83640_settime()
477 struct dp83640_clock *clock = in ptp_dp83640_enable() local
479 struct phy_device *phydev = clock->chosen->phydev; in ptp_dp83640_enable()
491 gpio_num = 1 + ptp_find_pin(clock->ptp_clock, in ptp_dp83640_enable()
501 mutex_lock(&clock->extreg_lock); in ptp_dp83640_enable()
503 mutex_unlock(&clock->extreg_lock); in ptp_dp83640_enable()
509 return periodic_output(clock, rq, on, rq->perout.index); in ptp_dp83640_enable()
521 struct dp83640_clock *clock = in ptp_dp83640_verify() local
524 if (clock->caps.pin_config[pin].func == PTP_PF_PHYSYNC && in ptp_dp83640_verify()
525 !list_empty(&clock->phylist)) in ptp_dp83640_verify()
540 struct dp83640_clock *clock = dp83640->clock; in enable_status_frames() local
548 mutex_lock(&clock->extreg_lock); in enable_status_frames()
553 mutex_unlock(&clock->extreg_lock); in enable_status_frames()
615 static void recalibrate(struct dp83640_clock *clock) in recalibrate() argument
622 struct phy_device *master = clock->chosen->phydev; in recalibrate()
626 cal_gpio = 1 + ptp_find_pin(clock->ptp_clock, PTP_PF_PHYSYNC, 0); in recalibrate()
632 mutex_lock(&clock->extreg_lock); in recalibrate()
637 list_for_each(this, &clock->phylist) { in recalibrate()
639 enable_broadcast(tmp->phydev, clock->page, 1); in recalibrate()
644 enable_broadcast(master, clock->page, 1); in recalibrate()
656 list_for_each(this, &clock->phylist) { in recalibrate()
698 list_for_each(this, &clock->phylist) { in recalibrate()
718 list_for_each(this, &clock->phylist) { in recalibrate()
724 mutex_unlock(&clock->extreg_lock); in recalibrate()
785 ptp_clock_event(dp83640->clock->ptp_clock, &event); in decode_evnt()
1008 struct dp83640_clock *clock; in dp83640_free_clocks() local
1014 clock = list_entry(this, struct dp83640_clock, list); in dp83640_free_clocks()
1015 if (!list_empty(&clock->phylist)) { in dp83640_free_clocks()
1019 list_del(&clock->list); in dp83640_free_clocks()
1020 mutex_destroy(&clock->extreg_lock); in dp83640_free_clocks()
1021 mutex_destroy(&clock->clock_lock); in dp83640_free_clocks()
1022 put_device(&clock->bus->dev); in dp83640_free_clocks()
1023 kfree(clock->caps.pin_config); in dp83640_free_clocks()
1024 kfree(clock); in dp83640_free_clocks()
1030 static void dp83640_clock_init(struct dp83640_clock *clock, struct mii_bus *bus) in dp83640_clock_init() argument
1032 INIT_LIST_HEAD(&clock->list); in dp83640_clock_init()
1033 clock->bus = bus; in dp83640_clock_init()
1034 mutex_init(&clock->extreg_lock); in dp83640_clock_init()
1035 mutex_init(&clock->clock_lock); in dp83640_clock_init()
1036 INIT_LIST_HEAD(&clock->phylist); in dp83640_clock_init()
1037 clock->caps.owner = THIS_MODULE; in dp83640_clock_init()
1038 sprintf(clock->caps.name, "dp83640 timer"); in dp83640_clock_init()
1039 clock->caps.max_adj = 1953124; in dp83640_clock_init()
1040 clock->caps.n_alarm = 0; in dp83640_clock_init()
1041 clock->caps.n_ext_ts = N_EXT_TS; in dp83640_clock_init()
1042 clock->caps.n_per_out = N_PER_OUT; in dp83640_clock_init()
1043 clock->caps.n_pins = DP83640_N_PINS; in dp83640_clock_init()
1044 clock->caps.pps = 0; in dp83640_clock_init()
1045 clock->caps.adjfine = ptp_dp83640_adjfine; in dp83640_clock_init()
1046 clock->caps.adjtime = ptp_dp83640_adjtime; in dp83640_clock_init()
1047 clock->caps.gettime64 = ptp_dp83640_gettime; in dp83640_clock_init()
1048 clock->caps.settime64 = ptp_dp83640_settime; in dp83640_clock_init()
1049 clock->caps.enable = ptp_dp83640_enable; in dp83640_clock_init()
1050 clock->caps.verify = ptp_dp83640_verify; in dp83640_clock_init()
1054 dp83640_gpio_defaults(clock->caps.pin_config); in dp83640_clock_init()
1061 static int choose_this_phy(struct dp83640_clock *clock, in choose_this_phy() argument
1064 if (chosen_phy == -1 && !clock->chosen) in choose_this_phy()
1073 static struct dp83640_clock *dp83640_clock_get(struct dp83640_clock *clock) in dp83640_clock_get() argument
1075 if (clock) in dp83640_clock_get()
1076 mutex_lock(&clock->clock_lock); in dp83640_clock_get()
1077 return clock; in dp83640_clock_get()
1086 struct dp83640_clock *clock = NULL, *tmp; in dp83640_clock_get_bus() local
1094 clock = tmp; in dp83640_clock_get_bus()
1098 if (clock) in dp83640_clock_get_bus()
1101 clock = kzalloc(sizeof(struct dp83640_clock), GFP_KERNEL); in dp83640_clock_get_bus()
1102 if (!clock) in dp83640_clock_get_bus()
1105 clock->caps.pin_config = kzalloc(sizeof(struct ptp_pin_desc) * in dp83640_clock_get_bus()
1107 if (!clock->caps.pin_config) { in dp83640_clock_get_bus()
1108 kfree(clock); in dp83640_clock_get_bus()
1109 clock = NULL; in dp83640_clock_get_bus()
1112 dp83640_clock_init(clock, bus); in dp83640_clock_get_bus()
1113 list_add_tail(&phyter_clocks, &clock->list); in dp83640_clock_get_bus()
1117 return dp83640_clock_get(clock); in dp83640_clock_get_bus()
1120 static void dp83640_clock_put(struct dp83640_clock *clock) in dp83640_clock_put() argument
1122 mutex_unlock(&clock->clock_lock); in dp83640_clock_put()
1127 struct dp83640_clock *clock; in dp83640_probe() local
1134 clock = dp83640_clock_get_bus(phydev->mdio.bus); in dp83640_probe()
1135 if (!clock) in dp83640_probe()
1156 dp83640->clock = clock; in dp83640_probe()
1158 if (choose_this_phy(clock, phydev)) { in dp83640_probe()
1159 clock->chosen = dp83640; in dp83640_probe()
1160 clock->ptp_clock = ptp_clock_register(&clock->caps, in dp83640_probe()
1162 if (IS_ERR(clock->ptp_clock)) { in dp83640_probe()
1163 err = PTR_ERR(clock->ptp_clock); in dp83640_probe()
1167 list_add_tail(&dp83640->list, &clock->phylist); in dp83640_probe()
1169 dp83640_clock_put(clock); in dp83640_probe()
1173 clock->chosen = NULL; in dp83640_probe()
1176 dp83640_clock_put(clock); in dp83640_probe()
1183 struct dp83640_clock *clock; in dp83640_remove() local
1196 clock = dp83640_clock_get(dp83640->clock); in dp83640_remove()
1198 if (dp83640 == clock->chosen) { in dp83640_remove()
1199 ptp_clock_unregister(clock->ptp_clock); in dp83640_remove()
1200 clock->chosen = NULL; in dp83640_remove()
1202 list_for_each_safe(this, next, &clock->phylist) { in dp83640_remove()
1211 dp83640_clock_put(clock); in dp83640_remove()
1235 struct dp83640_clock *clock = dp83640->clock; in dp83640_config_init() local
1237 if (clock->chosen && !list_empty(&clock->phylist)) in dp83640_config_init()
1238 recalibrate(clock); in dp83640_config_init()
1240 mutex_lock(&clock->extreg_lock); in dp83640_config_init()
1241 enable_broadcast(phydev, clock->page, 1); in dp83640_config_init()
1242 mutex_unlock(&clock->extreg_lock); in dp83640_config_init()
1247 mutex_lock(&clock->extreg_lock); in dp83640_config_init()
1249 mutex_unlock(&clock->extreg_lock); in dp83640_config_init()
1389 mutex_lock(&dp83640->clock->extreg_lock); in dp83640_hwtstamp()
1394 mutex_unlock(&dp83640->clock->extreg_lock); in dp83640_hwtstamp()
1506 info->phc_index = ptp_clock_index(dp83640->clock->ptp_clock); in dp83640_ts_info()