mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-17 02:36:21 +00:00
Merge branch 'net-sparx5-lan969x-fixes'
Daniel Machon says: ==================== net: sparx5: misc fixes for sparx5 and lan969x This series fixes various issues in the Sparx5 and lan969x drivers. Most of the fixes are for new issues introduced by the recent series adding lan969x switch support in the Sparx5 driver. Most notable is patch 1/5 that moves the lan969x dir into the sparx5 dir, in order to address a cyclic dependency issue reported by depmod, when installing modules. Details are in the commit descriptions. To: Andrew Lunn <andrew+netdev@lunn.ch> To: David S. Miller <davem@davemloft.net> To: Eric Dumazet <edumazet@google.com> To: Jakub Kicinski <kuba@kernel.org> To: Paolo Abeni <pabeni@redhat.com> To: Lars Povlsen <lars.povlsen@microchip.com> To: Steen Hegelund <Steen.Hegelund@microchip.com> To: UNGLinuxDriver@microchip.com To: Richard Cochran <richardcochran@gmail.com> To: Bjarni Jonasson <bjarni.jonasson@microchip.com> To: jensemil.schulzostergaard@microchip.com To: horatiu.vultur@microchip.com To: arnd@arndb.de To: jacob.e.keller@intel.com To: Parthiban.Veerasooran@microchip.com Cc: Calvin Owens <calvin@wbinvd.org> Cc: Muhammad Usama Anjum <Usama.Anjum@collabora.com> Cc: linux-kernel@vger.kernel.org Cc: netdev@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org ==================== Signed-off-by: Daniel Machon <daniel.machon@microchip.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
b4906787d4
@ -15343,7 +15343,7 @@ M: Daniel Machon <daniel.machon@microchip.com>
|
||||
M: UNGLinuxDriver@microchip.com
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/net/ethernet/microchip/lan969x/*
|
||||
F: drivers/net/ethernet/microchip/sparx5/lan969x/*
|
||||
|
||||
MICROCHIP LCDFB DRIVER
|
||||
M: Nicolas Ferre <nicolas.ferre@microchip.com>
|
||||
|
@ -59,7 +59,6 @@ config LAN743X
|
||||
|
||||
source "drivers/net/ethernet/microchip/lan865x/Kconfig"
|
||||
source "drivers/net/ethernet/microchip/lan966x/Kconfig"
|
||||
source "drivers/net/ethernet/microchip/lan969x/Kconfig"
|
||||
source "drivers/net/ethernet/microchip/sparx5/Kconfig"
|
||||
source "drivers/net/ethernet/microchip/vcap/Kconfig"
|
||||
source "drivers/net/ethernet/microchip/fdma/Kconfig"
|
||||
|
@ -11,7 +11,6 @@ lan743x-objs := lan743x_main.o lan743x_ethtool.o lan743x_ptp.o
|
||||
|
||||
obj-$(CONFIG_LAN865X) += lan865x/
|
||||
obj-$(CONFIG_LAN966X_SWITCH) += lan966x/
|
||||
obj-$(CONFIG_LAN969X_SWITCH) += lan969x/
|
||||
obj-$(CONFIG_SPARX5_SWITCH) += sparx5/
|
||||
obj-$(CONFIG_VCAP) += vcap/
|
||||
obj-$(CONFIG_FDMA) += fdma/
|
||||
|
@ -1,5 +0,0 @@
|
||||
config LAN969X_SWITCH
|
||||
bool "Lan969x switch driver"
|
||||
depends on SPARX5_SWITCH
|
||||
help
|
||||
This driver supports the lan969x family of network switch devices.
|
@ -1,13 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
# Makefile for the Microchip lan969x network device drivers.
|
||||
#
|
||||
|
||||
obj-$(CONFIG_SPARX5_SWITCH) += lan969x-switch.o
|
||||
|
||||
lan969x-switch-y := lan969x_regs.o lan969x.o lan969x_calendar.o \
|
||||
lan969x_vcap_ag_api.o lan969x_vcap_impl.o
|
||||
|
||||
# Provide include files
|
||||
ccflags-y += -I$(srctree)/drivers/net/ethernet/microchip/fdma
|
||||
ccflags-y += -I$(srctree)/drivers/net/ethernet/microchip/vcap
|
@ -24,3 +24,9 @@ config SPARX5_DCB
|
||||
DSCP and PCP.
|
||||
|
||||
If unsure, set to Y.
|
||||
|
||||
config LAN969X_SWITCH
|
||||
bool "Lan969x switch driver"
|
||||
depends on SPARX5_SWITCH
|
||||
help
|
||||
This driver supports the lan969x family of network switch devices.
|
||||
|
@ -16,6 +16,12 @@ sparx5-switch-y := sparx5_main.o sparx5_packet.o \
|
||||
sparx5-switch-$(CONFIG_SPARX5_DCB) += sparx5_dcb.o
|
||||
sparx5-switch-$(CONFIG_DEBUG_FS) += sparx5_vcap_debugfs.o
|
||||
|
||||
sparx5-switch-$(CONFIG_LAN969X_SWITCH) += lan969x/lan969x_regs.o \
|
||||
lan969x/lan969x.o \
|
||||
lan969x/lan969x_calendar.o \
|
||||
lan969x/lan969x_vcap_ag_api.o \
|
||||
lan969x/lan969x_vcap_impl.o
|
||||
|
||||
# Provide include files
|
||||
ccflags-y += -I$(srctree)/drivers/net/ethernet/microchip/vcap
|
||||
ccflags-y += -I$(srctree)/drivers/net/ethernet/microchip/fdma
|
||||
|
@ -273,9 +273,9 @@ static irqreturn_t lan969x_ptp_irq_handler(int irq, void *args)
|
||||
if (WARN_ON(!skb_match))
|
||||
continue;
|
||||
|
||||
spin_lock(&sparx5->ptp_ts_id_lock);
|
||||
spin_lock_irqsave(&sparx5->ptp_ts_id_lock, flags);
|
||||
sparx5->ptp_skbs--;
|
||||
spin_unlock(&sparx5->ptp_ts_id_lock);
|
||||
spin_unlock_irqrestore(&sparx5->ptp_ts_id_lock, flags);
|
||||
|
||||
/* Get the h/w timestamp */
|
||||
sparx5_get_hwtimestamp(sparx5, &ts, delay);
|
||||
@ -346,8 +346,3 @@ const struct sparx5_match_data lan969x_desc = {
|
||||
.consts = &lan969x_consts,
|
||||
.ops = &lan969x_ops,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(lan969x_desc);
|
||||
|
||||
MODULE_DESCRIPTION("Microchip lan969x switch driver");
|
||||
MODULE_AUTHOR("Daniel Machon <daniel.machon@microchip.com>");
|
||||
MODULE_LICENSE("Dual MIT/GPL");
|
@ -98,7 +98,6 @@ u32 sparx5_cal_speed_to_value(enum sparx5_cal_bw speed)
|
||||
default: return 0;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(sparx5_cal_speed_to_value);
|
||||
|
||||
static u32 sparx5_bandwidth_to_calendar(u32 bw)
|
||||
{
|
||||
@ -150,7 +149,6 @@ enum sparx5_cal_bw sparx5_get_port_cal_speed(struct sparx5 *sparx5, u32 portno)
|
||||
return SPX5_CAL_SPEED_NONE;
|
||||
return sparx5_bandwidth_to_calendar(port->conf.bandwidth);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(sparx5_get_port_cal_speed);
|
||||
|
||||
/* Auto configure the QSYS calendar based on port configuration */
|
||||
int sparx5_config_auto_calendar(struct sparx5 *sparx5)
|
||||
|
@ -24,7 +24,7 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/reset.h>
|
||||
|
||||
#include "../lan969x/lan969x.h" /* for lan969x match data */
|
||||
#include "lan969x/lan969x.h" /* for lan969x match data */
|
||||
|
||||
#include "sparx5_main_regs.h"
|
||||
#include "sparx5_main.h"
|
||||
@ -780,12 +780,11 @@ static int sparx5_start(struct sparx5 *sparx5)
|
||||
err = -ENXIO;
|
||||
if (sparx5->fdma_irq >= 0 && is_sparx5(sparx5)) {
|
||||
if (GCB_CHIP_ID_REV_ID_GET(sparx5->chip_id) > 0)
|
||||
err = devm_request_threaded_irq(sparx5->dev,
|
||||
sparx5->fdma_irq,
|
||||
NULL,
|
||||
sparx5_fdma_handler,
|
||||
IRQF_ONESHOT,
|
||||
"sparx5-fdma", sparx5);
|
||||
err = devm_request_irq(sparx5->dev,
|
||||
sparx5->fdma_irq,
|
||||
sparx5_fdma_handler,
|
||||
0,
|
||||
"sparx5-fdma", sparx5);
|
||||
if (!err)
|
||||
err = sparx5_fdma_start(sparx5);
|
||||
if (err)
|
||||
@ -1093,7 +1092,7 @@ static const struct sparx5_match_data sparx5_desc = {
|
||||
|
||||
static const struct of_device_id mchp_sparx5_match[] = {
|
||||
{ .compatible = "microchip,sparx5-switch", .data = &sparx5_desc },
|
||||
#if IS_ENABLED(CONFIG_LAN969X_SWITCH)
|
||||
#ifdef CONFIG_LAN969X_SWITCH
|
||||
{ .compatible = "microchip,lan9691-switch", .data = &lan969x_desc },
|
||||
#endif
|
||||
{ }
|
||||
|
@ -12,7 +12,6 @@
|
||||
#define SPX5_MIRROR_DISABLED 0
|
||||
#define SPX5_MIRROR_EGRESS 1
|
||||
#define SPX5_MIRROR_INGRESS 2
|
||||
#define SPX5_MIRROR_MONITOR_PORT_DEFAULT 65
|
||||
#define SPX5_QFWD_MP_OFFSET 9 /* Mirror port offset in the QFWD register */
|
||||
|
||||
/* Convert from bool ingress/egress to mirror direction */
|
||||
@ -200,7 +199,7 @@ void sparx5_mirror_del(struct sparx5_mall_entry *entry)
|
||||
|
||||
sparx5_mirror_monitor_set(sparx5,
|
||||
mirror_idx,
|
||||
SPX5_MIRROR_MONITOR_PORT_DEFAULT);
|
||||
sparx5->data->consts->n_ports);
|
||||
}
|
||||
|
||||
void sparx5_mirror_stats(struct sparx5_mall_entry *entry,
|
||||
|
@ -1151,7 +1151,7 @@ int sparx5_port_init(struct sparx5 *sparx5,
|
||||
spx5_inst_rmw(DEV10G_MAC_MAXLEN_CFG_MAX_LEN_SET(ETH_MAXLEN),
|
||||
DEV10G_MAC_MAXLEN_CFG_MAX_LEN,
|
||||
devinst,
|
||||
DEV10G_MAC_ENA_CFG(0));
|
||||
DEV10G_MAC_MAXLEN_CFG(0));
|
||||
|
||||
/* Handle Signal Detect in 10G PCS */
|
||||
spx5_inst_wr(PCS10G_BR_PCS_SD_CFG_SD_POL_SET(sd_pol) |
|
||||
|
@ -303,7 +303,6 @@ void sparx5_get_hwtimestamp(struct sparx5 *sparx5,
|
||||
|
||||
spin_unlock_irqrestore(&sparx5->ptp_clock_lock, flags);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(sparx5_get_hwtimestamp);
|
||||
|
||||
irqreturn_t sparx5_ptp_irq_handler(int irq, void *args)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user