From nobody Sat Feb 7 22:21:10 2026 Received: from mail-ot1-f54.google.com (mail-ot1-f54.google.com [209.85.210.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5A5BD2D5432 for ; Sun, 28 Dec 2025 15:59:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766937543; cv=none; b=bxFAz4M1K4SNLf+xWgg5kn3y8OxM66IqLwimFTTSad80BNH+DDHMnmjoSe5FC0OxgmzmNtahnumJxf6B+Ad9/uUKRa7j+oDodWqT6rV5nQlzofxjaEc8zxcI+T+eoTnB/oWRSah2uq7pSmMYY0CDw3WnYyGKEYXrT89/yW4vTVE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766937543; c=relaxed/simple; bh=9oPJ6wBogJ27L2Efz8cYH5dPIPPRoLhiTe8zOz6dMcA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=E1ai8TITfxFl1lzMChSmsIw1eYBnGFrkVrBUunOM1HP6B24NKFy2wOsARAYv6xPFVOWLV5sjNNRnQqDK9DXa05DSF28/QTGA4p8uS3ZOhnx2iihlcEl3DFV9LyWiA4jmloYwBdpkqWnTNa8rGbBBOBPyRMLBBF9fQwS7duatIb4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=FM9Fdha7; arc=none smtp.client-ip=209.85.210.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FM9Fdha7" Received: by mail-ot1-f54.google.com with SMTP id 46e09a7af769-7c7bfba3996so5054027a34.0 for ; Sun, 28 Dec 2025 07:59:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766937541; x=1767542341; 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=YP3c0TfYURBai4VYDxBCeRIp2KUlF60Zf3Z4JdQhSd0=; b=FM9Fdha72RUQ3a2FVDMMkfBGadJAtCtGlNbwo7Sk89KiXWzuDlocPFW2Q7uHPm3jXE VUQtgqf41Qrc9LIcq7yECYiTCsOCsRxRokzYqqzhVnoY5E9qvSJX8Qn6HZkNAx0HsQ+H 470yBMHeJMZsM4i+FH3+MXAy6zftRUdkHhLO5czOL0t7iT/9QKwTV0CQFqE5l2zyKAyc 6OrG3vWpGGvY/5EDExPcKUX80PHeQ68Y0MLOtvuXF0l0HClraB05WSrSEA4NVbEmEHpL N0MfoXbaez7AAdfkJ1QVprd3gowD4l365aIzzV/DmtIiEyRMdQ7QdOyKkQJwczmG0Tm5 a8Yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766937541; x=1767542341; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=YP3c0TfYURBai4VYDxBCeRIp2KUlF60Zf3Z4JdQhSd0=; b=dGJCfyYLzkmYVgi1OWOWiGzvFRCC0PyMDfL40evwMmKRe73hje8Ea1+wB/2ijL16xH JszMKdoeUxAt4y6EA7+2dUDSPQ9WpU3O8kUux1zIBit2bC97T8FmFqgXZLQzWHJZ2jPA PtC75HyZxnrTM62OAvkLEx/qD0uUTpfYR3waLfh2TYg9ZMa/CZsvTC0dUTPDqcu+mceO cGvXuP1ATqGrhpp9EZ2rOot7q82xhnjbHw8ebDPnto5IrQq6aKPxEIKBFrDDmoUJnpsM 9yUsIwN2BTNNlIzwzuo/BSaXXB99Q3FrgJmTxVDepPRM6c//ygtVqp45AAeujILGKTbi 3fOw== X-Forwarded-Encrypted: i=1; AJvYcCWK4TtPV0kECVU5qhghKrypaVN5s5lFd35UAYWgrghUGvrsoj+HF7X8TQiGdI2k7o8YBYbabu5XYASlhRs=@vger.kernel.org X-Gm-Message-State: AOJu0Ywm9bmoqsm4uqCg4iah4jS3bXZMLs29uhEHm0dJPm5S9vL7FyoD SHtfpJmBN8i/UllVP7ZmMMDBn0lmpGSVcAEo6egbQJ4xjGSDMcvtqx4l X-Gm-Gg: AY/fxX6nMjnMy0NclmJsCGnZ2ZP6gNKB0Puuw9/PEDNfcaqQGqeSTl1bqbg6R3n0leG rqnfrY3hPpQv81QKwnneLB9lDSSJ/iU5d2rma+udMa2yqU2nxbdNiNmxs/B+03Oy3LAsjtdWo2a plArR3OEbnE5ARUucpBigiEgmJhndWsVmemgMoeW8mA+z3Qp9sszpcDr5F8NTnqmA4BiCaVwA21 ZUvAzETNnRAgynREm2j/bXcTfzaZeIK2OV6QxMeZn1iG2UXyTZyHKEA40EF+BlJfXa497M4Qv2G pwbQCr/VmmwUyMpdUOTMm2fGRafTWrOOk6CgRXH6zxi5+yvaD5LWahZKDLgHqGMcc+KQ3or7igy m2pTQPNfQkkzVDyFLzf9BYVnCPDdS364WFybq8U1vgbJUIAXXWoNLaR6lKJPrGy43pUFzLxUOZm O1os5XQSsKceK80NTkv9tIAtqQxKQ4AFJHWS/e2NVHIIALlEWTWI6XavDP3EOoO1G+BzTmtOWHc Fsqnr9XgOZGrALfSosoyrx3aewp X-Google-Smtp-Source: AGHT+IEh9nd0qc+nLomD7TlSHUU1Fad3h+pjFahI0ZbjYkMUhS1mnTBKtoHTQC3urWigQnTZxXGkbQ== X-Received: by 2002:a05:6830:6619:b0:7cb:133b:c07f with SMTP id 46e09a7af769-7cc66a959admr14336907a34.28.1766937541462; Sun, 28 Dec 2025 07:59:01 -0800 (PST) Received: from nukework.lan (c-98-57-15-22.hsd1.tx.comcast.net. [98.57.15.22]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7cc667ecd6esm19004434a34.25.2025.12.28.07.58.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Dec 2025 07:59:00 -0800 (PST) From: Alexandru Gagniuc To: robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, jjohnson@kernel.org, ath11k@lists.infradead.org, Johannes Berg Cc: linux-wireless@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Alexandru Gagniuc Subject: [PATCH 1/2] dt: bindings: net: ath11k: add IPQ9574 compatible Date: Sun, 28 Dec 2025 09:58:51 -0600 Message-ID: <20251228155855.2118792-2-mr.nuke.me@gmail.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20251228155855.2118792-1-mr.nuke.me@gmail.com> References: <20251228155855.2118792-1-mr.nuke.me@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add IPQ9574 device support for ath11k. The schema is identical to ipq6018, so add the compatible string where needed. Signed-off-by: Alexandru Gagniuc --- .../devicetree/bindings/net/wireless/qcom,ath11k.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yam= l b/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml index c089677702cf1..8293ea29b723e 100644 --- a/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml +++ b/Documentation/devicetree/bindings/net/wireless/qcom,ath11k.yaml @@ -17,6 +17,7 @@ description: | properties: compatible: enum: + - qcom,ipq9574-wifi - qcom,ipq8074-wifi - qcom,ipq6018-wifi - qcom,wcn6750-wifi @@ -102,6 +103,7 @@ allOf: compatible: contains: enum: + - qcom,ipq9574-wifi - qcom,ipq8074-wifi - qcom,ipq6018-wifi then: @@ -220,6 +222,7 @@ allOf: compatible: contains: enum: + - qcom,ipq9574-wifi - qcom,ipq8074-wifi - qcom,ipq6018-wifi then: --=20 2.45.1 From nobody Sat Feb 7 22:21:10 2026 Received: from mail-ot1-f44.google.com (mail-ot1-f44.google.com [209.85.210.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A618B2D592D for ; Sun, 28 Dec 2025 15:59:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766937548; cv=none; b=GhN3PR9582aJAmcmW2zvYn4/Gp9PoD7aUyyQKOKyozBT3KguJ6t4IcY2+FX5x8Rlp1IQ3j9R/p9YbU2Y/iG+fM20gbf9pddRWR/toqEMIZpYbDxUJ1hjpf2w7EREhFudufeai49+dxjoHt1ZcITxMHda/iTKDzVibNFU1mrOE5A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766937548; c=relaxed/simple; bh=LiouFruLmybp6+y/XLTWPOFhLsAKAnNBnuxqAIwtnjU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UHGiHOLcwdBB+exGCGaLhfVVzETbGZZei/FsuUS6Xj9gnxwYi9kHpr7UN1EjwbeA+s7MRrhIujoUeb3nb/OuHURplGMnCchTFFfrZWglo9wCGPe2isF/LkhhLvIFztSRw2PnCzPTRH12rDqVhvSjRLFP2sixejBWsI0qFwuFzSY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=lwOIMLRu; arc=none smtp.client-ip=209.85.210.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lwOIMLRu" Received: by mail-ot1-f44.google.com with SMTP id 46e09a7af769-7c75a5cb752so5991124a34.2 for ; Sun, 28 Dec 2025 07:59:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766937544; x=1767542344; 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=IpMs7DUUJiTVZzkNa0WwVvn6iVCEHIOvp8u0lRuMmRg=; b=lwOIMLRu/PAS/UvMJJ7e9VXmAH5/qhRNzwd6U2wSCVhj4/PG5NDq25pleOyNwNjTX7 88TFxL3AlTnfQA8dZh8mrrnY6Bbmj36bKKUHkf9dqU7pRa9IuMCPOBGnl8orkABkTs5o WVaeD3eDBelcMYK1+eyDEnE5STfnPCbAsf9421KnWQXfdilYz5MNIYD6XKP62qSkCye6 f9+StdUx219D6bSY+JQcOXtrR2dzXirvfxNV+5PNDRYVlvL+fuyF+976vdiIoS/zZAOo 0/gSa7l0nVV5RzRiZGNHQdMYw+NH6nIjHfKBWBrz5ae5NmH3mHSICLR0HFOHV0bAnGvT 2X5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766937544; x=1767542344; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=IpMs7DUUJiTVZzkNa0WwVvn6iVCEHIOvp8u0lRuMmRg=; b=amHQQxCtUs/lE9myOpwLRnmgFXBhwn7Fdr1W0jDJE4YbMsRE5PQTP3a/Av48N2xf01 CnyzrF8kBQp79skiYaq8fV9v5vG8XZCANTWiE0ep433LIfrQzZTqJFdG/7CCbeP3q+VY iYEou13BLEe2neqW1FFsuco1dXw0i2hIVT5Rd3fchUdL04axgMgSoJRIrf3VsioPzs0F h1g5GzfI9+zO/vZOi2Svd0F1Ml0JTW1NpBQlL+MkOCihsvyvCJR1zglC5HEDM2XhW3FQ PLrFY/288+x82C09TU2L6h3yQ6UbUcx24LBqvZo+Qyi6wI3x4b3zkXpXjaD8HYTx7f0F fNqw== X-Forwarded-Encrypted: i=1; AJvYcCWnhPTEcW/qxG06nzDS9dFfFu2ktV20lvgwBIg2/TN4UTTbQrAKQDeWgVGg8V5crtINwuXRGflC985p1rA=@vger.kernel.org X-Gm-Message-State: AOJu0YyFJUnHazbwddPqWYV92PJ3ek+8ag3qJ+sjZgKcGyL+zsh8adm8 4iKG0aUsxQZSFKpd2oqfl0Y/mbgB4oO1Oqbsrv7cL/WLQzDThqtWLS1x X-Gm-Gg: AY/fxX68yCH5fSQi+at21j8KFYWpcm9j77REU5BQvvs6TRY0jTdQ35fdUmRSFgFzBG8 gnysFwiw94f6aU9L6P/Wbjr4KFuJbVhwOva3GBzmHGJ9tpSJYKgIOs7oH/UBUmIyDh8qC1ZcvHh YukP/F1LxOR2tndHT55euJjDCyvuwJywp5uU4j6JPizR3F7o1WsY11m/Cyd9VLqzE6atyCfAQma 0g+ZHygNePR3q2aCLQivutlBFo4J5jXsuHorFMfTuCS+/M0aUMq8/n20Z55ljcfaZVY3fk9APmd YyviihpW1h5a7d5ac9FNSf0RPeSWVfn7hLpydLpMC/M0t056tINSDI02KcvjXJVateaOTAl8Obd iwQsCWEwUQUyOn5mUGbuhb421mIR9Xjyp32KcQuA5QmPphS3ty18Jlufsv2rr9s/6btyyR0inoy DyMR+O4pWc4hef41X1RrBnkgBEmKoFMbGYN2HFpw4H8fgKEr8fD/lxqmsz0WXIYTnTq2wPJVifJ U9Vi8NOENJcjt8mRy06utYoYjgi X-Google-Smtp-Source: AGHT+IGA/19UZG5DpvuP1qzpTnG6guQS1kofs5N8t66j8r2IZe+SU0PQExCFDAszQDjgoEZVkKuLXg== X-Received: by 2002:a05:6830:2b0c:b0:7c7:68d8:f6ee with SMTP id 46e09a7af769-7cc668ae239mr16048197a34.6.1766937544453; Sun, 28 Dec 2025 07:59:04 -0800 (PST) Received: from nukework.lan (c-98-57-15-22.hsd1.tx.comcast.net. [98.57.15.22]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7cc667ecd6esm19004434a34.25.2025.12.28.07.59.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 28 Dec 2025 07:59:03 -0800 (PST) From: Alexandru Gagniuc To: robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, jjohnson@kernel.org, ath11k@lists.infradead.org Cc: johannes@sipsolutions.net, linux-wireless@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Alexandru Gagniuc Subject: [PATCH 2/2] wifi: ath11k: support ipq9574 Date: Sun, 28 Dec 2025 09:58:52 -0600 Message-ID: <20251228155855.2118792-3-mr.nuke.me@gmail.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20251228155855.2118792-1-mr.nuke.me@gmail.com> References: <20251228155855.2118792-1-mr.nuke.me@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The IPQ9574 can be coupled with wifi-6 chips, like QCN5024 to expose a wifi device over AHB. Add the data structures necessarry to describe the IPQ9574 wifi hardware. The CE configs are identical to IPQ6018, as confirmed by inspecting the out-of-tree qca-wifi-host-cmn (cnss2) driver. Coldboot calibration does not seem to work. One of two issues are seen. (1) The remoteproc firmware crashes with a fatal error, or (2) the firmware stops sending qmi responses, appearing to hang. Leave coldboot calibration disabled for now. Tested-on: IPQ5974 WLAN.HK.2.9.0.1-01890-QCAHKSWPL_SILICONZ-1 Signed-off-by: Alexandru Gagniuc --- Most information about the fields cames from the donwstream patch [1]. Analysis of the out-of-tree driver [2] shows that the IPQ9574 uses the same CE configs as IPQ6018. [1] https://git.codelinaro.org/clo/qsdk/oss/system/feeds/wlan-open/-/raw/NH= SS.QSDK.12.4.5.r2/mac80211/patches/324-ath11k-ipq9574-support.patch?inline= =3Dfalse [2] https://git.codelinaro.org/clo/external-wlan/qca-wifi-host-cmn/-/blob/c= af_migration/wlan-cmn.driver.lnx.2.13/hif/src/ce/ce_assignment.h?ref_type= =3Dheads --- drivers/net/wireless/ath/ath11k/ahb.c | 4 ++ drivers/net/wireless/ath/ath11k/core.c | 82 ++++++++++++++++++++++++++ drivers/net/wireless/ath/ath11k/core.h | 1 + drivers/net/wireless/ath/ath11k/hw.c | 51 ++++++++++++++++ drivers/net/wireless/ath/ath11k/hw.h | 1 + 5 files changed, 139 insertions(+) diff --git a/drivers/net/wireless/ath/ath11k/ahb.c b/drivers/net/wireless/a= th/ath11k/ahb.c index 8dfe9b40c1262..e68bcc6b60692 100644 --- a/drivers/net/wireless/ath/ath11k/ahb.c +++ b/drivers/net/wireless/ath/ath11k/ahb.c @@ -25,6 +25,9 @@ static const struct of_device_id ath11k_ahb_of_match[] = =3D { /* TODO: Should we change the compatible string to something similar * to one that ath10k uses? */ + { .compatible =3D "qcom,ipq9574-wifi", + .data =3D (void *)ATH11K_HW_IPQ9574, + }, { .compatible =3D "qcom,ipq8074-wifi", .data =3D (void *)ATH11K_HW_IPQ8074, }, @@ -1117,6 +1120,7 @@ static int ath11k_ahb_probe(struct platform_device *p= dev) hw_rev =3D (uintptr_t)device_get_match_data(&pdev->dev); =20 switch (hw_rev) { + case ATH11K_HW_IPQ9574: case ATH11K_HW_IPQ8074: case ATH11K_HW_IPQ6018_HW10: case ATH11K_HW_IPQ5018_HW10: diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/= ath/ath11k/core.c index 812686173ac8a..fed888414005a 100644 --- a/drivers/net/wireless/ath/ath11k/core.c +++ b/drivers/net/wireless/ath/ath11k/core.c @@ -40,6 +40,88 @@ module_param_named(ftm_mode, ath11k_ftm_mode, bool, 0444= ); MODULE_PARM_DESC(ftm_mode, "Boots up in factory test mode"); =20 static const struct ath11k_hw_params ath11k_hw_params[] =3D { + { + .hw_rev =3D ATH11K_HW_IPQ9574, + .name =3D "ipq9574", + .fw =3D { + .dir =3D "IPQ9574/hw1.0", + .board_size =3D 256 * 1024, + .cal_offset =3D 128 * 1024, + }, + .max_radios =3D 1, + .bdf_addr =3D 0x4B700000, + .hw_ops =3D &ipq9574_ops, + .ring_mask =3D &ath11k_hw_ring_mask_ipq8074, + .internal_sleep_clock =3D false, + .regs =3D &ipq8074_regs, + .qmi_service_ins_id =3D ATH11K_QMI_WLFW_SERVICE_INS_ID_V01_IPQ8074, + .host_ce_config =3D ath11k_host_ce_config_ipq8074, + .ce_count =3D 12, + .target_ce_config =3D ath11k_target_ce_config_wlan_ipq8074, + .target_ce_count =3D 11, + .svc_to_ce_map =3D ath11k_target_service_to_ce_map_wlan_ipq6018, + .svc_to_ce_map_len =3D 19, + .ce_ie_addr =3D &ath11k_ce_ie_addr_ipq8074, + .single_pdev_only =3D false, + .rxdma1_enable =3D true, + .num_rxdma_per_pdev =3D 1, + .rx_mac_buf_ring =3D false, + .vdev_start_delay =3D false, + .htt_peer_map_v2 =3D true, + + .spectral =3D { + .fft_sz =3D 2, + .fft_pad_sz =3D 2, + .summary_pad_sz =3D 0, + .fft_hdr_len =3D 16, + .max_fft_bins =3D 512, + .fragment_160mhz =3D true, + }, + + .interface_modes =3D BIT(NL80211_IFTYPE_STATION) | + BIT(NL80211_IFTYPE_AP) | + BIT(NL80211_IFTYPE_MESH_POINT), + .supports_monitor =3D true, + .full_monitor_mode =3D false, + .supports_shadow_regs =3D false, + .idle_ps =3D false, + .supports_sta_ps =3D false, + .coldboot_cal_mm =3D false, + .coldboot_cal_ftm =3D false, + .fw_mem_mode =3D 0, + .num_vdevs =3D 16 + 1, + .num_peers =3D 512, + .supports_suspend =3D false, + .hal_desc_sz =3D sizeof(struct hal_rx_desc_ipq8074), + .supports_regdb =3D false, + .fix_l1ss =3D true, + .credit_flow =3D false, + .hal_params =3D &ath11k_hw_hal_params_ipq8074, + .supports_dynamic_smps_6ghz =3D false, + .alloc_cacheable_memory =3D true, + .supports_rssi_stats =3D false, + .fw_wmi_diag_event =3D false, + .current_cc_support =3D false, + .dbr_debug_support =3D true, + .global_reset =3D false, + .bios_sar_capa =3D NULL, + .m3_fw_support =3D false, + .fixed_bdf_addr =3D true, + .fixed_mem_region =3D true, + .static_window_map =3D false, + .hybrid_bus_type =3D false, + .fixed_fw_mem =3D false, + .support_off_channel_tx =3D false, + .supports_multi_bssid =3D false, + + .sram_dump =3D {}, + + .tcl_ring_retry =3D true, + .tx_ring_size =3D DP_TCL_DATA_RING_SIZE, + .smp2p_wow_exit =3D false, + .support_dual_stations =3D false, + .pdev_suspend =3D false, + }, { .hw_rev =3D ATH11K_HW_IPQ8074, .name =3D "ipq8074 hw2.0", diff --git a/drivers/net/wireless/ath/ath11k/core.h b/drivers/net/wireless/= ath/ath11k/core.h index e8780b05ce11e..9a4acde3acfae 100644 --- a/drivers/net/wireless/ath/ath11k/core.h +++ b/drivers/net/wireless/ath/ath11k/core.h @@ -142,6 +142,7 @@ struct ath11k_skb_rxcb { }; =20 enum ath11k_hw_rev { + ATH11K_HW_IPQ9574, ATH11K_HW_IPQ8074, ATH11K_HW_QCA6390_HW20, ATH11K_HW_IPQ6018_HW10, diff --git a/drivers/net/wireless/ath/ath11k/hw.c b/drivers/net/wireless/at= h/ath11k/hw.c index caa6dc12a790b..6862b718b0043 100644 --- a/drivers/net/wireless/ath/ath11k/hw.c +++ b/drivers/net/wireless/ath/ath11k/hw.c @@ -34,6 +34,17 @@ static u8 ath11k_hw_ipq6018_mac_from_pdev_id(int pdev_id= x) return pdev_idx; } =20 +static u8 ath11k_hw_ipq9574_mac_from_pdev_id(int pdev_idx) +{ + /* ipq9574 is a single PHY radio which maps to PHY B(mac3) */ + switch (pdev_idx) { + case 0: + return 2; + default: + return ATH11K_INVALID_HW_MAC_ID; + } +} + static void ath11k_hw_ipq8074_tx_mesh_enable(struct ath11k_base *ab, struct hal_tcl_data_cmd *tcl_cmd) { @@ -900,6 +911,46 @@ static u32 ath11k_hw_wcn6750_get_tcl_ring_selector(str= uct sk_buff *skb) return skb_get_hash(skb); } =20 +const struct ath11k_hw_ops ipq9574_ops =3D { + .get_hw_mac_from_pdev_id =3D ath11k_hw_ipq9574_mac_from_pdev_id, + .wmi_init_config =3D ath11k_init_wmi_config_ipq8074, + .mac_id_to_pdev_id =3D ath11k_hw_mac_id_to_pdev_id_ipq8074, + .mac_id_to_srng_id =3D ath11k_hw_mac_id_to_srng_id_ipq8074, + .tx_mesh_enable =3D ath11k_hw_ipq8074_tx_mesh_enable, + .rx_desc_get_first_msdu =3D ath11k_hw_ipq8074_rx_desc_get_first_msdu, + .rx_desc_get_last_msdu =3D ath11k_hw_ipq8074_rx_desc_get_last_msdu, + .rx_desc_get_l3_pad_bytes =3D ath11k_hw_ipq8074_rx_desc_get_l3_pad_bytes, + .rx_desc_get_hdr_status =3D ath11k_hw_ipq8074_rx_desc_get_hdr_status, + .rx_desc_encrypt_valid =3D ath11k_hw_ipq8074_rx_desc_encrypt_valid, + .rx_desc_get_encrypt_type =3D ath11k_hw_ipq8074_rx_desc_get_encrypt_type, + .rx_desc_get_decap_type =3D ath11k_hw_ipq8074_rx_desc_get_decap_type, + .rx_desc_get_mesh_ctl =3D ath11k_hw_ipq8074_rx_desc_get_mesh_ctl, + .rx_desc_get_ldpc_support =3D ath11k_hw_ipq8074_rx_desc_get_ldpc_support, + .rx_desc_get_mpdu_seq_ctl_vld =3D ath11k_hw_ipq8074_rx_desc_get_mpdu_seq_= ctl_vld, + .rx_desc_get_mpdu_fc_valid =3D ath11k_hw_ipq8074_rx_desc_get_mpdu_fc_vali= d, + .rx_desc_get_mpdu_start_seq_no =3D ath11k_hw_ipq8074_rx_desc_get_mpdu_sta= rt_seq_no, + .rx_desc_get_msdu_len =3D ath11k_hw_ipq8074_rx_desc_get_msdu_len, + .rx_desc_get_msdu_sgi =3D ath11k_hw_ipq8074_rx_desc_get_msdu_sgi, + .rx_desc_get_msdu_rate_mcs =3D ath11k_hw_ipq8074_rx_desc_get_msdu_rate_mc= s, + .rx_desc_get_msdu_rx_bw =3D ath11k_hw_ipq8074_rx_desc_get_msdu_rx_bw, + .rx_desc_get_msdu_freq =3D ath11k_hw_ipq8074_rx_desc_get_msdu_freq, + .rx_desc_get_msdu_pkt_type =3D ath11k_hw_ipq8074_rx_desc_get_msdu_pkt_typ= e, + .rx_desc_get_msdu_nss =3D ath11k_hw_ipq8074_rx_desc_get_msdu_nss, + .rx_desc_get_mpdu_tid =3D ath11k_hw_ipq8074_rx_desc_get_mpdu_tid, + .rx_desc_get_mpdu_peer_id =3D ath11k_hw_ipq8074_rx_desc_get_mpdu_peer_id, + .rx_desc_copy_attn_end_tlv =3D ath11k_hw_ipq8074_rx_desc_copy_attn_end, + .rx_desc_get_mpdu_start_tag =3D ath11k_hw_ipq8074_rx_desc_get_mpdu_start_= tag, + .rx_desc_get_mpdu_ppdu_id =3D ath11k_hw_ipq8074_rx_desc_get_mpdu_ppdu_id, + .rx_desc_set_msdu_len =3D ath11k_hw_ipq8074_rx_desc_set_msdu_len, + .rx_desc_get_attention =3D ath11k_hw_ipq8074_rx_desc_get_attention, + .rx_desc_get_msdu_payload =3D ath11k_hw_ipq8074_rx_desc_get_msdu_payload, + .reo_setup =3D ath11k_hw_ipq8074_reo_setup, + .mpdu_info_get_peerid =3D ath11k_hw_ipq8074_mpdu_info_get_peerid, + .rx_desc_mac_addr2_valid =3D ath11k_hw_ipq8074_rx_desc_mac_addr2_valid, + .rx_desc_mpdu_start_addr2 =3D ath11k_hw_ipq8074_rx_desc_mpdu_start_addr2, + .get_ring_selector =3D ath11k_hw_ipq8074_get_tcl_ring_selector, +}; + const struct ath11k_hw_ops ipq8074_ops =3D { .get_hw_mac_from_pdev_id =3D ath11k_hw_ipq8074_mac_from_pdev_id, .wmi_init_config =3D ath11k_init_wmi_config_ipq8074, diff --git a/drivers/net/wireless/ath/ath11k/hw.h b/drivers/net/wireless/at= h/ath11k/hw.h index 52d9f4c13b136..0ea36c8ebb666 100644 --- a/drivers/net/wireless/ath/ath11k/hw.h +++ b/drivers/net/wireless/ath/ath11k/hw.h @@ -273,6 +273,7 @@ struct ath11k_hw_ops { u32 (*get_ring_selector)(struct sk_buff *skb); }; =20 +extern const struct ath11k_hw_ops ipq9574_ops; extern const struct ath11k_hw_ops ipq8074_ops; extern const struct ath11k_hw_ops ipq6018_ops; extern const struct ath11k_hw_ops qca6390_ops; --=20 2.45.1