net/mlx5: Verify Hardware supports requested ptp function on a given pin
Fix a bug where driver did not verify Hardware pin capabilities for
PTP functions.
Fixes: ee7f12205a
("net/mlx5e: Implement 1PPS support")
Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
Reviewed-by: Ariel Levkovich <lariel@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
This commit is contained in:
parent
88c8cf92db
commit
071995c877
@ -408,10 +408,31 @@ static int mlx5_ptp_enable(struct ptp_clock_info *ptp,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum {
|
||||||
|
MLX5_MTPPS_REG_CAP_PIN_X_MODE_SUPPORT_PPS_IN = BIT(0),
|
||||||
|
MLX5_MTPPS_REG_CAP_PIN_X_MODE_SUPPORT_PPS_OUT = BIT(1),
|
||||||
|
};
|
||||||
|
|
||||||
static int mlx5_ptp_verify(struct ptp_clock_info *ptp, unsigned int pin,
|
static int mlx5_ptp_verify(struct ptp_clock_info *ptp, unsigned int pin,
|
||||||
enum ptp_pin_function func, unsigned int chan)
|
enum ptp_pin_function func, unsigned int chan)
|
||||||
{
|
{
|
||||||
return (func == PTP_PF_PHYSYNC) ? -EOPNOTSUPP : 0;
|
struct mlx5_clock *clock = container_of(ptp, struct mlx5_clock,
|
||||||
|
ptp_info);
|
||||||
|
|
||||||
|
switch (func) {
|
||||||
|
case PTP_PF_NONE:
|
||||||
|
return 0;
|
||||||
|
case PTP_PF_EXTTS:
|
||||||
|
return !(clock->pps_info.pin_caps[pin] &
|
||||||
|
MLX5_MTPPS_REG_CAP_PIN_X_MODE_SUPPORT_PPS_IN);
|
||||||
|
case PTP_PF_PEROUT:
|
||||||
|
return !(clock->pps_info.pin_caps[pin] &
|
||||||
|
MLX5_MTPPS_REG_CAP_PIN_X_MODE_SUPPORT_PPS_OUT);
|
||||||
|
default:
|
||||||
|
return -EOPNOTSUPP;
|
||||||
|
}
|
||||||
|
|
||||||
|
return -EOPNOTSUPP;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct ptp_clock_info mlx5_ptp_clock_info = {
|
static const struct ptp_clock_info mlx5_ptp_clock_info = {
|
||||||
|
Loading…
Reference in New Issue
Block a user