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
quoted hunk ↗ jump to hunk
Signed-off-by: AngeloGioacchino Del Regno <redacted>
---
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.
*/