}
 
 static DEVICE_ATTR(hwtype, 0444, ap_hwtype_show, NULL);
+
+static ssize_t ap_raw_hwtype_show(struct device *dev,
+                             struct device_attribute *attr, char *buf)
+{
+       struct ap_device *ap_dev = to_ap_dev(dev);
+
+       return snprintf(buf, PAGE_SIZE, "%d\n", ap_dev->raw_hwtype);
+}
+
+static DEVICE_ATTR(raw_hwtype, 0444, ap_raw_hwtype_show, NULL);
+
 static ssize_t ap_depth_show(struct device *dev, struct device_attribute *attr,
                             char *buf)
 {
 
 static struct attribute *ap_dev_attrs[] = {
        &dev_attr_hwtype.attr,
+       &dev_attr_raw_hwtype.attr,
        &dev_attr_depth.attr,
        &dev_attr_request_count.attr,
        &dev_attr_requestq_count.attr,
                                continue;
                        }
                        break;
+               case 11:
+                       ap_dev->device_type = 10;
+                       break;
                default:
                        ap_dev->device_type = device_type;
                }
+               ap_dev->raw_hwtype = device_type;
 
                rc = ap_query_functions(qid, &device_functions);
                if (!rc)
 
        ap_qid_t qid;                   /* AP queue id. */
        int queue_depth;                /* AP queue depth.*/
        int device_type;                /* AP device type. */
+       int raw_hwtype;                 /* AP raw hardware type. */
        unsigned int functions;         /* AP device function bitfield. */
        int unregistered;               /* marks AP device as unregistered */
        struct timer_list timeout;      /* Timer for request timeouts. */