Author: adrian
Date: Fri Aug  2 21:23:28 2013
New Revision: 253897
URL: http://svnweb.freebsd.org/changeset/base/253897

Log:
  Break out the iwn(4) device IDs into if_iwn_devid.h, as well as add
  IDs for new devices.
  
  * Add new device IDs
  * Extend the ID probe code to include the newer range of bits used
    by later model devices
  
  Tested:
  
  * Intel 5100, STA mode
  
  TODO:
  
  * Test on Intel 4965, just to be sure
  
  Submitted by: Cedric GROSS <c...@gross.info>

Added:
  head/sys/dev/iwn/if_iwn_devid.h   (contents, props changed)
Modified:
  head/sys/dev/iwn/if_iwn.c
  head/sys/dev/iwn/if_iwnreg.h

Modified: head/sys/dev/iwn/if_iwn.c
==============================================================================
--- head/sys/dev/iwn/if_iwn.c   Fri Aug  2 20:32:26 2013        (r253896)
+++ head/sys/dev/iwn/if_iwn.c   Fri Aug  2 21:23:28 2013        (r253897)
@@ -74,6 +74,7 @@ __FBSDID("$FreeBSD$");
 
 #include <dev/iwn/if_iwnreg.h>
 #include <dev/iwn/if_iwnvar.h>
