Ignore:
Timestamp:
Apr 14, 2017, 9:41:36 PM (10 days ago)
Author:
brainslayer
Message:

kernel update

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/linux/universal/linux-4.9/drivers/platform/x86/asus-wmi.c

    r31574 r31859  
    157157#define ASUS_FAN_CTRL_AUTO              2
    158158
     159#define USB_INTEL_XUSB2PR               0xD0
     160#define PCI_DEVICE_ID_INTEL_LYNXPOINT_LP_XHCI   0x9c31
     161
     162static const char * const ashs_ids[] = { "ATK4001", "ATK4002", NULL };
     163
    159164struct bios_args {
    160165        u32 arg0;
     
    10791084
    10801085        return result;
     1086}
     1087
     1088static void asus_wmi_set_xusb2pr(struct asus_wmi *asus)
     1089{
     1090        struct pci_dev *xhci_pdev;
     1091        u32 orig_ports_available;
     1092        u32 ports_available = asus->driver->quirks->xusb2pr;
     1093
     1094        xhci_pdev = pci_get_device(PCI_VENDOR_ID_INTEL,
     1095                        PCI_DEVICE_ID_INTEL_LYNXPOINT_LP_XHCI,
     1096                        NULL);
     1097
     1098        if (!xhci_pdev)
     1099                return;
     1100
     1101        pci_read_config_dword(xhci_pdev, USB_INTEL_XUSB2PR,
     1102                                &orig_ports_available);
     1103
     1104        pci_write_config_dword(xhci_pdev, USB_INTEL_XUSB2PR,
     1105                                cpu_to_le32(ports_available));
     1106
     1107        pr_info("set USB_INTEL_XUSB2PR old: 0x%04x, new: 0x%04x\n",
     1108                        orig_ports_available, ports_available);
    10811109}
    10821110
     
    20262054}
    20272055
     2056static bool ashs_present(void)
     2057{
     2058        int i = 0;
     2059        while (ashs_ids[i]) {
     2060                if (acpi_dev_found(ashs_ids[i++]))
     2061                        return true;
     2062        }
     2063        return false;
     2064}
     2065
    20282066/*
    20292067 * WMI Driver
     
    20702108                goto fail_leds;
    20712109
     2110        asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_WLAN, &result);
     2111        if (result & (ASUS_WMI_DSTS_PRESENCE_BIT | ASUS_WMI_DSTS_USER_BIT))
     2112                asus->driver->wlan_ctrl_by_user = 1;
     2113
     2114        if (asus->driver->wlan_ctrl_by_user && ashs_present())
     2115                asus->driver->quirks->no_rfkill = 1;
     2116
    20722117        if (!asus->driver->quirks->no_rfkill) {
    20732118                err = asus_wmi_rfkill_init(asus);
     
    20872132        if (asus->driver->quirks->wmi_backlight_native)
    20882133                acpi_video_set_dmi_backlight_type(acpi_backlight_native);
     2134
     2135        if (asus->driver->quirks->xusb2pr)
     2136                asus_wmi_set_xusb2pr(asus);
    20892137
    20902138        if (acpi_video_get_backlight_type() == acpi_backlight_vendor) {
     
    21052153        if (err)
    21062154                goto fail_debugfs;
    2107 
    2108         asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_WLAN, &result);
    2109         if (result & (ASUS_WMI_DSTS_PRESENCE_BIT | ASUS_WMI_DSTS_USER_BIT))
    2110                 asus->driver->wlan_ctrl_by_user = 1;
    21112155
    21122156        return 0;
Note: See TracChangeset for help on using the changeset viewer.