Message ID | 20210211175015.200772-3-angelogioacchino.delregno@somainline.org |
---|---|
State | New |
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: > 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. > */ >
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 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> --- drivers/net/ipa/ipa_endpoint.c | 9 +++++++++ 1 file changed, 9 insertions(+)