#define HCI_LCD_BRIGHTNESS             0x002a
 #define HCI_WIRELESS                   0x0056
 #define HCI_ACCELEROMETER              0x006d
+#define HCI_COOLING_METHOD             0x007f
 #define HCI_KBD_ILLUMINATION           0x0095
 #define HCI_ECO_MODE                   0x0097
 #define HCI_ACCELEROMETER2             0x00a6
        int usbsc_bat_level;
        int usbsc_mode_base;
        int hotkey_event_type;
+       int max_cooling_method;
 
        unsigned int illumination_supported:1;
        unsigned int video_supported:1;
        unsigned int panel_power_on_supported:1;
        unsigned int usb_three_supported:1;
        unsigned int wwan_supported:1;
+       unsigned int cooling_method_supported:1;
        unsigned int sysfs_created:1;
        unsigned int special_functions;
 
        return out[0] == TOS_SUCCESS ? 0 : -EIO;
 }
 
+/* Cooling Method */
+static void toshiba_cooling_method_available(struct toshiba_acpi_dev *dev)
+{
+       u32 in[TCI_WORDS] = { HCI_GET, HCI_COOLING_METHOD, 0, 0, 0, 0 };
+       u32 out[TCI_WORDS];
+       acpi_status status;
+
+       dev->cooling_method_supported = 0;
+       dev->max_cooling_method = 0;
+
+       status = tci_raw(dev, in, out);
+       if (ACPI_FAILURE(status))
+               pr_err("ACPI call to get Cooling Method failed\n");
+
+       if (out[0] != TOS_SUCCESS && out[0] != TOS_SUCCESS2)
+               return;
+
+       dev->cooling_method_supported = 1;
+       dev->max_cooling_method = out[3];
+}
+
+static int toshiba_cooling_method_get(struct toshiba_acpi_dev *dev, u32 *state)
+{
+       u32 result = hci_read(dev, HCI_COOLING_METHOD, state);
+
+       if (result == TOS_FAILURE)
+               pr_err("ACPI call to get Cooling Method failed\n");
+
+       if (result == TOS_NOT_SUPPORTED)
+               return -ENODEV;
+
+       return (result == TOS_SUCCESS || result == TOS_SUCCESS2) ? 0 : -EIO;
+}
+
+static int toshiba_cooling_method_set(struct toshiba_acpi_dev *dev, u32 state)
+{
+       u32 result = hci_write(dev, HCI_COOLING_METHOD, state);
+
+       if (result == TOS_FAILURE)
+               pr_err("ACPI call to get Cooling Method failed\n");
+
+       if (result == TOS_NOT_SUPPORTED)
+               return -ENODEV;
+
+       return (result == TOS_SUCCESS || result == TOS_SUCCESS2) ? 0 : -EIO;
+}
+
 /* Transflective Backlight */
 static int get_tr_backlight_status(struct toshiba_acpi_dev *dev, u32 *status)
 {
                pr_cont(" usb3");
        if (dev->wwan_supported)
                pr_cont(" wwan");
+       if (dev->cooling_method_supported)
+               pr_cont(" cooling-method");
 
        pr_cont("\n");
 }
        if (dev->wwan_supported)
                toshiba_acpi_setup_wwan_rfkill(dev);
 
+       toshiba_cooling_method_available(dev);
+
        print_supported_features(dev);
 
        ret = sysfs_create_group(&dev->acpi_dev->dev.kobj,