]> git.itanic.dy.fi Git - linux-stable/commitdiff
net: ipa: add HW_PARAM_4 GSI register
authorAlex Elder <elder@linaro.org>
Wed, 15 Feb 2023 19:53:52 +0000 (13:53 -0600)
committerPaolo Abeni <pabeni@redhat.com>
Mon, 20 Feb 2023 07:14:20 +0000 (08:14 +0100)
Starting at IPA v5.0, the number of event rings per EE is defined
in a field in a new HW_PARAM_4 GSI register rather than HW_PARAM_2.
Define this new register and its fields, and update the code that
checks the number of rings supported by hardware to use the proper
field based on IPA version.

Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ipa/gsi.c
drivers/net/ipa/gsi_reg.h

index f128d5bd6956e584d1e483ea78bb497f1a134f32..9a0b1fe4a93a88c40cf323e84665fa29f2520930 100644 (file)
@@ -2042,7 +2042,12 @@ static int gsi_ring_setup(struct gsi *gsi)
        }
        gsi->channel_count = count;
 
-       count = reg_decode(reg, NUM_EV_PER_EE, val);
+       if (gsi->version < IPA_VERSION_5_0) {
+               count = reg_decode(reg, NUM_EV_PER_EE, val);
+       } else {
+               reg = gsi_reg(gsi, HW_PARAM_4);
+               count = reg_decode(reg, EV_PER_EE, val);
+       }
        if (!count) {
                dev_err(dev, "GSI reports zero event rings supported\n");
                return -EINVAL;
index 2a19d9e34a10a426aa887c8aa10e3c7ee9483833..f62f0a5c653d1a6689f898bf6c67124147e8ac7d 100644 (file)
@@ -71,6 +71,7 @@ enum gsi_reg_id {
        EV_CH_CMD,
        GENERIC_CMD,
        HW_PARAM_2,                                     /* IPA v3.5.1+ */
+       HW_PARAM_4,                                     /* IPA v5.0+ */
        CNTXT_TYPE_IRQ,
        CNTXT_TYPE_IRQ_MSK,
        CNTXT_SRC_CH_IRQ,
@@ -224,7 +225,7 @@ enum gsi_generic_cmd_opcode {
 enum gsi_hw_param_2_field_id {
        IRAM_SIZE,
        NUM_CH_PER_EE,
-       NUM_EV_PER_EE,
+       NUM_EV_PER_EE,                                  /* Not IPA v5.0+ */
        GSI_CH_PEND_TRANSLATE,
        GSI_CH_FULL_LOGIC,
        GSI_USE_SDMA,                                   /* IPA v4.0+ */
@@ -247,6 +248,12 @@ enum gsi_iram_size {
        IRAM_SIZE_FOUR_KB                       = 0x5,
 };
 
+/* HW_PARAM_4 register */                              /* IPA v5.0+ */
+enum gsi_hw_param_4_field_id {
+       EV_PER_EE,
+       IRAM_PROTOCOL_COUNT,
+};
+
 /**
  * enum gsi_irq_type_id: GSI IRQ types
  * @GSI_CH_CTRL:               Channel allocation, deallocation, etc.