#endif /* CONFIG_IWLWIFI_DEBUG */
 
 
+static ssize_t show_version(struct device *d,
+                               struct device_attribute *attr, char *buf)
+{
+       struct iwl_priv *priv = d->driver_data;
+       struct iwl4965_alive_resp *palive = &priv->card_alive;
+
+       if (palive->is_valid)
+               return sprintf(buf, "fw version: 0x%01X.0x%01X.0x%01X.0x%01X\n"
+                                   "fw type: 0x%01X 0x%01X\n",
+                               palive->ucode_major, palive->ucode_minor,
+                               palive->sw_rev[0], palive->sw_rev[1],
+                               palive->ver_type, palive->ver_subtype);
+
+       else
+               return sprintf(buf, "fw not loaded\n");
+}
+
+static DEVICE_ATTR(version, S_IWUSR | S_IRUGO, show_version, NULL);
+
 static ssize_t show_temperature(struct device *d,
                                struct device_attribute *attr, char *buf)
 {
 #ifdef CONFIG_IWLWIFI_DEBUG
        &dev_attr_debug_level.attr,
 #endif
+       &dev_attr_version.attr,
 
        NULL
 };