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

Commit 639ebed0 authored by Lior David's avatar Lior David Committed by Maya Erez
Browse files

msm_11ad: Add 11ad platform driver



Platform driver used to handle msm specific platform
requirement for 11ad chipset connected to msm platform

Takes care of platform support like:
- power switch through dedicated GPIO
- bus frequency voting
- SMMU attachment

This is a snapshot of commit ea31a9294643
("msm_11ad: Add option to enable SMMU fastmap").

Change-Id: I09c54ea747a5b4e0688b1b7d96e83ef134bb4215
Signed-off-by: default avatarHamad Kadmany <hkadmany@codeaurora.org>
Signed-off-by: default avatarLior David <liord@codeaurora.org>
[merez@codeaurora.org: merge multiple 11ad changes from msm-4.4]
Signed-off-by: default avatarMaya Erez <merez@codeaurora.org>
parent 802bc162
Loading
Loading
Loading
Loading
+52 −0
Original line number Diff line number Diff line
wil6210 - Qualcomm Technologies Inc. 802.11ad Wireless Driver

wil6210 driver is responsible for managing 802.11ad chipset
connected to MSM over PCIe interface.

The platform data is needed in order to perform proper
bus-scaling and SMMU initialization by the driver.

Required properties:

- compatible: "qcom,wil6210"
- qcom,smmu-support: Boolean flag indicating whether PCIe has SMMU support
- qcom,pcie-parent: phandle for the PCIe root complex to which 11ad card is connected
- Refer to "Documentation/devicetree/bindings/arm/msm/msm_bus.txt" for
  the below optional properties:
	- qcom,msm-bus,name
	- qcom,msm-bus,num-cases
	- qcom,msm-bus,num-paths
	- qcom,msm-bus,vectors-KBps

Optional properties:
- qcom,sleep-clk-en: GPIO for sleep clock used for low power modes by 11ad card
- qcom,wigig-en: Enable GPIO connected to 11ad card
- qcom,use-ext-supply: Boolean flag to indicate if 11ad SIP uses external power supply
- vdd-supply: phandle to 11ad VDD regulator node
- vddio-supply: phandle to 11ad VDDIO regulator node
- qcom,use-ext-clocks: Boolean flag to indicate if 11ad SIP uses external clocks
- clocks	    : List of phandle and clock specifier pairs
- clock-names       : List of clock input name strings sorted in the same
		      order as the clocks property.

Example:
	wil6210: qcom,wil6210 {
		compatible = "qcom,wil6210";
		qcom,smmu-support;
		qcom,pcie-parent = <&pcie1>;
		qcom,wigig-en = <&tlmm 94 0>;
		qcom,msm-bus,name = "wil6210";
		qcom,msm-bus,num-cases = <2>;
		qcom,msm-bus,num-paths = <1>;
		qcom,msm-bus,vectors-KBps =
			<100 512 0 0>,
			<100 512 600000 800000>; /* ~4.6Gbps (MCS12) */
		qcom,use-ext-supply;
		vdd-supply= <&pm8998_s7>;
		vddio-supply= <&pm8998_s5>;
		qcom,use-ext-clocks;
		clocks = <&clock_gcc clk_rf_clk3>,
			 <&clock_gcc clk_rf_clk3_pin>;
		clock-names = "rf_clk3_clk", "rf_clk3_pin_clk";
	};
+9 −0
Original line number Diff line number Diff line
@@ -40,3 +40,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_QCOM
	default y
	---help---
	  Say Y here to enable wil6210 driver support for MSM
	  platform specific features
+3 −0
Original line number Diff line number Diff line
@@ -24,3 +24,6 @@ wil6210-y += p2p.o
CFLAGS_trace.o := -I$(src)

subdir-ccflags-y += -D__CHECK_ENDIAN__

MSM_11AD_PATH = drivers/platform/msm/msm_11ad
CFLAGS_wil_platform.o := -I$(MSM_11AD_PATH)
+5 −3
Original line number Diff line number Diff line
@@ -16,14 +16,16 @@

#include <linux/device.h>
#include "wil_platform.h"
#include "msm_11ad.h"

int __init wil_platform_modinit(void)
{
	return 0;
	return msm_11ad_modinit();
}

void wil_platform_modexit(void)
{
	msm_11ad_modexit();
}

/**
@@ -36,7 +38,7 @@ void wil_platform_modexit(void)
void *wil_platform_init(struct device *dev, struct wil_platform_ops *ops,
			const struct wil_platform_rops *rops, void *wil_handle)
{
	void *handle = ops; /* to return some non-NULL for 'void' impl. */
	void *handle;

	if (!ops) {
		dev_err(dev,
@@ -44,7 +46,7 @@ void *wil_platform_init(struct device *dev, struct wil_platform_ops *ops,
		return NULL;
	}

	/* platform specific init functions should be called here */
	handle = msm_11ad_dev_init(dev, ops, rops, wil_handle);

	return handle;
}
+14 −0
Original line number Diff line number Diff line
@@ -113,6 +113,7 @@ config QPNP_REVID
	  numbers in the kernel log along with the PMIC option status. The PMIC
	  type is mapped to a QTI chip part number and logged as well.


config MSM_MHI_DEV
        tristate "Modem Device Interface Driver"
	depends on EP_PCIE && IPA
@@ -130,4 +131,17 @@ config USB_BAM
	  Enabling this option adds USB BAM Driver.
	  USB BAM driver was added to supports SPS Peripheral-to-Peripheral
	  transfers between the USB and other peripheral.

config MSM_11AD
	tristate "Platform driver for 11ad chip"
	depends on PCI
	depends on PCI_MSM
	default n
	---help---
	  This module adds required platform support for wireless adapter based on
	  Qualcomm Technologies, Inc. 11ad chip, integrated into MSM platform

	  If you choose to build it as a module, it will be called
	  msm_11ad_proxy.

endmenu
Loading