linux/drivers
Robert Hancock d15c7e875d net: phy: broadcom: hook up soft_reset for BCM54616S
A problem was encountered with the Bel-Fuse 1GBT-SFP05 SFP module (which
is a 1 Gbps copper module operating in SGMII mode with an internal
BCM54616S PHY device) using the Xilinx AXI Ethernet MAC core, where the
module would work properly on the initial insertion or boot of the
device, but after the device was rebooted, the link would either only
come up at 100 Mbps speeds or go up and down erratically.

I found no meaningful changes in the PHY configuration registers between
the working and non-working boots, but the status registers seemed to
have a lot of error indications set on the SERDES side of the device on
the non-working boot. I suspect the problem is that whatever happens on
the SGMII link when the device is rebooted and the FPGA logic gets
reloaded ends up putting the module's onboard PHY into a bad state.

Since commit 6e2d85ec05 ("net: phy: Stop with excessive soft reset")
the genphy_soft_reset call is not made automatically by the PHY core
unless the callback is explicitly specified in the driver structure. For
most of these Broadcom devices, there is probably a hardware reset that
gets asserted to reset the PHY during boot, however for SFP modules
(where the BCM54616S is commonly found) no such reset line exists, so if
the board keeps the SFP cage powered up across a reboot, it will end up
with no reset occurring during reboots.

Hook up the genphy_soft_reset callback for BCM54616S to ensure that a
PHY reset is performed before the device is initialized. This appears to
fix the issue with erratic operation after a reboot with this SFP
module.

