Commit f772ebfb authored by Vladimir Kondratiev's avatar Vladimir Kondratiev Committed by John W. Linville
Browse files

wil6210: platform specific module



New module (wil_platform) for handling platform specific tasks

Signed-off-by: default avatarDedy Lansky <qca_dlansky@qca.qualcomm.com>
Signed-off-by: default avatarVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 8fe59627
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -39,3 +39,12 @@ config WIL6210_TRACING
	  option if you are interested in debugging the driver.

	  If unsure, say Y to make it easier to debug problems.

config WIL6210_PLATFORM_MSM
	bool "wil6210 MSM platform specific support"
	depends on WIL6210
	depends on ARCH_MSM
	default y
	---help---
	  Say Y here to enable wil6210 driver support for MSM
	  platform specific features
+2 −0
Original line number Diff line number Diff line
@@ -12,6 +12,8 @@ wil6210-y += debug.o
wil6210-y += rx_reorder.o
wil6210-y += fw.o
wil6210-$(CONFIG_WIL6210_TRACING) += trace.o
wil6210-y += wil_platform.o
wil6210-$(CONFIG_WIL6210_PLATFORM_MSM) += wil_platform_msm.o

# for tracing framework to find trace.h
CFLAGS_trace.o := -I$(src)
+7 −0
Original line number Diff line number Diff line
@@ -603,6 +603,10 @@ static int __wil_up(struct wil6210_priv *wil)
	napi_enable(&wil->napi_tx);
	set_bit(wil_status_napi_en, &wil->status);

	if (wil->platform_ops.bus_request)
		wil->platform_ops.bus_request(wil->platform_handle,
					      WIL_MAX_BUS_REQUEST_KBPS);

	return 0;
}

@@ -621,6 +625,9 @@ static int __wil_down(struct wil6210_priv *wil)
{
	WARN_ON(!mutex_is_locked(&wil->mutex));

	if (wil->platform_ops.bus_request)
		wil->platform_ops.bus_request(wil->platform_handle, 0);

	clear_bit(wil_status_napi_en, &wil->status);
	napi_disable(&wil->napi_rx);
	napi_disable(&wil->napi_tx);
+8 −0
Original line number Diff line number Diff line
@@ -180,6 +180,10 @@ static int wil_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id)
	wil->board = board;

	wil6210_clear_irq(wil);

	wil->platform_handle =
			wil_platform_init(&pdev->dev, &wil->platform_ops);

	/* FW should raise IRQ when ready */
	rc = wil_if_pcie_enable(wil);
	if (rc) {
@@ -204,6 +208,8 @@ static int wil_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 bus_disable:
	wil_if_pcie_disable(wil);
 if_free:
	if (wil->platform_ops.uninit)
		wil->platform_ops.uninit(wil->platform_handle);
	wil_if_free(wil);
 err_iounmap:
	pci_iounmap(pdev, csr);
@@ -223,6 +229,8 @@ static void wil_pcie_remove(struct pci_dev *pdev)
	wil6210_debugfs_remove(wil);
	wil_if_pcie_disable(wil);
	wil_if_remove(wil);
	if (wil->platform_ops.uninit)
		wil->platform_ops.uninit(wil->platform_handle);
	wil_if_free(wil);
	pci_iounmap(pdev, csr);
	pci_release_region(pdev, 0);
+7 −0
Original line number Diff line number Diff line
@@ -21,10 +21,14 @@
#include <linux/wireless.h>
#include <net/cfg80211.h>
#include <linux/timex.h>
#include "wil_platform.h"


#define WIL_NAME "wil6210"
#define WIL_FW_NAME "wil6210.fw"

#define WIL_MAX_BUS_REQUEST_KBPS 800000 /* ~6.1Gbps */

struct wil_board {
	int board;
#define WIL_BOARD_MARLON	(1)
@@ -437,6 +441,9 @@ struct wil6210_priv {
	/* debugfs */
	struct dentry *debug;
	struct debugfs_blob_wrapper blobs[ARRAY_SIZE(fw_mapping)];

	void *platform_handle;
	struct wil_platform_ops platform_ops;
};

#define wil_to_wiphy(i) (i->wdev->wiphy)
Loading