mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 23:52:08 +02:00
ice: Drop auxbus use for PTP to finalize ice_adapter move
Drop unused auxbus/auxdev support from the PTP code due to move to the ice_adapter. Signed-off-by: Sergey Temerkhanov <sergey.temerkhanov@intel.com> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com> Reviewed-by: Simon Horman <horms@kernel.org> Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel) Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
This commit is contained in:
parent
e800654e85
commit
0333c82fc6
|
|
@ -2983,188 +2983,6 @@ static void ice_ptp_cleanup_pf(struct ice_pf *pf)
|
|||
mutex_unlock(&pf->adapter->ports.lock);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* ice_ptp_aux_dev_to_aux_pf - Get auxiliary PF handle for the auxiliary device
|
||||
* @aux_dev: auxiliary device to get the auxiliary PF for
|
||||
*/
|
||||
static struct ice_pf *
|
||||
ice_ptp_aux_dev_to_aux_pf(struct auxiliary_device *aux_dev)
|
||||
{
|
||||
struct ice_ptp_port *aux_port;
|
||||
struct ice_ptp *aux_ptp;
|
||||
|
||||
aux_port = container_of(aux_dev, struct ice_ptp_port, aux_dev);
|
||||
aux_ptp = container_of(aux_port, struct ice_ptp, port);
|
||||
|
||||
return container_of(aux_ptp, struct ice_pf, ptp);
|
||||
}
|
||||
|
||||
/**
|
||||
* ice_ptp_aux_dev_to_owner_pf - Get PF handle for the auxiliary device
|
||||
* @aux_dev: auxiliary device to get the PF for
|
||||
*/
|
||||
static struct ice_pf *
|
||||
ice_ptp_aux_dev_to_owner_pf(struct auxiliary_device *aux_dev)
|
||||
{
|
||||
struct ice_ptp_port_owner *ports_owner;
|
||||
const struct auxiliary_driver *aux_drv;
|
||||
struct ice_ptp *owner_ptp;
|
||||
|
||||
if (!aux_dev->dev.driver)
|
||||
return NULL;
|
||||
|
||||
aux_drv = to_auxiliary_drv(aux_dev->dev.driver);
|
||||
ports_owner = container_of(aux_drv, struct ice_ptp_port_owner,
|
||||
aux_driver);
|
||||
owner_ptp = container_of(ports_owner, struct ice_ptp, ports_owner);
|
||||
return container_of(owner_ptp, struct ice_pf, ptp);
|
||||
}
|
||||
|
||||
/**
|
||||
* ice_ptp_auxbus_probe - Probe auxiliary devices
|
||||
* @aux_dev: PF's auxiliary device
|
||||
* @id: Auxiliary device ID
|
||||
*/
|
||||
static int ice_ptp_auxbus_probe(struct auxiliary_device *aux_dev,
|
||||
const struct auxiliary_device_id *id)
|
||||
{
|
||||
struct ice_pf *owner_pf = ice_ptp_aux_dev_to_owner_pf(aux_dev);
|
||||
struct ice_pf *aux_pf = ice_ptp_aux_dev_to_aux_pf(aux_dev);
|
||||
|
||||
if (WARN_ON(!owner_pf))
|
||||
return -ENODEV;
|
||||
|
||||
INIT_LIST_HEAD(&aux_pf->ptp.port.list_node);
|
||||
mutex_lock(&owner_pf->ptp.ports_owner.lock);
|
||||
list_add(&aux_pf->ptp.port.list_node,
|
||||
&owner_pf->ptp.ports_owner.ports);
|
||||
mutex_unlock(&owner_pf->ptp.ports_owner.lock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* ice_ptp_auxbus_remove - Remove auxiliary devices from the bus
|
||||
* @aux_dev: PF's auxiliary device
|
||||
*/
|
||||
static void ice_ptp_auxbus_remove(struct auxiliary_device *aux_dev)
|
||||
{
|
||||
struct ice_pf *owner_pf = ice_ptp_aux_dev_to_owner_pf(aux_dev);
|
||||
struct ice_pf *aux_pf = ice_ptp_aux_dev_to_aux_pf(aux_dev);
|
||||
|
||||
mutex_lock(&owner_pf->ptp.ports_owner.lock);
|
||||
list_del(&aux_pf->ptp.port.list_node);
|
||||
mutex_unlock(&owner_pf->ptp.ports_owner.lock);
|
||||
}
|
||||
|
||||
/**
|
||||
* ice_ptp_auxbus_shutdown
|
||||
* @aux_dev: PF's auxiliary device
|
||||
*/
|
||||
static void ice_ptp_auxbus_shutdown(struct auxiliary_device *aux_dev)
|
||||
{
|
||||
/* Doing nothing here, but handle to auxbus driver must be satisfied */
|
||||
}
|
||||
|
||||
/**
|
||||
* ice_ptp_auxbus_suspend
|
||||
* @aux_dev: PF's auxiliary device
|
||||
* @state: power management state indicator
|
||||
*/
|
||||
static int
|
||||
ice_ptp_auxbus_suspend(struct auxiliary_device *aux_dev, pm_message_t state)
|
||||
{
|
||||
/* Doing nothing here, but handle to auxbus driver must be satisfied */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* ice_ptp_auxbus_resume
|
||||
* @aux_dev: PF's auxiliary device
|
||||
*/
|
||||
static int ice_ptp_auxbus_resume(struct auxiliary_device *aux_dev)
|
||||
{
|
||||
/* Doing nothing here, but handle to auxbus driver must be satisfied */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* ice_ptp_auxbus_create_id_table - Create auxiliary device ID table
|
||||
* @pf: Board private structure
|
||||
* @name: auxiliary bus driver name
|
||||
*/
|
||||
static struct auxiliary_device_id *
|
||||
ice_ptp_auxbus_create_id_table(struct ice_pf *pf, const char *name)
|
||||
{
|
||||
struct auxiliary_device_id *ids;
|
||||
|
||||
/* Second id left empty to terminate the array */
|
||||
ids = devm_kcalloc(ice_pf_to_dev(pf), 2,
|
||||
sizeof(struct auxiliary_device_id), GFP_KERNEL);
|
||||
if (!ids)
|
||||
return NULL;
|
||||
|
||||
snprintf(ids[0].name, sizeof(ids[0].name), "ice.%s", name);
|
||||
|
||||
return ids;
|
||||
}
|
||||
|
||||
/**
|
||||
* ice_ptp_register_auxbus_driver - Register PTP auxiliary bus driver
|
||||
* @pf: Board private structure
|
||||
*/
|
||||
static int __always_unused ice_ptp_register_auxbus_driver(struct ice_pf *pf)
|
||||
{
|
||||
struct auxiliary_driver *aux_driver;
|
||||
struct ice_ptp *ptp;
|
||||
struct device *dev;
|
||||
char *name;
|
||||
int err;
|
||||
|
||||
ptp = &pf->ptp;
|
||||
dev = ice_pf_to_dev(pf);
|
||||
aux_driver = &ptp->ports_owner.aux_driver;
|
||||
INIT_LIST_HEAD(&ptp->ports_owner.ports);
|
||||
mutex_init(&ptp->ports_owner.lock);
|
||||
name = devm_kasprintf(dev, GFP_KERNEL, "ptp_aux_dev_%u_%u_clk%u",
|
||||
pf->pdev->bus->number, PCI_SLOT(pf->pdev->devfn),
|
||||
ice_get_ptp_src_clock_index(&pf->hw));
|
||||
if (!name)
|
||||
return -ENOMEM;
|
||||
|
||||
aux_driver->name = name;
|
||||
aux_driver->shutdown = ice_ptp_auxbus_shutdown;
|
||||
aux_driver->suspend = ice_ptp_auxbus_suspend;
|
||||
aux_driver->remove = ice_ptp_auxbus_remove;
|
||||
aux_driver->resume = ice_ptp_auxbus_resume;
|
||||
aux_driver->probe = ice_ptp_auxbus_probe;
|
||||
aux_driver->id_table = ice_ptp_auxbus_create_id_table(pf, name);
|
||||
if (!aux_driver->id_table)
|
||||
return -ENOMEM;
|
||||
|
||||
err = auxiliary_driver_register(aux_driver);
|
||||
if (err) {
|
||||
devm_kfree(dev, aux_driver->id_table);
|
||||
dev_err(dev, "Failed registering aux_driver, name <%s>\n",
|
||||
name);
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
/**
|
||||
* ice_ptp_unregister_auxbus_driver - Unregister PTP auxiliary bus driver
|
||||
* @pf: Board private structure
|
||||
*/
|
||||
static void __always_unused ice_ptp_unregister_auxbus_driver(struct ice_pf *pf)
|
||||
{
|
||||
struct auxiliary_driver *aux_driver = &pf->ptp.ports_owner.aux_driver;
|
||||
|
||||
auxiliary_driver_unregister(aux_driver);
|
||||
devm_kfree(ice_pf_to_dev(pf), aux_driver->id_table);
|
||||
|
||||
mutex_destroy(&pf->ptp.ports_owner.lock);
|
||||
}
|
||||
|
||||
/**
|
||||
* ice_ptp_clock_index - Get the PTP clock index for this device
|
||||
|
|
@ -3303,76 +3121,6 @@ static int ice_ptp_init_port(struct ice_pf *pf, struct ice_ptp_port *ptp_port)
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* ice_ptp_release_auxbus_device
|
||||
* @dev: device that utilizes the auxbus
|
||||
*/
|
||||
static void ice_ptp_release_auxbus_device(struct device *dev)
|
||||
{
|
||||
/* Doing nothing here, but handle to auxbux device must be satisfied */
|
||||
}
|
||||
|
||||
/**
|
||||
* ice_ptp_create_auxbus_device - Create PTP auxiliary bus device
|
||||
* @pf: Board private structure
|
||||
*/
|
||||
static __always_unused int ice_ptp_create_auxbus_device(struct ice_pf *pf)
|
||||
{
|
||||
struct auxiliary_device *aux_dev;
|
||||
struct ice_ptp *ptp;
|
||||
struct device *dev;
|
||||
char *name;
|
||||
int err;
|
||||
u32 id;
|
||||
|
||||
ptp = &pf->ptp;
|
||||
id = ptp->port.port_num;
|
||||
dev = ice_pf_to_dev(pf);
|
||||
|
||||
aux_dev = &ptp->port.aux_dev;
|
||||
|
||||
name = devm_kasprintf(dev, GFP_KERNEL, "ptp_aux_dev_%u_%u_clk%u",
|
||||
pf->pdev->bus->number, PCI_SLOT(pf->pdev->devfn),
|
||||
ice_get_ptp_src_clock_index(&pf->hw));
|
||||
if (!name)
|
||||
return -ENOMEM;
|
||||
|
||||
aux_dev->name = name;
|
||||
aux_dev->id = id;
|
||||
aux_dev->dev.release = ice_ptp_release_auxbus_device;
|
||||
aux_dev->dev.parent = dev;
|
||||
|
||||
err = auxiliary_device_init(aux_dev);
|
||||
if (err)
|
||||
goto aux_err;
|
||||
|
||||
err = auxiliary_device_add(aux_dev);
|
||||
if (err) {
|
||||
auxiliary_device_uninit(aux_dev);
|
||||
goto aux_err;
|
||||
}
|
||||
|
||||
return 0;
|
||||
aux_err:
|
||||
dev_err(dev, "Failed to create PTP auxiliary bus device <%s>\n", name);
|
||||
devm_kfree(dev, name);
|
||||
return err;
|
||||
}
|
||||
|
||||
/**
|
||||
* ice_ptp_remove_auxbus_device - Remove PTP auxiliary bus device
|
||||
* @pf: Board private structure
|
||||
*/
|
||||
static __always_unused void ice_ptp_remove_auxbus_device(struct ice_pf *pf)
|
||||
{
|
||||
struct auxiliary_device *aux_dev = &pf->ptp.port.aux_dev;
|
||||
|
||||
auxiliary_device_delete(aux_dev);
|
||||
auxiliary_device_uninit(aux_dev);
|
||||
|
||||
memset(aux_dev, 0, sizeof(*aux_dev));
|
||||
}
|
||||
|
||||
/**
|
||||
* ice_ptp_init_tx_interrupt_mode - Initialize device Tx interrupt mode
|
||||
* @pf: Board private structure
|
||||
|
|
|
|||
|
|
@ -140,7 +140,6 @@ struct ice_ptp_tx {
|
|||
*
|
||||
* @list_node: list member structure
|
||||
* @tx: Tx timestamp tracking for this port
|
||||
* @aux_dev: auxiliary device associated with this port
|
||||
* @ov_work: delayed work task for tracking when PHY offset is valid
|
||||
* @ps_lock: mutex used to protect the overall PTP PHY start procedure
|
||||
* @link_up: indicates whether the link is up
|
||||
|
|
@ -150,7 +149,6 @@ struct ice_ptp_tx {
|
|||
struct ice_ptp_port {
|
||||
struct list_head list_node;
|
||||
struct ice_ptp_tx tx;
|
||||
struct auxiliary_device aux_dev;
|
||||
struct kthread_delayed_work ov_work;
|
||||
struct mutex ps_lock; /* protects overall PTP PHY start procedure */
|
||||
bool link_up;
|
||||
|
|
@ -164,23 +162,6 @@ enum ice_ptp_tx_interrupt {
|
|||
ICE_PTP_TX_INTERRUPT_ALL,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ice_ptp_port_owner - data used to handle the PTP clock owner info
|
||||
*
|
||||
* This structure contains data necessary for the PTP clock owner to correctly
|
||||
* handle the timestamping feature for all attached ports.
|
||||
*
|
||||
* @aux_driver: the structure carring the auxiliary driver information
|
||||
* @ports: list of porst handled by this port owner
|
||||
* @lock: protect access to ports list
|
||||
*/
|
||||
|
||||
struct ice_ptp_port_owner {
|
||||
struct auxiliary_driver aux_driver;
|
||||
struct list_head ports;
|
||||
struct mutex lock;
|
||||
};
|
||||
|
||||
#define GLTSYN_TGT_H_IDX_MAX 4
|
||||
|
||||
enum ice_ptp_state {
|
||||
|
|
@ -245,7 +226,6 @@ struct ice_ptp_pin_desc {
|
|||
* @state: current state of PTP state machine
|
||||
* @tx_interrupt_mode: the TX interrupt mode for the PTP clock
|
||||
* @port: data for the PHY port initialization procedure
|
||||
* @ports_owner: data for the auxiliary driver owner
|
||||
* @work: delayed work function for periodic tasks
|
||||
* @cached_phc_time: a cached copy of the PHC time for timestamp extension
|
||||
* @cached_phc_jiffies: jiffies when cached_phc_time was last updated
|
||||
|
|
@ -270,7 +250,6 @@ struct ice_ptp {
|
|||
enum ice_ptp_state state;
|
||||
enum ice_ptp_tx_interrupt tx_interrupt_mode;
|
||||
struct ice_ptp_port port;
|
||||
struct ice_ptp_port_owner ports_owner;
|
||||
struct kthread_delayed_work work;
|
||||
u64 cached_phc_time;
|
||||
unsigned long cached_phc_jiffies;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user