OSDN Git Service

net: ipa: FLAVOR_0 register doesn't exist until IPA v3.5
authorAlex Elder <elder@linaro.org>
Mon, 21 Jun 2021 17:56:25 +0000 (12:56 -0500)
committerDavid S. Miller <davem@davemloft.net>
Mon, 21 Jun 2021 19:30:59 +0000 (12:30 -0700)
The FLAVOR_0 version first appears in IPA v3.5, so avoid attempting
to read it for versions prior to that.

This register contains a concise definition of the number and
direction of endpoints supported by the hardware, and without it
we can't verify endpoint configuration in ipa_endpoint_config().
In this case, just indicate that any endpoint number is available
for use.

Originally proposed by AngeloGioacchino Del Regno.

Link: https://lore.kernel.org/netdev/20210211175015.200772-3-angelogioacchino.delregno@somainline.org
Signed-off-by: Alex Elder <elder@linaro.org>
Acked-by: AngeloGioacchino Del Regno
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ipa/ipa_endpoint.c

index 3520852..ab02669 100644 (file)
@@ -1731,6 +1731,21 @@ int ipa_endpoint_config(struct ipa *ipa)
        u32 max;
        u32 val;
 
+       /* Prior to IPAv3.5, the FLAVOR_0 register was not supported.
+        * Furthermore, the endpoints were not grouped such that TX
+        * endpoint numbers started with 0 and RX endpoints had numbers
+        * higher than all TX endpoints, so we can't do the simple
+        * direction check used for newer hardware below.
+        *
+        * For hardware that doesn't support the FLAVOR_0 register,
+        * just set the available mask to support any endpoint, and
+        * assume the configuration is valid.
+        */
+       if (ipa->version < IPA_VERSION_3_5) {
+               ipa->available = ~0;
+               return 0;
+       }
+
        /* Find out about the endpoints supplied by the hardware, and ensure
         * the highest one doesn't exceed the number we support.
         */