Re: [PATCH v1 2/7] net: ipa: endpoint: Don't read unexistant register on IPAv3.1

From: Alex Elder
Date: Wed May 05 2021 - 18:42:46 EST


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@xxxxxxxxxxxxxx>

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.
*/