On 8/24/24 2:44 PM, Simon Horman wrote:
+ Dan
On Fri, Aug 23, 2024 at 10:38:59PM +0200, Marek Vasut wrote:
On 8/23/24 7:46 PM, Simon Horman wrote:
On Fri, Aug 23, 2024 at 06:08:57PM +0200, Marek Vasut wrote:
Do not use wilc_get_chipid() outside of wlan.c . Instead, call
wilc_get_chipid() right after the SDIO/SPI interface has been
initialized to cache the device chipid, and then use the cached
chipid throughout the driver. Make wilc_get_chipid() static and
remove its prototype from wlan.h .
Signed-off-by: Marek Vasut <marex@xxxxxxx>
...
diff --git a/drivers/net/wireless/microchip/wilc1000/wlan.c b/drivers/net/wireless/microchip/wilc1000/wlan.c
...
@@ -1535,9 +1537,18 @@ int wilc_wlan_init(struct net_device *dev)
if (!wilc->hif_func->hif_is_init(wilc)) {
acquire_bus(wilc, WILC_BUS_ACQUIRE_ONLY);
ret = wilc->hif_func->hif_init(wilc, false);
+ if (!ret)
+ chipid = wilc_get_chipid(wilc);
release_bus(wilc, WILC_BUS_RELEASE_ONLY);
if (ret)
goto fail;
+
+ if (!is_wilc1000(chipid)) {
+ netdev_err(dev, "Unsupported chipid: %x\n", chipid);
+ return -EINVAL;
Hi Marek,
Should this unwind as is the case elsewhere in this function?
It should, will fix in V3, thanks.
ret = -EINVAL;
goto fail;
Flagged by Smatch.
What's the trick here ?
Smatch is here. I don't think there is much of a trick other than running it :)
https://github.com/error27/smatch
Thanks !