brcmfmac: support read chipname via sysfs
It adds support of reading chipname via sysfs, so that user space can distinguish WiFi module among AP5256, AP5256V and 1MW. - AP5256 reMarkable: ~/ cat /sys/class/ieee80211/phy*/chipname BCM4345/9 - AP5256V reMarkable: ~/ cat /sys/class/ieee80211/phy*/chipname BCM43012/2 - 1MW reMarkable: ~/ cat /sys/class/ieee80211/phy*/chipname BCM4345/6 Signed-off-by: Shawn Guo <shawn.guo@linaro.org>zero-sugar
parent
a5cf79c3c3
commit
2be45d43a0
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue