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

Commit b4d21cce authored by Naman Padhiar's avatar Naman Padhiar Committed by Gerrit - the friendly Code Review server
Browse files

icnss: Add snapshot of icnss driver



This is a snapshot of the ICNSS driver and associated files as of msm-4.14
commit d3cc4a121396 ("qseecom: Update cache operations around scm_call()").

Checkpatch issues are also fixed on top of this commit.

Change-Id: I891c36d9b6ba15afdaa35aa0797f5c9631fb1adb
Signed-off-by: default avatarNaman Padhiar <npadhiar@codeaurora.org>
parent 6e9f8d30
Loading
Loading
Loading
Loading
+77 −0
Original line number Diff line number Diff line
* Qualcomm Technologies Inc Q6 Integrated connectivity Platform Driver

This platform driver adds support for the Integrated WLAN that runs
on Q6 based platforms. WLAN FW on these architecture runs on Q6. This
platform driver communicates with WLAN FW over QMI, WLAN on/off messages
to FW are communicated thru this interface. This driver also listens to
WLAN PD restart notifications.

Required properties:
  - compatible: "qcom,icnss"
  - reg: Memory regions defined as starting address and size
  - reg-names: Names of the memory regions defined in reg entry
  - interrupts: Copy engine interrupt table
  - qcom,wlan-msa-memory: MSA memory size
  - clocks: List of clock phandles
  - clock-names: List of clock names corresponding to the "clocks" property
  - iommus: SMMUs and corresponding Stream IDs needed by WLAN
  - qcom,wlan-smmu-iova-address: I/O virtual address range as <start length>
    format to be used for allocations associated between WLAN and SMMU

Optional properties:
  - <supply-name>-supply: phandle to the regulator device tree node
			   optional "supply-name" is "vdd-0.8-cx-mx".
  - qcom,<supply>-config: Specifies voltage levels for supply. Should be
			   specified in pairs (min, max), units uV.  There can
			   be optional load in uA and Regulator settle delay in
			   uS.
  - qcom,icnss-vadc: VADC handle for vph_pwr read APIs.
  - qcom,icnss-adc_tm: VADC handle for vph_pwr notification APIs.
  - io-channels: IIO channel to monitor for vph_pwr power.
  - io-channel-names: IIO channel name as per the client name.
  - qcom,smmu-s1-bypass: Boolean context flag to set SMMU to S1 bypass
  - qcom,wlan-msa-fixed-region: phandle, specifier pairs to children of /reserved-memory
  - qcom,hyp_disabled: Boolean context flag to disable hyperviser

WLAN SMP2P sub nodes

  - qcom,smp2p_map_wlan_1_in - represents the in smp2p to
				  wlan driver from modem.

Example:

    qcom,icnss@0a000000 {
        compatible = "qcom,icnss";
        reg = <0x0a000000 0x1000000>;
        reg-names = "membase";
        clocks = <&clock_gcc clk_aggre2_noc_clk>;
        clock-names = "smmu_aggre2_noc_clk";
        iommus = <&anoc2_smmu 0x1900>,
                 <&anoc2_smmu 0x1901>;
        qcom,wlan-smmu-iova-address = <0 0x10000000>;
        interrupts =
		   <0 130 0 /* CE0 */ >,
		   <0 131 0 /* CE1 */ >,
		   <0 132 0 /* CE2 */ >,
		   <0 133 0 /* CE3 */ >,
		   <0 134 0 /* CE4 */ >,
		   <0 135 0 /* CE5 */ >,
		   <0 136 0 /* CE6 */ >,
		   <0 137 0 /* CE7 */ >,
		   <0 138 0 /* CE8 */ >,
		   <0 139 0 /* CE9 */ >,
		   <0 140 0 /* CE10 */ >,
		   <0 141 0 /* CE11 */ >;
        qcom,wlan-msa-memory = <0x200000>;
	qcom,wlan-msa-fixed-region = <&wlan_msa_mem>;
	qcom,smmu-s1-bypass;
	vdd-0.8-cx-mx-supply = <&pm8998_l5>;
	qcom,vdd-0.8-cx-mx-config = <800000 800000 2400 1000>;
	qcom,hyp_disabled;
	qcom,smp2p_map_wlan_1_in {
		interrupts-extended = <&smp2p_wlan_1_in 0 0>,
			<&smp2p_wlan_1_in 1 0>;
		interrupt-names = "qcom,smp2p-force-fatal-error",
			"qcom,smp2p-early-crash-ind";
	};
    };
+28 −0
Original line number Diff line number Diff line
@@ -758,3 +758,31 @@ config QCOM_HYP_CORE_CTL
	  CPUs can be assigned to the other guest OS by the hypervisor.
	  An offline CPU is considered as a reserved CPU since this OS can't use
	  it.

config ICNSS
	tristate "Platform driver for Q6 integrated connectivity"
	select CNSS_UTILS
	help
	  This module adds support for Q6 integrated WLAN connectivity
	  subsystem. This module is responsible for communicating WLAN on/off
	  control messages to FW over QMI channel. It is also responsible for
	  handling WLAN PD restart notifications.

config ICNSS_DEBUG
	bool "ICNSS debug support"
	depends on ICNSS
	help
	  Say 'Y' here to enable ICNSS driver debug support. Debug support
	  primarily consists of logs consisting of information related to
	  hardware register access and enabling BUG_ON for certain cases to aid
	  the debugging.

config ICNSS_QMI
	bool "ICNSS QMI support"
	depends on ICNSS
	help
	  Say 'Y' here to enable ICNSS QMI support. ICNSS driver will use
	  QMI framework to communicate with WLAN FW. It will send coldboot
	  handshake messages to WLAN FW, which includes hardware capabilities
	  and configurations. It also send WLAN on/off control message to FW
	  over QMI channel.
+2 −0
Original line number Diff line number Diff line
@@ -82,3 +82,5 @@ obj-$(CONFIG_QMP_DEBUGFS_CLIENT) += qmp-debugfs-client.o
obj-$(CONFIG_QCOM_HYP_CORE_CTL) += hyp_core_ctl.o
obj-$(CONFIG_MSM_PERFORMANCE) += msm_performance.o
obj-$(CONFIG_QCOM_CDSP_RM) += cdsprm.o
obj-$(CONFIG_ICNSS) += icnss.o
obj-$(CONFIG_ICNSS_QMI) += icnss_qmi.o wlan_firmware_service_v01.o
Loading