diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c index 405745c81697..8116f5c88200 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c @@ -937,6 +937,17 @@ int brcmf_fwlog_attach(struct device *dev) return brcmf_debug_fwlog_init(drvr); } +static ssize_t chipname_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct brcmf_bus *bus_if = dev_get_drvdata(dev->parent); + struct brcmf_pub *drvr = bus_if->drvr; + struct brcmf_rev_info *ri = &drvr->revinfo; + + return snprintf(buf, PAGE_SIZE, "%s\n", ri->chipname); +} +static DEVICE_ATTR_RO(chipname); + static int brcmf_revinfo_read(struct seq_file *s, void *data) { struct brcmf_bus *bus_if = dev_get_drvdata(s->private); @@ -1035,6 +1046,13 @@ int brcmf_bus_started(struct device *dev) #endif #endif /* CONFIG_INET */ + /* Create sysfs file to get chip name */ + ret = device_create_file(&drvr->config->wiphy->dev, &dev_attr_chipname); + if (ret) { + brcmf_err("failed to create sysfs file chipname"); + goto fail; + } + return 0; fail: @@ -1087,6 +1105,8 @@ void brcmf_detach(struct device *dev) if (drvr == NULL) return; + device_remove_file(&drvr->config->wiphy->dev, &dev_attr_chipname); + #ifdef CONFIG_INET unregister_inetaddr_notifier(&drvr->inetaddr_notifier); #endif