wl18xx: print the PHY firmware version from the private static data
authorLuciano Coelho <coelho@ti.com>
Thu, 10 May 2012 09:14:11 +0000 (12:14 +0300)
committerLuciano Coelho <coelho@ti.com>
Tue, 5 Jun 2012 12:58:24 +0000 (15:58 +0300)
The wl18xx firmware writes the PHY firmware version in the static
data.  Add an operation to parse the static data and print the PHY
firmware version when booting.

Signed-off-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
drivers/net/wireless/ti/wl18xx/main.c
drivers/net/wireless/ti/wl18xx/wl18xx.h

index 24673e37a1dd38a361e9406595fb5658ac9036c9..8262a4f7a10f2af9975546992f8ff45a5f2ab842 100644 (file)
@@ -1016,6 +1016,17 @@ static int wl18xx_debugfs_init(struct wl1271 *wl, struct dentry *rootdir)
        return wl18xx_debugfs_add_files(wl, rootdir);
 }
 
+static int wl18xx_handle_static_data(struct wl1271 *wl,
+                                    struct wl1271_static_data *static_data)
+{
+       struct wl18xx_static_data_priv *static_data_priv =
+               (struct wl18xx_static_data_priv *) static_data->priv;
+
+       wl1271_info("PHY firmware version: %s", static_data_priv->phy_version);
+
+       return 0;
+}
+
 static struct wlcore_ops wl18xx_ops = {
        .identify_chip  = wl18xx_identify_chip,
        .boot           = wl18xx_boot,
@@ -1037,6 +1048,7 @@ static struct wlcore_ops wl18xx_ops = {
        .ap_get_mimo_wide_rate_mask = wl18xx_ap_get_mimo_wide_rate_mask,
        .get_mac        = wl18xx_get_mac,
        .debugfs_init   = wl18xx_debugfs_init,
+       .handle_static_data     = wl18xx_handle_static_data,
 };
 
 /* HT cap appropriate for wide channels */
@@ -1092,6 +1104,7 @@ int __devinit wl18xx_probe(struct platform_device *pdev)
        wl->hw_min_ht_rate = WL18XX_CONF_HW_RXTX_RATE_MCS0;
        wl->fw_status_priv_len = sizeof(struct wl18xx_fw_status_priv);
        wl->stats.fw_stats_len = sizeof(struct wl18xx_acx_statistics);
+       wl->static_data_priv_len = sizeof(struct wl18xx_static_data_priv);
        memcpy(&wl->ht_cap, &wl18xx_ht_cap, sizeof(wl18xx_ht_cap));
        if (ht_mode_param && !strcmp(ht_mode_param, "mimo"))
                memcpy(&wl->ht_cap, &wl18xx_mimo_ht_cap,
index 75abb5b48c6e6c9729564481ea1e999c1ff1607d..34e202bc2bb33ac90b95e8dc051e0d39ca9dc5d2 100644 (file)
@@ -56,6 +56,12 @@ struct wl18xx_fw_status_priv {
        u8 padding[2];
 };
 
+#define WL18XX_PHY_VERSION_MAX_LEN 20
+
+struct wl18xx_static_data_priv {
+       char phy_version[WL18XX_PHY_VERSION_MAX_LEN];
+};
+
 struct wl18xx_clk_cfg {
        u32 n;
        u32 m;