Fixes: 6e2d85ec05 ("net: phy: Stop with excessive soft reset")
Signed-off-by: Robert Hancock <robert.hancock@calian.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2022-01-20 11:27:06 +00:00
..
accessibility Char/Misc and other driver changes for 5.17-rc1 2022-01-14 16:02:28 +01:00
acpi Kbuild updates for v5.17 2022-01-19 11:15:19 +02:00
amba
android
ata ata: pata_ali: remove redundant return statement 2022-01-14 15:17:17 +09:00
atm atm: iphase: remove redundant pointer skb 2022-01-13 12:50:48 +00:00
auxdisplay
base Merge branch 'akpm' (patches from Andrew) 2022-01-20 10:41:01 +02:00
bcma
block virtio,vdpa,qemu_fw_cfg: features, cleanups, fixes 2022-01-18 10:05:48 +02:00
bluetooth virtio,vdpa,qemu_fw_cfg: features, cleanups, fixes 2022-01-18 10:05:48 +02:00
bus pci-v5.17-changes 2022-01-16 08:08:11 +02:00
cdrom
char random: simplify arithmetic function flow in account() 2022-01-18 13:03:56 +01:00
clk We have a couple patches in the framework core this time around but 2022-01-12 17:02:27 -08:00
clocksource - Refactor resource allocation on the Exynos_mct driver without 2022-01-10 13:53:16 +01:00
comedi
connector
counter
cpufreq
cpuidle
crypto virtio,vdpa,qemu_fw_cfg: features, cleanups, fixes 2022-01-18 10:05:48 +02:00
cxl
dax Merge branch 'akpm' (patches from Andrew) 2022-01-15 20:37:06 +02:00
dca
devfreq
dio
dma dmaengine updates for v5.17-rc1 2022-01-18 14:03:34 +02:00
dma-buf drm fixes for 5.17-rc1: 2022-01-16 06:52:38 +02:00
edac - Add support for version 3 of the Synopsys DDR controller to synopsys_edac 2022-01-10 11:45:23 -08:00
eisa
extcon
firewire
firmware virtio,vdpa,qemu_fw_cfg: features, cleanups, fixes 2022-01-18 10:05:48 +02:00
fpga
fsi
gnss
gpio virtio,vdpa,qemu_fw_cfg: features, cleanups, fixes 2022-01-18 10:05:48 +02:00
gpu virtio,vdpa,qemu_fw_cfg: features, cleanups, fixes 2022-01-18 10:05:48 +02:00
greybus
hid Merge branch 'for-5.17/thrustmaster' into for-linus 2022-01-10 09:59:32 +01:00
hsi
hv hyperv-next for 5.17 2022-01-16 15:53:00 +02:00
hwmon hwmon: (nzxt-smart2) make array detect_fans_report static const 2022-01-09 17:10:58 -08:00
hwspinlock
hwtracing
i2c virtio,vdpa,qemu_fw_cfg: features, cleanups, fixes 2022-01-18 10:05:48 +02:00
i3c i3c: master: dw: check return of dw_i3c_master_get_free_pos() 2022-01-13 02:05:50 +01:00
idle
iio More power management updates for 5.17-rc1 2022-01-18 09:13:30 +02:00
infiniband Merge branch 'akpm' (patches from Andrew) 2022-01-20 10:41:01 +02:00
input Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2022-01-17 08:27:55 +02:00
interconnect
iommu virtio,vdpa,qemu_fw_cfg: features, cleanups, fixes 2022-01-18 10:05:48 +02:00
ipack
irqchip Rework of the MSI interrupt infrastructure: 2022-01-13 09:05:29 -08:00
isdn
leds LED updates for 5.17. Nothing major is happening here. 2022-01-12 16:59:22 -08:00
macintosh
mailbox - qcom: misc updates to qcom-ipcc driver 2022-01-13 11:19:07 -08:00
mcb
md dax + libnvdimm for v5.17 2022-01-12 15:46:11 -08:00
media media: si2157: add support for DVB-C Annex C 2022-01-10 15:56:50 +01:00
memory MTD core changes: 2022-01-11 11:35:28 -08:00
memstick
message
mfd driver core changes for 5.17-rc1 2022-01-12 11:11:34 -08:00
misc pci-v5.17-changes 2022-01-16 08:08:11 +02:00
mmc More power management updates for 5.17-rc1 2022-01-18 09:13:30 +02:00
most
mtd - added support for more BCM47XX based devices 2022-01-14 15:08:36 +01:00
mux
net net: phy: broadcom: hook up soft_reset for BCM54616S 2022-01-20 11:27:06 +00:00
nfc nfc: st21nfca: Fix potential buffer overflows in EVT_TRANSACTION 2022-01-12 14:17:45 +00:00
ntb New AMD PCI ID for NTB, and a number of bug fixes for ntb_hw_switchtec 2022-01-17 08:14:18 +02:00
nubus
nvdimm virtio,vdpa,qemu_fw_cfg: features, cleanups, fixes 2022-01-18 10:05:48 +02:00
nvme for-5.17/drivers-2022-01-11 2022-01-12 10:35:23 -08:00
nvmem
of Merge branch 'akpm' (patches from Andrew) 2022-01-15 20:37:06 +02:00
opp
parisc parisc: pdc_stable: use default_groups in kobj_type 2022-01-07 01:29:22 +01:00
parport
pci pci-v5.17-changes 2022-01-16 08:08:11 +02:00
pcmcia pci-v5.17-changes 2022-01-16 08:08:11 +02:00
perf Rework of the MSI interrupt infrastructure: 2022-01-13 09:05:29 -08:00
phy Char/Misc and other driver changes for 5.17-rc1 2022-01-14 16:02:28 +01:00
pinctrl Pin control bulk changes for the v5.17 kernel cycle 2022-01-12 10:56:08 -08:00
platform - added support for more BCM47XX based devices 2022-01-14 15:08:36 +01:00
pnp
power platform-drivers-x86 for v5.17-1 2022-01-11 11:26:57 -08:00
powercap
pps
ps3
ptp
pwm drm for 5.17-rc1 2022-01-10 12:58:46 -08:00
rapidio
ras
regulator regulator: Add MAX20086-MAX20089 driver 2022-01-07 13:36:35 +00:00
remoteproc
reset SoC: Add support for StarFive JH7100 RISC-V SoC 2022-01-10 08:32:37 -08:00
rpmsg virtio,vdpa,qemu_fw_cfg: features, cleanups, fixes 2022-01-18 10:05:48 +02:00
rtc
s390 dax + libnvdimm for v5.17 2022-01-12 15:46:11 -08:00
sbus
scsi virtio,vdpa,qemu_fw_cfg: features, cleanups, fixes 2022-01-18 10:05:48 +02:00
sh
siox
slimbus
soc Char/Misc and other driver changes for 5.17-rc1 2022-01-14 16:02:28 +01:00
soundwire Char/Misc and other driver changes for 5.17-rc1 2022-01-14 16:02:28 +01:00
spi sound updates for 5.17-rc1 2022-01-14 14:55:38 +01:00
spmi
ssb
staging Merge branch 'signal-for-v5.17' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2022-01-17 05:49:30 +02:00
target
tc
tee ARM: SoC driver updates for v5.17 2022-01-10 08:13:52 -08:00
thermal Thermal control updates for 5.17-rc1 2022-01-10 20:43:54 -08:00
thunderbolt
tty sound updates for 5.17-rc1 2022-01-14 14:55:38 +01:00
uio
usb Merge branch 'signal-for-v5.17' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2022-01-17 05:49:30 +02:00
vdpa virtio,vdpa,qemu_fw_cfg: features, cleanups, fixes 2022-01-18 10:05:48 +02:00
vfio
vhost vdpa: Protect vdpa reset with cf_mutex 2022-01-14 18:50:54 -05:00
video drm fixes for 5.17-rc1: 2022-01-16 06:52:38 +02:00
virt
virtio vdpa: Allow to configure max data virtqueues 2022-01-14 18:50:53 -05:00
visorbus
vlynq
vme
w1
watchdog linux-watchdog 5.17-rc1 tag 2022-01-17 08:07:57 +02:00
xen
zorro
Kconfig
Makefile