Commit f437c24b authored by Mika Westerberg's avatar Mika Westerberg

thunderbolt: Move NVM upgrade support flag to struct icm

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: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: default avatarYehezkel Bernat <YehezkelShB@gmail.com>
Tested-by: default avatarMario Limonciello <mario.limonciello@dell.com>
parent ce19f91e
...@@ -55,6 +55,7 @@ ...@@ -55,6 +55,7 @@
* @safe_mode: ICM is in safe mode * @safe_mode: ICM is in safe mode
* @max_boot_acl: Maximum number of preboot ACL entries (%0 if not supported) * @max_boot_acl: Maximum number of preboot ACL entries (%0 if not supported)
* @rpm: Does the controller support runtime PM (RTD3) * @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 * @is_supported: Checks if we can support ICM on this controller
* @cio_reset: Trigger CIO reset * @cio_reset: Trigger CIO reset
* @get_mode: Read and return the ICM firmware mode (optional) * @get_mode: Read and return the ICM firmware mode (optional)
...@@ -74,6 +75,7 @@ struct icm { ...@@ -74,6 +75,7 @@ struct icm {
int vnd_cap; int vnd_cap;
bool safe_mode; bool safe_mode;
bool rpm; bool rpm;
bool can_upgrade_nvm;
bool (*is_supported)(struct tb *tb); bool (*is_supported)(struct tb *tb);
int (*cio_reset)(struct tb *tb); int (*cio_reset)(struct tb *tb);
int (*get_mode)(struct tb *tb); int (*get_mode)(struct tb *tb);
...@@ -1913,12 +1915,7 @@ static int icm_start(struct tb *tb) ...@@ -1913,12 +1915,7 @@ static int icm_start(struct tb *tb)
if (IS_ERR(tb->root_switch)) if (IS_ERR(tb->root_switch))
return PTR_ERR(tb->root_switch); return PTR_ERR(tb->root_switch);
/* tb->root_switch->no_nvm_upgrade = !icm->can_upgrade_nvm;
* 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->rpm = icm->rpm; tb->root_switch->rpm = icm->rpm;
ret = tb_switch_add(tb->root_switch); ret = tb_switch_add(tb->root_switch);
...@@ -2021,6 +2018,7 @@ struct tb *icm_probe(struct tb_nhi *nhi) ...@@ -2021,6 +2018,7 @@ struct tb *icm_probe(struct tb_nhi *nhi)
switch (nhi->pdev->device) { switch (nhi->pdev->device) {
case PCI_DEVICE_ID_INTEL_FALCON_RIDGE_2C_NHI: case PCI_DEVICE_ID_INTEL_FALCON_RIDGE_2C_NHI:
case PCI_DEVICE_ID_INTEL_FALCON_RIDGE_4C_NHI: case PCI_DEVICE_ID_INTEL_FALCON_RIDGE_4C_NHI:
icm->can_upgrade_nvm = true;
icm->is_supported = icm_fr_is_supported; icm->is_supported = icm_fr_is_supported;
icm->get_route = icm_fr_get_route; icm->get_route = icm_fr_get_route;
icm->save_devices = icm_fr_save_devices; icm->save_devices = icm_fr_save_devices;
...@@ -2038,6 +2036,13 @@ struct tb *icm_probe(struct tb_nhi *nhi) ...@@ -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_4C_NHI:
case PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_C_2C_NHI: case PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_C_2C_NHI:
icm->max_boot_acl = ICM_AR_PREBOOT_ACL_ENTRIES; 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->is_supported = icm_ar_is_supported;
icm->cio_reset = icm_ar_cio_reset; icm->cio_reset = icm_ar_cio_reset;
icm->get_mode = icm_ar_get_mode; icm->get_mode = icm_ar_get_mode;
...@@ -2054,6 +2059,7 @@ struct tb *icm_probe(struct tb_nhi *nhi) ...@@ -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_2C_NHI:
case PCI_DEVICE_ID_INTEL_TITAN_RIDGE_4C_NHI: case PCI_DEVICE_ID_INTEL_TITAN_RIDGE_4C_NHI:
icm->max_boot_acl = ICM_AR_PREBOOT_ACL_ENTRIES; icm->max_boot_acl = ICM_AR_PREBOOT_ACL_ENTRIES;
icm->can_upgrade_nvm = !x86_apple_machine;
icm->is_supported = icm_ar_is_supported; icm->is_supported = icm_ar_is_supported;
icm->cio_reset = icm_tr_cio_reset; icm->cio_reset = icm_tr_cio_reset;
icm->get_mode = icm_ar_get_mode; icm->get_mode = icm_ar_get_mode;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment