Enable pico-7d 32K clk output to BCM4339

In bcmdhd driver probe stage check clk configs
in DTS and enable it since pico-7d use CCM
generated clock to BCM4339 chip.

Change-Id: I3a036ace9ab5fb798b0c4b2f3e982f500b6aba20
Signed-off-by: Haoran Wang <elven.wang@nxp.com>
diff --git a/arch/arm/boot/dts/imx7d-pico.dtsi b/arch/arm/boot/dts/imx7d-pico.dtsi
index e88503a..a7d93e1 100644
--- a/arch/arm/boot/dts/imx7d-pico.dtsi
+++ b/arch/arm/boot/dts/imx7d-pico.dtsi
@@ -69,6 +69,7 @@
 		pinctrl-0 = <&pinctrl_wifi_ctrl &pinctrl_bt_ctrl>;
 		status = "okay";
 		wlreg_on-supply = <&wlreg_on>;
+		clocks = <&clks IMX7D_CLKO2_ROOT_DIV>;
 	};
 
 	pxp_v4l2_out {
diff --git a/arch/arm/mach-imx/clk-imx7d.c b/arch/arm/mach-imx/clk-imx7d.c
index 6e1cff0..ddbcdaa 100644
--- a/arch/arm/mach-imx/clk-imx7d.c
+++ b/arch/arm/mach-imx/clk-imx7d.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2014-2016 Freescale Semiconductor, Inc.
+ * Copyright 2017 NXP
  *
  * The code contained herein is licensed under the GNU General Public
  * License. You may obtain a copy of the GNU General Public License
@@ -367,7 +368,7 @@
 	IMX7D_PLL_SYS_MAIN_480M_CLK, IMX7D_NAND_USDHC_BUS_ROOT_CLK,
 	IMX7D_DRAM_PHYM_ROOT_CLK, IMX7D_DRAM_ROOT_CLK,
 	IMX7D_DRAM_PHYM_ALT_ROOT_CLK, IMX7D_DRAM_ALT_ROOT_CLK,
-	IMX7D_AHB_CHANNEL_ROOT_CLK, IMX7D_CLKO2_ROOT_DIV,
+	IMX7D_AHB_CHANNEL_ROOT_CLK,
 	};
 
 static struct clk_onecell_data clk_data;
diff --git a/drivers/net/wireless/bcmdhd/dhd_linux_platdev.c b/drivers/net/wireless/bcmdhd/dhd_linux_platdev.c
index 7c0f824..1eec057 100644
--- a/drivers/net/wireless/bcmdhd/dhd_linux_platdev.c
+++ b/drivers/net/wireless/bcmdhd/dhd_linux_platdev.c
@@ -23,26 +23,27 @@
  *
  * $Id: dhd_linux_platdev.c 401742 2013-05-13 15:03:21Z $
  */
-#include <typedefs.h>
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
 #include <bcmutils.h>
-#include <linux_osl.h>
 #include <dhd_dbg.h>
+#include <dhd_linux.h>
 #include <dngl_stats.h>
 #include <dhd.h>
 #include <dhd_bus.h>
-#include <dhd_linux.h>
-#include <wl_android.h>
+#include <linux/clk.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux_osl.h>
 #if defined(CONFIG_WIFI_CONTROL_FUNC)
 #include <linux/wlan_plat.h>
 #endif
 #ifdef CONFIG_DTS
-#include<linux/regulator/consumer.h>
 #include<linux/of_gpio.h>
+#include<linux/regulator/consumer.h>
 #endif /* CONFIG_DTS */
+#include <typedefs.h>
+#include <wl_android.h>
 
 #if !defined(CONFIG_WIFI_CONTROL_FUNC)
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 58))
@@ -325,6 +326,14 @@
 		DHD_ERROR(("%s regulator is null\n", __FUNCTION__));
 		return -1;
 	}
+
+	struct clk *clk32k;
+	clk32k = devm_clk_get(&pdev->dev, NULL);
+	/* pico-7d board use CCM generated 32K clk */
+	if (!IS_ERR(clk32k)) {
+		clk_prepare_enable(clk32k);
+	}
+
 #if defined(OOB_INTR_ONLY) && defined (HW_OOB)
 	/* This is to get the irq for the OOB */
 	gpio = of_get_gpio(pdev->dev.of_node, 0);