Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9b0c48a3 authored by Yue Ma's avatar Yue Ma Committed by Gerrit - the friendly Code Review server
Browse files

cnss2: Add API to get WLAN soc information



Expose the API so that WLAN host driver is able to query WLAN SOC
related information.

Change-Id: I62f7836ba4701c5017c0e5815a4cf549e1ee4ba4
Signed-off-by: default avatarYue Ma <yuem@codeaurora.org>
parent 3defea66
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -203,6 +203,23 @@ int cnss_get_platform_cap(struct cnss_platform_cap *cap)
}
EXPORT_SYMBOL(cnss_get_platform_cap);

int cnss_get_soc_info(struct device *dev, struct cnss_soc_info *info)
{
	int ret = 0;
	struct cnss_plat_data *plat_priv = cnss_bus_dev_to_plat_priv(dev);
	void *bus_priv = cnss_bus_dev_to_bus_priv(dev);

	if (!plat_priv)
		return -ENODEV;

	ret = cnss_pci_get_bar_info(bus_priv, &info->va, &info->pa);
	if (ret)
		return ret;

	return 0;
}
EXPORT_SYMBOL(cnss_get_soc_info);

void cnss_set_driver_status(enum cnss_driver_status driver_status)
{
	struct cnss_plat_data *plat_priv = cnss_bus_dev_to_plat_priv(NULL);
+12 −0
Original line number Diff line number Diff line
@@ -570,6 +570,18 @@ out:
}
EXPORT_SYMBOL(cnss_auto_resume);

int cnss_pci_get_bar_info(struct cnss_pci_data *pci_priv, void __iomem **va,
			  phys_addr_t *pa)
{
	if (!pci_priv)
		return -ENODEV;

	*va = pci_priv->bar;
	*pa = pci_resource_start(pci_priv->pci_dev, PCI_BAR_NUM);

	return 0;
}

#ifdef CONFIG_CNSS_QCA6290
#define PCI_MAX_BAR_SIZE		0xD00000

+2 −0
Original line number Diff line number Diff line
@@ -108,5 +108,7 @@ int cnss_suspend_pci_link(struct cnss_pci_data *pci_priv);
int cnss_resume_pci_link(struct cnss_pci_data *pci_priv);
int cnss_pci_init(struct cnss_plat_data *plat_priv);
void cnss_pci_deinit(struct cnss_plat_data *plat_priv);
int cnss_pci_get_bar_info(struct cnss_pci_data *pci_priv, void __iomem **va,
			  phys_addr_t *pa);

#endif /* _CNSS_PCI_H */
+13 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
#include <linux/pci.h>

#define CNSS_MAX_FILE_NAME		20
#define CNSS_MAX_TIMESTAMP_LEN		32

enum cnss_bus_width_type {
	CNSS_BUS_WIDTH_NONE,
@@ -43,6 +44,17 @@ struct cnss_fw_files {
	char evicted_data[CNSS_MAX_FILE_NAME];
};

struct cnss_soc_info {
	void __iomem *va;
	phys_addr_t pa;
	uint32_t chip_id;
	uint32_t chip_family;
	uint32_t board_id;
	uint32_t soc_id;
	uint32_t fw_version;
	char fw_build_timestamp[CNSS_MAX_TIMESTAMP_LEN + 1];
};

struct cnss_wlan_runtime_ops {
	int (*runtime_suspend)(struct pci_dev *pdev);
	int (*runtime_resume)(struct pci_dev *pdev);
@@ -78,6 +90,7 @@ extern void *cnss_get_virt_ramdump_mem(unsigned long *size);
extern int cnss_get_fw_files_for_target(struct cnss_fw_files *pfw_files,
					u32 target_type, u32 target_version);
extern int cnss_get_platform_cap(struct cnss_platform_cap *cap);
extern int cnss_get_soc_info(struct device *dev, struct cnss_soc_info *info);
extern void cnss_set_driver_status(enum cnss_driver_status driver_status);
extern int cnss_request_bus_bandwidth(int bandwidth);
extern int cnss_set_wlan_unsafe_channel(u16 *unsafe_ch_list, u16 ch_count);