Message ID | 20210211175015.200772-1-angelogioacchino.delregno@somainline.org |
---|---|
Headers | show |
Series | Add support for IPA v3.1, GSI v1.0, MSM8998 IPA | expand |
On 2/11/21 11:50 AM, AngeloGioacchino Del Regno wrote: > Hey all! > > This time around I thought that it would be nice to get some modem > action going on. We have it, it's working (ish), so just.. why not. Thank you for the patches! I would like to review these carefully but I'm sorry I won't be able to get to it today, and possibly not for a few days. But I *will* review them. I just want you to know I'm paying attention, though I'm sort of buried in an important issue right now. I'm very impressed at how small the patches are though. -Alex > This series adds support for IPA v3.1 (featuring GSI v1.0) and also > takes account for some bits that are shared with other unimplemented > IPA v3 variants and it is specifically targeting MSM8998, for which > support is added. > > Since the userspace isn't entirely ready (as far as I can see) for > data connection (3g/lte/whatever) through the modem, it was possible > to only partially test this series. > Specifically, loading the IPA firmware and setting up the interface > went just fine, along with a basic setup of the network interface > that got exposed by this driver. > > With this series, the benefits that I see are: > 1. The modem doesn't crash anymore when trying to setup a data > connection, as now the modem firmware seems to be happy with > having IPA initialized and ready; > 2. Other random modem crashes while picking up LTE home network > signal (even just for calling, nothing fancy) seem to be gone. > > These are the reasons why I think that this series is ready for > upstream action. It's *at least* stabilizing the platform when > the modem is up. > > This was tested on the F(x)Tec Pro 1 (MSM8998) smartphone. > > AngeloGioacchino Del Regno (7): > net: ipa: Add support for IPA v3.1 with GSI v1.0 > net: ipa: endpoint: Don't read unexistant register on IPAv3.1 > net: ipa: gsi: Avoid some writes during irq setup for older IPA > net: ipa: gsi: Use right masks for GSI v1.0 channels hw param > net: ipa: Add support for IPA on MSM8998 > dt-bindings: net: qcom-ipa: Document qcom,sc7180-ipa compatible > dt-bindings: net: qcom-ipa: Document qcom,msm8998-ipa compatible > > .../devicetree/bindings/net/qcom,ipa.yaml | 7 +- > drivers/net/ipa/Makefile | 3 +- > drivers/net/ipa/gsi.c | 33 +- > drivers/net/ipa/gsi_reg.h | 5 + > drivers/net/ipa/ipa_data-msm8998.c | 407 ++++++++++++++++++ > drivers/net/ipa/ipa_data.h | 5 + > drivers/net/ipa/ipa_endpoint.c | 26 +- > drivers/net/ipa/ipa_main.c | 12 +- > drivers/net/ipa/ipa_reg.h | 3 + > drivers/net/ipa/ipa_version.h | 1 + > 10 files changed, 480 insertions(+), 22 deletions(-) > create mode 100644 drivers/net/ipa/ipa_data-msm8998.c >
On 2/11/21 11:50 AM, AngeloGioacchino Del Regno wrote: > Hey all! > > This time around I thought that it would be nice to get some modem > action going on. We have it, it's working (ish), so just.. why not. > > This series adds support for IPA v3.1 (featuring GSI v1.0) and also > takes account for some bits that are shared with other unimplemented > IPA v3 variants and it is specifically targeting MSM8998, for which > support is added. It was more like "next month" rather than "next week," but I finally took some more time to look at this today. Again I think it's surprising how little code you had to implement to get something that seems is at least modestly functional. FYI I have undertaken an effort to make the upstream code suitable for use for any IPA version (3.0-4.11) in the past few months. Most of what I've done is in line with the things you found were necessary for IPA v3.1 support. Early on I got most of the support for IPA v4.5 upstream, and have been holding off trying to get other similar changes out for review for other versions until I've had more of a chance to test some of what's new in IPA v4.5. In the coming weeks I will start posting more of this work for review. You'll see that I'm modifying many things you do in your series (such as making version checks not assume only v3.5.1 and v4.2 are supported). My priority is on newer versions, but I want the code to be (at least) correct for IPA v3.0, v3.1, and v3.5 as well. What might be best is for you to consider using the patches when I send them out. I'll gladly give you some credit when I do if you like (suggested-by, reviewed-by, tested-by, whatever you feel is appropriate). Please let me know if you would like to be on the Cc list for this sort of change. > Since the userspace isn't entirely ready (as far as I can see) for > data connection (3g/lte/whatever) through the modem, it was possible > to only partially test this series. Yes we're still figuring out how the upstream tools need to interact with the kernel for configuration. > Specifically, loading the IPA firmware and setting up the interface > went just fine, along with a basic setup of the network interface > that got exposed by this driver. This is great to hear. > With this series, the benefits that I see are: > 1. The modem doesn't crash anymore when trying to setup a data > connection, as now the modem firmware seems to be happy with > having IPA initialized and ready; > 2. Other random modem crashes while picking up LTE home network > signal (even just for calling, nothing fancy) seem to be gone. > > These are the reasons why I think that this series is ready for > upstream action. It's *at least* stabilizing the platform when > the modem is up. > > This was tested on the F(x)Tec Pro 1 (MSM8998) smartphone. I unfortunately can't promise you you'll have the full connection up and running, but we can probably get very close. It would be very helpful for you (someone other than me, that is) to participate in validating the changes I am now finalizing. I hope you're willing. I'll offer a few more specific comments on each of your patches. -Alex > AngeloGioacchino Del Regno (7): > net: ipa: Add support for IPA v3.1 with GSI v1.0 > net: ipa: endpoint: Don't read unexistant register on IPAv3.1 > net: ipa: gsi: Avoid some writes during irq setup for older IPA > net: ipa: gsi: Use right masks for GSI v1.0 channels hw param > net: ipa: Add support for IPA on MSM8998 > dt-bindings: net: qcom-ipa: Document qcom,sc7180-ipa compatible > dt-bindings: net: qcom-ipa: Document qcom,msm8998-ipa compatible > > .../devicetree/bindings/net/qcom,ipa.yaml | 7 +- > drivers/net/ipa/Makefile | 3 +- > drivers/net/ipa/gsi.c | 33 +- > drivers/net/ipa/gsi_reg.h | 5 + > drivers/net/ipa/ipa_data-msm8998.c | 407 ++++++++++++++++++ > drivers/net/ipa/ipa_data.h | 5 + > drivers/net/ipa/ipa_endpoint.c | 26 +- > drivers/net/ipa/ipa_main.c | 12 +- > drivers/net/ipa/ipa_reg.h | 3 + > drivers/net/ipa/ipa_version.h | 1 + > 10 files changed, 480 insertions(+), 22 deletions(-) > create mode 100644 drivers/net/ipa/ipa_data-msm8998.c >
On 2/11/21 11:50 AM, AngeloGioacchino Del Regno wrote: > On IPAv3.1 there is no such FLAVOR_0 register so it is impossible > to read tx/rx channel masks and we have to rely on the correctness > on the provided configuration. This works, and is simple. I think I would rather populate the available mask here with a mask containing the actual version-specific available endpoints. On the other hand, looking at the downstream code, it looks like almost any of these endpoints could be used. So, while I don't know for sure the all-1's value here is *correct*, it's more of a validation check anyway, so it's probably fine -Alex > Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org> > --- > drivers/net/ipa/ipa_endpoint.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/drivers/net/ipa/ipa_endpoint.c b/drivers/net/ipa/ipa_endpoint.c > index 06d8aa34276e..10c477e1bb90 100644 > --- a/drivers/net/ipa/ipa_endpoint.c > +++ b/drivers/net/ipa/ipa_endpoint.c > @@ -1659,6 +1659,15 @@ int ipa_endpoint_config(struct ipa *ipa) > u32 max; > u32 val; > > + /* Some IPA versions don't provide a FLAVOR register and we cannot > + * check the rx/tx masks hence we have to rely on the correctness > + * of the provided configuration. > + */ > + if (ipa->version == IPA_VERSION_3_1) { > + ipa->available = U32_MAX; > + return 0; > + } > + > /* Find out about the endpoints supplied by the hardware, and ensure > * the highest one doesn't exceed the number we support. > */ >
On 2/11/21 11:50 AM, AngeloGioacchino Del Regno wrote: > On some IPA versions (v3.1 and older), writing to registers > GSI_INTER_EE_SRC_CH_IRQ_OFFSET and GSI_INTER_EE_SRC_EV_CH_IRQ_OFFSET > will generate a fault and the SoC will lockup. > > Avoid clearing CH and EV_CH interrupts on GSI probe to fix this bad > behavior: we are anyway not going to get spurious interrupts. I think the reason for this might be that these registers are located at a different offset for IPA v3.1. I'd rather get it right and actively disable these interrupts rather than assume they won't fire. Also... you included an extra blank line; avoid that. -Alex > Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org> > --- > drivers/net/ipa/gsi.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/ipa/gsi.c b/drivers/net/ipa/gsi.c > index 6315336b3ca8..b5460cbb085c 100644 > --- a/drivers/net/ipa/gsi.c > +++ b/drivers/net/ipa/gsi.c > @@ -207,11 +207,14 @@ static void gsi_irq_setup(struct gsi *gsi) > iowrite32(0, gsi->virt + GSI_CNTXT_SRC_IEOB_IRQ_MSK_OFFSET); > > /* Reverse the offset adjustment for inter-EE register offsets */ > - adjust = gsi->version < IPA_VERSION_4_5 ? 0 : GSI_EE_REG_ADJUST; > - iowrite32(0, gsi->virt + adjust + GSI_INTER_EE_SRC_CH_IRQ_OFFSET); > - iowrite32(0, gsi->virt + adjust + GSI_INTER_EE_SRC_EV_CH_IRQ_OFFSET); > + if (gsi->version > IPA_VERSION_3_1) { > + adjust = gsi->version < IPA_VERSION_4_5 ? 0 : GSI_EE_REG_ADJUST; > + iowrite32(0, gsi->virt + adjust + GSI_INTER_EE_SRC_CH_IRQ_OFFSET); > + iowrite32(0, gsi->virt + adjust + GSI_INTER_EE_SRC_EV_CH_IRQ_OFFSET); > + } > > iowrite32(0, gsi->virt + GSI_CNTXT_GSI_IRQ_EN_OFFSET); > + > } > > /* Turn off all GSI interrupts when we're all done */ >
On 2/11/21 11:50 AM, AngeloGioacchino Del Regno wrote: > In GSI v1.0 the register GSI_HW_PARAM_2_OFFSET has different layout > so the number of channels and events per EE are, of course, laid out > in 8 bits each (0-7, 8-15 respectively). > > Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org> > --- > drivers/net/ipa/gsi.c | 16 +++++++++++++--- > drivers/net/ipa/gsi_reg.h | 5 +++++ > 2 files changed, 18 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/ipa/gsi.c b/drivers/net/ipa/gsi.c > index b5460cbb085c..3311ffe514c9 100644 > --- a/drivers/net/ipa/gsi.c > +++ b/drivers/net/ipa/gsi.c > @@ -1790,7 +1790,7 @@ static void gsi_channel_teardown(struct gsi *gsi) > int gsi_setup(struct gsi *gsi) > { > struct device *dev = gsi->dev; > - u32 val; > + u32 val, mask; > int ret; > > /* Here is where we first touch the GSI hardware */ > @@ -1804,7 +1804,12 @@ int gsi_setup(struct gsi *gsi) > > val = ioread32(gsi->virt + GSI_GSI_HW_PARAM_2_OFFSET); > > - gsi->channel_count = u32_get_bits(val, NUM_CH_PER_EE_FMASK); > + if (gsi->version == IPA_VERSION_3_1) > + mask = GSIV1_NUM_CH_PER_EE_FMASK; > + else > + mask = NUM_CH_PER_EE_FMASK; > + > + gsi->channel_count = u32_get_bits(val, mask); I have a different way of doing this, at least for encoding, and I'd rather use a similar convention in this case. At some point it might become obvious that "there's got to be a better way" and I might have to consider something else, but for now I've been doing what I describe below. Anyway, what I'd ask for here is to create a a static inline function in "ipa_reg.h" (or "gsi_reg.h") to extract these values. In this case it might look like this: static inline u32 num_ev_per_ee_get(enum ipa_version version, u32 val) { if (version == IPA_VERSION_3_0 || version == IPA_VERSION_3_1) return u32_get_bits(val, GENMASK(8, 0)); return u32_get_bits(val, GENMASK(7, 3)); } (I'm not sure if the above is correct for all versions...) Then the caller would do: gsi->evt_ring_count = num_ev_per_ee_get(ipa->version, val); I'd want the same general thing for the channel count. -Alex > if (!gsi->channel_count) { > dev_err(dev, "GSI reports zero channels supported\n"); > return -EINVAL; > @@ -1816,7 +1821,12 @@ int gsi_setup(struct gsi *gsi) > gsi->channel_count = GSI_CHANNEL_COUNT_MAX; > } > > - gsi->evt_ring_count = u32_get_bits(val, NUM_EV_PER_EE_FMASK); > + if (gsi->version == IPA_VERSION_3_1) > + mask = GSIV1_NUM_EV_PER_EE_FMASK; > + else > + mask = NUM_EV_PER_EE_FMASK; > + > + gsi->evt_ring_count = u32_get_bits(val, mask); > if (!gsi->evt_ring_count) { > dev_err(dev, "GSI reports zero event rings supported\n"); > return -EINVAL; > diff --git a/drivers/net/ipa/gsi_reg.h b/drivers/net/ipa/gsi_reg.h > index 0e138bbd8205..4ba579fa21c2 100644 > --- a/drivers/net/ipa/gsi_reg.h > +++ b/drivers/net/ipa/gsi_reg.h > @@ -287,6 +287,11 @@ enum gsi_generic_cmd_opcode { > GSI_EE_N_GSI_HW_PARAM_2_OFFSET(GSI_EE_AP) > #define GSI_EE_N_GSI_HW_PARAM_2_OFFSET(ee) \ > (0x0001f040 + 0x4000 * (ee)) > + > +/* Fields below are present for IPA v3.1 with GSI version 1 */ > +#define GSIV1_NUM_EV_PER_EE_FMASK GENMASK(8, 0) > +#define GSIV1_NUM_CH_PER_EE_FMASK GENMASK(15, 8) > +/* Fields below are present for IPA v3.5.1 and above */ > #define IRAM_SIZE_FMASK GENMASK(2, 0) > #define NUM_CH_PER_EE_FMASK GENMASK(7, 3) > #define NUM_EV_PER_EE_FMASK GENMASK(12, 8) >
On 2/11/21 11:50 AM, AngeloGioacchino Del Regno wrote: > MSM8998 support has been added: document the new compatible. > > Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org> With the previous patch in place, this becomes almost automatic. But I don't want to claim support for a platform until things actually *work*. I don't just mean we can compile and load (and load firmware), I want to be able to say we can actually carry LTE data over IPA before we advertise the compatible string here. Maybe I'm being picky, but that's my preference. It adds some motivation for getting the user space tools squared away. Thank you again very much for your patches. -Alex > --- > Documentation/devicetree/bindings/net/qcom,ipa.yaml | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/Documentation/devicetree/bindings/net/qcom,ipa.yaml b/Documentation/devicetree/bindings/net/qcom,ipa.yaml > index b063c6c1077a..9dacd224b606 100644 > --- a/Documentation/devicetree/bindings/net/qcom,ipa.yaml > +++ b/Documentation/devicetree/bindings/net/qcom,ipa.yaml > @@ -46,6 +46,7 @@ properties: > oneOf: > - items: > - enum: > + - "qcom,msm8998-ipa" > - "qcom,sdm845-ipa" > - "qcom,sc7180-ipa" > >
On Thu, Feb 11, 2021 at 06:50:15PM +0100, AngeloGioacchino Del Regno wrote: > MSM8998 support has been added: document the new compatible. > > Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org> > --- > Documentation/devicetree/bindings/net/qcom,ipa.yaml | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/Documentation/devicetree/bindings/net/qcom,ipa.yaml b/Documentation/devicetree/bindings/net/qcom,ipa.yaml > index b063c6c1077a..9dacd224b606 100644 > --- a/Documentation/devicetree/bindings/net/qcom,ipa.yaml > +++ b/Documentation/devicetree/bindings/net/qcom,ipa.yaml > @@ -46,6 +46,7 @@ properties: > oneOf: > - items: > - enum: > + - "qcom,msm8998-ipa" Also, don't need quotes on these. > - "qcom,sdm845-ipa" > - "qcom,sc7180-ipa" > > -- > 2.30.0 >
On 2/11/21 11:50 AM, AngeloGioacchino Del Regno wrote: > Hey all! > > This time around I thought that it would be nice to get some modem > action going on. We have it, it's working (ish), so just.. why not. When I reviewed this series in March, I said I wanted to post a bunch of patches I had already been working on, which enabled support for many versions of IPA, including IPA v3.1. That work is complete now, so I'm returning to your series and seeing if there is anything you included in your patches that I did not. There are a few differences, which I will point out in a new set of responses to your original patches. I will be posting some updates, and will explain what I intend to do in those updates in the messages that follow. -Alex > This series adds support for IPA v3.1 (featuring GSI v1.0) and also > takes account for some bits that are shared with other unimplemented > IPA v3 variants and it is specifically targeting MSM8998, for which > support is added. > > Since the userspace isn't entirely ready (as far as I can see) for > data connection (3g/lte/whatever) through the modem, it was possible > to only partially test this series. > Specifically, loading the IPA firmware and setting up the interface > went just fine, along with a basic setup of the network interface > that got exposed by this driver. > > With this series, the benefits that I see are: > 1. The modem doesn't crash anymore when trying to setup a data > connection, as now the modem firmware seems to be happy with > having IPA initialized and ready; > 2. Other random modem crashes while picking up LTE home network > signal (even just for calling, nothing fancy) seem to be gone. > > These are the reasons why I think that this series is ready for > upstream action. It's *at least* stabilizing the platform when > the modem is up. > > This was tested on the F(x)Tec Pro 1 (MSM8998) smartphone. > > AngeloGioacchino Del Regno (7): > net: ipa: Add support for IPA v3.1 with GSI v1.0 > net: ipa: endpoint: Don't read unexistant register on IPAv3.1 > net: ipa: gsi: Avoid some writes during irq setup for older IPA > net: ipa: gsi: Use right masks for GSI v1.0 channels hw param > net: ipa: Add support for IPA on MSM8998 > dt-bindings: net: qcom-ipa: Document qcom,sc7180-ipa compatible > dt-bindings: net: qcom-ipa: Document qcom,msm8998-ipa compatible > > .../devicetree/bindings/net/qcom,ipa.yaml | 7 +- > drivers/net/ipa/Makefile | 3 +- > drivers/net/ipa/gsi.c | 33 +- > drivers/net/ipa/gsi_reg.h | 5 + > drivers/net/ipa/ipa_data-msm8998.c | 407 ++++++++++++++++++ > drivers/net/ipa/ipa_data.h | 5 + > drivers/net/ipa/ipa_endpoint.c | 26 +- > drivers/net/ipa/ipa_main.c | 12 +- > drivers/net/ipa/ipa_reg.h | 3 + > drivers/net/ipa/ipa_version.h | 1 + > 10 files changed, 480 insertions(+), 22 deletions(-) > create mode 100644 drivers/net/ipa/ipa_data-msm8998.c >
On 2/11/21 11:50 AM, AngeloGioacchino Del Regno wrote: > On IPAv3.1 there is no such FLAVOR_0 register so it is impossible > to read tx/rx channel masks and we have to rely on the correctness > on the provided configuration. > > Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org> What you do here is a very simple solution to the problem that the FLAVOR_0 register is not available prior to IPA v3.5. I wanted to try to do something that might allow the configured endpoints to be checked, but for IPA v3.0 and IPA v3.1 they just aren't laid out the same way, so it's not so simple. I will post a patch that does essentially the same thing you do, but which includes a little more complete explanation in comments. It will credit you for the suggestion and provide a link to this original patch. -Alex > --- > drivers/net/ipa/ipa_endpoint.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/drivers/net/ipa/ipa_endpoint.c b/drivers/net/ipa/ipa_endpoint.c > index 06d8aa34276e..10c477e1bb90 100644 > --- a/drivers/net/ipa/ipa_endpoint.c > +++ b/drivers/net/ipa/ipa_endpoint.c > @@ -1659,6 +1659,15 @@ int ipa_endpoint_config(struct ipa *ipa) > u32 max; > u32 val; > > + /* Some IPA versions don't provide a FLAVOR register and we cannot > + * check the rx/tx masks hence we have to rely on the correctness > + * of the provided configuration. > + */ > + if (ipa->version == IPA_VERSION_3_1) { > + ipa->available = U32_MAX; > + return 0; > + } > + > /* Find out about the endpoints supplied by the hardware, and ensure > * the highest one doesn't exceed the number we support. > */ >
On 2/11/21 11:50 AM, AngeloGioacchino Del Regno wrote: > On some IPA versions (v3.1 and older), writing to registers > GSI_INTER_EE_SRC_CH_IRQ_OFFSET and GSI_INTER_EE_SRC_EV_CH_IRQ_OFFSET > will generate a fault and the SoC will lockup. > > Avoid clearing CH and EV_CH interrupts on GSI probe to fix this bad > behavior: we are anyway not going to get spurious interrupts. > > Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org> Looking at this more closely, I see that you have found a *bug* that I will fix. The bug is that these registers are the IRQ status registers, not the IRQ mask registers. I have posted a fix for this bug, and once fixed, and I would like to know whether this fix makes the fault you were observing go away. https://lore.kernel.org/netdev/20210505223636.232527-1-elder@linaro.org -Alex > --- > drivers/net/ipa/gsi.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/ipa/gsi.c b/drivers/net/ipa/gsi.c > index 6315336b3ca8..b5460cbb085c 100644 > --- a/drivers/net/ipa/gsi.c > +++ b/drivers/net/ipa/gsi.c > @@ -207,11 +207,14 @@ static void gsi_irq_setup(struct gsi *gsi) > iowrite32(0, gsi->virt + GSI_CNTXT_SRC_IEOB_IRQ_MSK_OFFSET); > > /* Reverse the offset adjustment for inter-EE register offsets */ > - adjust = gsi->version < IPA_VERSION_4_5 ? 0 : GSI_EE_REG_ADJUST; > - iowrite32(0, gsi->virt + adjust + GSI_INTER_EE_SRC_CH_IRQ_OFFSET); > - iowrite32(0, gsi->virt + adjust + GSI_INTER_EE_SRC_EV_CH_IRQ_OFFSET); > + if (gsi->version > IPA_VERSION_3_1) { > + adjust = gsi->version < IPA_VERSION_4_5 ? 0 : GSI_EE_REG_ADJUST; > + iowrite32(0, gsi->virt + adjust + GSI_INTER_EE_SRC_CH_IRQ_OFFSET); > + iowrite32(0, gsi->virt + adjust + GSI_INTER_EE_SRC_EV_CH_IRQ_OFFSET); > + } > > iowrite32(0, gsi->virt + GSI_CNTXT_GSI_IRQ_EN_OFFSET); > + > } > > /* Turn off all GSI interrupts when we're all done */ >
On 2/11/21 11:50 AM, AngeloGioacchino Del Regno wrote: > MSM8998 support has been added: document the new compatible. > > Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org> The upstream file affected here now has a slightly different format. I will implement this change, credit you for having first proposed it, and will include a link to your original message. -Alex > --- > Documentation/devicetree/bindings/net/qcom,ipa.yaml | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/Documentation/devicetree/bindings/net/qcom,ipa.yaml b/Documentation/devicetree/bindings/net/qcom,ipa.yaml > index b063c6c1077a..9dacd224b606 100644 > --- a/Documentation/devicetree/bindings/net/qcom,ipa.yaml > +++ b/Documentation/devicetree/bindings/net/qcom,ipa.yaml > @@ -46,6 +46,7 @@ properties: > oneOf: > - items: > - enum: > + - "qcom,msm8998-ipa" > - "qcom,sdm845-ipa" > - "qcom,sc7180-ipa" > >