This updates to backports-4.19.57-1 which contains the wireless subsystem and driver from kernel 4.19.57. The removed patches are applied upstream. Tested-by: Koen Vandeputte <koen.vandeputte@ncentric.com> Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
		
			
				
	
	
		
			102 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From aaf6a5e86e36766abbeedf220462bde8031f9a72 Mon Sep 17 00:00:00 2001
 | 
						|
From: Arend van Spriel <arend.vanspriel@broadcom.com>
 | 
						|
Date: Thu, 14 Feb 2019 13:43:49 +0100
 | 
						|
Subject: [PATCH] brcmfmac: create debugfs files for bus-specific layer
 | 
						|
 | 
						|
Since we moved the drivers debugfs directory under ieee80211 debugfs the
 | 
						|
debugfs entries need to be added after wiphy_register() has been called.
 | 
						|
For most part that has been done accordingly, but for the debugfs entries
 | 
						|
added by SDIO it was not and failed silently. This patch fixes that by
 | 
						|
adding a bus-layer callback for it.
 | 
						|
 | 
						|
Fixes: 856d5a011c86 ("brcmfmac: allocate struct brcmf_pub instance using wiphy_new()")
 | 
						|
Reported-by: Russel King <linux@armlinux.org.uk>
 | 
						|
Reviewed-by: Franky Lin <franky.lin@broadcom.com>
 | 
						|
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
 | 
						|
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
 | 
						|
---
 | 
						|
 .../net/wireless/broadcom/brcm80211/brcmfmac/bus.h   | 10 ++++++++++
 | 
						|
 .../net/wireless/broadcom/brcm80211/brcmfmac/core.c  |  1 +
 | 
						|
 .../net/wireless/broadcom/brcm80211/brcmfmac/sdio.c  | 12 +++++++-----
 | 
						|
 3 files changed, 18 insertions(+), 5 deletions(-)
 | 
						|
 | 
						|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
 | 
						|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
 | 
						|
@@ -90,6 +90,7 @@ struct brcmf_bus_ops {
 | 
						|
 	int (*get_memdump)(struct device *dev, void *data, size_t len);
 | 
						|
 	int (*get_fwname)(struct device *dev, const char *ext,
 | 
						|
 			  unsigned char *fw_name);
 | 
						|
+	void (*debugfs_create)(struct device *dev);
 | 
						|
 };
 | 
						|
 
 | 
						|
 
 | 
						|
@@ -235,6 +236,15 @@ int brcmf_bus_get_fwname(struct brcmf_bu
 | 
						|
 	return bus->ops->get_fwname(bus->dev, ext, fw_name);
 | 
						|
 }
 | 
						|
 
 | 
						|
+static inline
 | 
						|
+void brcmf_bus_debugfs_create(struct brcmf_bus *bus)
 | 
						|
+{
 | 
						|
+	if (!bus->ops->debugfs_create)
 | 
						|
+		return;
 | 
						|
+
 | 
						|
+	return bus->ops->debugfs_create(bus->dev);
 | 
						|
+}
 | 
						|
+
 | 
						|
 /*
 | 
						|
  * interface functions from common layer
 | 
						|
  */
 | 
						|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
 | 
						|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
 | 
						|
@@ -1181,6 +1181,7 @@ static int brcmf_bus_started(struct brcm
 | 
						|
 	brcmf_debugfs_add_entry(drvr, "revinfo", brcmf_revinfo_read);
 | 
						|
 	brcmf_feat_debugfs_create(drvr);
 | 
						|
 	brcmf_proto_debugfs_create(drvr);
 | 
						|
+	brcmf_bus_debugfs_create(bus_if);
 | 
						|
 
 | 
						|
 	return 0;
 | 
						|
 
 | 
						|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
 | 
						|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
 | 
						|
@@ -3154,9 +3154,12 @@ static int brcmf_debugfs_sdio_count_read
 | 
						|
 	return 0;
 | 
						|
 }
 | 
						|
 
 | 
						|
-static void brcmf_sdio_debugfs_create(struct brcmf_sdio *bus)
 | 
						|
+static void brcmf_sdio_debugfs_create(struct device *dev)
 | 
						|
 {
 | 
						|
-	struct brcmf_pub *drvr = bus->sdiodev->bus_if->drvr;
 | 
						|
+	struct brcmf_bus *bus_if = dev_get_drvdata(dev);
 | 
						|
+	struct brcmf_pub *drvr = bus_if->drvr;
 | 
						|
+	struct brcmf_sdio_dev *sdiodev = bus_if->bus_priv.sdio;
 | 
						|
+	struct brcmf_sdio *bus = sdiodev->bus;
 | 
						|
 	struct dentry *dentry = brcmf_debugfs_get_devdir(drvr);
 | 
						|
 
 | 
						|
 	if (IS_ERR_OR_NULL(dentry))
 | 
						|
@@ -3176,7 +3179,7 @@ static int brcmf_sdio_checkdied(struct b
 | 
						|
 	return 0;
 | 
						|
 }
 | 
						|
 
 | 
						|
-static void brcmf_sdio_debugfs_create(struct brcmf_sdio *bus)
 | 
						|
+static void brcmf_sdio_debugfs_create(struct device *dev)
 | 
						|
 {
 | 
						|
 }
 | 
						|
 #endif /* DEBUG */
 | 
						|
@@ -3488,8 +3491,6 @@ static int brcmf_sdio_bus_preinit(struct
 | 
						|
 	if (bus->rxbuf)
 | 
						|
 		bus->rxblen = value;
 | 
						|
 
 | 
						|
-	brcmf_sdio_debugfs_create(bus);
 | 
						|
-
 | 
						|
 	/* the commands below use the terms tx and rx from
 | 
						|
 	 * a device perspective, ie. bus:txglom affects the
 | 
						|
 	 * bus transfers from device to host.
 | 
						|
@@ -4099,6 +4100,7 @@ static const struct brcmf_bus_ops brcmf_
 | 
						|
 	.get_ramsize = brcmf_sdio_bus_get_ramsize,
 | 
						|
 	.get_memdump = brcmf_sdio_bus_get_memdump,
 | 
						|
 	.get_fwname = brcmf_sdio_get_fwname,
 | 
						|
+	.debugfs_create = brcmf_sdio_debugfs_create
 | 
						|
 };
 | 
						|
 
 | 
						|
 #define BRCMF_SDIO_FW_CODE	0
 |