|
@@ -321,25 +321,25 @@ int ata_tport_add(struct device *parent,
|
|
|
/*
|
|
|
* ATA link attributes
|
|
|
*/
|
|
|
+static int noop(int x) { return x; }
|
|
|
|
|
|
-
|
|
|
-#define ata_link_show_linkspeed(field) \
|
|
|
+#define ata_link_show_linkspeed(field, format) \
|
|
|
static ssize_t \
|
|
|
show_ata_link_##field(struct device *dev, \
|
|
|
struct device_attribute *attr, char *buf) \
|
|
|
{ \
|
|
|
struct ata_link *link = transport_class_to_link(dev); \
|
|
|
\
|
|
|
- return sprintf(buf,"%s\n", sata_spd_string(fls(link->field))); \
|
|
|
+ return sprintf(buf, "%s\n", sata_spd_string(format(link->field))); \
|
|
|
}
|
|
|
|
|
|
-#define ata_link_linkspeed_attr(field) \
|
|
|
- ata_link_show_linkspeed(field) \
|
|
|
+#define ata_link_linkspeed_attr(field, format) \
|
|
|
+ ata_link_show_linkspeed(field, format) \
|
|
|
static DEVICE_ATTR(field, S_IRUGO, show_ata_link_##field, NULL)
|
|
|
|
|
|
-ata_link_linkspeed_attr(hw_sata_spd_limit);
|
|
|
-ata_link_linkspeed_attr(sata_spd_limit);
|
|
|
-ata_link_linkspeed_attr(sata_spd);
|
|
|
+ata_link_linkspeed_attr(hw_sata_spd_limit, fls);
|
|
|
+ata_link_linkspeed_attr(sata_spd_limit, fls);
|
|
|
+ata_link_linkspeed_attr(sata_spd, noop);
|
|
|
|
|
|
|
|
|
static DECLARE_TRANSPORT_CLASS(ata_link_class,
|