]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
thunderbolt: Move NVM upgrade support flag to struct icm
authorMika Westerberg <mika.westerberg@linux.intel.com>
Wed, 25 Sep 2019 10:05:55 +0000 (13:05 +0300)
committerSeth Forshee <seth.forshee@canonical.com>
Fri, 27 Sep 2019 13:11:35 +0000 (08:11 -0500)
BugLink: http://bugs.launchpad.net/bugs/1844680
This is depends on the controller and on the platform/CPU we are
running. Move it to struct icm so we can set it per controller.

Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Yehezkel Bernat <YehezkelShB@gmail.com>
Tested-by: Mario Limonciello <mario.limonciello@dell.com>
(cherry picked from commit f437c24bf694b0293f835dea8c25e3a5c1433d07)
Signed-off-by: Timo Aaltonen <timo.aaltonen@canonical.com>
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
drivers/thunderbolt/icm.c

index fbdcef56a676f58837f5b7a493e78081631221b8..e9835ab354655d751a11be3d9db6a14a3761c3d2 100644 (file)
@@ -55,6 +55,7 @@
  * @safe_mode: ICM is in safe mode
  * @max_boot_acl: Maximum number of preboot ACL entries (%0 if not supported)
  * @rpm: Does the controller support runtime PM (RTD3)
+ * @can_upgrade_nvm: Can the NVM firmware be upgrade on this controller
  * @is_supported: Checks if we can support ICM on this controller
  * @cio_reset: Trigger CIO reset
  * @get_mode: Read and return the ICM firmware mode (optional)
@@ -74,6 +75,7 @@ struct icm {
        int vnd_cap;
        bool safe_mode;
        bool rpm;
+       bool can_upgrade_nvm;
        bool (*is_supported)(struct tb *tb);
        int (*cio_reset)(struct tb *tb);
        int (*get_mode)(struct tb *tb);
@@ -1913,12 +1915,7 @@ static int icm_start(struct tb *tb)
        if (IS_ERR(tb->root_switch))
                return PTR_ERR(tb->root_switch);
 
-       /*
-        * NVM upgrade has not been tested on Apple systems and they
-        * don't provide images publicly either. To be on the safe side
-        * prevent root switch NVM upgrade on Macs for now.
-        */
-       tb->root_switch->no_nvm_upgrade = x86_apple_machine;
+       tb->root_switch->no_nvm_upgrade = !icm->can_upgrade_nvm;
        tb->root_switch->rpm = icm->rpm;
 
        ret = tb_switch_add(tb->root_switch);
@@ -2021,6 +2018,7 @@ struct tb *icm_probe(struct tb_nhi *nhi)
        switch (nhi->pdev->device) {
        case PCI_DEVICE_ID_INTEL_FALCON_RIDGE_2C_NHI:
        case PCI_DEVICE_ID_INTEL_FALCON_RIDGE_4C_NHI:
+               icm->can_upgrade_nvm = true;
                icm->is_supported = icm_fr_is_supported;
                icm->get_route = icm_fr_get_route;
                icm->save_devices = icm_fr_save_devices;
@@ -2038,6 +2036,13 @@ struct tb *icm_probe(struct tb_nhi *nhi)
        case PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_C_4C_NHI:
        case PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_C_2C_NHI:
                icm->max_boot_acl = ICM_AR_PREBOOT_ACL_ENTRIES;
+               /*
+                * NVM upgrade has not been tested on Apple systems and
+                * they don't provide images publicly either. To be on
+                * the safe side prevent root switch NVM upgrade on Macs
+                * for now.
+                */
+               icm->can_upgrade_nvm = !x86_apple_machine;
                icm->is_supported = icm_ar_is_supported;
                icm->cio_reset = icm_ar_cio_reset;
                icm->get_mode = icm_ar_get_mode;
@@ -2054,6 +2059,7 @@ struct tb *icm_probe(struct tb_nhi *nhi)
        case PCI_DEVICE_ID_INTEL_TITAN_RIDGE_2C_NHI:
        case PCI_DEVICE_ID_INTEL_TITAN_RIDGE_4C_NHI:
                icm->max_boot_acl = ICM_AR_PREBOOT_ACL_ENTRIES;
+               icm->can_upgrade_nvm = !x86_apple_machine;
                icm->is_supported = icm_ar_is_supported;
                icm->cio_reset = icm_tr_cio_reset;
                icm->get_mode = icm_ar_get_mode;