net: ipa: update sequencer definition constraints
Starting with IPA v4.5, replication is done differently from before, and as a result the "replication" portion of the how the sequencer is specified must be zero. Add a check for the configuration data failing that requirement, and only update the sesquencer type value when it's supported. Signed-off-by: Alex Elder <elder@linaro.org> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
9eefd2fb96
commit
a14d593724
@ -182,6 +182,15 @@ static bool ipa_endpoint_data_valid_one(struct ipa *ipa, u32 count,
|
||||
return true; /* Nothing more to check for RX */
|
||||
}
|
||||
|
||||
/* Starting with IPA v4.5 sequencer replication is obsolete */
|
||||
if (ipa->version >= IPA_VERSION_4_5) {
|
||||
if (data->endpoint.config.tx.seq_rep_type) {
|
||||
dev_err(dev, "no-zero seq_rep_type TX endpoint %u\n",
|
||||
data->endpoint_id);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (data->endpoint.config.status_enable) {
|
||||
other_name = data->endpoint.config.tx.status_endpoint;
|
||||
if (other_name >= count) {
|
||||
@ -995,9 +1004,10 @@ static void ipa_endpoint_init_seq(struct ipa_endpoint *endpoint)
|
||||
/* Low-order byte configures primary packet processing */
|
||||
val |= u32_encode_bits(endpoint->config.tx.seq_type, SEQ_TYPE_FMASK);
|
||||
|
||||
/* Second byte configures replicated packet processing */
|
||||
val |= u32_encode_bits(endpoint->config.tx.seq_rep_type,
|
||||
SEQ_REP_TYPE_FMASK);
|
||||
/* Second byte (if supported) configures replicated packet processing */
|
||||
if (endpoint->ipa->version < IPA_VERSION_4_5)
|
||||
val |= u32_encode_bits(endpoint->config.tx.seq_rep_type,
|
||||
SEQ_REP_TYPE_FMASK);
|
||||
|
||||
iowrite32(val, endpoint->ipa->reg_virt + offset);
|
||||
}
|
||||
|
@ -585,6 +585,7 @@ static inline u32 rsrc_grp_encoded(enum ipa_version version, u32 rsrc_grp)
|
||||
#define IPA_REG_ENDP_INIT_SEQ_N_OFFSET(txep) \
|
||||
(0x0000083c + 0x0070 * (txep))
|
||||
#define SEQ_TYPE_FMASK GENMASK(7, 0)
|
||||
/* The next field must be zero for IPA v4.5+ */
|
||||
#define SEQ_REP_TYPE_FMASK GENMASK(15, 8)
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user