Bladeren bron

cnss2: Check chip version before accepting wlan registration

There are multiple subversions of one chip, platform driver needs check
chip version info that wlan driver provides to decide whether reject
this registration.

Change-Id: I43bc9cb0c20021a2add3e8e5f812d82c31f217f4
Kai Liu 3 jaren geleden
bovenliggende
commit
6df6dd4662
2 gewijzigde bestanden met toevoegingen van 10 en 0 verwijderingen
  1. 8 0
      cnss2/pci.c
  2. 2 0
      inc/cnss2.h

+ 8 - 0
cnss2/pci.c

@@ -3134,6 +3134,14 @@ int cnss_wlan_register_driver(struct cnss_wlan_driver *driver_ops)
 		return -ENODEV;
 	}
 
+	if (driver_ops->chip_version != CNSS_CHIP_VER_ANY &&
+	    driver_ops->chip_version != plat_priv->device_version.major_version) {
+		cnss_pr_err("Driver built for chip ver 0x%x, enumerated ver 0x%x, reject unsupported driver\n",
+			    driver_ops->chip_version,
+			    plat_priv->device_version.major_version);
+		return -ENODEV;
+	}
+
 	if (!plat_priv->cbc_enabled ||
 	    test_bit(CNSS_COLD_BOOT_CAL_DONE, &plat_priv->driver_state))
 		goto register_driver;

+ 2 - 0
inc/cnss2.h

@@ -9,6 +9,7 @@
 #define CNSS_MAX_FILE_NAME		20
 #define CNSS_MAX_TIMESTAMP_LEN		32
 #define CNSS_MAX_DEV_MEM_NUM		4
+#define CNSS_CHIP_VER_ANY		0
 
 /*
  * Temporary change for compilation, will be removed
@@ -127,6 +128,7 @@ struct cnss_wlan_driver {
 			     struct cnss_uevent_data *uevent);
 	struct cnss_wlan_runtime_ops *runtime_ops;
 	const struct pci_device_id *id_table;
+	u32 chip_version;
 };
 
 struct cnss_ce_tgt_pipe_cfg {