From nobody Wed Dec 17 19:00:59 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A663FC27C40 for ; Wed, 22 Nov 2023 23:09:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344565AbjKVXJY (ORCPT ); Wed, 22 Nov 2023 18:09:24 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44890 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235163AbjKVXJU (ORCPT ); Wed, 22 Nov 2023 18:09:20 -0500 Received: from mail-io1-xd32.google.com (mail-io1-xd32.google.com [IPv6:2607:f8b0:4864:20::d32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 658E11A8 for ; Wed, 22 Nov 2023 15:09:15 -0800 (PST) Received: by mail-io1-xd32.google.com with SMTP id ca18e2360f4ac-7a94c550cc8so9047439f.0 for ; Wed, 22 Nov 2023 15:09:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1700694554; x=1701299354; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vGPBNCqlVNas6AbndJSN5DY6WrC0n52CMV5MihrDmb0=; b=b/xO5qees7EqkpwXoWTBlJQDwkyPae1Bap/fGD0Fipu5RkIHG2W6oApLYzpXUohWZD Lv6TknkduSPuANWvpbsIPmVXnUzu7St2MUn3IdEEeF7yC3WItp3d5BH7cv3N09JzqOFy 4ChCRD0pIT1ZyvNatukLevgsoLC//KHllmbfIZnqaDhLEXPlpYACTLJUfe+A7YsIaBAB wE+6Sw8R8+MKwt9ftzXoqlPF4yyojvnRfZN/6q586uHBX5dgtB/E+qTNzYHt+cL8yP1s 3VILge6YFxko+3VZQgyH8x5SMAMndeH1DEk8cQba8TAU4Pcf00ulgLTzO91FSRo/adYD 8A5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700694554; x=1701299354; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vGPBNCqlVNas6AbndJSN5DY6WrC0n52CMV5MihrDmb0=; b=Rg78T8Smn9gdsNqc8M7N4kA+u1ybwrP1i5iT4hmId+UtIzGjYs6CkH/9GXED4gJnwz FJwFEO0tEiRBhvoZSZiowZsgM5orfxbnr3m/g7xfx7OUAZZEwbDM1QwqjRtYlgoxy9HF 55RyilzckjzSvsNvU1OZ0kh3cq3LHa904tBRfdb4r0IR37cd9EXzMQj8QqEgjjWHkDU1 SPkVyb5GQEw1dnvEmrIbqri1yIW/0fhJ8wVGqOUwegzHVSefBIjlpLrU8EmHwhlpr3l/ kOQYv6y/yc2oza01HqEXKe7SSeOjmnFUn/x15eh5jn7mFiErCvj9SDIHZJjWfElZoRG5 8ZXg== X-Gm-Message-State: AOJu0Yx4nrP+nSbLufXmLEXaoSVECMTiTstusEustOmHiD7tztO0/IiA 4vuqnf3NOwuoInnkmoB2c4mh5g== X-Google-Smtp-Source: AGHT+IF7dOhUvqzK3l8JX28iP7y9sInGo8bawEHOVGUWubN6lD0OrylMu/vBfpWrPKRkI2Laj9ticA== X-Received: by 2002:a05:6602:3713:b0:7b0:63ab:a2c2 with SMTP id bh19-20020a056602371300b007b063aba2c2mr4122698iob.20.1700694554628; Wed, 22 Nov 2023 15:09:14 -0800 (PST) Received: from localhost.localdomain (c-98-61-227-136.hsd1.mn.comcast.net. [98.61.227.136]) by smtp.gmail.com with ESMTPSA id fm29-20020a0566382b1d00b0043a20ad93c8sm117754jab.41.2023.11.22.15.09.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Nov 2023 15:09:14 -0800 (PST) From: Alex Elder To: robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: andersson@kernel.org, konrad.dybcio@linaro.org, agross@kernel.org, mka@chromium.org, quic_cpratapa@quicinc.com, quic_avuyyuru@quicinc.com, quic_jponduru@quicinc.com, quic_subashab@quicinc.com, elder@kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 1/5] dt-bindings: net: qcom,ipa: add SM8550 compatible Date: Wed, 22 Nov 2023 17:09:05 -0600 Message-Id: <20231122230909.895482-2-elder@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231122230909.895482-1-elder@linaro.org> References: <20231122230909.895482-1-elder@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Add support for SM8550, which uses IPA v5.5. Signed-off-by: Alex Elder Reviewed-by: Krzysztof Kozlowski --- Documentation/devicetree/bindings/net/qcom,ipa.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/net/qcom,ipa.yaml b/Document= ation/devicetree/bindings/net/qcom,ipa.yaml index 2d5e4ffb2f9ef..702eadccdf993 100644 --- a/Documentation/devicetree/bindings/net/qcom,ipa.yaml +++ b/Documentation/devicetree/bindings/net/qcom,ipa.yaml @@ -52,6 +52,7 @@ properties: - qcom,sdx65-ipa - qcom,sm6350-ipa - qcom,sm8350-ipa + - qcom,sm8550-ipa =20 reg: items: --=20 2.34.1 From nobody Wed Dec 17 19:00:59 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B5F03C61D97 for ; Wed, 22 Nov 2023 23:09:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344588AbjKVXJZ (ORCPT ); Wed, 22 Nov 2023 18:09:25 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44906 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235181AbjKVXJV (ORCPT ); Wed, 22 Nov 2023 18:09:21 -0500 Received: from mail-il1-x133.google.com (mail-il1-x133.google.com [IPv6:2607:f8b0:4864:20::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BB69A1B9 for ; Wed, 22 Nov 2023 15:09:16 -0800 (PST) Received: by mail-il1-x133.google.com with SMTP id e9e14a558f8ab-35ba5e00dc5so1122065ab.1 for ; Wed, 22 Nov 2023 15:09:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1700694556; x=1701299356; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=PrdFQJL7LtkUn1w2VUnO0MAm6i+n93tJ5rqse/ufmbA=; b=QmqVYXG7Y9n8jUmEa7evMMVQqe89djsIkVxAVSqqrtTabB1Ruywn+YFKxw07B0pjoN zCIQ4GQksFppqpL9jpc4y+SpwUQ7K+72roQvx7TSl/L4CH9/ybN6Xvl7MxFHt92TgZAR YwjiHaB7xZyYgWIJUjws0KCf9/NODYIpQjIlIysqdLaNWfAyt2jjssJq0QDx+fFfidHP D/aogmFTMy6ib9soPT585t4QjYMcFhRSX/LLLSqd6JNU3RUqUH14yPYcHDo4U8MK7GUJ WPl3aP4Lc30HPxO/pyW1B1Bg9hEY/BQPYeRomBH+990jGaanhuiTv8I5wqpSplGqQctf CNiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700694556; x=1701299356; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PrdFQJL7LtkUn1w2VUnO0MAm6i+n93tJ5rqse/ufmbA=; b=Ruluo1OOyjFdRkOFfCLIJgtcjPbhiCRJJwvj9pNSPadup4QXySM/sWllPlYKM8zXuh h47DhQ4h5W7caxD0g6s/kGIfOyzZHX5i0XA50i2BAl+urTnOgwab3X5J/TMpz70iOT60 mhC2ISuMJUluFFLny9R/w/f6d6MFpfWFgIQ9OzTEWeTVM3/A9WEIFaCmNVgR286OtkbS lU/kPz98i1UvLPiVdfMbgsyUivQ5hGLxx7hGWC5MxyT/7qrVLbmm5XxEG4H8QUDgpDUK 0MTFoXWEdu0MQg+WosFTM+h9WJFlz7VM8OK+k7jR50JeZ3Y2Dc9x6wkeXFZ0qTXA0MxX vZnA== X-Gm-Message-State: AOJu0YxEAYPn/zXxT/4xcOoFm4Mv/i4BEirEugNTxbX26LxhzlB9ElqW TljkIRvzsx0F0MoN1ngdxnldEw== X-Google-Smtp-Source: AGHT+IEBsG197MY1xKFYc8C0K6GBy637b/fOQl1hyapjF2Pm2x4aHOJ4C6RjiZdvRDUAzTw440tuGw== X-Received: by 2002:a92:908:0:b0:359:d397:c806 with SMTP id y8-20020a920908000000b00359d397c806mr4244376ilg.18.1700694556008; Wed, 22 Nov 2023 15:09:16 -0800 (PST) Received: from localhost.localdomain (c-98-61-227-136.hsd1.mn.comcast.net. [98.61.227.136]) by smtp.gmail.com with ESMTPSA id fm29-20020a0566382b1d00b0043a20ad93c8sm117754jab.41.2023.11.22.15.09.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Nov 2023 15:09:15 -0800 (PST) From: Alex Elder To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: andersson@kernel.org, konrad.dybcio@linaro.org, agross@kernel.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, mka@chromium.org, quic_cpratapa@quicinc.com, quic_avuyyuru@quicinc.com, quic_jponduru@quicinc.com, quic_subashab@quicinc.com, elder@kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 2/5] net: ipa: update IPA version comments in "ipa_reg.h" Date: Wed, 22 Nov 2023 17:09:06 -0600 Message-Id: <20231122230909.895482-3-elder@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231122230909.895482-1-elder@linaro.org> References: <20231122230909.895482-1-elder@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Some definitions in "ipa_reg.h" are only valid for certain versions of IPA. In such cases a comment indicates a version or range of versions where the definition is (or is not) valid. Almost all such cases look like "IPA vX.Y", but a few don't include the "IPA" tag. Update these so they all consistently include "IPA". And replace a few lines that talk about "the next bit" in the definition of the ipa_irq_id enumerated type with a more concise comment using the "IPA vX.Y" convention. Signed-off-by: Alex Elder --- drivers/net/ipa/ipa_reg.h | 86 +++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 45 deletions(-) diff --git a/drivers/net/ipa/ipa_reg.h b/drivers/net/ipa/ipa_reg.h index 3ac48dea865b2..aa1cbe76a4505 100644 --- a/drivers/net/ipa/ipa_reg.h +++ b/drivers/net/ipa/ipa_reg.h @@ -240,25 +240,25 @@ enum ipa_reg_local_pkt_proc_cntxt_field_id { =20 /* COUNTER_CFG register */ enum ipa_reg_counter_cfg_field_id { - EOT_COAL_GRANULARITY, /* Not v3.5+ */ + EOT_COAL_GRANULARITY, /* Not IPA v3.5+ */ AGGR_GRANULARITY, }; =20 /* IPA_TX_CFG register */ enum ipa_reg_ipa_tx_cfg_field_id { - TX0_PREFETCH_DISABLE, /* Not v4.0+ */ - TX1_PREFETCH_DISABLE, /* Not v4.0+ */ - PREFETCH_ALMOST_EMPTY_SIZE, /* Not v4.0+ */ - PREFETCH_ALMOST_EMPTY_SIZE_TX0, /* v4.0+ */ - DMAW_SCND_OUTSD_PRED_THRESHOLD, /* v4.0+ */ - DMAW_SCND_OUTSD_PRED_EN, /* v4.0+ */ - DMAW_MAX_BEATS_256_DIS, /* v4.0+ */ - PA_MASK_EN, /* v4.0+ */ - PREFETCH_ALMOST_EMPTY_SIZE_TX1, /* v4.0+ */ - DUAL_TX_ENABLE, /* v4.5+ */ - SSPND_PA_NO_START_STATE, /* v4,2+, not v4.5 */ - SSPND_PA_NO_BQ_STATE, /* v4.2 only */ - HOLB_STICKY_DROP_EN, /* v5.0+ */ + TX0_PREFETCH_DISABLE, /* Not IPA v4.0+ */ + TX1_PREFETCH_DISABLE, /* Not IPA v4.0+ */ + PREFETCH_ALMOST_EMPTY_SIZE, /* Not IPA v4.0+ */ + PREFETCH_ALMOST_EMPTY_SIZE_TX0, /* IPA v4.0+ */ + DMAW_SCND_OUTSD_PRED_THRESHOLD, /* IPA v4.0+ */ + DMAW_SCND_OUTSD_PRED_EN, /* IPA v4.0+ */ + DMAW_MAX_BEATS_256_DIS, /* IPA v4.0+ */ + PA_MASK_EN, /* IPA v4.0+ */ + PREFETCH_ALMOST_EMPTY_SIZE_TX1, /* IPA v4.0+ */ + DUAL_TX_ENABLE, /* IPA v4.5+ */ + SSPND_PA_NO_START_STATE, /* IPA v4,2+, not IPA v4.5 */ + SSPND_PA_NO_BQ_STATE, /* IPA v4.2 only */ + HOLB_STICKY_DROP_EN, /* IPA v5.0+ */ }; =20 /* FLAVOR_0 register */ @@ -319,8 +319,8 @@ enum ipa_reg_rsrc_grp_rsrc_type_field_id { =20 /* ENDP_INIT_CTRL register */ enum ipa_reg_endp_init_ctrl_field_id { - ENDP_SUSPEND, /* Not v4.0+ */ - ENDP_DELAY, /* Not v4.2+ */ + ENDP_SUSPEND, /* Not IPA v4.0+ */ + ENDP_DELAY, /* Not IPA v4.2+ */ }; =20 /* ENDP_INIT_CFG register */ @@ -359,11 +359,11 @@ enum ipa_reg_endp_init_hdr_field_id { HDR_ADDITIONAL_CONST_LEN, HDR_OFST_PKT_SIZE_VALID, HDR_OFST_PKT_SIZE, - HDR_A5_MUX, /* Not v4.9+ */ + HDR_A5_MUX, /* Not IPA v4.9+ */ HDR_LEN_INC_DEAGG_HDR, - HDR_METADATA_REG_VALID, /* Not v4.5+ */ - HDR_LEN_MSB, /* v4.5+ */ - HDR_OFST_METADATA_MSB, /* v4.5+ */ + HDR_METADATA_REG_VALID, /* Not IPA v4.5+ */ + HDR_LEN_MSB, /* IPA v4.5+ */ + HDR_OFST_METADATA_MSB, /* IPA v4.5+ */ }; =20 /* ENDP_INIT_HDR_EXT register */ @@ -374,23 +374,23 @@ enum ipa_reg_endp_init_hdr_ext_field_id { HDR_PAYLOAD_LEN_INC_PADDING, HDR_TOTAL_LEN_OR_PAD_OFFSET, HDR_PAD_TO_ALIGNMENT, - HDR_TOTAL_LEN_OR_PAD_OFFSET_MSB, /* v4.5+ */ - HDR_OFST_PKT_SIZE_MSB, /* v4.5+ */ - HDR_ADDITIONAL_CONST_LEN_MSB, /* v4.5+ */ - HDR_BYTES_TO_REMOVE_VALID, /* v5.0+ */ - HDR_BYTES_TO_REMOVE, /* v5.0+ */ + HDR_TOTAL_LEN_OR_PAD_OFFSET_MSB, /* IPA v4.5+ */ + HDR_OFST_PKT_SIZE_MSB, /* IPA v4.5+ */ + HDR_ADDITIONAL_CONST_LEN_MSB, /* IPA v4.5+ */ + HDR_BYTES_TO_REMOVE_VALID, /* IPA v5.0+ */ + HDR_BYTES_TO_REMOVE, /* IPA v5.0+ */ }; =20 /* ENDP_INIT_MODE register */ enum ipa_reg_endp_init_mode_field_id { ENDP_MODE, - DCPH_ENABLE, /* v4.5+ */ + DCPH_ENABLE, /* IPA v4.5+ */ DEST_PIPE_INDEX, BYTE_THRESHOLD, PIPE_REPLICATION_EN, PAD_EN, - HDR_FTCH_DISABLE, /* v4.5+ */ - DRBIP_ACL_ENABLE, /* v4.9+ */ + HDR_FTCH_DISABLE, /* IPA v4.5+ */ + DRBIP_ACL_ENABLE, /* IPA v4.9+ */ }; =20 /** enum ipa_mode - ENDP_INIT_MODE register MODE field value */ @@ -439,10 +439,10 @@ enum ipa_reg_endp_init_hol_block_en_field_id { =20 /* ENDP_INIT_HOL_BLOCK_TIMER register */ enum ipa_reg_endp_init_hol_block_timer_field_id { - TIMER_BASE_VALUE, /* Not v4.5+ */ - TIMER_SCALE, /* v4.2 only */ - TIMER_LIMIT, /* v4.5+ */ - TIMER_GRAN_SEL, /* v4.5+ */ + TIMER_BASE_VALUE, /* Not IPA v4.5+ */ + TIMER_SCALE, /* IPA v4.2 only */ + TIMER_LIMIT, /* IPA v4.5+ */ + TIMER_GRAN_SEL, /* IPA v4.5+ */ }; =20 /* ENDP_INIT_DEAGGR register */ @@ -463,7 +463,7 @@ enum ipa_reg_endp_init_rsrc_grp_field_id { /* ENDP_INIT_SEQ register */ enum ipa_reg_endp_init_seq_field_id { SEQ_TYPE, - SEQ_REP_TYPE, /* Not v4.5+ */ + SEQ_REP_TYPE, /* Not IPA v4.5+ */ }; =20 /** @@ -512,8 +512,8 @@ enum ipa_seq_rep_type { enum ipa_reg_endp_status_field_id { STATUS_EN, STATUS_ENDP, - STATUS_LOCATION, /* Not v4.5+ */ - STATUS_PKT_SUPPRESS, /* v4.0+ */ + STATUS_LOCATION, /* Not IPA v4.5+ */ + STATUS_PKT_SUPPRESS, /* IPA v4.0+ */ }; =20 /* ENDP_FILTER_ROUTER_HSH_CFG register */ @@ -588,8 +588,7 @@ enum ipa_reg_endp_cache_cfg_field_id { */ enum ipa_irq_id { IPA_IRQ_BAD_SNOC_ACCESS =3D 0x0, - /* The next bit is not present for IPA v3.5+ */ - IPA_IRQ_EOT_COAL =3D 0x1, + IPA_IRQ_EOT_COAL =3D 0x1, /* Not IPA v3.5+ */ IPA_IRQ_UC_0 =3D 0x2, IPA_IRQ_UC_1 =3D 0x3, IPA_IRQ_UC_2 =3D 0x4, @@ -610,17 +609,14 @@ enum ipa_irq_id { IPA_IRQ_PIPE_YELLOW_ABOVE =3D 0x13, IPA_IRQ_PIPE_RED_ABOVE =3D 0x14, IPA_IRQ_UCP =3D 0x15, - /* The next bit is not present for IPA v4.5+ */ - IPA_IRQ_DCMP =3D 0x16, + IPA_IRQ_DCMP =3D 0x16, /* Not IPA v4.5+ */ IPA_IRQ_GSI_EE =3D 0x17, IPA_IRQ_GSI_IPA_IF_TLV_RCVD =3D 0x18, IPA_IRQ_GSI_UC =3D 0x19, - /* The next bit is present for IPA v4.5+ */ - IPA_IRQ_TLV_LEN_MIN_DSM =3D 0x1a, - /* The next three bits are present for IPA v4.9+ */ - IPA_IRQ_DRBIP_PKT_EXCEED_MAX_SIZE_EN =3D 0x1b, - IPA_IRQ_DRBIP_DATA_SCTR_CFG_ERROR_EN =3D 0x1c, - IPA_IRQ_DRBIP_IMM_CMD_NO_FLSH_HZRD_EN =3D 0x1d, + IPA_IRQ_TLV_LEN_MIN_DSM =3D 0x1a, /* IPA v4.5+ */ + IPA_IRQ_DRBIP_PKT_EXCEED_MAX_SIZE_EN =3D 0x1b, /* IPA v4.9+ */ + IPA_IRQ_DRBIP_DATA_SCTR_CFG_ERROR_EN =3D 0x1c, /* IPA v4.9+ */ + IPA_IRQ_DRBIP_IMM_CMD_NO_FLSH_HZRD_EN =3D 0x1d, /* IPA v4.9+ */ IPA_IRQ_COUNT, /* Last; not an id */ }; =20 --=20 2.34.1 From nobody Wed Dec 17 19:00:59 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CA532C61D9C for ; Wed, 22 Nov 2023 23:09:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344596AbjKVXJ2 (ORCPT ); Wed, 22 Nov 2023 18:09:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44916 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235201AbjKVXJV (ORCPT ); Wed, 22 Nov 2023 18:09:21 -0500 Received: from mail-il1-x12f.google.com (mail-il1-x12f.google.com [IPv6:2607:f8b0:4864:20::12f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0A7E5191 for ; Wed, 22 Nov 2023 15:09:18 -0800 (PST) Received: by mail-il1-x12f.google.com with SMTP id e9e14a558f8ab-35aa43c92daso3565785ab.1 for ; Wed, 22 Nov 2023 15:09:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1700694557; x=1701299357; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UZf5YHbhcbeS57bvX0d7nyKtoOQx7TeuCp4s7XpeiHk=; b=rLBVzgs1wAPd46J70F9TjjxkX2xnQA7hzV1MIB0lvi0/PIGJOSa1e4vjlcoNjBghac as/jRZqpw4Cs7tKwugH5WRmjX4s660O4F8bSLM8GXe6LmTp297rqdeS3YK/f+ii40DHD ZJ5viD+o7OcEG6oeDhJ2Gs3emiasrQhz4HrAGkw6PzXlHvhQTbba5rQFDdp9FyAil2JZ 7DboGGnOJYHzFheJReGRIL2yhS0xXSa1t9m/cFqZVv4cY25iI2RAp3KUsNK5XUaFqpDv BmLMG0fouw5ysDbJWVKN9cVdZaKeZ5gWjOERnW+8i/s31YDjZDusK8AGbidG7gc1rAo2 uoHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700694557; x=1701299357; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UZf5YHbhcbeS57bvX0d7nyKtoOQx7TeuCp4s7XpeiHk=; b=eC1KmhGp7MFM3MpYv+WkT94bViZzrqEGqmip2Z8kd45F+9466SovDsJyZgT1eAuc+X sDzKQoU4n/rhwOPdnY4EFgcYfiIAitsQXumRBdM/JKBV6udJveI2th7Dc1NIEWNADFN+ Shd62763HAEDpv4IN48+D5Pk1Vs+nvQaAf7ov68BrV/HlMtCUYtjrZETmeoQ+SoFC74p Lw2kLEkQSrf7ilj5Y41etJepV9jUKe1t1JZcXEj1uHsESdty9jiHtyUDuOlE+vA/h8vD MPhxN5LUIdN3/KXYCjUWzH9WHZd//2BpbeWlndVJ52rCLiQqCl5TSiAsOxqQFGMtAnBQ Ak3g== X-Gm-Message-State: AOJu0YyKYb0qO3DVGaL8yjUK0007k5L9T3yafgziht9DVZBFUcBncqI8 L+AHNAnAKr0kBhXsRAdypSJODQ== X-Google-Smtp-Source: AGHT+IEfjpYWs3J+rg1YT6DrvMGYXJRFcAQx/1a3k54mm8zLVVoK0kvzyQyY2FB5iMNa8151Z7QUGg== X-Received: by 2002:a92:c5c9:0:b0:357:592a:8c4a with SMTP id s9-20020a92c5c9000000b00357592a8c4amr801254ilt.12.1700694557360; Wed, 22 Nov 2023 15:09:17 -0800 (PST) Received: from localhost.localdomain (c-98-61-227-136.hsd1.mn.comcast.net. [98.61.227.136]) by smtp.gmail.com with ESMTPSA id fm29-20020a0566382b1d00b0043a20ad93c8sm117754jab.41.2023.11.22.15.09.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Nov 2023 15:09:17 -0800 (PST) From: Alex Elder To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: andersson@kernel.org, konrad.dybcio@linaro.org, agross@kernel.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, mka@chromium.org, quic_cpratapa@quicinc.com, quic_avuyyuru@quicinc.com, quic_jponduru@quicinc.com, quic_subashab@quicinc.com, elder@kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 3/5] net: ipa: prepare for IPA v5.5 Date: Wed, 22 Nov 2023 17:09:07 -0600 Message-Id: <20231122230909.895482-4-elder@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231122230909.895482-1-elder@linaro.org> References: <20231122230909.895482-1-elder@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" For IPA v5.5+, the QTIME_TIMESTAMP_CFG register no longer defines two fields in the DPL timestamp. Make the code referencing those fields in ipa_qtime_config() conditional based on IPA version. IPA v5.0+ supports the IPA_MEM_AP_V4_FILTER and IPA_MEM_AP_V6_FILTER memory regions. Update ipa_mem_id_valid() to reflect that. IPA v5.5 no longer supports a few register fields, adds some others, and removes support for a few IPA interrupt types. Update "ipa_reg.h" to include information about IPA v5.5. Signed-off-by: Alex Elder --- drivers/net/ipa/ipa_main.c | 9 ++++++--- drivers/net/ipa/ipa_mem.c | 2 +- drivers/net/ipa/ipa_reg.h | 32 +++++++++++++++++++------------- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/drivers/net/ipa/ipa_main.c b/drivers/net/ipa/ipa_main.c index da853353a5c72..8893290e132b4 100644 --- a/drivers/net/ipa/ipa_main.c +++ b/drivers/net/ipa/ipa_main.c @@ -74,6 +74,7 @@ #define IPA_PAS_ID 15 =20 /* Shift of 19.2 MHz timestamp to achieve lower resolution timestamps */ +/* IPA v5.5+ does not specify Qtime timestamp config for DPL */ #define DPL_TIMESTAMP_SHIFT 14 /* ~1.172 kHz, ~853 usec per tick */ #define TAG_TIMESTAMP_SHIFT 14 #define NAT_TIMESTAMP_SHIFT 24 /* ~1.144 Hz, ~874 msec per tick */ @@ -376,9 +377,11 @@ static void ipa_qtime_config(struct ipa *ipa) iowrite32(0, ipa->reg_virt + reg_offset(reg)); =20 reg =3D ipa_reg(ipa, QTIME_TIMESTAMP_CFG); - /* Set DPL time stamp resolution to use Qtime (instead of 1 msec) */ - val =3D reg_encode(reg, DPL_TIMESTAMP_LSB, DPL_TIMESTAMP_SHIFT); - val |=3D reg_bit(reg, DPL_TIMESTAMP_SEL); + if (ipa->version < IPA_VERSION_5_5) { + /* Set DPL time stamp resolution to use Qtime (not 1 msec) */ + val =3D reg_encode(reg, DPL_TIMESTAMP_LSB, DPL_TIMESTAMP_SHIFT); + val |=3D reg_bit(reg, DPL_TIMESTAMP_SEL); + } /* Configure tag and NAT Qtime timestamp resolution as well */ val =3D reg_encode(reg, TAG_TIMESTAMP_LSB, TAG_TIMESTAMP_SHIFT); val =3D reg_encode(reg, NAT_TIMESTAMP_LSB, NAT_TIMESTAMP_SHIFT); diff --git a/drivers/net/ipa/ipa_mem.c b/drivers/net/ipa/ipa_mem.c index db6ada2343afc..694960537ecda 100644 --- a/drivers/net/ipa/ipa_mem.c +++ b/drivers/net/ipa/ipa_mem.c @@ -165,7 +165,7 @@ static bool ipa_mem_id_valid(struct ipa *ipa, enum ipa_= mem_id mem_id) =20 case IPA_MEM_AP_V4_FILTER: case IPA_MEM_AP_V6_FILTER: - if (version !=3D IPA_VERSION_5_0) + if (version < IPA_VERSION_5_0) return false; break; =20 diff --git a/drivers/net/ipa/ipa_reg.h b/drivers/net/ipa/ipa_reg.h index aa1cbe76a4505..23231f0df93a6 100644 --- a/drivers/net/ipa/ipa_reg.h +++ b/drivers/net/ipa/ipa_reg.h @@ -277,8 +277,8 @@ enum ipa_reg_idle_indication_cfg_field_id { =20 /* QTIME_TIMESTAMP_CFG register */ enum ipa_reg_qtime_timestamp_cfg_field_id { - DPL_TIMESTAMP_LSB, - DPL_TIMESTAMP_SEL, + DPL_TIMESTAMP_LSB, /* Not IPA v5.5+ */ + DPL_TIMESTAMP_SEL, /* Not IPA v5.5+ */ TAG_TIMESTAMP_LSB, NAT_TIMESTAMP_LSB, }; @@ -329,6 +329,7 @@ enum ipa_reg_endp_init_cfg_field_id { CS_OFFLOAD_EN, CS_METADATA_HDR_OFFSET, CS_GEN_QMB_MASTER_SEL, + PIPE_REPLICATE_EN, /* IPA v5.5+ */ }; =20 /** enum ipa_cs_offload_en - ENDP_INIT_CFG register CS_OFFLOAD_EN field va= lue */ @@ -387,7 +388,7 @@ enum ipa_reg_endp_init_mode_field_id { DCPH_ENABLE, /* IPA v4.5+ */ DEST_PIPE_INDEX, BYTE_THRESHOLD, - PIPE_REPLICATION_EN, + PIPE_REPLICATION_EN, /* Not IPA v5.5+ */ PAD_EN, HDR_FTCH_DISABLE, /* IPA v4.5+ */ DRBIP_ACL_ENABLE, /* IPA v4.9+ */ @@ -412,6 +413,7 @@ enum ipa_reg_endp_init_aggr_field_id { FORCE_CLOSE, HARD_BYTE_LIMIT_EN, AGGR_GRAN_SEL, + AGGR_COAL_L2, /* IPA v5.5+ */ }; =20 /** enum ipa_aggr_en - ENDP_INIT_AGGR register AGGR_EN field value */ @@ -585,9 +587,11 @@ enum ipa_reg_endp_cache_cfg_field_id { * @IPA_IRQ_DRBIP_PKT_EXCEED_MAX_SIZE_EN: (Not currently used) * @IPA_IRQ_DRBIP_DATA_SCTR_CFG_ERROR_EN: (Not currently used) * @IPA_IRQ_DRBIP_IMM_CMD_NO_FLSH_HZRD_EN: (Not currently used) + * @IPA_IRQ_ERROR_NON_FATAL: (Not currently used) + * @IPA_IRQ_ERROR_FATAL: (Not currently used) */ enum ipa_irq_id { - IPA_IRQ_BAD_SNOC_ACCESS =3D 0x0, + IPA_IRQ_BAD_SNOC_ACCESS =3D 0x0, /* Not IPA v5.5+ */ IPA_IRQ_EOT_COAL =3D 0x1, /* Not IPA v3.5+ */ IPA_IRQ_UC_0 =3D 0x2, IPA_IRQ_UC_1 =3D 0x3, @@ -596,11 +600,11 @@ enum ipa_irq_id { IPA_IRQ_UC_IN_Q_NOT_EMPTY =3D 0x6, IPA_IRQ_UC_RX_CMD_Q_NOT_FULL =3D 0x7, IPA_IRQ_PROC_UC_ACK_Q_NOT_EMPTY =3D 0x8, - IPA_IRQ_RX_ERR =3D 0x9, - IPA_IRQ_DEAGGR_ERR =3D 0xa, - IPA_IRQ_TX_ERR =3D 0xb, - IPA_IRQ_STEP_MODE =3D 0xc, - IPA_IRQ_PROC_ERR =3D 0xd, + IPA_IRQ_RX_ERR =3D 0x9, /* Not IPA v5.5+ */ + IPA_IRQ_DEAGGR_ERR =3D 0xa, /* Not IPA v5.5+ */ + IPA_IRQ_TX_ERR =3D 0xb, /* Not IPA v5.5+ */ + IPA_IRQ_STEP_MODE =3D 0xc, /* Not IPA v5.5+ */ + IPA_IRQ_PROC_ERR =3D 0xd, /* Not IPA v5.5+ */ IPA_IRQ_TX_SUSPEND =3D 0xe, IPA_IRQ_TX_HOLB_DROP =3D 0xf, IPA_IRQ_BAM_GSI_IDLE =3D 0x10, @@ -613,10 +617,12 @@ enum ipa_irq_id { IPA_IRQ_GSI_EE =3D 0x17, IPA_IRQ_GSI_IPA_IF_TLV_RCVD =3D 0x18, IPA_IRQ_GSI_UC =3D 0x19, - IPA_IRQ_TLV_LEN_MIN_DSM =3D 0x1a, /* IPA v4.5+ */ - IPA_IRQ_DRBIP_PKT_EXCEED_MAX_SIZE_EN =3D 0x1b, /* IPA v4.9+ */ - IPA_IRQ_DRBIP_DATA_SCTR_CFG_ERROR_EN =3D 0x1c, /* IPA v4.9+ */ - IPA_IRQ_DRBIP_IMM_CMD_NO_FLSH_HZRD_EN =3D 0x1d, /* IPA v4.9+ */ + IPA_IRQ_TLV_LEN_MIN_DSM =3D 0x1a, /* IPA v4.5-v5.2 */ + IPA_IRQ_DRBIP_PKT_EXCEED_MAX_SIZE_EN =3D 0x1b, /* IPA v4.9-v5.2 */ + IPA_IRQ_DRBIP_DATA_SCTR_CFG_ERROR_EN =3D 0x1c, /* IPA v4.9-v5.2 */ + IPA_IRQ_DRBIP_IMM_CMD_NO_FLSH_HZRD_EN =3D 0x1d, /* IPA v4.9-v5.2 */ + IPA_IRQ_ERROR_NON_FATAL =3D 0x1e, /* IPA v5.5+ */ + IPA_IRQ_ERROR_FATAL =3D 0x1f, /* IPA v5.5+ */ IPA_IRQ_COUNT, /* Last; not an id */ }; =20 --=20 2.34.1 From nobody Wed Dec 17 19:00:59 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 67AB0C27C40 for ; Wed, 22 Nov 2023 23:09:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344610AbjKVXJe (ORCPT ); Wed, 22 Nov 2023 18:09:34 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58314 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235181AbjKVXJ0 (ORCPT ); Wed, 22 Nov 2023 18:09:26 -0500 Received: from mail-io1-xd2f.google.com (mail-io1-xd2f.google.com [IPv6:2607:f8b0:4864:20::d2f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8E104D47 for ; Wed, 22 Nov 2023 15:09:19 -0800 (PST) Received: by mail-io1-xd2f.google.com with SMTP id ca18e2360f4ac-7afff3ea94dso8996339f.3 for ; Wed, 22 Nov 2023 15:09:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1700694559; x=1701299359; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hdE6LhS3w6qhzyH7PYbVHswqj965OuJgUI31j7t/Esk=; b=RWWtXYy9DFXEpxIWqt3SSAX19PwMn+FYkqkkBICAguWeyWCGqm3JpJlXM7UDlvjoic En+KvUOoqaanbCG95d3NXQrRFSjtmrfqHo7fdkkyjkRZj01DMUXgfopkZDsH60ikO+lp du8CkZLcsPPRf6BWFrHtb+JHJc2jfi0Dx+ezejNdkDG9jplB4QA0Uu8AfdKnUeZMCvB1 +y14n2xGwxXwf6GRR5qZ7QEJHaaB+U09vMyeb+bxGFVuYTkoanpANWr/ghJ9cfWwCDtE Bu10VEsHp0dmIGjxA5acLt022k/1ZT+1rr4W+rmGTH2M1W3NFU6+ASTaXBZatY202K2J 7mHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700694559; x=1701299359; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hdE6LhS3w6qhzyH7PYbVHswqj965OuJgUI31j7t/Esk=; b=WAVquOAW2RFWlNfB0051sfAn6FEJ4VNkLDBhbCZjCT3xFcLnoD9jfAooh/pH1ehSB/ uHq+Y1AWEhtMdMLXJRCWO3HD1+5YeNZVJ2iWzYlgvtqnlLJmWeKXNJfXFVXtZUaIYP+N J9hSmgIhAMzCyJgzR44WsiPjRugnKQ80lWzG7OX49xuy33P9oxA+XjuraDRBh34cNyK6 Voz0m4Cvi836m4eJkNzkTyWlpwW8eJ/QZvJMNr/4xjGjalykdAGQRmYZQEN6uPINb1O4 ilIRATHwZFAgdT7gg6XwdRhhIm4PCE6mEhzxcQaZf5Msxg3/S5mpK0ha870DCHDCCh3T b30w== X-Gm-Message-State: AOJu0Yz7miK7lG0m3i77bIIr/L648yBHIuOBTZ/OjQKWPVE6PCGbm1VV gc9Mf0u3u5KcYr1xlpvT978fIQ== X-Google-Smtp-Source: AGHT+IEbTIkT4bg3vo+JJ8rMaXW0HJAbrM/pIp1E6Wh3oDjLDStDK86w1ulZue5Pa3qpYH1XWQbNBw== X-Received: by 2002:a92:c982:0:b0:35b:e80:57e2 with SMTP id y2-20020a92c982000000b0035b0e8057e2mr3830945iln.32.1700694558672; Wed, 22 Nov 2023 15:09:18 -0800 (PST) Received: from localhost.localdomain (c-98-61-227-136.hsd1.mn.comcast.net. [98.61.227.136]) by smtp.gmail.com with ESMTPSA id fm29-20020a0566382b1d00b0043a20ad93c8sm117754jab.41.2023.11.22.15.09.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Nov 2023 15:09:18 -0800 (PST) From: Alex Elder To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: andersson@kernel.org, konrad.dybcio@linaro.org, agross@kernel.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, mka@chromium.org, quic_cpratapa@quicinc.com, quic_avuyyuru@quicinc.com, quic_jponduru@quicinc.com, quic_subashab@quicinc.com, elder@kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 4/5] net: ipa: add IPA v5.5 register definitions Date: Wed, 22 Nov 2023 17:09:08 -0600 Message-Id: <20231122230909.895482-5-elder@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231122230909.895482-1-elder@linaro.org> References: <20231122230909.895482-1-elder@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" GSI register definitions for IPA v5.5 are the same as those used for IPA v5.0. Update ipa_reg_id_valid() to reflect that IPA v5.0+ supports source and destination resource groups 4 through 7. Add the definitions of IPA register offsets and fields for IPA v5.5. Signed-off-by: Alex Elder --- drivers/net/ipa/Makefile | 2 +- drivers/net/ipa/gsi_reg.c | 1 + drivers/net/ipa/ipa_reg.c | 6 +- drivers/net/ipa/ipa_reg.h | 1 + drivers/net/ipa/reg/ipa_reg-v5.5.c | 565 +++++++++++++++++++++++++++++ 5 files changed, 572 insertions(+), 3 deletions(-) create mode 100644 drivers/net/ipa/reg/ipa_reg-v5.5.c diff --git a/drivers/net/ipa/Makefile b/drivers/net/ipa/Makefile index 7293d5cc2b2b7..9d2182068e1cd 100644 --- a/drivers/net/ipa/Makefile +++ b/drivers/net/ipa/Makefile @@ -2,7 +2,7 @@ # # Makefile for the Qualcomm IPA driver. =20 -IPA_REG_VERSIONS :=3D 3.1 3.5.1 4.2 4.5 4.7 4.9 4.11 5.0 +IPA_REG_VERSIONS :=3D 3.1 3.5.1 4.2 4.5 4.7 4.9 4.11 5.0 5.5 =20 # Some IPA versions can reuse another set of GSI register definitions. GSI_REG_VERSIONS :=3D 3.1 3.5.1 4.0 4.5 4.9 4.11 5.0 diff --git a/drivers/net/ipa/gsi_reg.c b/drivers/net/ipa/gsi_reg.c index c5458e28b12f2..106c43884aef8 100644 --- a/drivers/net/ipa/gsi_reg.c +++ b/drivers/net/ipa/gsi_reg.c @@ -110,6 +110,7 @@ static const struct regs *gsi_regs(struct gsi *gsi) return &gsi_regs_v4_11; =20 case IPA_VERSION_5_0: + case IPA_VERSION_5_5: return &gsi_regs_v5_0; =20 default: diff --git a/drivers/net/ipa/ipa_reg.c b/drivers/net/ipa/ipa_reg.c index 818a84f7c42d6..6a3203ae6f1ef 100644 --- a/drivers/net/ipa/ipa_reg.c +++ b/drivers/net/ipa/ipa_reg.c @@ -44,12 +44,12 @@ static bool ipa_reg_id_valid(struct ipa *ipa, enum ipa_= reg_id reg_id) case DST_RSRC_GRP_45_RSRC_TYPE: return version <=3D IPA_VERSION_3_1 || version =3D=3D IPA_VERSION_4_5 || - version =3D=3D IPA_VERSION_5_0; + version >=3D IPA_VERSION_5_0; =20 case SRC_RSRC_GRP_67_RSRC_TYPE: case DST_RSRC_GRP_67_RSRC_TYPE: return version <=3D IPA_VERSION_3_1 || - version =3D=3D IPA_VERSION_5_0; + version >=3D IPA_VERSION_5_0; =20 case ENDP_FILTER_ROUTER_HSH_CFG: return version < IPA_VERSION_5_0 && @@ -125,6 +125,8 @@ static const struct regs *ipa_regs(enum ipa_version ver= sion) return &ipa_regs_v4_11; case IPA_VERSION_5_0: return &ipa_regs_v5_0; + case IPA_VERSION_5_5: + return &ipa_regs_v5_5; default: return NULL; } diff --git a/drivers/net/ipa/ipa_reg.h b/drivers/net/ipa/ipa_reg.h index 23231f0df93a6..2998f115f12c7 100644 --- a/drivers/net/ipa/ipa_reg.h +++ b/drivers/net/ipa/ipa_reg.h @@ -639,6 +639,7 @@ extern const struct regs ipa_regs_v4_7; extern const struct regs ipa_regs_v4_9; extern const struct regs ipa_regs_v4_11; extern const struct regs ipa_regs_v5_0; +extern const struct regs ipa_regs_v5_5; =20 const struct reg *ipa_reg(struct ipa *ipa, enum ipa_reg_id reg_id); =20 diff --git a/drivers/net/ipa/reg/ipa_reg-v5.5.c b/drivers/net/ipa/reg/ipa_r= eg-v5.5.c new file mode 100644 index 0000000000000..26ca9c9bac599 --- /dev/null +++ b/drivers/net/ipa/reg/ipa_reg-v5.5.c @@ -0,0 +1,565 @@ +// SPDX-License-Identifier: GPL-2.0 + +/* Copyright (C) 2023 Linaro Ltd. */ + +#include +#include +#include + +#include "../ipa_reg.h" +#include "../ipa_version.h" + +static const u32 reg_flavor_0_fmask[] =3D { + [MAX_PIPES] =3D GENMASK(7, 0), + [MAX_CONS_PIPES] =3D GENMASK(15, 8), + [MAX_PROD_PIPES] =3D GENMASK(23, 16), + [PROD_LOWEST] =3D GENMASK(31, 24), +}; + +REG_FIELDS(FLAVOR_0, flavor_0, 0x00000000); + +static const u32 reg_comp_cfg_fmask[] =3D { + [RAM_ARB_PRI_CLIENT_SAMP_FIX_DIS] =3D BIT(0), + [GSI_SNOC_BYPASS_DIS] =3D BIT(1), + [GEN_QMB_0_SNOC_BYPASS_DIS] =3D BIT(2), + [GEN_QMB_1_SNOC_BYPASS_DIS] =3D BIT(3), + /* Bit 4 reserved */ + [IPA_QMB_SELECT_CONS_EN] =3D BIT(5), + [IPA_QMB_SELECT_PROD_EN] =3D BIT(6), + [GSI_MULTI_INORDER_RD_DIS] =3D BIT(7), + [GSI_MULTI_INORDER_WR_DIS] =3D BIT(8), + [GEN_QMB_0_MULTI_INORDER_RD_DIS] =3D BIT(9), + [GEN_QMB_1_MULTI_INORDER_RD_DIS] =3D BIT(10), + [GEN_QMB_0_MULTI_INORDER_WR_DIS] =3D BIT(11), + [GEN_QMB_1_MULTI_INORDER_WR_DIS] =3D BIT(12), + [GEN_QMB_0_SNOC_CNOC_LOOP_PROT_DIS] =3D BIT(13), + [GSI_SNOC_CNOC_LOOP_PROT_DISABLE] =3D BIT(14), + [GSI_MULTI_AXI_MASTERS_DIS] =3D BIT(15), + [IPA_QMB_SELECT_GLOBAL_EN] =3D BIT(16), + /* Bits 17-18 reserved */ + [QMB_RAM_RD_CACHE_DISABLE] =3D BIT(19), + [GENQMB_AOOOWR] =3D BIT(20), + [IF_OUT_OF_BUF_STOP_RESET_MASK_EN] =3D BIT(21), + [ATOMIC_FETCHER_ARB_LOCK_DIS] =3D GENMASK(27, 22), + /* Bits 28-29 reserved */ + [GEN_QMB_1_DYNAMIC_ASIZE] =3D BIT(30), + [GEN_QMB_0_DYNAMIC_ASIZE] =3D BIT(31), +}; + +REG_FIELDS(COMP_CFG, comp_cfg, 0x00000048); + +static const u32 reg_clkon_cfg_fmask[] =3D { + [CLKON_RX] =3D BIT(0), + [CLKON_PROC] =3D BIT(1), + [TX_WRAPPER] =3D BIT(2), + [CLKON_MISC] =3D BIT(3), + [RAM_ARB] =3D BIT(4), + [FTCH_HPS] =3D BIT(5), + [FTCH_DPS] =3D BIT(6), + [CLKON_HPS] =3D BIT(7), + [CLKON_DPS] =3D BIT(8), + [RX_HPS_CMDQS] =3D BIT(9), + [HPS_DPS_CMDQS] =3D BIT(10), + [DPS_TX_CMDQS] =3D BIT(11), + [RSRC_MNGR] =3D BIT(12), + [CTX_HANDLER] =3D BIT(13), + [ACK_MNGR] =3D BIT(14), + [D_DCPH] =3D BIT(15), + [H_DCPH] =3D BIT(16), + /* Bit 17 reserved */ + [NTF_TX_CMDQS] =3D BIT(18), + [CLKON_TX_0] =3D BIT(19), + [CLKON_TX_1] =3D BIT(20), + [CLKON_FNR] =3D BIT(21), + [QSB2AXI_CMDQ_L] =3D BIT(22), + [AGGR_WRAPPER] =3D BIT(23), + [RAM_SLAVEWAY] =3D BIT(24), + [CLKON_QMB] =3D BIT(25), + [WEIGHT_ARB] =3D BIT(26), + [GSI_IF] =3D BIT(27), + [CLKON_GLOBAL] =3D BIT(28), + [GLOBAL_2X_CLK] =3D BIT(29), + [DPL_FIFO] =3D BIT(30), + [DRBIP] =3D BIT(31), +}; + +REG_FIELDS(CLKON_CFG, clkon_cfg, 0x00000050); + +static const u32 reg_route_fmask[] =3D { + [ROUTE_DEF_PIPE] =3D GENMASK(7, 0), + [ROUTE_FRAG_DEF_PIPE] =3D GENMASK(15, 8), + [ROUTE_DEF_HDR_OFST] =3D GENMASK(25, 16), + [ROUTE_DEF_HDR_TABLE] =3D BIT(26), + [ROUTE_DEF_RETAIN_HDR] =3D BIT(27), + [ROUTE_DIS] =3D BIT(28), + /* Bits 29-31 reserved */ +}; + +REG_FIELDS(ROUTE, route, 0x00000054); + +static const u32 reg_shared_mem_size_fmask[] =3D { + [MEM_SIZE] =3D GENMASK(15, 0), + [MEM_BADDR] =3D GENMASK(31, 16), +}; + +REG_FIELDS(SHARED_MEM_SIZE, shared_mem_size, 0x0000005c); + +static const u32 reg_qsb_max_writes_fmask[] =3D { + [GEN_QMB_0_MAX_WRITES] =3D GENMASK(3, 0), + [GEN_QMB_1_MAX_WRITES] =3D GENMASK(7, 4), + /* Bits 8-31 reserved */ +}; + +REG_FIELDS(QSB_MAX_WRITES, qsb_max_writes, 0x00000070); + +static const u32 reg_qsb_max_reads_fmask[] =3D { + [GEN_QMB_0_MAX_READS] =3D GENMASK(3, 0), + [GEN_QMB_1_MAX_READS] =3D GENMASK(7, 4), + /* Bits 8-15 reserved */ + [GEN_QMB_0_MAX_READS_BEATS] =3D GENMASK(23, 16), + [GEN_QMB_1_MAX_READS_BEATS] =3D GENMASK(31, 24), +}; + +REG_FIELDS(QSB_MAX_READS, qsb_max_reads, 0x00000074); + +/* Valid bits defined by ipa->available */ + +REG_STRIDE(STATE_AGGR_ACTIVE, state_aggr_active, 0x00000120, 0x0004); + +static const u32 reg_filt_rout_cache_flush_fmask[] =3D { + [ROUTER_CACHE] =3D BIT(0), + /* Bits 1-3 reserved */ + [FILTER_CACHE] =3D BIT(4), + /* Bits 5-31 reserved */ +}; + +REG_FIELDS(FILT_ROUT_CACHE_FLUSH, filt_rout_cache_flush, 0x0000404); + +static const u32 reg_local_pkt_proc_cntxt_fmask[] =3D { + [IPA_BASE_ADDR] =3D GENMASK(17, 0), + /* Bits 18-31 reserved */ +}; + +/* Offset must be a multiple of 8 */ +REG_FIELDS(LOCAL_PKT_PROC_CNTXT, local_pkt_proc_cntxt, 0x00000478); + +static const u32 reg_ipa_tx_cfg_fmask[] =3D { + /* Bits 0-1 reserved */ + [PREFETCH_ALMOST_EMPTY_SIZE_TX0] =3D GENMASK(5, 2), + [DMAW_SCND_OUTSD_PRED_THRESHOLD] =3D GENMASK(9, 6), + [DMAW_SCND_OUTSD_PRED_EN] =3D BIT(10), + [DMAW_MAX_BEATS_256_DIS] =3D BIT(11), + [PA_MASK_EN] =3D BIT(12), + [PREFETCH_ALMOST_EMPTY_SIZE_TX1] =3D GENMASK(16, 13), + [DUAL_TX_ENABLE] =3D BIT(17), + [SSPND_PA_NO_START_STATE] =3D BIT(18), + /* Bit 19 reserved */ + [HOLB_STICKY_DROP_EN] =3D BIT(20), + /* Bits 21-31 reserved */ +}; + +REG_FIELDS(IPA_TX_CFG, ipa_tx_cfg, 0x00000488); + +static const u32 reg_idle_indication_cfg_fmask[] =3D { + [ENTER_IDLE_DEBOUNCE_THRESH] =3D GENMASK(15, 0), + [CONST_NON_IDLE_ENABLE] =3D BIT(16), + /* Bits 17-31 reserved */ +}; + +REG_FIELDS(IDLE_INDICATION_CFG, idle_indication_cfg, 0x000004a8); + +static const u32 reg_qtime_timestamp_cfg_fmask[] =3D { + /* Bits 0-7 reserved */ + [TAG_TIMESTAMP_LSB] =3D GENMASK(12, 8), + /* Bits 13-15 reserved */ + [NAT_TIMESTAMP_LSB] =3D GENMASK(20, 16), + /* Bits 21-31 reserved */ +}; + +REG_FIELDS(QTIME_TIMESTAMP_CFG, qtime_timestamp_cfg, 0x000004ac); + +static const u32 reg_timers_xo_clk_div_cfg_fmask[] =3D { + [DIV_VALUE] =3D GENMASK(8, 0), + /* Bits 9-30 reserved */ + [DIV_ENABLE] =3D BIT(31), +}; + +REG_FIELDS(TIMERS_XO_CLK_DIV_CFG, timers_xo_clk_div_cfg, 0x000004b0); + +static const u32 reg_timers_pulse_gran_cfg_fmask[] =3D { + [PULSE_GRAN_0] =3D GENMASK(2, 0), + [PULSE_GRAN_1] =3D GENMASK(5, 3), + [PULSE_GRAN_2] =3D GENMASK(8, 6), + [PULSE_GRAN_3] =3D GENMASK(11, 9), + /* Bits 12-31 reserved */ +}; + +REG_FIELDS(TIMERS_PULSE_GRAN_CFG, timers_pulse_gran_cfg, 0x000004b4); + +static const u32 reg_src_rsrc_grp_01_rsrc_type_fmask[] =3D { + [X_MIN_LIM] =3D GENMASK(5, 0), + /* Bits 6-7 reserved */ + [X_MAX_LIM] =3D GENMASK(13, 8), + /* Bits 14-15 reserved */ + [Y_MIN_LIM] =3D GENMASK(21, 16), + /* Bits 22-23 reserved */ + [Y_MAX_LIM] =3D GENMASK(29, 24), + /* Bits 30-31 reserved */ +}; + +REG_STRIDE_FIELDS(SRC_RSRC_GRP_01_RSRC_TYPE, src_rsrc_grp_01_rsrc_type, + 0x00000500, 0x0020); + +static const u32 reg_src_rsrc_grp_23_rsrc_type_fmask[] =3D { + [X_MIN_LIM] =3D GENMASK(5, 0), + /* Bits 6-7 reserved */ + [X_MAX_LIM] =3D GENMASK(13, 8), + /* Bits 14-15 reserved */ + [Y_MIN_LIM] =3D GENMASK(21, 16), + /* Bits 22-23 reserved */ + [Y_MAX_LIM] =3D GENMASK(29, 24), + /* Bits 30-31 reserved */ +}; + +REG_STRIDE_FIELDS(SRC_RSRC_GRP_23_RSRC_TYPE, src_rsrc_grp_23_rsrc_type, + 0x00000504, 0x0020); + +static const u32 reg_src_rsrc_grp_45_rsrc_type_fmask[] =3D { + [X_MIN_LIM] =3D GENMASK(5, 0), + /* Bits 6-7 reserved */ + [X_MAX_LIM] =3D GENMASK(13, 8), + /* Bits 14-15 reserved */ + [Y_MIN_LIM] =3D GENMASK(21, 16), + /* Bits 22-23 reserved */ + [Y_MAX_LIM] =3D GENMASK(29, 24), + /* Bits 30-31 reserved */ +}; + +REG_STRIDE_FIELDS(SRC_RSRC_GRP_45_RSRC_TYPE, src_rsrc_grp_45_rsrc_type, + 0x00000508, 0x0020); + +static const u32 reg_src_rsrc_grp_67_rsrc_type_fmask[] =3D { + [X_MIN_LIM] =3D GENMASK(5, 0), + /* Bits 6-7 reserved */ + [X_MAX_LIM] =3D GENMASK(13, 8), + /* Bits 14-15 reserved */ + [Y_MIN_LIM] =3D GENMASK(21, 16), + /* Bits 22-23 reserved */ + [Y_MAX_LIM] =3D GENMASK(29, 24), + /* Bits 30-31 reserved */ +}; + +REG_STRIDE_FIELDS(SRC_RSRC_GRP_67_RSRC_TYPE, src_rsrc_grp_67_rsrc_type, + 0x0000050c, 0x0020); + +static const u32 reg_dst_rsrc_grp_01_rsrc_type_fmask[] =3D { + [X_MIN_LIM] =3D GENMASK(5, 0), + /* Bits 6-7 reserved */ + [X_MAX_LIM] =3D GENMASK(13, 8), + /* Bits 14-15 reserved */ + [Y_MIN_LIM] =3D GENMASK(21, 16), + /* Bits 22-23 reserved */ + [Y_MAX_LIM] =3D GENMASK(29, 24), + /* Bits 30-31 reserved */ +}; + +REG_STRIDE_FIELDS(DST_RSRC_GRP_01_RSRC_TYPE, dst_rsrc_grp_01_rsrc_type, + 0x00000600, 0x0020); + +static const u32 reg_dst_rsrc_grp_23_rsrc_type_fmask[] =3D { + [X_MIN_LIM] =3D GENMASK(5, 0), + /* Bits 6-7 reserved */ + [X_MAX_LIM] =3D GENMASK(13, 8), + /* Bits 14-15 reserved */ + [Y_MIN_LIM] =3D GENMASK(21, 16), + /* Bits 22-23 reserved */ + [Y_MAX_LIM] =3D GENMASK(29, 24), + /* Bits 30-31 reserved */ +}; + +REG_STRIDE_FIELDS(DST_RSRC_GRP_23_RSRC_TYPE, dst_rsrc_grp_23_rsrc_type, + 0x00000604, 0x0020); + +static const u32 reg_dst_rsrc_grp_45_rsrc_type_fmask[] =3D { + [X_MIN_LIM] =3D GENMASK(5, 0), + /* Bits 6-7 reserved */ + [X_MAX_LIM] =3D GENMASK(13, 8), + /* Bits 14-15 reserved */ + [Y_MIN_LIM] =3D GENMASK(21, 16), + /* Bits 22-23 reserved */ + [Y_MAX_LIM] =3D GENMASK(29, 24), + /* Bits 30-31 reserved */ +}; + +REG_STRIDE_FIELDS(DST_RSRC_GRP_45_RSRC_TYPE, dst_rsrc_grp_45_rsrc_type, + 0x00000608, 0x0020); + +static const u32 reg_dst_rsrc_grp_67_rsrc_type_fmask[] =3D { + [X_MIN_LIM] =3D GENMASK(5, 0), + /* Bits 6-7 reserved */ + [X_MAX_LIM] =3D GENMASK(13, 8), + /* Bits 14-15 reserved */ + [Y_MIN_LIM] =3D GENMASK(21, 16), + /* Bits 22-23 reserved */ + [Y_MAX_LIM] =3D GENMASK(29, 24), + /* Bits 30-31 reserved */ +}; + +REG_STRIDE_FIELDS(DST_RSRC_GRP_67_RSRC_TYPE, dst_rsrc_grp_67_rsrc_type, + 0x0000060c, 0x0020); + +/* Valid bits defined by ipa->available */ + +REG_STRIDE(AGGR_FORCE_CLOSE, aggr_force_close, 0x000006b0, 0x0004); + +static const u32 reg_endp_init_cfg_fmask[] =3D { + [FRAG_OFFLOAD_EN] =3D BIT(0), + [CS_OFFLOAD_EN] =3D GENMASK(2, 1), + [CS_METADATA_HDR_OFFSET] =3D GENMASK(6, 3), + /* Bit 7 reserved */ + [CS_GEN_QMB_MASTER_SEL] =3D BIT(8), + [PIPE_REPLICATE_EN] =3D BIT(9), + /* Bits 10-31 reserved */ +}; + +REG_STRIDE_FIELDS(ENDP_INIT_CFG, endp_init_cfg, 0x00001008, 0x0080); + +static const u32 reg_endp_init_nat_fmask[] =3D { + [NAT_EN] =3D GENMASK(1, 0), + /* Bits 2-31 reserved */ +}; + +REG_STRIDE_FIELDS(ENDP_INIT_NAT, endp_init_nat, 0x0000100c, 0x0080); + +static const u32 reg_endp_init_hdr_fmask[] =3D { + [HDR_LEN] =3D GENMASK(5, 0), + [HDR_OFST_METADATA_VALID] =3D BIT(6), + [HDR_OFST_METADATA] =3D GENMASK(12, 7), + [HDR_ADDITIONAL_CONST_LEN] =3D GENMASK(18, 13), + [HDR_OFST_PKT_SIZE_VALID] =3D BIT(19), + [HDR_OFST_PKT_SIZE] =3D GENMASK(25, 20), + /* Bit 26 reserved */ + [HDR_LEN_INC_DEAGG_HDR] =3D BIT(27), + [HDR_LEN_MSB] =3D GENMASK(29, 28), + [HDR_OFST_METADATA_MSB] =3D GENMASK(31, 30), +}; + +REG_STRIDE_FIELDS(ENDP_INIT_HDR, endp_init_hdr, 0x00001010, 0x0080); + +static const u32 reg_endp_init_hdr_ext_fmask[] =3D { + [HDR_ENDIANNESS] =3D BIT(0), + [HDR_TOTAL_LEN_OR_PAD_VALID] =3D BIT(1), + [HDR_TOTAL_LEN_OR_PAD] =3D BIT(2), + [HDR_PAYLOAD_LEN_INC_PADDING] =3D BIT(3), + [HDR_TOTAL_LEN_OR_PAD_OFFSET] =3D GENMASK(9, 4), + [HDR_PAD_TO_ALIGNMENT] =3D GENMASK(13, 10), + /* Bits 14-15 reserved */ + [HDR_TOTAL_LEN_OR_PAD_OFFSET_MSB] =3D GENMASK(17, 16), + [HDR_OFST_PKT_SIZE_MSB] =3D GENMASK(19, 18), + [HDR_ADDITIONAL_CONST_LEN_MSB] =3D GENMASK(21, 20), + [HDR_BYTES_TO_REMOVE_VALID] =3D BIT(22), + /* Bit 23 reserved */ + [HDR_BYTES_TO_REMOVE] =3D GENMASK(31, 24), +}; + +REG_STRIDE_FIELDS(ENDP_INIT_HDR_EXT, endp_init_hdr_ext, 0x00001014, 0x0080= ); + +REG_STRIDE(ENDP_INIT_HDR_METADATA_MASK, endp_init_hdr_metadata_mask, + 0x00001018, 0x0080); + +static const u32 reg_endp_init_mode_fmask[] =3D { + [ENDP_MODE] =3D GENMASK(2, 0), + [DCPH_ENABLE] =3D BIT(3), + [DEST_PIPE_INDEX] =3D GENMASK(11, 4), + [BYTE_THRESHOLD] =3D GENMASK(27, 12), + /* Bit 28 reserved */ + [PAD_EN] =3D BIT(29), + [DRBIP_ACL_ENABLE] =3D BIT(30), + /* Bit 31 reserved */ +}; + +REG_STRIDE_FIELDS(ENDP_INIT_MODE, endp_init_mode, 0x00001020, 0x0080); + +static const u32 reg_endp_init_aggr_fmask[] =3D { + [AGGR_EN] =3D GENMASK(1, 0), + [AGGR_TYPE] =3D GENMASK(4, 2), + [BYTE_LIMIT] =3D GENMASK(10, 5), + /* Bit 11 reserved */ + [TIME_LIMIT] =3D GENMASK(16, 12), + [PKT_LIMIT] =3D GENMASK(22, 17), + [SW_EOF_ACTIVE] =3D BIT(23), + [FORCE_CLOSE] =3D BIT(24), + /* Bit 25 reserved */ + [HARD_BYTE_LIMIT_EN] =3D BIT(26), + [AGGR_GRAN_SEL] =3D BIT(27), + [AGGR_COAL_L2] =3D BIT(28), + /* Bits 27-31 reserved */ +}; + +REG_STRIDE_FIELDS(ENDP_INIT_AGGR, endp_init_aggr, 0x00001024, 0x0080); + +static const u32 reg_endp_init_hol_block_en_fmask[] =3D { + [HOL_BLOCK_EN] =3D BIT(0), + /* Bits 1-31 reserved */ +}; + +REG_STRIDE_FIELDS(ENDP_INIT_HOL_BLOCK_EN, endp_init_hol_block_en, + 0x0000102c, 0x0080); + +static const u32 reg_endp_init_hol_block_timer_fmask[] =3D { + [TIMER_LIMIT] =3D GENMASK(4, 0), + /* Bits 5-7 reserved */ + [TIMER_GRAN_SEL] =3D GENMASK(9, 8), + /* Bits 10-31 reserved */ +}; + +REG_STRIDE_FIELDS(ENDP_INIT_HOL_BLOCK_TIMER, endp_init_hol_block_timer, + 0x00001030, 0x0080); + +static const u32 reg_endp_init_deaggr_fmask[] =3D { + [DEAGGR_HDR_LEN] =3D GENMASK(5, 0), + [SYSPIPE_ERR_DETECTION] =3D BIT(6), + [PACKET_OFFSET_VALID] =3D BIT(7), + [PACKET_OFFSET_LOCATION] =3D GENMASK(13, 8), + [IGNORE_MIN_PKT_ERR] =3D BIT(14), + /* Bit 15 reserved */ + [MAX_PACKET_LEN] =3D GENMASK(31, 16), +}; + +REG_STRIDE_FIELDS(ENDP_INIT_DEAGGR, endp_init_deaggr, 0x00001034, 0x0080); + +static const u32 reg_endp_init_rsrc_grp_fmask[] =3D { + [ENDP_RSRC_GRP] =3D GENMASK(2, 0), + /* Bits 3-31 reserved */ +}; + +REG_STRIDE_FIELDS(ENDP_INIT_RSRC_GRP, endp_init_rsrc_grp, 0x00001038, 0x00= 80); + +static const u32 reg_endp_init_seq_fmask[] =3D { + [SEQ_TYPE] =3D GENMASK(7, 0), + /* Bits 8-31 reserved */ +}; + +REG_STRIDE_FIELDS(ENDP_INIT_SEQ, endp_init_seq, 0x0000103c, 0x0080); + +static const u32 reg_endp_status_fmask[] =3D { + [STATUS_EN] =3D BIT(0), + [STATUS_ENDP] =3D GENMASK(8, 1), + [STATUS_PKT_SUPPRESS] =3D BIT(9), + /* Bits 10-31 reserved */ +}; + +REG_STRIDE_FIELDS(ENDP_STATUS, endp_status, 0x00001040, 0x0080); + +static const u32 reg_endp_filter_cache_cfg_fmask[] =3D { + [CACHE_MSK_SRC_ID] =3D BIT(0), + [CACHE_MSK_SRC_IP] =3D BIT(1), + [CACHE_MSK_DST_IP] =3D BIT(2), + [CACHE_MSK_SRC_PORT] =3D BIT(3), + [CACHE_MSK_DST_PORT] =3D BIT(4), + [CACHE_MSK_PROTOCOL] =3D BIT(5), + [CACHE_MSK_METADATA] =3D BIT(6), + /* Bits 7-31 reserved */ +}; + +REG_STRIDE_FIELDS(ENDP_FILTER_CACHE_CFG, endp_filter_cache_cfg, + 0x0000105c, 0x0080); + +static const u32 reg_endp_router_cache_cfg_fmask[] =3D { + [CACHE_MSK_SRC_ID] =3D BIT(0), + [CACHE_MSK_SRC_IP] =3D BIT(1), + [CACHE_MSK_DST_IP] =3D BIT(2), + [CACHE_MSK_SRC_PORT] =3D BIT(3), + [CACHE_MSK_DST_PORT] =3D BIT(4), + [CACHE_MSK_PROTOCOL] =3D BIT(5), + [CACHE_MSK_METADATA] =3D BIT(6), + /* Bits 7-31 reserved */ +}; + +REG_STRIDE_FIELDS(ENDP_ROUTER_CACHE_CFG, endp_router_cache_cfg, + 0x00001060, 0x0080); + +/* Valid bits defined by enum ipa_irq_id; only used for GSI_EE_AP */ +REG(IPA_IRQ_STTS, ipa_irq_stts, 0x0000c008 + 0x1000 * GSI_EE_AP); + +/* Valid bits defined by enum ipa_irq_id; only used for GSI_EE_AP */ +REG(IPA_IRQ_EN, ipa_irq_en, 0x0000c00c + 0x1000 * GSI_EE_AP); + +/* Valid bits defined by enum ipa_irq_id; only used for GSI_EE_AP */ +REG(IPA_IRQ_CLR, ipa_irq_clr, 0x0000c010 + 0x1000 * GSI_EE_AP); + +static const u32 reg_ipa_irq_uc_fmask[] =3D { + [UC_INTR] =3D BIT(0), + /* Bits 1-31 reserved */ +}; + +REG_FIELDS(IPA_IRQ_UC, ipa_irq_uc, 0x0000c01c + 0x1000 * GSI_EE_AP); + +/* Valid bits defined by ipa->available */ + +REG_STRIDE(IRQ_SUSPEND_INFO, irq_suspend_info, + 0x0000c030 + 0x1000 * GSI_EE_AP, 0x0004); + +/* Valid bits defined by ipa->available */ + +REG_STRIDE(IRQ_SUSPEND_EN, irq_suspend_en, + 0x0000c050 + 0x1000 * GSI_EE_AP, 0x0004); + +/* Valid bits defined by ipa->available */ + +REG_STRIDE(IRQ_SUSPEND_CLR, irq_suspend_clr, + 0x0000c070 + 0x1000 * GSI_EE_AP, 0x0004); + +static const struct reg *reg_array[] =3D { + [COMP_CFG] =3D ®_comp_cfg, + [CLKON_CFG] =3D ®_clkon_cfg, + [ROUTE] =3D ®_route, + [SHARED_MEM_SIZE] =3D ®_shared_mem_size, + [QSB_MAX_WRITES] =3D ®_qsb_max_writes, + [QSB_MAX_READS] =3D ®_qsb_max_reads, + [FILT_ROUT_CACHE_FLUSH] =3D ®_filt_rout_cache_flush, + [STATE_AGGR_ACTIVE] =3D ®_state_aggr_active, + [LOCAL_PKT_PROC_CNTXT] =3D ®_local_pkt_proc_cntxt, + [AGGR_FORCE_CLOSE] =3D ®_aggr_force_close, + [IPA_TX_CFG] =3D ®_ipa_tx_cfg, + [FLAVOR_0] =3D ®_flavor_0, + [IDLE_INDICATION_CFG] =3D ®_idle_indication_cfg, + [QTIME_TIMESTAMP_CFG] =3D ®_qtime_timestamp_cfg, + [TIMERS_XO_CLK_DIV_CFG] =3D ®_timers_xo_clk_div_cfg, + [TIMERS_PULSE_GRAN_CFG] =3D ®_timers_pulse_gran_cfg, + [SRC_RSRC_GRP_01_RSRC_TYPE] =3D ®_src_rsrc_grp_01_rsrc_type, + [SRC_RSRC_GRP_23_RSRC_TYPE] =3D ®_src_rsrc_grp_23_rsrc_type, + [SRC_RSRC_GRP_45_RSRC_TYPE] =3D ®_src_rsrc_grp_45_rsrc_type, + [SRC_RSRC_GRP_67_RSRC_TYPE] =3D ®_src_rsrc_grp_67_rsrc_type, + [DST_RSRC_GRP_01_RSRC_TYPE] =3D ®_dst_rsrc_grp_01_rsrc_type, + [DST_RSRC_GRP_23_RSRC_TYPE] =3D ®_dst_rsrc_grp_23_rsrc_type, + [DST_RSRC_GRP_45_RSRC_TYPE] =3D ®_dst_rsrc_grp_45_rsrc_type, + [DST_RSRC_GRP_67_RSRC_TYPE] =3D ®_dst_rsrc_grp_67_rsrc_type, + [ENDP_INIT_CFG] =3D ®_endp_init_cfg, + [ENDP_INIT_NAT] =3D ®_endp_init_nat, + [ENDP_INIT_HDR] =3D ®_endp_init_hdr, + [ENDP_INIT_HDR_EXT] =3D ®_endp_init_hdr_ext, + [ENDP_INIT_HDR_METADATA_MASK] =3D ®_endp_init_hdr_metadata_mask, + [ENDP_INIT_MODE] =3D ®_endp_init_mode, + [ENDP_INIT_AGGR] =3D ®_endp_init_aggr, + [ENDP_INIT_HOL_BLOCK_EN] =3D ®_endp_init_hol_block_en, + [ENDP_INIT_HOL_BLOCK_TIMER] =3D ®_endp_init_hol_block_timer, + [ENDP_INIT_DEAGGR] =3D ®_endp_init_deaggr, + [ENDP_INIT_RSRC_GRP] =3D ®_endp_init_rsrc_grp, + [ENDP_INIT_SEQ] =3D ®_endp_init_seq, + [ENDP_STATUS] =3D ®_endp_status, + [ENDP_FILTER_CACHE_CFG] =3D ®_endp_filter_cache_cfg, + [ENDP_ROUTER_CACHE_CFG] =3D ®_endp_router_cache_cfg, + [IPA_IRQ_STTS] =3D ®_ipa_irq_stts, + [IPA_IRQ_EN] =3D ®_ipa_irq_en, + [IPA_IRQ_CLR] =3D ®_ipa_irq_clr, + [IPA_IRQ_UC] =3D ®_ipa_irq_uc, + [IRQ_SUSPEND_INFO] =3D ®_irq_suspend_info, + [IRQ_SUSPEND_EN] =3D ®_irq_suspend_en, + [IRQ_SUSPEND_CLR] =3D ®_irq_suspend_clr, +}; + +const struct regs ipa_regs_v5_5 =3D { + .reg_count =3D ARRAY_SIZE(reg_array), + .reg =3D reg_array, +}; --=20 2.34.1 From nobody Wed Dec 17 19:00:59 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8B7BDC61D9C for ; Wed, 22 Nov 2023 23:09:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344709AbjKVXJh (ORCPT ); Wed, 22 Nov 2023 18:09:37 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52872 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235224AbjKVXJd (ORCPT ); Wed, 22 Nov 2023 18:09:33 -0500 Received: from mail-il1-x12d.google.com (mail-il1-x12d.google.com [IPv6:2607:f8b0:4864:20::12d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C546CD53 for ; Wed, 22 Nov 2023 15:09:20 -0800 (PST) Received: by mail-il1-x12d.google.com with SMTP id e9e14a558f8ab-35930447ae9so964275ab.2 for ; Wed, 22 Nov 2023 15:09:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1700694560; x=1701299360; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0edA2W8OPVHUseYwIjpZXpoIxZHEQrfzpABBu7++cOw=; b=wjl9wGd5nvN8wGtMgSba2KpR2EXFy/7Gj6vGnu0YuUz0Hseklhct5pzy7a3MdeDmKF UBs27jj6VzsSZJ00873O+5TUfXmjkTyUkWQKa7uWmkpiQl7vrq2rURNAxl9VbhRG0TKO LxCBYKhXSQD2cTkDsvf1EHl+LwS3EVkok8IttEUHAIFrSNZiQ8I9CA1u/hHUnMhdnKtn mIoIgnvUAYNX8qvvGieiYN4RlZrbZ6X0CBKXrfAqu1iehTx8I7Y/yI/aUSgpgDjc4zDu bwrfULhH4ll/dZsBE0wKUb/B4Rd3GeRk7LoUSJxmnrik6U3qc95OlUaf8IbKjvA14T42 CSGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700694560; x=1701299360; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0edA2W8OPVHUseYwIjpZXpoIxZHEQrfzpABBu7++cOw=; b=geoHK5kfmdvJAnsj1PVgRZyUoXyRL8M+xiYRUiP2b9zDmkfzTIX8fbNaK9IkiLOqaR Oqmdl3m7LUY0x1CHr5LuZUJ0/OkWSfeKzmvruN+nDhKqU8D9ePWlug+ZpG6ZylW5X6cQ KthOAFrkdIPmJl2+kSSdFchAZlsWLc9T2DLw9fOJujpsFCavvbiaPfom07XL+Scjova9 7EIzfofw0TjAiUfB1AzyJDbDFlhwyofiDtWSU2fxBiXZok/wM1oYa7z8wQ2vdm7hncJV sHdFQFRdPijfxCZzbB5V5gSwYEWtA/tRljXdJAoMfIwRjNgD8G0NtaBPlpFbe5zmOV3W OKew== X-Gm-Message-State: AOJu0YxENj/EVcPBeKZmL3uVFR9Gmmh3vDh04Ae4m9mkx0Mx98KsXQRr 17PuaNKL32x1vTC/51g1vETquw== X-Google-Smtp-Source: AGHT+IEamTDA56lJdliwOkPowtvOqQwJAuPSp0z+mCi3nOKYpaN/dLMMcHNyYd1Ko4ZD/DimAqEC+A== X-Received: by 2002:a05:6e02:240d:b0:35b:3481:879c with SMTP id bs13-20020a056e02240d00b0035b3481879cmr5043888ilb.31.1700694560086; Wed, 22 Nov 2023 15:09:20 -0800 (PST) Received: from localhost.localdomain (c-98-61-227-136.hsd1.mn.comcast.net. [98.61.227.136]) by smtp.gmail.com with ESMTPSA id fm29-20020a0566382b1d00b0043a20ad93c8sm117754jab.41.2023.11.22.15.09.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Nov 2023 15:09:19 -0800 (PST) From: Alex Elder To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: andersson@kernel.org, konrad.dybcio@linaro.org, agross@kernel.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, mka@chromium.org, quic_cpratapa@quicinc.com, quic_avuyyuru@quicinc.com, quic_jponduru@quicinc.com, quic_subashab@quicinc.com, elder@kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 5/5] net: ipa: add IPA v5.5 configuration data Date: Wed, 22 Nov 2023 17:09:09 -0600 Message-Id: <20231122230909.895482-6-elder@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231122230909.895482-1-elder@linaro.org> References: <20231122230909.895482-1-elder@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Add the configuration data required for IPA v5.5, which is used in the Qualcomm SM8550 SoC. With that, the driver supports IPA v5.5. Signed-off-by: Alex Elder --- drivers/net/ipa/Makefile | 2 +- drivers/net/ipa/data/ipa_data-v5.5.c | 487 +++++++++++++++++++++++++++ drivers/net/ipa/ipa_data.h | 1 + drivers/net/ipa/ipa_main.c | 4 + drivers/net/ipa/ipa_version.h | 1 + 5 files changed, 494 insertions(+), 1 deletion(-) create mode 100644 drivers/net/ipa/data/ipa_data-v5.5.c diff --git a/drivers/net/ipa/Makefile b/drivers/net/ipa/Makefile index 9d2182068e1cd..d3abb38633e08 100644 --- a/drivers/net/ipa/Makefile +++ b/drivers/net/ipa/Makefile @@ -7,7 +7,7 @@ IPA_REG_VERSIONS :=3D 3.1 3.5.1 4.2 4.5 4.7 4.9 4.11 5.0 5.5 # Some IPA versions can reuse another set of GSI register definitions. GSI_REG_VERSIONS :=3D 3.1 3.5.1 4.0 4.5 4.9 4.11 5.0 =20 -IPA_DATA_VERSIONS :=3D 3.1 3.5.1 4.2 4.5 4.7 4.9 4.11 5.0 +IPA_DATA_VERSIONS :=3D 3.1 3.5.1 4.2 4.5 4.7 4.9 4.11 5.0 5.5 =20 obj-$(CONFIG_QCOM_IPA) +=3D ipa.o =20 diff --git a/drivers/net/ipa/data/ipa_data-v5.5.c b/drivers/net/ipa/data/ip= a_data-v5.5.c new file mode 100644 index 0000000000000..2c6390f11354b --- /dev/null +++ b/drivers/net/ipa/data/ipa_data-v5.5.c @@ -0,0 +1,487 @@ +// SPDX-License-Identifier: GPL-2.0 + +/* Copyright (C) 2023 Linaro Ltd. */ + +#include +#include + +#include "../ipa_data.h" +#include "../ipa_endpoint.h" +#include "../ipa_mem.h" + +/** enum ipa_resource_type - IPA resource types for an SoC having IPA v5.5= */ +enum ipa_resource_type { + /* Source resource types; first must have value 0 */ + IPA_RESOURCE_TYPE_SRC_PKT_CONTEXTS =3D 0, + IPA_RESOURCE_TYPE_SRC_DESCRIPTOR_LISTS, + IPA_RESOURCE_TYPE_SRC_DESCRIPTOR_BUFF, + IPA_RESOURCE_TYPE_SRC_HPS_DMARS, + IPA_RESOURCE_TYPE_SRC_ACK_ENTRIES, + + /* Destination resource types; first must have value 0 */ + IPA_RESOURCE_TYPE_DST_DATA_SECTORS =3D 0, + IPA_RESOURCE_TYPE_DST_DPS_DMARS, + IPA_RESOURCE_TYPE_DST_ULSO_SEGMENTS, +}; + +/* Resource groups used for an SoC having IPA v5.5 */ +enum ipa_rsrc_group_id { + /* Source resource group identifiers */ + IPA_RSRC_GROUP_SRC_UL =3D 0, + IPA_RSRC_GROUP_SRC_DL, + IPA_RSRC_GROUP_SRC_UNUSED_2, + IPA_RSRC_GROUP_SRC_UNUSED_3, + IPA_RSRC_GROUP_SRC_URLLC, + IPA_RSRC_GROUP_SRC_U_RX_QC, + IPA_RSRC_GROUP_SRC_COUNT, /* Last in set; not a source group */ + + /* Destination resource group identifiers */ + IPA_RSRC_GROUP_DST_UL =3D 0, + IPA_RSRC_GROUP_DST_DL, + IPA_RSRC_GROUP_DST_UNUSED_2, + IPA_RSRC_GROUP_DST_UNUSED_3, + IPA_RSRC_GROUP_DST_UNUSED_4, + IPA_RSRC_GROUP_DST_UC, + IPA_RSRC_GROUP_DST_DRB_IP, + IPA_RSRC_GROUP_DST_COUNT, /* Last; not a destination group */ +}; + +/* QSB configuration data for an SoC having IPA v5.5 */ +static const struct ipa_qsb_data ipa_qsb_data[] =3D { + [IPA_QSB_MASTER_DDR] =3D { + .max_writes =3D 0, /* Unlimited */ + .max_reads =3D 12, + .max_reads_beats =3D 0, + }, + [IPA_QSB_MASTER_PCIE] =3D { + .max_writes =3D 0, /* Unlimited */ + .max_reads =3D 8, + .max_reads_beats =3D 0, + }, +}; + +/* Endpoint configuration data for an SoC having IPA v5.5 */ +static const struct ipa_gsi_endpoint_data ipa_gsi_endpoint_data[] =3D { + [IPA_ENDPOINT_AP_COMMAND_TX] =3D { + .ee_id =3D GSI_EE_AP, + .channel_id =3D 12, + .endpoint_id =3D 14, + .toward_ipa =3D true, + .channel =3D { + .tre_count =3D 256, + .event_count =3D 256, + .tlv_count =3D 20, + }, + .endpoint =3D { + .config =3D { + .resource_group =3D IPA_RSRC_GROUP_SRC_UL, + .dma_mode =3D true, + .dma_endpoint =3D IPA_ENDPOINT_AP_LAN_RX, + .tx =3D { + .seq_type =3D IPA_SEQ_DMA, + }, + }, + }, + }, + [IPA_ENDPOINT_AP_LAN_RX] =3D { + .ee_id =3D GSI_EE_AP, + .channel_id =3D 13, + .endpoint_id =3D 16, + .toward_ipa =3D false, + .channel =3D { + .tre_count =3D 256, + .event_count =3D 256, + .tlv_count =3D 9, + }, + .endpoint =3D { + .config =3D { + .resource_group =3D IPA_RSRC_GROUP_DST_UL, + .aggregation =3D true, + .status_enable =3D true, + .rx =3D { + .buffer_size =3D 8192, + .pad_align =3D ilog2(sizeof(u32)), + .aggr_time_limit =3D 500, + }, + }, + }, + }, + [IPA_ENDPOINT_AP_MODEM_TX] =3D { + .ee_id =3D GSI_EE_AP, + .channel_id =3D 11, + .endpoint_id =3D 2, + .toward_ipa =3D true, + .channel =3D { + .tre_count =3D 512, + .event_count =3D 512, + .tlv_count =3D 25, + }, + .endpoint =3D { + .filter_support =3D true, + .config =3D { + .resource_group =3D IPA_RSRC_GROUP_SRC_UL, + .checksum =3D true, + .qmap =3D true, + .status_enable =3D true, + .tx =3D { + .seq_type =3D IPA_SEQ_2_PASS_SKIP_LAST_UC, + .status_endpoint =3D + IPA_ENDPOINT_MODEM_AP_RX, + }, + }, + }, + }, + [IPA_ENDPOINT_AP_MODEM_RX] =3D { + .ee_id =3D GSI_EE_AP, + .channel_id =3D 1, + .endpoint_id =3D 23, + .toward_ipa =3D false, + .channel =3D { + .tre_count =3D 256, + .event_count =3D 256, + .tlv_count =3D 9, + }, + .endpoint =3D { + .config =3D { + .resource_group =3D IPA_RSRC_GROUP_DST_DL, + .checksum =3D true, + .qmap =3D true, + .aggregation =3D true, + .rx =3D { + .buffer_size =3D 8192, + .aggr_time_limit =3D 500, + .aggr_close_eof =3D true, + }, + }, + }, + }, + [IPA_ENDPOINT_MODEM_AP_TX] =3D { + .ee_id =3D GSI_EE_MODEM, + .channel_id =3D 0, + .endpoint_id =3D 12, + .toward_ipa =3D true, + .endpoint =3D { + .filter_support =3D true, + }, + }, + [IPA_ENDPOINT_MODEM_AP_RX] =3D { + .ee_id =3D GSI_EE_MODEM, + .channel_id =3D 7, + .endpoint_id =3D 21, + .toward_ipa =3D false, + }, + [IPA_ENDPOINT_MODEM_DL_NLO_TX] =3D { + .ee_id =3D GSI_EE_MODEM, + .channel_id =3D 2, + .endpoint_id =3D 15, + .toward_ipa =3D true, + .endpoint =3D { + .filter_support =3D true, + }, + }, +}; + +/* Source resource configuration data for an SoC having IPA v5.5 */ +static const struct ipa_resource ipa_resource_src[] =3D { + [IPA_RESOURCE_TYPE_SRC_PKT_CONTEXTS] =3D { + .limits[IPA_RSRC_GROUP_SRC_UL] =3D { + .min =3D 3, .max =3D 9, + }, + .limits[IPA_RSRC_GROUP_SRC_DL] =3D { + .min =3D 4, .max =3D 10, + }, + .limits[IPA_RSRC_GROUP_SRC_URLLC] =3D { + .min =3D 1, .max =3D 63, + }, + .limits[IPA_RSRC_GROUP_SRC_U_RX_QC] =3D { + .min =3D 0, .max =3D 63, + }, + }, + [IPA_RESOURCE_TYPE_SRC_DESCRIPTOR_LISTS] =3D { + .limits[IPA_RSRC_GROUP_SRC_UL] =3D { + .min =3D 9, .max =3D 9, + }, + .limits[IPA_RSRC_GROUP_SRC_DL] =3D { + .min =3D 12, .max =3D 12, + }, + .limits[IPA_RSRC_GROUP_SRC_URLLC] =3D { + .min =3D 10, .max =3D 10, + }, + }, + [IPA_RESOURCE_TYPE_SRC_DESCRIPTOR_BUFF] =3D { + .limits[IPA_RSRC_GROUP_SRC_UL] =3D { + .min =3D 9, .max =3D 9, + }, + .limits[IPA_RSRC_GROUP_SRC_DL] =3D { + .min =3D 24, .max =3D 24, + }, + .limits[IPA_RSRC_GROUP_SRC_URLLC] =3D { + .min =3D 20, .max =3D 20, + }, + }, + [IPA_RESOURCE_TYPE_SRC_HPS_DMARS] =3D { + .limits[IPA_RSRC_GROUP_SRC_UL] =3D { + .min =3D 0, .max =3D 63, + }, + .limits[IPA_RSRC_GROUP_SRC_DL] =3D { + .min =3D 0, .max =3D 63, + }, + .limits[IPA_RSRC_GROUP_SRC_URLLC] =3D { + .min =3D 1, .max =3D 63, + }, + .limits[IPA_RSRC_GROUP_SRC_U_RX_QC] =3D { + .min =3D 0, .max =3D 63, + }, + }, + [IPA_RESOURCE_TYPE_SRC_ACK_ENTRIES] =3D { + .limits[IPA_RSRC_GROUP_SRC_UL] =3D { + .min =3D 22, .max =3D 22, + }, + .limits[IPA_RSRC_GROUP_SRC_DL] =3D { + .min =3D 16, .max =3D 16, + }, + .limits[IPA_RSRC_GROUP_SRC_URLLC] =3D { + .min =3D 16, .max =3D 16, + }, + }, +}; + +/* Destination resource configuration data for an SoC having IPA v5.5 */ +static const struct ipa_resource ipa_resource_dst[] =3D { + [IPA_RESOURCE_TYPE_DST_DATA_SECTORS] =3D { + .limits[IPA_RSRC_GROUP_DST_UL] =3D { + .min =3D 6, .max =3D 6, + }, + .limits[IPA_RSRC_GROUP_DST_DL] =3D { + .min =3D 5, .max =3D 5, + }, + .limits[IPA_RSRC_GROUP_DST_DRB_IP] =3D { + .min =3D 39, .max =3D 39, + }, + }, + [IPA_RESOURCE_TYPE_DST_DPS_DMARS] =3D { + .limits[IPA_RSRC_GROUP_DST_UL] =3D { + .min =3D 0, .max =3D 3, + }, + .limits[IPA_RSRC_GROUP_DST_DL] =3D { + .min =3D 0, .max =3D 3, + }, + }, + [IPA_RESOURCE_TYPE_DST_ULSO_SEGMENTS] =3D { + .limits[IPA_RSRC_GROUP_DST_UL] =3D { + .min =3D 0, .max =3D 63, + }, + .limits[IPA_RSRC_GROUP_DST_DL] =3D { + .min =3D 0, .max =3D 63, + }, + }, +}; + +/* Resource configuration data for an SoC having IPA v5.5 */ +static const struct ipa_resource_data ipa_resource_data =3D { + .rsrc_group_dst_count =3D IPA_RSRC_GROUP_DST_COUNT, + .rsrc_group_src_count =3D IPA_RSRC_GROUP_SRC_COUNT, + .resource_src_count =3D ARRAY_SIZE(ipa_resource_src), + .resource_src =3D ipa_resource_src, + .resource_dst_count =3D ARRAY_SIZE(ipa_resource_dst), + .resource_dst =3D ipa_resource_dst, +}; + +/* IPA-resident memory region data for an SoC having IPA v5.5 */ +static const struct ipa_mem ipa_mem_local_data[] =3D { + { + .id =3D IPA_MEM_UC_EVENT_RING, + .offset =3D 0x0000, + .size =3D 0x1000, + .canary_count =3D 0, + }, + { + .id =3D IPA_MEM_UC_SHARED, + .offset =3D 0x1000, + .size =3D 0x0080, + .canary_count =3D 0, + }, + { + .id =3D IPA_MEM_UC_INFO, + .offset =3D 0x1080, + .size =3D 0x0200, + .canary_count =3D 0, + }, + { + .id =3D IPA_MEM_V4_FILTER_HASHED, + .offset =3D 0x1288, + .size =3D 0x0078, + .canary_count =3D 2, + }, + { + .id =3D IPA_MEM_V4_FILTER, + .offset =3D 0x1308, + .size =3D 0x0078, + .canary_count =3D 2, + }, + { + .id =3D IPA_MEM_V6_FILTER_HASHED, + .offset =3D 0x1388, + .size =3D 0x0078, + .canary_count =3D 2, + }, + { + .id =3D IPA_MEM_V6_FILTER, + .offset =3D 0x1408, + .size =3D 0x0078, + .canary_count =3D 2, + }, + { + .id =3D IPA_MEM_V4_ROUTE_HASHED, + .offset =3D 0x1488, + .size =3D 0x0098, + .canary_count =3D 2, + }, + { + .id =3D IPA_MEM_V4_ROUTE, + .offset =3D 0x1528, + .size =3D 0x0098, + .canary_count =3D 2, + }, + { + .id =3D IPA_MEM_V6_ROUTE_HASHED, + .offset =3D 0x15c8, + .size =3D 0x0098, + .canary_count =3D 2, + }, + { + .id =3D IPA_MEM_V6_ROUTE, + .offset =3D 0x1668, + .size =3D 0x0098, + .canary_count =3D 2, + }, + { + .id =3D IPA_MEM_MODEM_HEADER, + .offset =3D 0x1708, + .size =3D 0x0240, + .canary_count =3D 2, + }, + { + .id =3D IPA_MEM_AP_HEADER, + .offset =3D 0x1948, + .size =3D 0x01e0, + .canary_count =3D 0, + }, + { + .id =3D IPA_MEM_MODEM_PROC_CTX, + .offset =3D 0x1b40, + .size =3D 0x0b20, + .canary_count =3D 2, + }, + { + .id =3D IPA_MEM_AP_PROC_CTX, + .offset =3D 0x2660, + .size =3D 0x0200, + .canary_count =3D 0, + }, + { + .id =3D IPA_MEM_STATS_QUOTA_MODEM, + .offset =3D 0x2868, + .size =3D 0x0060, + .canary_count =3D 2, + }, + { + .id =3D IPA_MEM_STATS_QUOTA_AP, + .offset =3D 0x28c8, + .size =3D 0x0048, + .canary_count =3D 0, + }, + { + .id =3D IPA_MEM_STATS_TETHERING, + .offset =3D 0x2910, + .size =3D 0x03c0, + .canary_count =3D 0, + }, + { + .id =3D IPA_MEM_AP_V4_FILTER, + .offset =3D 0x29b8, + .size =3D 0x0188, + .canary_count =3D 2, + }, + { + .id =3D IPA_MEM_AP_V6_FILTER, + .offset =3D 0x2b40, + .size =3D 0x0228, + .canary_count =3D 0, + }, + { + .id =3D IPA_MEM_STATS_FILTER_ROUTE, + .offset =3D 0x2cd0, + .size =3D 0x0ba0, + .canary_count =3D 2, + }, + { + .id =3D IPA_MEM_STATS_DROP, + .offset =3D 0x3870, + .size =3D 0x0020, + .canary_count =3D 0, + }, + { + .id =3D IPA_MEM_MODEM, + .offset =3D 0x3898, + .size =3D 0x0d48, + .canary_count =3D 2, + }, + { + .id =3D IPA_MEM_NAT_TABLE, + .offset =3D 0x45e0, + .size =3D 0x0900, + .canary_count =3D 0, + }, + { + .id =3D IPA_MEM_PDN_CONFIG, + .offset =3D 0x4ee8, + .size =3D 0x0100, + .canary_count =3D 2, + }, +}; + +/* Memory configuration data for an SoC having IPA v5.5 */ +static const struct ipa_mem_data ipa_mem_data =3D { + .local_count =3D ARRAY_SIZE(ipa_mem_local_data), + .local =3D ipa_mem_local_data, + .imem_addr =3D 0x14688000, + .imem_size =3D 0x00002000, + .smem_id =3D 497, + .smem_size =3D 0x0000b000, +}; + +/* Interconnect rates are in 1000 byte/second units */ +static const struct ipa_interconnect_data ipa_interconnect_data[] =3D { + { + .name =3D "memory", + .peak_bandwidth =3D 1900000, /* 1.9 GBps */ + .average_bandwidth =3D 600000, /* 600 MBps */ + }, + /* Average rate is unused for the next interconnect */ + { + .name =3D "config", + .peak_bandwidth =3D 76800, /* 76.8 MBps */ + .average_bandwidth =3D 0, /* unused */ + }, +}; + +/* Clock and interconnect configuration data for an SoC having IPA v5.5 */ +static const struct ipa_power_data ipa_power_data =3D { + .core_clock_rate =3D 120 * 1000 * 1000, /* Hz */ + .interconnect_count =3D ARRAY_SIZE(ipa_interconnect_data), + .interconnect_data =3D ipa_interconnect_data, +}; + +/* Configuration data for an SoC having IPA v5.5. */ +const struct ipa_data ipa_data_v5_5 =3D { + .version =3D IPA_VERSION_5_5, + .qsb_count =3D ARRAY_SIZE(ipa_qsb_data), + .qsb_data =3D ipa_qsb_data, + .modem_route_count =3D 11, + .endpoint_count =3D ARRAY_SIZE(ipa_gsi_endpoint_data), + .endpoint_data =3D ipa_gsi_endpoint_data, + .resource_data =3D &ipa_resource_data, + .mem_data =3D &ipa_mem_data, + .power_data =3D &ipa_power_data, +}; diff --git a/drivers/net/ipa/ipa_data.h b/drivers/net/ipa/ipa_data.h index ce82b00fdc498..2a1605e67b65d 100644 --- a/drivers/net/ipa/ipa_data.h +++ b/drivers/net/ipa/ipa_data.h @@ -250,5 +250,6 @@ extern const struct ipa_data ipa_data_v4_7; extern const struct ipa_data ipa_data_v4_9; extern const struct ipa_data ipa_data_v4_11; extern const struct ipa_data ipa_data_v5_0; +extern const struct ipa_data ipa_data_v5_5; =20 #endif /* _IPA_DATA_H_ */ diff --git a/drivers/net/ipa/ipa_main.c b/drivers/net/ipa/ipa_main.c index 8893290e132b4..86884c21e7922 100644 --- a/drivers/net/ipa/ipa_main.c +++ b/drivers/net/ipa/ipa_main.c @@ -691,6 +691,10 @@ static const struct of_device_id ipa_match[] =3D { .compatible =3D "qcom,sdx65-ipa", .data =3D &ipa_data_v5_0, }, + { + .compatible =3D "qcom,sm8550-ipa", + .data =3D &ipa_data_v5_5, + }, { }, }; MODULE_DEVICE_TABLE(of, ipa_match); diff --git a/drivers/net/ipa/ipa_version.h b/drivers/net/ipa/ipa_version.h index 06e75b8ece7ee..38150345b607e 100644 --- a/drivers/net/ipa/ipa_version.h +++ b/drivers/net/ipa/ipa_version.h @@ -56,6 +56,7 @@ static inline bool ipa_version_supported(enum ipa_version= version) case IPA_VERSION_4_9: case IPA_VERSION_4_11: case IPA_VERSION_5_0: + case IPA_VERSION_5_5: return true; default: return false; --=20 2.34.1