Commit aa3bf280dd3214db5b9e1f8cad7c5868ccbe71b7

Authored by Hauke Mehrtens
Committed by John W. Linville
1 parent 172c69a476

ssb: Add sysfs attributes to ssb devices

Make it possible to read out the attributes, till now only show on
dmesg, through sysfs.

This patch was some time in OpenWrt.

Signed-off-by: Bernhard Loos <bernhardloos@googlemail.com>
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

Showing 1 changed file with 30 additions and 0 deletions Side-by-side Diff

... ... @@ -383,6 +383,35 @@
383 383 ssb_dev->id.revision);
384 384 }
385 385  
  386 +#define ssb_config_attr(attrib, field, format_string) \
  387 +static ssize_t \
  388 +attrib##_show(struct device *dev, struct device_attribute *attr, char *buf) \
  389 +{ \
  390 + return sprintf(buf, format_string, dev_to_ssb_dev(dev)->field); \
  391 +}
  392 +
  393 +ssb_config_attr(core_num, core_index, "%u\n")
  394 +ssb_config_attr(coreid, id.coreid, "0x%04x\n")
  395 +ssb_config_attr(vendor, id.vendor, "0x%04x\n")
  396 +ssb_config_attr(revision, id.revision, "%u\n")
  397 +ssb_config_attr(irq, irq, "%u\n")
  398 +static ssize_t
  399 +name_show(struct device *dev, struct device_attribute *attr, char *buf)
  400 +{
  401 + return sprintf(buf, "%s\n",
  402 + ssb_core_name(dev_to_ssb_dev(dev)->id.coreid));
  403 +}
  404 +
  405 +static struct device_attribute ssb_device_attrs[] = {
  406 + __ATTR_RO(name),
  407 + __ATTR_RO(core_num),
  408 + __ATTR_RO(coreid),
  409 + __ATTR_RO(vendor),
  410 + __ATTR_RO(revision),
  411 + __ATTR_RO(irq),
  412 + __ATTR_NULL,
  413 +};
  414 +
386 415 static struct bus_type ssb_bustype = {
387 416 .name = "ssb",
388 417 .match = ssb_bus_match,
... ... @@ -392,6 +421,7 @@
392 421 .suspend = ssb_device_suspend,
393 422 .resume = ssb_device_resume,
394 423 .uevent = ssb_device_uevent,
  424 + .dev_attrs = ssb_device_attrs,
395 425 };
396 426  
397 427 static void ssb_buses_lock(void)