+#include <dev/iwn/if_iwn_devid.h>
 
 struct iwn_ident {
        uint16_t        vendor;
@@ -82,40 +83,40 @@ struct iwn_ident {
 };
 
 static const struct iwn_ident iwn_ident_table[] = {
-       { 0x8086, 0x0082, "Intel Centrino Advanced-N 6205"              },
-       { 0x8086, 0x0083, "Intel Centrino Wireless-N 1000"              },
-       { 0x8086, 0x0084, "Intel Centrino Wireless-N 1000"              },
-       { 0x8086, 0x0085, "Intel Centrino Advanced-N 6205"              },
-       { 0x8086, 0x0087, "Intel Centrino Advanced-N + WiMAX 6250"      },
-       { 0x8086, 0x0089, "Intel Centrino Advanced-N + WiMAX 6250"      },
-       { 0x8086, 0x008a, "Intel Centrino Wireless-N 1030"              },
-       { 0x8086, 0x008b, "Intel Centrino Wireless-N 1030"              },
-       { 0x8086, 0x0090, "Intel Centrino Advanced-N 6230"              },
-       { 0x8086, 0x0091, "Intel Centrino Advanced-N 6230"              },
-       { 0x8086, 0x0885, "Intel Centrino Wireless-N + WiMAX 6150"      },
-       { 0x8086, 0x0886, "Intel Centrino Wireless-N + WiMAX 6150"      },
-       { 0x8086, 0x0887, "Intel Centrino Wireless-N 2230"              },
-       { 0x8086, 0x0888, "Intel Centrino Wireless-N 2230"              },
-       { 0x8086, 0x0896, "Intel Centrino Wireless-N 130"               },
-       { 0x8086, 0x0897, "Intel Centrino Wireless-N 130"               },
-       { 0x8086, 0x08ae, "Intel Centrino Wireless-N 100"               },
-       { 0x8086, 0x08af, "Intel Centrino Wireless-N 100"               },
-       { 0x8086, 0x4229, "Intel Wireless WiFi Link 4965"               },
-       { 0x8086, 0x422b, "Intel Centrino Ultimate-N 6300"              },
-       { 0x8086, 0x422c, "Intel Centrino Advanced-N 6200"              },
-       { 0x8086, 0x422d, "Intel Wireless WiFi Link 4965"               },
-       { 0x8086, 0x4230, "Intel Wireless WiFi Link 4965"               },
-       { 0x8086, 0x4232, "Intel WiFi Link 5100"                        },
-       { 0x8086, 0x4233, "Intel Wireless WiFi Link 4965"               },
-       { 0x8086, 0x4235, "Intel Ultimate N WiFi Link 5300"             },
-       { 0x8086, 0x4236, "Intel Ultimate N WiFi Link 5300"             },
-       { 0x8086, 0x4237, "Intel WiFi Link 5100"                        },
-       { 0x8086, 0x4238, "Intel Centrino Ultimate-N 6300"              },
-       { 0x8086, 0x4239, "Intel Centrino Advanced-N 6200"              },
-       { 0x8086, 0x423a, "Intel WiMAX/WiFi Link 5350"                  },
-       { 0x8086, 0x423b, "Intel WiMAX/WiFi Link 5350"                  },
-       { 0x8086, 0x423c, "Intel WiMAX/WiFi Link 5150"                  },
-       { 0x8086, 0x423d, "Intel WiMAX/WiFi Link 5150"                  },
+       { 0x8086, IWN_DID_6x05_1, "Intel Centrino Advanced-N 6205"              
},
+       { 0x8086, IWN_DID_1000_1, "Intel Centrino Wireless-N 1000"              
},
+       { 0x8086, IWN_DID_1000_2, "Intel Centrino Wireless-N 1000"              
},
+       { 0x8086, IWN_DID_6x05_2, "Intel Centrino Advanced-N 6205"              
},
+       { 0x8086, IWN_DID_6050_1, "Intel Centrino Advanced-N + WiMAX 6250"      
},
+       { 0x8086, IWN_DID_6050_2, "Intel Centrino Advanced-N + WiMAX 6250"      
},
+       { 0x8086, IWN_DID_x030_1, "Intel Centrino Wireless-N 1030"              
},
+       { 0x8086, IWN_DID_x030_2, "Intel Centrino Wireless-N 1030"              
},
+       { 0x8086, IWN_DID_x030_3, "Intel Centrino Advanced-N 6230"              
},
+       { 0x8086, IWN_DID_x030_4, "Intel Centrino Advanced-N 6230"              
},
+       { 0x8086, IWN_DID_6150_1, "Intel Centrino Wireless-N + WiMAX 6150"      
},
+       { 0x8086, IWN_DID_6150_2, "Intel Centrino Wireless-N + WiMAX 6150"      
},
+       { 0x8086, IWN_DID_2x30_1, "Intel Centrino Wireless-N 2230"              
},
+       { 0x8086, IWN_DID_2x30_2, "Intel Centrino Wireless-N 2230"              
},
+       { 0x8086, IWN_DID_130_1, "Intel Centrino Wireless-N 130"                
},
+       { 0x8086, IWN_DID_130_2, "Intel Centrino Wireless-N 130"                
},
+       { 0x8086, IWN_DID_100_1, "Intel Centrino Wireless-N 100"                
},
+       { 0x8086, IWN_DID_100_2, "Intel Centrino Wireless-N 100"                
},
+       { 0x8086, IWN_DID_4965_1, "Intel Wireless WiFi Link 4965"               
},
+       { 0x8086, IWN_DID_6x00_1, "Intel Centrino Ultimate-N 6300"              
},
+       { 0x8086, IWN_DID_6x00_2, "Intel Centrino Advanced-N 6200"              
},
+       { 0x8086, IWN_DID_4965_2, "Intel Wireless WiFi Link 4965"               
},
+       { 0x8086, IWN_DID_4965_3, "Intel Wireless WiFi Link 4965"               
},
+       { 0x8086, IWN_DID_5x00_1, "Intel WiFi Link 5100"                        
},
+       { 0x8086, IWN_DID_4965_4, "Intel Wireless WiFi Link 4965"               
},
+       { 0x8086, IWN_DID_5x00_3, "Intel Ultimate N WiFi Link 5300"             
},
+       { 0x8086, IWN_DID_5x00_4, "Intel Ultimate N WiFi Link 5300"             
},
+       { 0x8086, IWN_DID_5x00_2, "Intel WiFi Link 5100"                        
},
+       { 0x8086, IWN_DID_6x00_3, "Intel Centrino Ultimate-N 6300"              
},
+       { 0x8086, IWN_DID_6x00_4, "Intel Centrino Advanced-N 6200"              
},
+       { 0x8086, IWN_DID_5x50_1, "Intel WiMAX/WiFi Link 5350"                  
},
+       { 0x8086, IWN_DID_5x50_2, "Intel WiMAX/WiFi Link 5350"                  
},
+       { 0x8086, IWN_DID_5x50_3, "Intel WiMAX/WiFi Link 5150"                  
},
+       { 0x8086, IWN_DID_5x50_4, "Intel WiMAX/WiFi Link 5150"                  
},
        { 0, 0, NULL }
 };
 
@@ -518,7 +519,8 @@ iwn_attach(device_t dev)
        IWN_LOCK_INIT(sc);
 
        /* Read hardware revision and attach. */
-       sc->hw_type = (IWN_READ(sc, IWN_HW_REV) >> 4) & 0xf;
+       sc->hw_type = (IWN_READ(sc, IWN_HW_REV) >> IWN_HW_REV_TYPE_SHIFT)
+           & IWN_HW_REV_TYPE_MASK;
        if (sc->hw_type == IWN_HW_REV_TYPE_4965)
                error = iwn4965_attach(sc, pci_get_device(dev));
        else

Added: head/sys/dev/iwn/if_iwn_devid.h
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/sys/dev/iwn/if_iwn_devid.h     Fri Aug  2 21:23:28 2013        
(r253897)
@@ -0,0 +1,294 @@
+/*-
+ * Copyright (c) 2013 Cedric GROSS <c...@cgross.info>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef        __IF_IWN_DEVID_H__
+#define        __IF_IWN_DEVID_H__
+
+#define        IWN_HW_REV_TYPE_SHIFT   4
+#define        IWN_HW_REV_TYPE_MASK    0x1f
+
+/* Device revision */
+#define        IWN_HW_REV_TYPE_4965    0
+#define        IWN_HW_REV_TYPE_5300    2
+#define        IWN_HW_REV_TYPE_5350    3
+#define        IWN_HW_REV_TYPE_5150    4
+#define        IWN_HW_REV_TYPE_5100    5
+#define        IWN_HW_REV_TYPE_1000    6
+#define        IWN_HW_REV_TYPE_6000    7
+#define        IWN_HW_REV_TYPE_6050    8
+#define        IWN_HW_REV_TYPE_6005    11
+#define        IWN_HW_REV_TYPE_2030    12
+#define        IWN_HW_REV_TYPE_2000    16
+#define        IWN_HW_REV_TYPE_105     17
+#define        IWN_HW_REV_TYPE_135     18
+
+ /* ==========================================================================
+ * DEVICE ID BLOCK
+ * ==========================================================================
+*/
+/*
+ * --------------------------------------------------------------------------
+ * Device ID for 2x30 series
+ * --------------------------------------------------------------------------
+ */
+#define        IWN_DID_2x30_1          0x0887
+#define        IWN_DID_2x30_2          0x0888
+/* SubDevice ID */
+#define        IWN_SDID_2x30_1         0x4062
+#define        IWN_SDID_2x30_2         0x4262
+#define        IWN_SDID_2x30_3         0x4462
+#define        IWN_SDID_2x30_4         0x4066
+#define        IWN_SDID_2x30_5         0x4266
+#define        IWN_SDID_2x30_6         0x4466
+/*
+ * --------------------------------------------------------------------------
+ * Device ID for 1000 series
+ * --------------------------------------------------------------------------
+ */
+#define        IWN_DID_1000_1          0x0083
+#define        IWN_DID_1000_2          0x0084
+/* SubDevice ID */
+#define        IWN_SDID_1000_1         0x1205
+#define        IWN_SDID_1000_2         0x1305
+#define        IWN_SDID_1000_3         0x1225
+#define        IWN_SDID_1000_4         0x1325
+#define        IWN_SDID_1000_5         0x1215
+#define        IWN_SDID_1000_6         0x1315
+#define        IWN_SDID_1000_7         0x1206
+#define        IWN_SDID_1000_8         0x1306
+#define        IWN_SDID_1000_9         0x1226
+#define        IWN_SDID_1000_10        0x1326
+#define        IWN_SDID_1000_11        0x1216
+#define        IWN_SDID_1000_12        0x1316
+
+/*
+ * --------------------------------------------------------------------------
+ * Device ID for 6x00 series
+ * --------------------------------------------------------------------------
+ */
+#define        IWN_DID_6x00_1          0x422B
+#define        IWN_DID_6x00_2          0x422C
+#define        IWN_DID_6x00_3          0x4238
+#define        IWN_DID_6x00_4          0x4239
+/* SubDevice ID */
+#define        IWN_SDID_6x00_1         0x1101
+#define        IWN_SDID_6x00_2         0x1121
+#define        IWN_SDID_6x00_3         0x1301
+#define        IWN_SDID_6x00_4         0x1306
+#define        IWN_SDID_6x00_5         0x1307
+#define        IWN_SDID_6x00_6         0x1321
+#define        IWN_SDID_6x00_7         0x1326
+#define        IWN_SDID_6x00_8         0x1111
+#define        IWN_SDID_6x00_9         0x1311
+#define        IWN_SDID_6x00_10        0x1316
+/*
+ * --------------------------------------------------------------------------
+ * Device ID for 6x05 series
+ * --------------------------------------------------------------------------
+ */
+#define        IWN_DID_6x05_1          0x0082
+#define        IWN_DID_6x05_2          0x0085
+/* SubDevice ID */
+#define        IWN_SDID_6x05_1         0x1301
+#define        IWN_SDID_6x05_2         0x1306
+#define        IWN_SDID_6x05_3         0x1307
+#define        IWN_SDID_6x05_4         0x1321
+#define        IWN_SDID_6x05_5         0x1326
+#define        IWN_SDID_6x05_6         0x1311
+#define        IWN_SDID_6x05_7         0x1316
+#define        IWN_SDID_6x05_8         0xC020
+#define        IWN_SDID_6x05_9         0xC220
+#define        IWN_SDID_6x05_10        0x4820
+#define        IWN_SDID_6x05_11        0x1304
+#define        IWN_SDID_6x05_12        0x1305
+/*
+ * --------------------------------------------------------------------------
+ * Device ID for 6050 WiFi/WiMax Series
+ * --------------------------------------------------------------------------
+ */
+#define        IWN_DID_6050_1          0x0087
+#define        IWN_DID_6050_2          0x0089
+/* SubDevice ID */
+#define        IWN_SDID_6050_1         0x1301
+#define        IWN_SDID_6050_2         0x1306
+#define        IWN_SDID_6050_3         0x1321
+#define        IWN_SDID_6050_4         0x1326
+#define        IWN_SDID_6050_5         0x1311
+#define        IWN_SDID_6050_6         0x1316
+/*
+ * --------------------------------------------------------------------------
+ * Device ID for 6150 Series
+ * --------------------------------------------------------------------------
+ */
+#define        IWN_DID_6150_1          0x0885
+#define        IWN_DID_6150_2          0x0886
+/* SubDevice ID */
+#define        IWN_SDID_6150_1         0x1305
+#define        IWN_SDID_6150_2         0x1307
+#define        IWN_SDID_6150_3         0x1325
+#define        IWN_SDID_6150_4         0x1327
+#define        IWN_SDID_6150_5         0x1315
+#define        IWN_SDID_6150_6         0x1317
+/*
+ * --------------------------------------------------------------------------
+ * Device ID for 6035 Series
+ * --------------------------------------------------------------------------
+ */
+#define        IWN_DID_6035_1          0x088E
+#define        IWN_DID_6035_2          0x088F
+/* SubDevice ID */
+#define        IWN_SDID_6035_1         0x4060
+#define        IWN_SDID_6035_2         0x4260
+#define        IWN_SDID_6035_3         0x4460
+#define        IWN_SDID_6035_4         0x4860
+/*
+ * --------------------------------------------------------------------------
+ * Device ID for 1030 and 6030 Series
+ * --------------------------------------------------------------------------
+ */
+#define        IWN_DID_x030_1          0x008A
+#define        IWN_DID_x030_2          0x008B
+#define        IWN_DID_x030_3          0x0090
+#define        IWN_DID_x030_4          0x0091
+/* SubDevice ID */
+#define        IWN_SDID_x030_1         0x5305
+#define        IWN_SDID_x030_2         0x5307
+#define        IWN_SDID_x030_3         0x5325
+#define        IWN_SDID_x030_4         0x5327
+#define        IWN_SDID_x030_5         0x5315
+#define        IWN_SDID_x030_6         0x5317
+#define        IWN_SDID_x030_7         0x5211
+#define        IWN_SDID_x030_8         0x5215
+#define        IWN_SDID_x030_9         0x5216
+#define        IWN_SDID_x030_10        0x5201
+#define        IWN_SDID_x030_11        0x5205
+#define        IWN_SDID_x030_12        0x5206
+#define        IWN_SDID_x030_13        0x5207
+#define        IWN_SDID_x030_14        0x5221
+#define        IWN_SDID_x030_15        0x5225
+#define        IWN_SDID_x030_16        0x5226
+/*
+ * --------------------------------------------------------------------------
+ * Device ID for 130 Series
+ * --------------------------------------------------------------------------
+ */
+#define        IWN_DID_130_1           0x0896
+#define        IWN_DID_130_2           0x0897
+/* SubDevice ID */
+#define        IWN_SDID_130_1          0x5005
+#define        IWN_SDID_130_2          0x5007
+#define        IWN_SDID_130_3          0x5015
+#define        IWN_SDID_130_4          0x5017
+#define        IWN_SDID_130_5          0x5025
+#define        IWN_SDID_130_6          0x5027
+
+/*
+ * --------------------------------------------------------------------------
+ * Device ID for 100 Series
+ * --------------------------------------------------------------------------
+ */
+#define        IWN_DID_100_1           0x08AE
+#define        IWN_DID_100_2           0x08AF
+/* SubDevice ID */
+#define        IWN_SDID_100_1          0x1005
+#define        IWN_SDID_100_2          0x1007
+#define        IWN_SDID_100_3          0x1015
+#define        IWN_SDID_100_4          0x1017
+#define        IWN_SDID_100_5          0x1025
+#define        IWN_SDID_100_6          0x1027
+
+/*
+ * --------------------------------------------------------------------------
+ * Device ID for 5x00 Series
+ * --------------------------------------------------------------------------
+ */
+#define        IWN_DID_5x00_1          0x4232
+#define        IWN_DID_5x00_2          0x4237
+#define        IWN_DID_5x00_3          0x4235
+#define        IWN_DID_5x00_4          0x4236
+/* SubDevice ID */
+#define        IWN_SDID_5x00_1         0x1201
+#define        IWN_SDID_5x00_2         0x1301
+#define        IWN_SDID_5x00_3         0x1204
+#define        IWN_SDID_5x00_4         0x1304
+#define        IWN_SDID_5x00_5         0x1205
+#define        IWN_SDID_5x00_6         0x1305
+#define        IWN_SDID_5x00_7         0x1206
+#define        IWN_SDID_5x00_8         0x1306
+#define        IWN_SDID_5x00_9         0x1221
+#define        IWN_SDID_5x00_10                0x1321
+#define        IWN_SDID_5x00_11                0x1224
+#define        IWN_SDID_5x00_12                0x1324
+#define        IWN_SDID_5x00_13                0x1225
+#define        IWN_SDID_5x00_14                0x1325
+#define        IWN_SDID_5x00_15                0x1226
+#define        IWN_SDID_5x00_16                0x1326
+#define        IWN_SDID_5x00_17                0x1211
+#define        IWN_SDID_5x00_18                0x1311
+#define        IWN_SDID_5x00_19                0x1214
+#define        IWN_SDID_5x00_20                0x1314
+#define        IWN_SDID_5x00_21                0x1215
+#define        IWN_SDID_5x00_22                0x1315
+#define        IWN_SDID_5x00_23                0x1216
+#define        IWN_SDID_5x00_24                0x1316
+#define        IWN_SDID_5x00_25                0x1021
+#define        IWN_SDID_5x00_26                0x1121
+#define        IWN_SDID_5x00_27                0x1024
+#define        IWN_SDID_5x00_28                0x1124
+#define        IWN_SDID_5x00_29                0x1001
+#define        IWN_SDID_5x00_30                0x1101
+#define        IWN_SDID_5x00_31                0x1004
+#define        IWN_SDID_5x00_32                0x1104
+#define        IWN_SDID_5x00_33                0x1011
+#define        IWN_SDID_5x00_34                0x1111
+#define        IWN_SDID_5x00_35                0x1014
+#define        IWN_SDID_5x00_36                0x1114
+/*
+ * --------------------------------------------------------------------------
+ * Device ID for 5x50 Series
+ * --------------------------------------------------------------------------
+ */
+#define        IWN_DID_5x50_1          0x423A
+#define        IWN_DID_5x50_2          0x423B
+#define        IWN_DID_5x50_3          0x423C
+#define        IWN_DID_5x50_4          0x423D
+/* SubDevice ID */
+#define        IWN_SDID_5x50_1         0x1001
+#define        IWN_SDID_5x50_2         0x1021
+#define        IWN_SDID_5x50_3         0x1011
+#define        IWN_SDID_5x50_4         0x1201
+#define        IWN_SDID_5x50_5         0x1301
+#define        IWN_SDID_5x50_6         0x1206
+#define        IWN_SDID_5x50_7         0x1306
+#define        IWN_SDID_5x50_8         0x1221
+#define        IWN_SDID_5x50_9         0x1321
+#define        IWN_SDID_5x50_10                0x1211
+#define        IWN_SDID_5x50_11                0x1311
+#define        IWN_SDID_5x50_12                0x1216
+#define        IWN_SDID_5x50_13                0x1316
+/*
+ * --------------------------------------------------------------------------
+ * Device ID for 4965 Series
+ * --------------------------------------------------------------------------
+ */
+#define        IWN_DID_4965_1          0x4229
+#define        IWN_DID_4965_2          0x422d
+#define        IWN_DID_4965_3          0x4230
+#define        IWN_DID_4965_4          0x4233
+
+#endif /* ! __IF_IWN_DEVID_H__ */

Modified: head/sys/dev/iwn/if_iwnreg.h
==============================================================================
--- head/sys/dev/iwn/if_iwnreg.h        Fri Aug  2 20:32:26 2013        
(r253896)
+++ head/sys/dev/iwn/if_iwnreg.h        Fri Aug  2 21:23:28 2013        
(r253897)
@@ -200,19 +200,6 @@
 #define IWN_GP_CNTRL_SLEEP             (1 << 4)
 #define IWN_GP_CNTRL_RFKILL            (1 << 27)
 
-/* Possible flags for register IWN_HW_REV. */
-#define IWN_HW_REV_TYPE_SHIFT  4
-#define IWN_HW_REV_TYPE_MASK   0x000000f0
-#define IWN_HW_REV_TYPE_4965   0
-#define IWN_HW_REV_TYPE_5300   2
-#define IWN_HW_REV_TYPE_5350   3
-#define IWN_HW_REV_TYPE_5150   4
-#define IWN_HW_REV_TYPE_5100   5
-#define IWN_HW_REV_TYPE_1000   6
-#define IWN_HW_REV_TYPE_6000   7
-#define IWN_HW_REV_TYPE_6050   8
-#define IWN_HW_REV_TYPE_6005   11
-
 /* Possible flags for register IWN_GIO_CHICKEN. */
 #define IWN_GIO_CHICKEN_L1A_NO_L0S_RX  (1 << 23)
 #define IWN_GIO_CHICKEN_DIS_L0S_TIMER  (1 << 29)
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to