thunderbolt: Use bit 31 to check if Firmware CM is running in Tiger Lake
authorMika Westerberg <mika.westerberg@linux.intel.com>
Wed, 17 Jun 2020 16:04:09 +0000 (19:04 +0300)
committerMika Westerberg <mika.westerberg@linux.intel.com>
Thu, 3 Sep 2020 09:06:40 +0000 (12:06 +0300)
In Tiger Lake the Firmware CM is always enabled (so bit 0 is always set)
but it may be in "pass through" mode which means it requires Software CM
instead. This can be determined by checking bit 31 instead.

Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
drivers/thunderbolt/icm.c

index ffcc8c3..b51fc3f 100644 (file)
@@ -1635,11 +1635,14 @@ static void icm_icl_rtd3_veto(struct tb *tb, const struct icm_pkg_header *hdr)
 
 static bool icm_tgl_is_supported(struct tb *tb)
 {
+       u32 val;
+
        /*
         * If the firmware is not running use software CM. This platform
         * should fully support both.
         */
-       return icm_firmware_running(tb->nhi);
+       val = ioread32(tb->nhi->iobase + REG_FW_STS);
+       return !!(val & REG_FW_STS_NVM_AUTH_DONE);
 }
 
 static void icm_handle_notification(struct work_struct *work)