--- /dev/null
+What:          /sys/bus/mhi/devices/.../serialnumber
+Date:          Sept 2020
+KernelVersion: 5.10
+Contact:       Bhaumik Bhatt <bbhatt@codeaurora.org>
+Description:   The file holds the serial number of the client device obtained
+               using a BHI (Boot Host Interface) register read after at least
+               one attempt to power up the device has been done. If read
+               without having the device power on at least once, the file will
+               read all 0's.
+Users:         Any userspace application or clients interested in device info.
+
+What:          /sys/bus/mhi/devices/.../oem_pk_hash
+Date:          Sept 2020
+KernelVersion: 5.10
+Contact:       Bhaumik Bhatt <bbhatt@codeaurora.org>
+Description:   The file holds the OEM PK Hash value of the endpoint device
+               obtained using a BHI (Boot Host Interface) register read after
+               at least one attempt to power up the device has been done. If
+               read without having the device power on at least once, the file
+               will read all 0's.
+Users:         Any userspace application or clients interested in device info.
 
        return mhi_pm_state_str[index];
 }
 
+static ssize_t serial_number_show(struct device *dev,
+                                 struct device_attribute *attr,
+                                 char *buf)
+{
+       struct mhi_device *mhi_dev = to_mhi_device(dev);
+       struct mhi_controller *mhi_cntrl = mhi_dev->mhi_cntrl;
+
+       return snprintf(buf, PAGE_SIZE, "Serial Number: %u\n",
+                       mhi_cntrl->serial_number);
+}
+static DEVICE_ATTR_RO(serial_number);
+
+static ssize_t oem_pk_hash_show(struct device *dev,
+                               struct device_attribute *attr,
+                               char *buf)
+{
+       struct mhi_device *mhi_dev = to_mhi_device(dev);
+       struct mhi_controller *mhi_cntrl = mhi_dev->mhi_cntrl;
+       int i, cnt = 0;
+
+       for (i = 0; i < ARRAY_SIZE(mhi_cntrl->oem_pk_hash); i++)
+               cnt += snprintf(buf + cnt, PAGE_SIZE - cnt,
+                               "OEMPKHASH[%d]: 0x%x\n", i,
+                               mhi_cntrl->oem_pk_hash[i]);
+
+       return cnt;
+}
+static DEVICE_ATTR_RO(oem_pk_hash);
+
+static struct attribute *mhi_dev_attrs[] = {
+       &dev_attr_serial_number.attr,
+       &dev_attr_oem_pk_hash.attr,
+       NULL,
+};
+ATTRIBUTE_GROUPS(mhi_dev);
+
 /* MHI protocol requires the transfer ring to be aligned with ring length */
 static int mhi_alloc_aligned_ring(struct mhi_controller *mhi_cntrl,
                                  struct mhi_ring *ring,
        .dev_name = "mhi",
        .match = mhi_match,
        .uevent = mhi_uevent,
+       .dev_groups = mhi_dev_groups,
 };
 
 static int __init mhi_init(void)