Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Conflicts were all overlapping changes. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -24,8 +24,8 @@ config NET_DSA_MV88E6XXX_PTP
|
||||
bool "PTP support for Marvell 88E6xxx"
|
||||
default n
|
||||
depends on NET_DSA_MV88E6XXX_GLOBAL2
|
||||
depends on PTP_1588_CLOCK
|
||||
imply NETWORK_PHY_TIMESTAMPING
|
||||
imply PTP_1588_CLOCK
|
||||
help
|
||||
Say Y to enable PTP hardware timestamping on Marvell 88E6xxx switch
|
||||
chips that support it.
|
||||
|
@@ -3962,7 +3962,6 @@ static const struct mv88e6xxx_ops mv88e6190_ops = {
|
||||
.serdes_get_stats = mv88e6390_serdes_get_stats,
|
||||
.serdes_get_regs_len = mv88e6390_serdes_get_regs_len,
|
||||
.serdes_get_regs = mv88e6390_serdes_get_regs,
|
||||
.phylink_validate = mv88e6390_phylink_validate,
|
||||
.gpio_ops = &mv88e6352_gpio_ops,
|
||||
.phylink_validate = mv88e6390_phylink_validate,
|
||||
};
|
||||
@@ -4021,7 +4020,6 @@ static const struct mv88e6xxx_ops mv88e6190x_ops = {
|
||||
.serdes_get_stats = mv88e6390_serdes_get_stats,
|
||||
.serdes_get_regs_len = mv88e6390_serdes_get_regs_len,
|
||||
.serdes_get_regs = mv88e6390_serdes_get_regs,
|
||||
.phylink_validate = mv88e6390_phylink_validate,
|
||||
.gpio_ops = &mv88e6352_gpio_ops,
|
||||
.phylink_validate = mv88e6390x_phylink_validate,
|
||||
};
|
||||
@@ -4079,7 +4077,6 @@ static const struct mv88e6xxx_ops mv88e6191_ops = {
|
||||
.serdes_get_stats = mv88e6390_serdes_get_stats,
|
||||
.serdes_get_regs_len = mv88e6390_serdes_get_regs_len,
|
||||
.serdes_get_regs = mv88e6390_serdes_get_regs,
|
||||
.phylink_validate = mv88e6390_phylink_validate,
|
||||
.avb_ops = &mv88e6390_avb_ops,
|
||||
.ptp_ops = &mv88e6352_ptp_ops,
|
||||
.phylink_validate = mv88e6390_phylink_validate,
|
||||
@@ -4235,7 +4232,6 @@ static const struct mv88e6xxx_ops mv88e6290_ops = {
|
||||
.serdes_get_stats = mv88e6390_serdes_get_stats,
|
||||
.serdes_get_regs_len = mv88e6390_serdes_get_regs_len,
|
||||
.serdes_get_regs = mv88e6390_serdes_get_regs,
|
||||
.phylink_validate = mv88e6390_phylink_validate,
|
||||
.gpio_ops = &mv88e6352_gpio_ops,
|
||||
.avb_ops = &mv88e6390_avb_ops,
|
||||
.ptp_ops = &mv88e6352_ptp_ops,
|
||||
|
@@ -401,6 +401,7 @@ static int felix_init_structs(struct felix *felix, int num_phys_ports)
|
||||
ocelot->stats_layout = felix->info->stats_layout;
|
||||
ocelot->num_stats = felix->info->num_stats;
|
||||
ocelot->shared_queue_sz = felix->info->shared_queue_sz;
|
||||
ocelot->num_mact_rows = felix->info->num_mact_rows;
|
||||
ocelot->vcap_is2_keys = felix->info->vcap_is2_keys;
|
||||
ocelot->vcap_is2_actions= felix->info->vcap_is2_actions;
|
||||
ocelot->vcap = felix->info->vcap;
|
||||
|
@@ -16,6 +16,7 @@ struct felix_info {
|
||||
const u32 *const *map;
|
||||
const struct ocelot_ops *ops;
|
||||
int shared_queue_sz;
|
||||
int num_mact_rows;
|
||||
const struct ocelot_stat_layout *stats_layout;
|
||||
unsigned int num_stats;
|
||||
int num_ports;
|
||||
|
@@ -1222,6 +1222,7 @@ struct felix_info felix_info_vsc9959 = {
|
||||
.vcap_is2_actions = vsc9959_vcap_is2_actions,
|
||||
.vcap = vsc9959_vcap_props,
|
||||
.shared_queue_sz = 128 * 1024,
|
||||
.num_mact_rows = 2048,
|
||||
.num_ports = 6,
|
||||
.switch_pci_bar = 4,
|
||||
.imdio_pci_bar = 0,
|
||||
|
@@ -20,6 +20,7 @@ tristate "NXP SJA1105 Ethernet switch family support"
|
||||
config NET_DSA_SJA1105_PTP
|
||||
bool "Support for the PTP clock on the NXP SJA1105 Ethernet switch"
|
||||
depends on NET_DSA_SJA1105
|
||||
depends on PTP_1588_CLOCK
|
||||
help
|
||||
This enables support for timestamping and PTP clock manipulations in
|
||||
the SJA1105 DSA driver.
|
||||
|
@@ -16,14 +16,15 @@
|
||||
|
||||
/* PTPSYNCTS has no interrupt or update mechanism, because the intended
|
||||
* hardware use case is for the timestamp to be collected synchronously,
|
||||
* immediately after the CAS_MASTER SJA1105 switch has triggered a CASSYNC
|
||||
* pulse on the PTP_CLK pin. When used as a generic extts source, it needs
|
||||
* polling and a comparison with the old value. The polling interval is just
|
||||
* the Nyquist rate of a canonical PPS input (e.g. from a GPS module).
|
||||
* Anything of higher frequency than 1 Hz will be lost, since there is no
|
||||
* timestamp FIFO.
|
||||
* immediately after the CAS_MASTER SJA1105 switch has performed a CASSYNC
|
||||
* one-shot toggle (no return to level) on the PTP_CLK pin. When used as a
|
||||
* generic extts source, the PTPSYNCTS register needs polling and a comparison
|
||||
* with the old value. The polling interval is configured as the Nyquist rate
|
||||
* of a signal with 50% duty cycle and 1Hz frequency, which is sadly all that
|
||||
* this hardware can do (but may be enough for some setups). Anything of higher
|
||||
* frequency than 1 Hz will be lost, since there is no timestamp FIFO.
|
||||
*/
|
||||
#define SJA1105_EXTTS_INTERVAL (HZ / 2)
|
||||
#define SJA1105_EXTTS_INTERVAL (HZ / 4)
|
||||
|
||||
/* This range is actually +/- SJA1105_MAX_ADJ_PPB
|
||||
* divided by 1000 (ppb -> ppm) and with a 16-bit
|
||||
@@ -754,7 +755,16 @@ static int sja1105_extts_enable(struct sja1105_private *priv,
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
/* Reject requests with unsupported flags */
|
||||
if (extts->flags)
|
||||
if (extts->flags & ~(PTP_ENABLE_FEATURE |
|
||||
PTP_RISING_EDGE |
|
||||
PTP_FALLING_EDGE |
|
||||
PTP_STRICT_FLAGS))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
/* We can only enable time stamping on both edges, sadly. */
|
||||
if ((extts->flags & PTP_STRICT_FLAGS) &&
|
||||
(extts->flags & PTP_ENABLE_FEATURE) &&
|
||||
(extts->flags & PTP_EXTTS_EDGES) != PTP_EXTTS_EDGES)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
rc = sja1105_change_ptp_clk_pin_func(priv, PTP_PF_EXTTS);
|
||||
|
Reference in New Issue
Block a user