set dev usb
authorThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Thu, 23 Jun 2016 00:41:18 +0000 (00:41 +0000)
committerThadeu Lima de Souza Cascardo <cascardo@cascardo.eti.br>
Thu, 23 Jun 2016 00:41:18 +0000 (00:41 +0000)
drivers/platform/chromeos.c
drivers/platform/chromeos_ec-fw.c
include/linux/chromeos_platform.h

index ca7ef71..199ad97 100644 (file)
@@ -45,6 +45,11 @@ int chromeos_set_need_recovery(void)
        return vbc_write_byte(RECOVERY_OFFSET, VBNV_RECOVERY_RW_INVALID_OS);
 }
 
+int chromeos_set_dev_usb(void)
+{
+       return vbc_write_byte(4, 0x01);
+}
+
 /*
  * Lifted from vboot_reference:firmware/lib/vboot_nvstorage.c and formatted.
  *
index cf77199..40d9466 100644 (file)
@@ -75,9 +75,21 @@ static ssize_t ec_chip_info_show(struct device *dev,
                         info.vendor, info.name, info.revision);
 }
 
+static ssize_t ec_dev_usb_store(struct device *dev,
+                                struct device_attribute *attr,
+                                const char *buf, size_t count)
+{
+        int err;
+        err = chromeos_set_dev_usb();
+        if (err)
+                return err;
+        return count;
+}
+
 static DEVICE_ATTR(fw_version, S_IRUGO, ec_fw_version_show, NULL);
 static DEVICE_ATTR(build_info, S_IRUGO, ec_build_info_show, NULL);
 static DEVICE_ATTR(chip_info, S_IRUGO, ec_chip_info_show, NULL);
+static DEVICE_ATTR(dev_usb, S_IWUGO, NULL, ec_dev_usb_store);
 
 static struct attribute *ec_fw_attrs[] = {
        &dev_attr_fw_version.attr,
index 32c4510..c02e5fd 100644 (file)
@@ -15,6 +15,7 @@
  * recovery (or reinstall).
  */
 extern int chromeos_set_need_recovery(void);
+extern int chromeos_set_dev_usb(void);
 
 #else
 
@@ -22,6 +23,11 @@ static inline int chromeos_set_need_recovery(void)
 {
        return -ENODEV;
 }
+
+static inline int chromeos_set_dev_usb(void)
+{
+       return -ENODEV;
+}
 #endif /* CONFIG_CHROMEOS */
 
 #endif /* _LINUX_CHROMEOS_PLATFORM_H */