Skip to content

Commit 1ef7615

Browse files
richardcochrandavem330
authored andcommitted
ptp: link the phc device to its parent device
PTP Hardware Clock devices appear as class devices in sysfs. This patch changes the registration API to use the parent device, clarifying the clock's relationship to the underlying device. Signed-off-by: Richard Cochran <[email protected]> Acked-by: Ben Hutchings <[email protected]> Acked-by: Jeff Kirsher <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 5c35bad commit 1ef7615

File tree

9 files changed

+18
-11
lines changed

9 files changed

+18
-11
lines changed

drivers/net/ethernet/freescale/gianfar_ptp.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,7 @@ static int gianfar_ptp_probe(struct platform_device *dev)
510510

511511
spin_unlock_irqrestore(&etsects->lock, flags);
512512

513-
etsects->clock = ptp_clock_register(&etsects->caps);
513+
etsects->clock = ptp_clock_register(&etsects->caps, &dev->dev);
514514
if (IS_ERR(etsects->clock)) {
515515
err = PTR_ERR(etsects->clock);
516516
goto no_clock;

drivers/net/ethernet/intel/igb/igb_ptp.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -752,7 +752,8 @@ void igb_ptp_init(struct igb_adapter *adapter)
752752
wr32(E1000_IMS, E1000_IMS_TS);
753753
}
754754

755-
adapter->ptp_clock = ptp_clock_register(&adapter->ptp_caps);
755+
adapter->ptp_clock = ptp_clock_register(&adapter->ptp_caps,
756+
&adapter->pdev->dev);
756757
if (IS_ERR(adapter->ptp_clock)) {
757758
adapter->ptp_clock = NULL;
758759
dev_err(&adapter->pdev->dev, "ptp_clock_register failed\n");

drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -960,7 +960,8 @@ void ixgbe_ptp_init(struct ixgbe_adapter *adapter)
960960
/* (Re)start the overflow check */
961961
adapter->flags2 |= IXGBE_FLAG2_OVERFLOW_CHECK_ENABLED;
962962

963-
adapter->ptp_clock = ptp_clock_register(&adapter->ptp_caps);
963+
adapter->ptp_clock = ptp_clock_register(&adapter->ptp_caps,
964+
&adapter->pdev->dev);
964965
if (IS_ERR(adapter->ptp_clock)) {
965966
adapter->ptp_clock = NULL;
966967
e_dev_err("ptp_clock_register failed\n");

drivers/net/ethernet/sfc/ptp.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -931,7 +931,8 @@ static int efx_ptp_probe_channel(struct efx_channel *channel)
931931
ptp->phc_clock_info.settime = efx_phc_settime;
932932
ptp->phc_clock_info.enable = efx_phc_enable;
933933

934-
ptp->phc_clock = ptp_clock_register(&ptp->phc_clock_info);
934+
ptp->phc_clock = ptp_clock_register(&ptp->phc_clock_info,
935+
&efx->pci_dev->dev);
935936
if (!ptp->phc_clock)
936937
goto fail3;
937938

drivers/net/phy/dp83640.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -980,7 +980,7 @@ static int dp83640_probe(struct phy_device *phydev)
980980

981981
if (choose_this_phy(clock, phydev)) {
982982
clock->chosen = dp83640;
983-
clock->ptp_clock = ptp_clock_register(&clock->caps);
983+
clock->ptp_clock = ptp_clock_register(&clock->caps, &phydev->dev);
984984
if (IS_ERR(clock->ptp_clock)) {
985985
err = PTR_ERR(clock->ptp_clock);
986986
goto no_register;

drivers/ptp/ptp_clock.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,8 @@ static void delete_ptp_clock(struct posix_clock *pc)
182182

183183
/* public interface */
184184

185-
struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info)
185+
struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info,
186+
struct device *parent)
186187
{
187188
struct ptp_clock *ptp;
188189
int err = 0, index, major = MAJOR(ptp_devt);
@@ -215,7 +216,7 @@ struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info)
215216
init_waitqueue_head(&ptp->tsev_wq);
216217

217218
/* Create a new device in our class. */
218-
ptp->dev = device_create(ptp_class, NULL, ptp->devid, ptp,
219+
ptp->dev = device_create(ptp_class, parent, ptp->devid, ptp,
219220
"ptp%d", ptp->index);
220221
if (IS_ERR(ptp->dev))
221222
goto no_device;

drivers/ptp/ptp_ixp46x.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ static int __init ptp_ixp_init(void)
298298

299299
ixp_clock.caps = ptp_ixp_caps;
300300

301-
ixp_clock.ptp_clock = ptp_clock_register(&ixp_clock.caps);
301+
ixp_clock.ptp_clock = ptp_clock_register(&ixp_clock.caps, NULL);
302302

303303
if (IS_ERR(ixp_clock.ptp_clock))
304304
return PTR_ERR(ixp_clock.ptp_clock);

drivers/ptp/ptp_pch.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -627,7 +627,7 @@ pch_probe(struct pci_dev *pdev, const struct pci_device_id *id)
627627
}
628628

629629
chip->caps = ptp_pch_caps;
630-
chip->ptp_clock = ptp_clock_register(&chip->caps);
630+
chip->ptp_clock = ptp_clock_register(&chip->caps, &pdev->dev);
631631

632632
if (IS_ERR(chip->ptp_clock))
633633
return PTR_ERR(chip->ptp_clock);

include/linux/ptp_clock_kernel.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#ifndef _PTP_CLOCK_KERNEL_H_
2222
#define _PTP_CLOCK_KERNEL_H_
2323

24+
#include <linux/device.h>
2425
#include <linux/pps_kernel.h>
2526
#include <linux/ptp_clock.h>
2627

@@ -93,10 +94,12 @@ struct ptp_clock;
9394
/**
9495
* ptp_clock_register() - register a PTP hardware clock driver
9596
*
96-
* @info: Structure describing the new clock.
97+
* @info: Structure describing the new clock.
98+
* @parent: Pointer to the parent device of the new clock.
9799
*/
98100

99-
extern struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info);
101+
extern struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info,
102+
struct device *parent);
100103

101104
/**
102105
* ptp_clock_unregister() - unregister a PTP hardware clock driver

0 commit comments

Comments
 (0)