From 5625f965d7644b4dc6a71d74021cfe093ad34eea Mon Sep 17 00:00:00 2001
From: Ajay Singh <ajay.kathat@microchip.com>
Date: Thu, 25 Jun 2020 12:37:23 +0000
Subject: [PATCH] wilc1000: move wilc driver out of staging

WILC1000 is an IEEE 802.11 b/g/n IoT link controller module. The
WILC1000 connects to Microchip AVR/SMART MCUs, SMART MPUs, and other
processors with minimal resource requirements with a simple
SPI/SDIO-to-Wi-Fi interface.

WILC1000 driver has been part of staging for few years. With
contributions from the community, it has improved significantly. Full
driver review has helped in achieving the current state.
The details for those reviews are captured in 1 & 2.

[1]. https://lore.kernel.org/linux-wireless/1537957525-11467-1-git-send-email-ajay.kathat@microchip.com/
[2]. https://lore.kernel.org/linux-wireless/1562896697-8002-1-git-send-email-ajay.kathat@microchip.com/

Signed-off-by: Ajay Singh <ajay.kathat@microchip.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
 .../net/wireless}/microchip,wilc1000.yaml         |  0
 MAINTAINERS                                       | 14 +++++++-------
 drivers/net/wireless/Kconfig                      |  1 +
 drivers/net/wireless/Makefile                     |  1 +
 drivers/net/wireless/microchip/Kconfig            | 15 +++++++++++++++
 drivers/net/wireless/microchip/Makefile           |  2 ++
 .../wireless/microchip}/wilc1000/Kconfig          |  0
 .../wireless/microchip}/wilc1000/Makefile         |  0
 .../wireless/microchip}/wilc1000/cfg80211.c       |  0
 .../wireless/microchip}/wilc1000/cfg80211.h       |  0
 .../wireless/microchip}/wilc1000/fw.h             |  0
 .../wireless/microchip}/wilc1000/hif.c            |  0
 .../wireless/microchip}/wilc1000/hif.h            |  0
 .../wireless/microchip}/wilc1000/mon.c            |  0
 .../wireless/microchip}/wilc1000/netdev.c         |  0
 .../wireless/microchip}/wilc1000/netdev.h         |  0
 .../wireless/microchip}/wilc1000/sdio.c           |  0
 .../wireless/microchip}/wilc1000/spi.c            |  0
 .../wireless/microchip}/wilc1000/wlan.c           |  0
 .../wireless/microchip}/wilc1000/wlan.h           |  0
 .../wireless/microchip}/wilc1000/wlan_cfg.c       |  0
 .../wireless/microchip}/wilc1000/wlan_cfg.h       |  0
 .../wireless/microchip}/wilc1000/wlan_if.h        |  0
 drivers/staging/Kconfig                           |  2 --
 drivers/staging/Makefile                          |  1 -
 25 files changed, 26 insertions(+), 10 deletions(-)
 rename {drivers/staging/wilc1000 => Documentation/devicetree/bindings/net/wireless}/microchip,wilc1000.yaml (100%)
 create mode 100644 drivers/net/wireless/microchip/Kconfig
 create mode 100644 drivers/net/wireless/microchip/Makefile
 rename drivers/{staging => net/wireless/microchip}/wilc1000/Kconfig (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/Makefile (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/cfg80211.c (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/cfg80211.h (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/fw.h (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/hif.c (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/hif.h (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/mon.c (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/netdev.c (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/netdev.h (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/sdio.c (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/spi.c (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/wlan.c (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/wlan.h (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/wlan_cfg.c (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/wlan_cfg.h (100%)
 rename drivers/{staging => net/wireless/microchip}/wilc1000/wlan_if.h (100%)

diff --git a/drivers/staging/wilc1000/microchip,wilc1000.yaml b/Documentation/devicetree/bindings/net/wireless/microchip,wilc1000.yaml
similarity index 100%
rename from drivers/staging/wilc1000/microchip,wilc1000.yaml
rename to Documentation/devicetree/bindings/net/wireless/microchip,wilc1000.yaml
diff --git a/MAINTAINERS b/MAINTAINERS
index 68f21d46614c..7dae51e32254 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -11362,6 +11362,13 @@ L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 S:	Supported
 F:	drivers/usb/gadget/udc/atmel_usba_udc.*
 
+MICROCHIP WILC1000 WIFI DRIVER
+M:	Adham Abozaeid <adham.abozaeid@microchip.com>
+M:	Ajay Singh <ajay.kathat@microchip.com>
+L:	linux-wireless@vger.kernel.org
+S:	Supported
+F:	drivers/net/wireless/microchip/wilc1000/
+
 MICROCHIP XDMA DRIVER
 M:	Ludovic Desroches <ludovic.desroches@microchip.com>
 L:	linux-arm-kernel@lists.infradead.org
@@ -16251,13 +16258,6 @@ M:	Forest Bond <forest@alittletooquiet.net>
 S:	Odd Fixes
 F:	drivers/staging/vt665?/
 
-STAGING - WILC1000 WIFI DRIVER
-M:	Adham Abozaeid <adham.abozaeid@microchip.com>
-M:	Ajay Singh <ajay.kathat@microchip.com>
-L:	linux-wireless@vger.kernel.org
-S:	Supported
-F:	drivers/staging/wilc1000/
-
 STAGING SUBSYSTEM
 M:	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 L:	devel@driverdev.osuosl.org
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
index 8ab62bb6b853..75f18c1e5009 100644
--- a/drivers/net/wireless/Kconfig
+++ b/drivers/net/wireless/Kconfig
@@ -40,6 +40,7 @@ source "drivers/net/wireless/intel/Kconfig"
 source "drivers/net/wireless/intersil/Kconfig"
 source "drivers/net/wireless/marvell/Kconfig"
 source "drivers/net/wireless/mediatek/Kconfig"
+source "drivers/net/wireless/microchip/Kconfig"
 source "drivers/net/wireless/ralink/Kconfig"
 source "drivers/net/wireless/realtek/Kconfig"
 source "drivers/net/wireless/rsi/Kconfig"
diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile
index 6cfe74515c95..80b324499786 100644
--- a/drivers/net/wireless/Makefile
+++ b/drivers/net/wireless/Makefile
@@ -12,6 +12,7 @@ obj-$(CONFIG_WLAN_VENDOR_INTEL) += intel/
 obj-$(CONFIG_WLAN_VENDOR_INTERSIL) += intersil/
 obj-$(CONFIG_WLAN_VENDOR_MARVELL) += marvell/
 obj-$(CONFIG_WLAN_VENDOR_MEDIATEK) += mediatek/
+obj-$(CONFIG_WLAN_VENDOR_MICROCHIP) += microchip/
 obj-$(CONFIG_WLAN_VENDOR_RALINK) += ralink/
 obj-$(CONFIG_WLAN_VENDOR_REALTEK) += realtek/
 obj-$(CONFIG_WLAN_VENDOR_RSI) += rsi/
diff --git a/drivers/net/wireless/microchip/Kconfig b/drivers/net/wireless/microchip/Kconfig
new file mode 100644
index 000000000000..a6b46fb6b1ec
--- /dev/null
+++ b/drivers/net/wireless/microchip/Kconfig
@@ -0,0 +1,15 @@
+# SPDX-License-Identifier: GPL-2.0
+config WLAN_VENDOR_MICROCHIP
+	bool "Microchip devices"
+	default y
+	help
+	If you have a wireless card belonging to this class, say Y.
+
+	Note that the answer to this question doesn't directly affect the
+	kernel: saying N will just cause the configurator to skip all the
+	questions about these cards. If you say Y, you will be asked for
+	your specific card in the following questions.
+
+if WLAN_VENDOR_MICROCHIP
+source "drivers/net/wireless/microchip/wilc1000/Kconfig"
+endif # WLAN_VENDOR_MICROCHIP
diff --git a/drivers/net/wireless/microchip/Makefile b/drivers/net/wireless/microchip/Makefile
new file mode 100644
index 000000000000..73b763c7393e
--- /dev/null
+++ b/drivers/net/wireless/microchip/Makefile
@@ -0,0 +1,2 @@
+# SPDX-License-Identifier: GPL-2.0
+obj-$(CONFIG_WILC1000)		+= wilc1000/
diff --git a/drivers/staging/wilc1000/Kconfig b/drivers/net/wireless/microchip/wilc1000/Kconfig
similarity index 100%
rename from drivers/staging/wilc1000/Kconfig
rename to drivers/net/wireless/microchip/wilc1000/Kconfig
diff --git a/drivers/staging/wilc1000/Makefile b/drivers/net/wireless/microchip/wilc1000/Makefile
similarity index 100%
rename from drivers/staging/wilc1000/Makefile
rename to drivers/net/wireless/microchip/wilc1000/Makefile
diff --git a/drivers/staging/wilc1000/cfg80211.c b/drivers/net/wireless/microchip/wilc1000/cfg80211.c
similarity index 100%
rename from drivers/staging/wilc1000/cfg80211.c
rename to drivers/net/wireless/microchip/wilc1000/cfg80211.c
diff --git a/drivers/staging/wilc1000/cfg80211.h b/drivers/net/wireless/microchip/wilc1000/cfg80211.h
similarity index 100%
rename from drivers/staging/wilc1000/cfg80211.h
rename to drivers/net/wireless/microchip/wilc1000/cfg80211.h
diff --git a/drivers/staging/wilc1000/fw.h b/drivers/net/wireless/microchip/wilc1000/fw.h
similarity index 100%
rename from drivers/staging/wilc1000/fw.h
rename to drivers/net/wireless/microchip/wilc1000/fw.h
diff --git a/drivers/staging/wilc1000/hif.c b/drivers/net/wireless/microchip/wilc1000/hif.c
similarity index 100%
rename from drivers/staging/wilc1000/hif.c
rename to drivers/net/wireless/microchip/wilc1000/hif.c
diff --git a/drivers/staging/wilc1000/hif.h b/drivers/net/wireless/microchip/wilc1000/hif.h
similarity index 100%
rename from drivers/staging/wilc1000/hif.h
rename to drivers/net/wireless/microchip/wilc1000/hif.h
diff --git a/drivers/staging/wilc1000/mon.c b/drivers/net/wireless/microchip/wilc1000/mon.c
similarity index 100%
rename from drivers/staging/wilc1000/mon.c
rename to drivers/net/wireless/microchip/wilc1000/mon.c
diff --git a/drivers/staging/wilc1000/netdev.c b/drivers/net/wireless/microchip/wilc1000/netdev.c
similarity index 100%
rename from drivers/staging/wilc1000/netdev.c
rename to drivers/net/wireless/microchip/wilc1000/netdev.c
diff --git a/drivers/staging/wilc1000/netdev.h b/drivers/net/wireless/microchip/wilc1000/netdev.h
similarity index 100%
rename from drivers/staging/wilc1000/netdev.h
rename to drivers/net/wireless/microchip/wilc1000/netdev.h
diff --git a/drivers/staging/wilc1000/sdio.c b/drivers/net/wireless/microchip/wilc1000/sdio.c
similarity index 100%
rename from drivers/staging/wilc1000/sdio.c
rename to drivers/net/wireless/microchip/wilc1000/sdio.c
diff --git a/drivers/staging/wilc1000/spi.c b/drivers/net/wireless/microchip/wilc1000/spi.c
similarity index 100%
rename from drivers/staging/wilc1000/spi.c
rename to drivers/net/wireless/microchip/wilc1000/spi.c
diff --git a/drivers/staging/wilc1000/wlan.c b/drivers/net/wireless/microchip/wilc1000/wlan.c
similarity index 100%
rename from drivers/staging/wilc1000/wlan.c
rename to drivers/net/wireless/microchip/wilc1000/wlan.c
diff --git a/drivers/staging/wilc1000/wlan.h b/drivers/net/wireless/microchip/wilc1000/wlan.h
similarity index 100%
rename from drivers/staging/wilc1000/wlan.h
rename to drivers/net/wireless/microchip/wilc1000/wlan.h
diff --git a/drivers/staging/wilc1000/wlan_cfg.c b/drivers/net/wireless/microchip/wilc1000/wlan_cfg.c
similarity index 100%
rename from drivers/staging/wilc1000/wlan_cfg.c
rename to drivers/net/wireless/microchip/wilc1000/wlan_cfg.c
diff --git a/drivers/staging/wilc1000/wlan_cfg.h b/drivers/net/wireless/microchip/wilc1000/wlan_cfg.h
similarity index 100%
rename from drivers/staging/wilc1000/wlan_cfg.h
rename to drivers/net/wireless/microchip/wilc1000/wlan_cfg.h
diff --git a/drivers/staging/wilc1000/wlan_if.h b/drivers/net/wireless/microchip/wilc1000/wlan_if.h
similarity index 100%
rename from drivers/staging/wilc1000/wlan_if.h
rename to drivers/net/wireless/microchip/wilc1000/wlan_if.h
diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
index 4ec5528f89fa..b3fb4d41e231 100644
--- a/drivers/staging/Kconfig
+++ b/drivers/staging/Kconfig
@@ -84,8 +84,6 @@ source "drivers/staging/fbtft/Kconfig"
 
 source "drivers/staging/fsl-dpaa2/Kconfig"
 
-source "drivers/staging/wilc1000/Kconfig"
-
 source "drivers/staging/most/Kconfig"
 
 source "drivers/staging/ks7010/Kconfig"
diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
index 4d34198151b3..3d8c7ea21a10 100644
--- a/drivers/staging/Makefile
+++ b/drivers/staging/Makefile
@@ -32,7 +32,6 @@ obj-$(CONFIG_UNISYSSPAR)	+= unisys/
 obj-$(CONFIG_COMMON_CLK_XLNX_CLKWZRD)	+= clocking-wizard/
 obj-$(CONFIG_FB_TFT)		+= fbtft/
 obj-$(CONFIG_FSL_DPAA2)		+= fsl-dpaa2/
-obj-$(CONFIG_WILC1000)		+= wilc1000/
 obj-$(CONFIG_MOST)		+= most/
 obj-$(CONFIG_KS7010)		+= ks7010/
 obj-$(CONFIG_GREYBUS)		+= greybus/