net: wwan: t7xx: PCIe reset rescan
authorJinjian Song <jinjian.song@fibocom.com>
Sat, 17 Aug 2024 08:33:55 +0000 (16:33 +0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 21 Aug 2024 11:57:24 +0000 (12:57 +0100)
commitd785ed945de6955361aafc2d540d9bb7c6a69a65
tree0b4f8bef7b52d025c66599f39b60e69404090a09
parent4d36b2b1dea4ff528bd7d312d9c713a827656d75
net: wwan: t7xx: PCIe reset rescan

WWAN device is programmed to boot in normal mode or fastboot mode,
when triggering a device reset through ACPI call or fastboot switch
command. Maintain state machine synchronization and reprobe logic
after a device reset.

The PCIe device reset triggered by several ways.
E.g.:
 - fastboot: echo "fastboot_switching" > /sys/bus/pci/devices/${bdf}/t7xx_mode.
 - reset: echo "reset" > /sys/bus/pci/devices/${bdf}/t7xx_mode.
 - IRQ: PCIe device request driver to reset itself by an interrupt request.

Use pci_reset_function() as a generic way to reset device, save and
restore the PCIe configuration before and after reset device to ensure
the reprobe process.

Suggestion from Bjorn:
Link: https://lore.kernel.org/all/20230127133034.GA1364550@bhelgaas/
Signed-off-by: Jinjian Song <jinjian.song@fibocom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/wwan/t7xx/t7xx_modem_ops.c
drivers/net/wwan/t7xx/t7xx_modem_ops.h
drivers/net/wwan/t7xx/t7xx_pci.c
drivers/net/wwan/t7xx/t7xx_pci.h
drivers/net/wwan/t7xx/t7xx_port_proxy.c
drivers/net/wwan/t7xx/t7xx_port_trace.c
drivers/net/wwan/t7xx/t7xx_state_monitor.c