cxgb4: Add support to S25FL032P flash
authorHariprasad Shenai <hariprasad@chelsio.com>
Wed, 10 Sep 2014 12:14:28 +0000 (17:44 +0530)
committerDavid S. Miller <davem@davemloft.net>
Wed, 10 Sep 2014 21:01:54 +0000 (14:01 -0700)
Add support for Spansion S25FL032P flash
Based on original work by Dimitris Michailidis

Signed-off-by: Hariprasad Shenai <hariprasad@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c

index 41d04462b72eb158f7699c38000e6331291d2447..7d4cc28ca36525dc2a1006614a9239e9c4a7fb00 100644 (file)
@@ -3850,8 +3850,20 @@ int t4_wait_dev_ready(struct adapter *adap)
        return t4_read_reg(adap, PL_WHOAMI) != 0xffffffff ? 0 : -EIO;
 }
 
+struct flash_desc {
+       u32 vendor_and_model_id;
+       u32 size_mb;
+};
+
 static int get_flash_params(struct adapter *adap)
 {
+       /* Table for non-Numonix supported flash parts.  Numonix parts are left
+        * to the preexisting code.  All flash parts have 64KB sectors.
+        */
+       static struct flash_desc supported_flash[] = {
+               { 0x150201, 4 << 20 },       /* Spansion 4MB S25FL032P */
+       };
+
        int ret;
        u32 info;
 
@@ -3862,6 +3874,14 @@ static int get_flash_params(struct adapter *adap)
        if (ret)
                return ret;
 
+       for (ret = 0; ret < ARRAY_SIZE(supported_flash); ++ret)
+               if (supported_flash[ret].vendor_and_model_id == info) {
+                       adap->params.sf_size = supported_flash[ret].size_mb;
+                       adap->params.sf_nsec =
+                               adap->params.sf_size / SF_SEC_SIZE;
+                       return 0;
+               }
+
        if ((info & 0xff) != 0x20)             /* not a Numonix flash */
                return -EINVAL;
        info >>= 16;                           /* log2 of size */