Commit c0dd3f4f authored by Balamurugan S's avatar Balamurugan S Committed by Jeff Johnson
Browse files

wifi: ath12k: enable ath12k AHB support



Currently only PCI devices are supported in Ath12k driver. Refactor
Ath12k module_init and module_exit to include Ath12k AHB support.

Add Ath12k AHB support in Kconfig with dependency on Remoteproc
driver. Ath12k AHB support relies on remoteproc driver for firmware
download, power up/down etc.

Tested-on: IPQ5332 hw1.0 AHB WLAN.WBE.1.3.1-00130-QCAHKSWPL_SILICONZ-1
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00210-QCAHKSWPL_SILICONZ-1

Signed-off-by: default avatarBalamurugan S <quic_bselvara@quicinc.com>
Co-developed-by: default avatarP Praneesh <quic_ppranees@quicinc.com>
Signed-off-by: default avatarP Praneesh <quic_ppranees@quicinc.com>
Reviewed-by: default avatarVasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
Signed-off-by: default avatarRaj Kumar Bhagat <quic_rajkbhag@quicinc.com>
Link: https://patch.msgid.link/20250321-ath12k-ahb-v12-13-bb389ed76ae5@quicinc.com


Signed-off-by: default avatarJeff Johnson <jeff.johnson@oss.qualcomm.com>
parent 881edc16
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -15,6 +15,14 @@ config ATH12K

	  If you choose to build a module, it'll be called ath12k.

config ATH12K_AHB
	bool "QTI ath12k AHB support"
	depends on ATH12K && REMOTEPROC
	select QCOM_MDT_LOADER
	select QCOM_SCM
	help
	  Enable support for Ath12k AHB bus chipsets, example IPQ5332.

config ATH12K_DEBUG
	bool "ath12k debugging"
	depends on ATH12K
+1 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ ath12k-y += core.o \
	    fw.o \
	    p2p.o

ath12k-$(CONFIG_ATH12K_AHB) += ahb.o
ath12k-$(CONFIG_ATH12K_DEBUGFS) += debugfs.o debugfs_htt_stats.o debugfs_sta.o
ath12k-$(CONFIG_ACPI) += acpi.o
ath12k-$(CONFIG_ATH12K_TRACING) += trace.o
+11 −0
Original line number Diff line number Diff line
@@ -66,4 +66,15 @@ static inline struct ath12k_ahb *ath12k_ab_to_ahb(struct ath12k_base *ab)
	return (struct ath12k_ahb *)ab->drv_priv;
}

#ifdef CONFIG_ATH12K_AHB
int ath12k_ahb_init(void);
void ath12k_ahb_exit(void);
#else
static inline int ath12k_ahb_init(void)
{
	return 0;
}

static inline void ath12k_ahb_exit(void) {};
#endif
#endif
+32 −3
Original line number Diff line number Diff line
@@ -10,15 +10,18 @@
#include <linux/firmware.h>
#include <linux/of.h>
#include <linux/of_graph.h>
#include "ahb.h"
#include "core.h"
#include "dp_tx.h"
#include "dp_rx.h"
#include "debug.h"
#include "hif.h"
#include "fw.h"
#include "debugfs.h"
#include "fw.h"
#include "hif.h"
#include "pci.h"
#include "wow.h"

static int ahb_err, pci_err;
unsigned int ath12k_debug_mask;
module_param_named(debug_mask, ath12k_debug_mask, uint, 0644);
MODULE_PARM_DESC(debug_mask, "Debugging mask");
@@ -2073,5 +2076,31 @@ struct ath12k_base *ath12k_core_alloc(struct device *dev, size_t priv_size,
	return NULL;
}

MODULE_DESCRIPTION("Core module for Qualcomm Atheros 802.11be wireless LAN cards.");
static int ath12k_init(void)
{
	ahb_err = ath12k_ahb_init();
	if (ahb_err)
		pr_warn("Failed to initialize ath12k AHB device: %d\n", ahb_err);

	pci_err = ath12k_pci_init();
	if (pci_err)
		pr_warn("Failed to initialize ath12k PCI device: %d\n", pci_err);

	/* If both failed, return one of the failures (arbitrary) */
	return ahb_err && pci_err ? ahb_err : 0;
}

static void ath12k_exit(void)
{
	if (!pci_err)
		ath12k_pci_exit();

	if (!ahb_err)
		ath12k_ahb_exit();
}

module_init(ath12k_init);
module_exit(ath12k_exit);

MODULE_DESCRIPTION("Driver support for Qualcomm Technologies 802.11be WLAN devices");
MODULE_LICENSE("Dual BSD/GPL");
+2 −8
Original line number Diff line number Diff line
@@ -1831,7 +1831,7 @@ static struct pci_driver ath12k_pci_driver = {
	.driver.pm = &ath12k_pci_pm_ops,
};

static int ath12k_pci_init(void)
int ath12k_pci_init(void)
{
	int ret;

@@ -1844,14 +1844,8 @@ static int ath12k_pci_init(void)

	return 0;
}
module_init(ath12k_pci_init);

static void ath12k_pci_exit(void)
void ath12k_pci_exit(void)
{
	pci_unregister_driver(&ath12k_pci_driver);
}

module_exit(ath12k_pci_exit);

MODULE_DESCRIPTION("Driver support for Qualcomm Technologies PCIe 802.11be WLAN devices");
MODULE_LICENSE("Dual BSD/GPL");
Loading