-
Notifications
You must be signed in to change notification settings - Fork 101
[Intel-SIG] [Meteor Lake] Add telit modems fn990 support #64
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Intel-SIG] [Meteor Lake] Add telit modems fn990 support #64
Conversation
…55 variant" This reverts commit 46af287. Removed since it binds FN980 V2 to MBIM. deepin-Intel-SIG: Revert "bus: mhi: host: pci_generic: add support for sc8280xp-crd SDX55 variant". Signed-off-by: Daniele Palmas <dnlplm@gmail.com> Signed-off-by: Wei Qiao <wei.qiao@intel.com>
deepin-Intel-SIG: wwan: add SAHARA device. Signed-off-by: Daniele Palmas <dnlplm@gmail.com> Signed-off-by: Wei Qiao <wei.qiao@intel.com>
There are situations in which SBL is a legitimate initial execution environment (e.g. modem stuck in SBL due to a firmware failure...), but mhi refuses to start: mhi-pci-generic 0000:01:00.0: MHI PCI device found: foxconn-sdx55 mhi-pci-generic 0000:01:00.0: BAR 0: assigned mhi-pci-generic 0000:01:00.0: enabling device (0000 -> 0002) mhi mhi0: Requested to power ON mhi mhi0: SECONDARY BOOTLOADER is not a valid EE for power on mhi-pci-generic 0000:01:00.0: failed to power up MHI controller mhi-pci-generic: probe of 0000:01:00.0 failed with error -5 Fix this by adding SBL as an allowed initial execution environment. deepin-Intel-SIG: bus: mhi: host: allow SBL as initial EE. Signed-off-by: Daniele Palmas <dnlplm@gmail.com> Signed-off-by: Wei Qiao <wei.qiao@intel.com>
After performing the firmware update in SBL through the XFP protocol, FN980 resets and is not detected anymore by the host. Add a new controller file to be used when performing the firmware update in order to: - Make the mhi stack aware of the process and not to reset the function during the update. - Force a reset of the mhi stack at the end of the process in order to detect the modem again. This file should be used both when performing the update through the USB composition 0x1055 (FN980 old hw revision) that through PCIe (both FN980 and FN990). For PCIe the flow is the following: - Disable runtime power management on the mhi pci device - Write 1 to the fw_update sysfs file to races between the recovery work and other mhi operations - Start the firmware update - Write 0 to the fw_update sysfs file to reset the mhi stack Firmware update requires also upstream commit d651ce8("bus: mhi: core: Fix race while handling SYS_ERR at power up") deepin-Intel-SIG: drivers: bus: mhi: let userspace manage xfp fw update states. Signed-off-by: Daniele Palmas <dnlplm@gmail.com> Signed-off-by: Wei Qiao <wei.qiao@intel.com>
deepin-Intel-SIG: wwan: add NMEA type. Signed-off-by: Daniele Palmas <dnlplm@gmail.com> Signed-off-by: Wei Qiao <wei.qiao@intel.com>
deepin-Intel-SIG: drivers: bus: mhi: add FN980 v2 support. Signed-off-by: Daniele Palmas <dnlplm@gmail.com> Signed-off-by: Wei Qiao <wei.qiao@intel.com>
deepin-Intel-SIG: drivers: bus: mhi: add FN990 NMEA and DIAG in SBL devices. Signed-off-by: Daniele Palmas <dnlplm@gmail.com> Signed-off-by: Wei Qiao <wei.qiao@intel.com>
Telit modem requires DTR to be set in virtual serial ports for properly receiving unsolicited indications. Add a simple WWAN driver for setting DTR and RTS at port opening and removing at port closing (just AT channels). deepin-Intel-SIG: drivers: net: wwan: add simple DTR driver. Signed-off-by: Daniele Palmas <dnlplm@gmail.com> Signed-off-by: Wei Qiao <wei.qiao@intel.com>
It could happen that when the modem reboots it is not immediately able to cope with PCIe requests. Add a delay in the recovery procedure as a safe guard. deepin-Intel-SIG: drivers: bus: mhi: host: fix recovery process when modem reboots. Signed-off-by: Daniele Palmas <dnlplm@gmail.com> Signed-off-by: Wei Qiao <wei.qiao@intel.com>
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
Hi @pangqiao. Thanks for your PR. I'm waiting for a deepin-community member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
commit 9a2fa14 upstream. copy_fd_bitmaps(new, old, count) is expected to copy the first count/BITS_PER_LONG bits from old->full_fds_bits[] and fill the rest with zeroes. What it does is copying enough words (BITS_TO_LONGS(count/BITS_PER_LONG)), then memsets the rest. That works fine, *if* all bits past the cutoff point are clear. Otherwise we are risking garbage from the last word we'd copied. For most of the callers that is true - expand_fdtable() has count equal to old->max_fds, so there's no open descriptors past count, let alone fully occupied words in ->open_fds[], which is what bits in ->full_fds_bits[] correspond to. The other caller (dup_fd()) passes sane_fdtable_size(old_fdt, max_fds), which is the smallest multiple of BITS_PER_LONG that covers all opened descriptors below max_fds. In the common case (copying on fork()) max_fds is ~0U, so all opened descriptors will be below it and we are fine, by the same reasons why the call in expand_fdtable() is safe. Unfortunately, there is a case where max_fds is less than that and where we might, indeed, end up with junk in ->full_fds_bits[] - close_range(from, to, CLOSE_RANGE_UNSHARE) with * descriptor table being currently shared * 'to' being above the current capacity of descriptor table * 'from' being just under some chunk of opened descriptors. In that case we end up with observably wrong behaviour - e.g. spawn a child with CLONE_FILES, get all descriptors in range 0..127 open, then close_range(64, ~0U, CLOSE_RANGE_UNSHARE) and watch dup(0) ending up with descriptor #128, despite #64 being observably not open. The minimally invasive fix would be to deal with that in dup_fd(). If this proves to add measurable overhead, we can go that way, but let's try to fix copy_fd_bitmaps() first. * new helper: bitmap_copy_and_expand(to, from, bits_to_copy, size). * make copy_fd_bitmaps() take the bitmap size in words, rather than bits; it's 'count' argument is always a multiple of BITS_PER_LONG, so we are not losing any information, and that way we can use the same helper for all three bitmaps - compiler will see that count is a multiple of BITS_PER_LONG for the large ones, so it'll generate plain memcpy()+memset(). Reproducer added to tools/testing/selftests/core/close_range_test.c Cc: stable@vger.kernel.org Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
[ Upstream commit 1ddee69 ] Some of the platforms may connect the INT pin via inversion logic effectively make the triggering to be active-low. Remove explicit trigger flag to respect the settings from firmware. Without this change even idling chip produces spurious interrupts and kernel disables the line in the result: irq 33: nobody cared (try booting with the "irqpoll" option) CPU: 0 UID: 0 PID: 125 Comm: irq/33-i2c-INT3 Not tainted 6.12.0-00236-g8b874ed11dae deepin-community#64 Hardware name: Intel Corp. QUARK/Galileo, BIOS 0x01000900 01/01/2014 ... handlers: [<86e86bea>] irq_default_primary_handler threaded [<d153e44a>] cy8c95x0_irq_handler [pinctrl_cy8c95x0] Disabling IRQ deepin-community#33 Fixes: e6cbbe4 ("pinctrl: Add Cypress cy8c95x0 support") Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/20250117142304.596106-2-andriy.shevchenko@linux.intel.com Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Sasha Levin <sashal@kernel.org> (cherry picked from commit c5d46ae)
[ Upstream commit 1ddee69 ] Some of the platforms may connect the INT pin via inversion logic effectively make the triggering to be active-low. Remove explicit trigger flag to respect the settings from firmware. Without this change even idling chip produces spurious interrupts and kernel disables the line in the result: irq 33: nobody cared (try booting with the "irqpoll" option) CPU: 0 UID: 0 PID: 125 Comm: irq/33-i2c-INT3 Not tainted 6.12.0-00236-g8b874ed11dae deepin-community#64 Hardware name: Intel Corp. QUARK/Galileo, BIOS 0x01000900 01/01/2014 ... handlers: [<86e86bea>] irq_default_primary_handler threaded [<d153e44a>] cy8c95x0_irq_handler [pinctrl_cy8c95x0] Disabling IRQ deepin-community#33 Fixes: e6cbbe4 ("pinctrl: Add Cypress cy8c95x0 support") Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/20250117142304.596106-2-andriy.shevchenko@linux.intel.com Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Sasha Levin <sashal@kernel.org> (cherry picked from commit c5d46ae)
[ Upstream commit 1ddee69 ] Some of the platforms may connect the INT pin via inversion logic effectively make the triggering to be active-low. Remove explicit trigger flag to respect the settings from firmware. Without this change even idling chip produces spurious interrupts and kernel disables the line in the result: irq 33: nobody cared (try booting with the "irqpoll" option) CPU: 0 UID: 0 PID: 125 Comm: irq/33-i2c-INT3 Not tainted 6.12.0-00236-g8b874ed11dae deepin-community#64 Hardware name: Intel Corp. QUARK/Galileo, BIOS 0x01000900 01/01/2014 ... handlers: [<86e86bea>] irq_default_primary_handler threaded [<d153e44a>] cy8c95x0_irq_handler [pinctrl_cy8c95x0] Disabling IRQ deepin-community#33 Fixes: e6cbbe4 ("pinctrl: Add Cypress cy8c95x0 support") Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/20250117142304.596106-2-andriy.shevchenko@linux.intel.com Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Sasha Levin <sashal@kernel.org> (cherry picked from commit c5d46ae)
[ Upstream commit 1ddee69 ] Some of the platforms may connect the INT pin via inversion logic effectively make the triggering to be active-low. Remove explicit trigger flag to respect the settings from firmware. Without this change even idling chip produces spurious interrupts and kernel disables the line in the result: irq 33: nobody cared (try booting with the "irqpoll" option) CPU: 0 UID: 0 PID: 125 Comm: irq/33-i2c-INT3 Not tainted 6.12.0-00236-g8b874ed11dae deepin-community#64 Hardware name: Intel Corp. QUARK/Galileo, BIOS 0x01000900 01/01/2014 ... handlers: [<86e86bea>] irq_default_primary_handler threaded [<d153e44a>] cy8c95x0_irq_handler [pinctrl_cy8c95x0] Disabling IRQ deepin-community#33 Fixes: e6cbbe4 ("pinctrl: Add Cypress cy8c95x0 support") Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/20250117142304.596106-2-andriy.shevchenko@linux.intel.com Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Sasha Levin <sashal@kernel.org> (cherry picked from commit c5d46ae)
[ Upstream commit 1ddee69 ] Some of the platforms may connect the INT pin via inversion logic effectively make the triggering to be active-low. Remove explicit trigger flag to respect the settings from firmware. Without this change even idling chip produces spurious interrupts and kernel disables the line in the result: irq 33: nobody cared (try booting with the "irqpoll" option) CPU: 0 UID: 0 PID: 125 Comm: irq/33-i2c-INT3 Not tainted 6.12.0-00236-g8b874ed11dae deepin-community#64 Hardware name: Intel Corp. QUARK/Galileo, BIOS 0x01000900 01/01/2014 ... handlers: [<86e86bea>] irq_default_primary_handler threaded [<d153e44a>] cy8c95x0_irq_handler [pinctrl_cy8c95x0] Disabling IRQ deepin-community#33 Fixes: e6cbbe4 ("pinctrl: Add Cypress cy8c95x0 support") Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/20250117142304.596106-2-andriy.shevchenko@linux.intel.com Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Sasha Levin <sashal@kernel.org> (cherry picked from commit c5d46ae)
[ Upstream commit 1ddee69 ] Some of the platforms may connect the INT pin via inversion logic effectively make the triggering to be active-low. Remove explicit trigger flag to respect the settings from firmware. Without this change even idling chip produces spurious interrupts and kernel disables the line in the result: irq 33: nobody cared (try booting with the "irqpoll" option) CPU: 0 UID: 0 PID: 125 Comm: irq/33-i2c-INT3 Not tainted 6.12.0-00236-g8b874ed11dae #64 Hardware name: Intel Corp. QUARK/Galileo, BIOS 0x01000900 01/01/2014 ... handlers: [<86e86bea>] irq_default_primary_handler threaded [<d153e44a>] cy8c95x0_irq_handler [pinctrl_cy8c95x0] Disabling IRQ #33 Fixes: e6cbbe4 ("pinctrl: Add Cypress cy8c95x0 support") Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/20250117142304.596106-2-andriy.shevchenko@linux.intel.com Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Sasha Levin <sashal@kernel.org> (cherry picked from commit c5d46ae)
@sourcery-ai review |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds support for Telit FN990 modems by introducing new WWAN ports, a dedicated DTR control driver, and extending the MHI host framework with flashing state management and updated channel/PCI configurations.
- Added WWAN port types SAHARA and NMEA, plus
wwan_port_get_type()
. - Implemented a new
mhi_wwan_dtr
driver and integrated DTR/RTS handling into the control driver. - Extended MHI host (
xfp
flashing states, health‐check logic, channel configs, PCI IDs).
Reviewed Changes
Copilot reviewed 12 out of 12 changed files in this pull request and generated no comments.
Show a summary per file
File | Description |
---|---|
include/linux/wwan.h | New port types and wwan_port_get_type() prototype |
include/linux/mhi.h | Added xfp_state enum and config field |
drivers/net/wwan/wwan_core.c | Implemented wwan_port_get_type() |
drivers/net/wwan/mhi_wwan_dtr.c | New MHI WWAN DTR driver |
drivers/net/wwan/mhi_wwan_ctrl.c | Integrated DTR calls based on port type |
drivers/net/wwan/Makefile | Added mhi_wwan_dtr.o to build |
drivers/net/wwan/Kconfig | Added MHI_WWAN_DTR config entry |
drivers/bus/mhi/host/pm.c | Consider SBL in power‐up logic |
drivers/bus/mhi/host/pci_generic.c | Updated health period; new channel macros & configs |
drivers/bus/mhi/host/main.c | Track IP_CTRL device reference |
drivers/bus/mhi/host/internal.h | Extended MHI_POWER_UP_CAPABLE macro |
drivers/bus/mhi/host/init.c | Exposed fw_update sysfs attribute |
Comments suppressed due to low confidence (5)
include/linux/wwan.h:150
- [nitpick] The doc comment for
wwan_port_get_type
lacks a@return
description. Add a brief description of the return value.
enum wwan_port_type wwan_port_get_type(struct wwan_port *port);
drivers/net/wwan/mhi_wwan_dtr.c:38
- alloc_skb() return value is not checked; if allocation fails,
skb
will be NULL and subsequent operations will dereference it. Add a NULL check and handle the error.
skb = alloc_skb(sizeof(dtr_msg), GFP_KERNEL);
drivers/net/wwan/mhi_wwan_dtr.c:48
- The function always returns 0, swallowing any error from
mhi_queue_skb
. Consider returningret
when non-zero to propagate failures.
return 0;
drivers/net/wwan/mhi_wwan_ctrl.c:107
struct wwan_port
is used but<linux/wwan.h>
is not included in this file, leading to an undefined type error. Add#include <linux/wwan.h>
at the top.
int mhi_wwan_dtr_set(struct wwan_port *port, int dtr, int rts);
drivers/bus/mhi/host/pci_generic.c:24
- [nitpick] Reducing the health-check interval from 2 seconds to 0.5 seconds may increase CPU wakeups and overhead. Verify that this frequency is necessary.
#define HEALTH_CHECK_PERIOD (HZ / 2)
Reviewer's GuideThis pull request adds support for Telit FN990 and FN980 V2 modems by extending PCI channel/event configurations and device tables, introduces firmware flashing state management via an xfp state and sysfs interface, refines power‐up logic to handle SBL execution environments, and implements WWAN DTR/RTS control through a new MHI WWAN DTR driver and port‐type enhancements. Sequence diagram for DTR/RTS control via mhi_wwan_dtr_setsequenceDiagram
participant User as actor User
participant WWAN as wwan_port
participant DTR as mhi_wwan_dtr_set
participant MHIWWAN as mhi_wwan_dev
participant MHI as mhi_device
participant CNTRL as mhi_controller
participant IP_CTRL as mhi_device (IP_CTRL)
User->>WWAN: Start AT port
WWAN->>DTR: mhi_wwan_dtr_set(port, 1, 1)
DTR->>MHIWWAN: wwan_port_get_drvdata(port)
MHIWWAN->>MHI: access mhi_dev
MHI->>CNTRL: access mhi_cntrl
CNTRL->>IP_CTRL: check mhi_dev_ip_ctrl
DTR->>IP_CTRL: mhi_queue_skb(..., DTR/RTS msg)
Note right of IP_CTRL: DTR/RTS message sent to modem
ER diagram for new and updated PCI device and channel/event configurationserDiagram
MHI_PCI_DEV_INFO ||--o{ MHI_CONTROLLER_CONFIG : config
MHI_CONTROLLER_CONFIG ||--o{ MHI_CHANNEL_CONFIG : ch_cfg
MHI_CONTROLLER_CONFIG ||--o{ MHI_EVENT_CONFIG : event_cfg
MHI_PCI_DEV_INFO {
string name
string fw
string edl
int bar_num
int dma_data_width
int mru_default
bool sideband_wake
}
MHI_CONTROLLER_CONFIG {
int max_channels
int timeout_ms
int num_channels
int num_events
}
MHI_CHANNEL_CONFIG {
int num
string name
int num_elements
int event_ring
}
MHI_EVENT_CONFIG {
int id
int num_elements
int data_size
int hw_id
}
Class diagram for new and updated MHI controller and WWAN structuresclassDiagram
class mhi_controller {
+struct device *cntrl_dev
+struct mhi_device *mhi_dev
+struct dentry *debugfs_dentry
+struct mhi_device *mhi_dev_ip_ctrl
+void __iomem *regs
+void __iomem *bhi
+void __iomem *bhie
+bool wake_set
+unsigned long irq_flags
+u32 mru
+enum xfp_state xfp
}
class mhi_controller_config {
+bool m2_no_db
}
class mhi_pci_dev_info {
+const char *name
+const char *fw
+const char *edl
+const struct mhi_controller_config *config
+int bar_num
+int dma_data_width
+int mru_default
+bool sideband_wake
}
class mhi_channel_config {
+int num
+const char *name
+int num_elements
+int event_ring
+enum dma_data_direction dir
+u32 ee_mask
+int pollcfg
+int doorbell
+bool lpm_notify
+bool offload_channel
+bool doorbell_mode_switch
}
class mhi_event_config {
+int id
+int num_elements
+int data_size
+int hw_id
}
class mhi_device {
+struct mhi_controller *mhi_cntrl
+int ul_chan_id
+struct device dev
}
class mhi_wwan_dev {
+struct mhi_device *mhi_dev
}
class wwan_port {
+enum wwan_port_type type
}
class wwan_port_type {
<<enum>>
WWAN_PORT_QMI
WWAN_PORT_QCDM
WWAN_PORT_FIREHOSE
WWAN_PORT_XMMRPC
WWAN_PORT_SAHARA
WWAN_PORT_NMEA
}
class xfp_state {
<<enum>>
XFP_STATE_IDLE
XFP_STATE_FLASHING
XFP_STATE_NEED_RESET
}
mhi_controller o-- mhi_device
mhi_device o-- mhi_wwan_dev
wwan_port --> wwan_port_type
mhi_controller --> xfp_state
Class diagram for new MHI WWAN DTR driverclassDiagram
class mhi_wwan_dev {
+struct mhi_device *mhi_dev
}
class mhi_device {
+struct mhi_controller *mhi_cntrl
+int ul_chan_id
+struct device dev
}
class wwan_port {
+enum wwan_port_type type
}
mhi_wwan_dev o-- mhi_device
wwan_port --> mhi_wwan_dev : get_drvdata(port)
mhi_device o-- mhi_controller
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey @wqiao-intel - I've reviewed your changes - here's some feedback:
- The 40 s msleep in mhi_pci_recovery_work will block the system_long_wq workqueue thread—consider using a delayed work or timer instead of a long blocking sleep.
- The new fw_update sysfs attribute is always writable and unvalidated—you should specify appropriate file permissions and validate input values before changing the controller state.
- You’ve added CONFIG_MHI_WWAN_DTR in the Makefile but didn’t provide a corresponding Kconfig entry—add a Kconfig definition so the new DTR driver can be enabled properly.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- The 40 s msleep in mhi_pci_recovery_work will block the system_long_wq workqueue thread—consider using a delayed work or timer instead of a long blocking sleep.
- The new fw_update sysfs attribute is always writable and unvalidated—you should specify appropriate file permissions and validate input values before changing the controller state.
- You’ve added CONFIG_MHI_WWAN_DTR in the Makefile but didn’t provide a corresponding Kconfig entry—add a Kconfig definition so the new DTR driver can be enabled properly.
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
[ Upstream commit 528eb4e19ec0df30d0c9ae4074ce945667dde919 ] When igc_led_setup() fails, igc_probe() fails and triggers kernel panic in free_netdev() since unregister_netdev() is not called. [1] This behavior can be tested using fault-injection framework, especially the failslab feature. [2] Since LED support is not mandatory, treat LED setup failures as non-fatal and continue probe with a warning message, consequently avoiding the kernel panic. [1] kernel BUG at net/core/dev.c:12047! Oops: invalid opcode: 0000 [#1] SMP NOPTI CPU: 0 UID: 0 PID: 937 Comm: repro-igc-led-e Not tainted 6.17.0-rc4-enjuk-tnguy-00865-gc4940196ab02 deepin-community#64 PREEMPT(voluntary) Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 RIP: 0010:free_netdev+0x278/0x2b0 [...] Call Trace: <TASK> igc_probe+0x370/0x910 local_pci_probe+0x3a/0x80 pci_device_probe+0xd1/0x200 [...] [2] #!/bin/bash -ex FAILSLAB_PATH=/sys/kernel/debug/failslab/ DEVICE=0000:00:05.0 START_ADDR=$(grep " igc_led_setup" /proc/kallsyms \ | awk '{printf("0x%s", $1)}') END_ADDR=$(printf "0x%x" $((START_ADDR + 0x100))) echo $START_ADDR > $FAILSLAB_PATH/require-start echo $END_ADDR > $FAILSLAB_PATH/require-end echo 1 > $FAILSLAB_PATH/times echo 100 > $FAILSLAB_PATH/probability echo N > $FAILSLAB_PATH/ignore-gfp-wait echo $DEVICE > /sys/bus/pci/drivers/igc/bind Fixes: ea57870 ("igc: Add support for LEDs on i225/i226") Signed-off-by: Kohei Enju <enjuk@amazon.com> Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> Reviewed-by: Vitaly Lifshits <vitaly.lifshits@intel.com> Reviewed-by: Kurt Kanzenbach <kurt@linutronix.de> Tested-by: Mor Bar-Gabay <morx.bar.gabay@intel.com> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org> (cherry picked from commit bec504867acc7315de9cd96ef9161fa52a25abe8)
Add telit modems fn990 support。
Those are out of tree patches.
Summary by Sourcery
Add support for Telit FN980 v2 and FN990 modems by extending MHI channel configurations, PCI ID mappings, firmware flashing controls, and WWAN port capabilities.
New Features:
Enhancements:
Build: