diff options
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/fec.c | 125 | ||||
-rw-r--r-- | drivers/net/ibm_newemac/core.c | 33 | ||||
-rw-r--r-- | drivers/net/ibm_newemac/emac.h | 19 | ||||
-rw-r--r-- | drivers/net/ibm_newemac/phy.c | 7 | ||||
-rw-r--r-- | drivers/net/pcmcia/smc91c92_cs.c | 2 | ||||
-rw-r--r-- | drivers/net/sungem.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/hostap/hostap_cs.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/orinoco/orinoco_cs.c | 5 |
8 files changed, 144 insertions, 52 deletions
diff --git a/drivers/net/fec.c b/drivers/net/fec.c index 5b631fe74738..e8266ccf818a 100644 --- a/drivers/net/fec.c +++ b/drivers/net/fec.c | |||
@@ -44,6 +44,10 @@ | |||
44 | #include <linux/platform_device.h> | 44 | #include <linux/platform_device.h> |
45 | #include <linux/phy.h> | 45 | #include <linux/phy.h> |
46 | #include <linux/fec.h> | 46 | #include <linux/fec.h> |
47 | #include <linux/of.h> | ||
48 | #include <linux/of_device.h> | ||
49 | #include <linux/of_gpio.h> | ||
50 | #include <linux/of_net.h> | ||
47 | 51 | ||
48 | #include <asm/cacheflush.h> | 52 | #include <asm/cacheflush.h> |
49 | 53 | ||
@@ -66,17 +70,42 @@ | |||
66 | #define FEC_QUIRK_ENET_MAC (1 << 0) | 70 | #define FEC_QUIRK_ENET_MAC (1 << 0) |
67 | /* Controller needs driver to swap frame */ | 71 | /* Controller needs driver to swap frame */ |
68 | #define FEC_QUIRK_SWAP_FRAME (1 << 1) | 72 | #define FEC_QUIRK_SWAP_FRAME (1 << 1) |
73 | /* Controller uses gasket */ | ||
74 | #define FEC_QUIRK_USE_GASKET (1 << 2) | ||
69 | 75 | ||
70 | static struct platform_device_id fec_devtype[] = { | 76 | static struct platform_device_id fec_devtype[] = { |
71 | { | 77 | { |
78 | /* keep it for coldfire */ | ||
72 | .name = DRIVER_NAME, | 79 | .name = DRIVER_NAME, |
73 | .driver_data = 0, | 80 | .driver_data = 0, |
74 | }, { | 81 | }, { |
82 | .name = "imx25-fec", | ||
83 | .driver_data = FEC_QUIRK_USE_GASKET, | ||
84 | }, { | ||
85 | .name = "imx27-fec", | ||
86 | .driver_data = 0, | ||
87 | }, { | ||
75 | .name = "imx28-fec", | 88 | .name = "imx28-fec", |
76 | .driver_data = FEC_QUIRK_ENET_MAC | FEC_QUIRK_SWAP_FRAME, | 89 | .driver_data = FEC_QUIRK_ENET_MAC | FEC_QUIRK_SWAP_FRAME, |
77 | }, | 90 | }, { |
78 | { } | 91 | /* sentinel */ |
92 | } | ||
79 | }; | 93 | }; |
94 | MODULE_DEVICE_TABLE(platform, fec_devtype); | ||
95 | |||
96 | enum imx_fec_type { | ||
97 | IMX25_FEC = 1, /* runs on i.mx25/50/53 */ | ||
98 | IMX27_FEC, /* runs on i.mx27/35/51 */ | ||
99 | IMX28_FEC, | ||
100 | }; | ||
101 | |||
102 | static const struct of_device_id fec_dt_ids[] = { | ||
103 | { .compatible = "fsl,imx25-fec", .data = &fec_devtype[IMX25_FEC], }, | ||
104 | { .compatible = "fsl,imx27-fec", .data = &fec_devtype[IMX27_FEC], }, | ||
105 | { .compatible = "fsl,imx28-fec", .data = &fec_devtype[IMX28_FEC], }, | ||
106 | { /* sentinel */ } | ||
107 | }; | ||
108 | MODULE_DEVICE_TABLE(of, fec_dt_ids); | ||
80 | 109 | ||
81 | static unsigned char macaddr[ETH_ALEN]; | 110 | static unsigned char macaddr[ETH_ALEN]; |
82 | module_param_array(macaddr, byte, NULL, 0); | 111 | module_param_array(macaddr, byte, NULL, 0); |
@@ -427,7 +456,7 @@ fec_restart(struct net_device *ndev, int duplex) | |||
427 | 456 | ||
428 | } else { | 457 | } else { |
429 | #ifdef FEC_MIIGSK_ENR | 458 | #ifdef FEC_MIIGSK_ENR |
430 | if (fep->phy_interface == PHY_INTERFACE_MODE_RMII) { | 459 | if (id_entry->driver_data & FEC_QUIRK_USE_GASKET) { |
431 | /* disable the gasket and wait */ | 460 | /* disable the gasket and wait */ |
432 | writel(0, fep->hwp + FEC_MIIGSK_ENR); | 461 | writel(0, fep->hwp + FEC_MIIGSK_ENR); |
433 | while (readl(fep->hwp + FEC_MIIGSK_ENR) & 4) | 462 | while (readl(fep->hwp + FEC_MIIGSK_ENR) & 4) |
@@ -436,8 +465,11 @@ fec_restart(struct net_device *ndev, int duplex) | |||
436 | /* | 465 | /* |
437 | * configure the gasket: | 466 | * configure the gasket: |
438 | * RMII, 50 MHz, no loopback, no echo | 467 | * RMII, 50 MHz, no loopback, no echo |
468 | * MII, 25 MHz, no loopback, no echo | ||
439 | */ | 469 | */ |
440 | writel(1, fep->hwp + FEC_MIIGSK_CFGR); | 470 | writel((fep->phy_interface == PHY_INTERFACE_MODE_RMII) ? |
471 | 1 : 0, fep->hwp + FEC_MIIGSK_CFGR); | ||
472 | |||
441 | 473 | ||
442 | /* re-enable the gasket */ | 474 | /* re-enable the gasket */ |
443 | writel(2, fep->hwp + FEC_MIIGSK_ENR); | 475 | writel(2, fep->hwp + FEC_MIIGSK_ENR); |
@@ -734,8 +766,22 @@ static void __inline__ fec_get_mac(struct net_device *ndev) | |||
734 | */ | 766 | */ |
735 | iap = macaddr; | 767 | iap = macaddr; |
736 | 768 | ||
769 | #ifdef CONFIG_OF | ||
737 | /* | 770 | /* |
738 | * 2) from flash or fuse (via platform data) | 771 | * 2) from device tree data |
772 | */ | ||
773 | if (!is_valid_ether_addr(iap)) { | ||
774 | struct device_node *np = fep->pdev->dev.of_node; | ||
775 | if (np) { | ||
776 | const char *mac = of_get_mac_address(np); | ||
777 | if (mac) | ||
778 | iap = (unsigned char *) mac; | ||
779 | } | ||
780 | } | ||
781 | #endif | ||
782 | |||
783 | /* | ||
784 | * 3) from flash or fuse (via platform data) | ||
739 | */ | 785 | */ |
740 | if (!is_valid_ether_addr(iap)) { | 786 | if (!is_valid_ether_addr(iap)) { |
741 | #ifdef CONFIG_M5272 | 787 | #ifdef CONFIG_M5272 |
@@ -748,7 +794,7 @@ static void __inline__ fec_get_mac(struct net_device *ndev) | |||
748 | } | 794 | } |
749 | 795 | ||
750 | /* | 796 | /* |
751 | * 3) FEC mac registers set by bootloader | 797 | * 4) FEC mac registers set by bootloader |
752 | */ | 798 | */ |
753 | if (!is_valid_ether_addr(iap)) { | 799 | if (!is_valid_ether_addr(iap)) { |
754 | *((unsigned long *) &tmpaddr[0]) = | 800 | *((unsigned long *) &tmpaddr[0]) = |
@@ -1354,6 +1400,52 @@ static int fec_enet_init(struct net_device *ndev) | |||
1354 | return 0; | 1400 | return 0; |
1355 | } | 1401 | } |
1356 | 1402 | ||
1403 | #ifdef CONFIG_OF | ||
1404 | static int __devinit fec_get_phy_mode_dt(struct platform_device *pdev) | ||
1405 | { | ||
1406 | struct device_node *np = pdev->dev.of_node; | ||
1407 | |||
1408 | if (np) | ||
1409 | return of_get_phy_mode(np); | ||
1410 | |||
1411 | return -ENODEV; | ||
1412 | } | ||
1413 | |||
1414 | static int __devinit fec_reset_phy(struct platform_device *pdev) | ||
1415 | { | ||
1416 | int err, phy_reset; | ||
1417 | struct device_node *np = pdev->dev.of_node; | ||
1418 | |||
1419 | if (!np) | ||
1420 | return -ENODEV; | ||
1421 | |||
1422 | phy_reset = of_get_named_gpio(np, "phy-reset-gpios", 0); | ||
1423 | err = gpio_request_one(phy_reset, GPIOF_OUT_INIT_LOW, "phy-reset"); | ||
1424 | if (err) { | ||
1425 | pr_warn("FEC: failed to get gpio phy-reset: %d\n", err); | ||
1426 | return err; | ||
1427 | } | ||
1428 | msleep(1); | ||
1429 | gpio_set_value(phy_reset, 1); | ||
1430 | |||
1431 | return 0; | ||
1432 | } | ||
1433 | #else /* CONFIG_OF */ | ||
1434 | static inline int fec_get_phy_mode_dt(struct platform_device *pdev) | ||
1435 | { | ||
1436 | return -ENODEV; | ||
1437 | } | ||
1438 | |||
1439 | static inline int fec_reset_phy(struct platform_device *pdev) | ||
1440 | { | ||
1441 | /* | ||
1442 | * In case of platform probe, the reset has been done | ||
1443 | * by machine code. | ||
1444 | */ | ||
1445 | return 0; | ||
1446 | } | ||
1447 | #endif /* CONFIG_OF */ | ||
1448 | |||
1357 | static int __devinit | 1449 | static int __devinit |
1358 | fec_probe(struct platform_device *pdev) | 1450 | fec_probe(struct platform_device *pdev) |
1359 | { | 1451 | { |
@@ -1362,6 +1454,11 @@ fec_probe(struct platform_device *pdev) | |||
1362 | struct net_device *ndev; | 1454 | struct net_device *ndev; |
1363 | int i, irq, ret = 0; | 1455 | int i, irq, ret = 0; |
1364 | struct resource *r; | 1456 | struct resource *r; |
1457 | const struct of_device_id *of_id; | ||
1458 | |||
1459 | of_id = of_match_device(fec_dt_ids, &pdev->dev); | ||
1460 | if (of_id) | ||
1461 | pdev->id_entry = of_id->data; | ||
1365 | 1462 | ||
1366 | r = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 1463 | r = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
1367 | if (!r) | 1464 | if (!r) |
@@ -1393,9 +1490,18 @@ fec_probe(struct platform_device *pdev) | |||
1393 | 1490 | ||
1394 | platform_set_drvdata(pdev, ndev); | 1491 | platform_set_drvdata(pdev, ndev); |
1395 | 1492 | ||
1396 | pdata = pdev->dev.platform_data; | 1493 | ret = fec_get_phy_mode_dt(pdev); |
1397 | if (pdata) | 1494 | if (ret < 0) { |
1398 | fep->phy_interface = pdata->phy; | 1495 | pdata = pdev->dev.platform_data; |
1496 | if (pdata) | ||
1497 | fep->phy_interface = pdata->phy; | ||
1498 | else | ||
1499 | fep->phy_interface = PHY_INTERFACE_MODE_MII; | ||
1500 | } else { | ||
1501 | fep->phy_interface = ret; | ||
1502 | } | ||
1503 | |||
1504 | fec_reset_phy(pdev); | ||
1399 | 1505 | ||
1400 | /* This device has up to three irqs on some platforms */ | 1506 | /* This device has up to three irqs on some platforms */ |
1401 | for (i = 0; i < 3; i++) { | 1507 | for (i = 0; i < 3; i++) { |
@@ -1530,6 +1636,7 @@ static struct platform_driver fec_driver = { | |||
1530 | #ifdef CONFIG_PM | 1636 | #ifdef CONFIG_PM |
1531 | .pm = &fec_pm_ops, | 1637 | .pm = &fec_pm_ops, |
1532 | #endif | 1638 | #endif |
1639 | .of_match_table = fec_dt_ids, | ||
1533 | }, | 1640 | }, |
1534 | .id_table = fec_devtype, | 1641 | .id_table = fec_devtype, |
1535 | .probe = fec_probe, | 1642 | .probe = fec_probe, |
diff --git a/drivers/net/ibm_newemac/core.c b/drivers/net/ibm_newemac/core.c index 725399ea0690..70cb7d8a3b53 100644 --- a/drivers/net/ibm_newemac/core.c +++ b/drivers/net/ibm_newemac/core.c | |||
@@ -39,6 +39,7 @@ | |||
39 | #include <linux/bitops.h> | 39 | #include <linux/bitops.h> |
40 | #include <linux/workqueue.h> | 40 | #include <linux/workqueue.h> |
41 | #include <linux/of.h> | 41 | #include <linux/of.h> |
42 | #include <linux/of_net.h> | ||
42 | #include <linux/slab.h> | 43 | #include <linux/slab.h> |
43 | 44 | ||
44 | #include <asm/processor.h> | 45 | #include <asm/processor.h> |
@@ -2506,18 +2507,6 @@ static int __devinit emac_init_config(struct emac_instance *dev) | |||
2506 | { | 2507 | { |
2507 | struct device_node *np = dev->ofdev->dev.of_node; | 2508 | struct device_node *np = dev->ofdev->dev.of_node; |
2508 | const void *p; | 2509 | const void *p; |
2509 | unsigned int plen; | ||
2510 | const char *pm, *phy_modes[] = { | ||
2511 | [PHY_MODE_NA] = "", | ||
2512 | [PHY_MODE_MII] = "mii", | ||
2513 | [PHY_MODE_RMII] = "rmii", | ||
2514 | [PHY_MODE_SMII] = "smii", | ||
2515 | [PHY_MODE_RGMII] = "rgmii", | ||
2516 | [PHY_MODE_TBI] = "tbi", | ||
2517 | [PHY_MODE_GMII] = "gmii", | ||
2518 | [PHY_MODE_RTBI] = "rtbi", | ||
2519 | [PHY_MODE_SGMII] = "sgmii", | ||
2520 | }; | ||
2521 | 2510 | ||
2522 | /* Read config from device-tree */ | 2511 | /* Read config from device-tree */ |
2523 | if (emac_read_uint_prop(np, "mal-device", &dev->mal_ph, 1)) | 2512 | if (emac_read_uint_prop(np, "mal-device", &dev->mal_ph, 1)) |
@@ -2566,23 +2555,9 @@ static int __devinit emac_init_config(struct emac_instance *dev) | |||
2566 | dev->mal_burst_size = 256; | 2555 | dev->mal_burst_size = 256; |
2567 | 2556 | ||
2568 | /* PHY mode needs some decoding */ | 2557 | /* PHY mode needs some decoding */ |
2569 | dev->phy_mode = PHY_MODE_NA; | 2558 | dev->phy_mode = of_get_phy_mode(np); |
2570 | pm = of_get_property(np, "phy-mode", &plen); | 2559 | if (dev->phy_mode < 0) |
2571 | if (pm != NULL) { | 2560 | dev->phy_mode = PHY_MODE_NA; |
2572 | int i; | ||
2573 | for (i = 0; i < ARRAY_SIZE(phy_modes); i++) | ||
2574 | if (!strcasecmp(pm, phy_modes[i])) { | ||
2575 | dev->phy_mode = i; | ||
2576 | break; | ||
2577 | } | ||
2578 | } | ||
2579 | |||
2580 | /* Backward compat with non-final DT */ | ||
2581 | if (dev->phy_mode == PHY_MODE_NA && pm != NULL && plen == 4) { | ||
2582 | u32 nmode = *(const u32 *)pm; | ||
2583 | if (nmode > PHY_MODE_NA && nmode <= PHY_MODE_SGMII) | ||
2584 | dev->phy_mode = nmode; | ||
2585 | } | ||
2586 | 2561 | ||
2587 | /* Check EMAC version */ | 2562 | /* Check EMAC version */ |
2588 | if (of_device_is_compatible(np, "ibm,emac4sync")) { | 2563 | if (of_device_is_compatible(np, "ibm,emac4sync")) { |
diff --git a/drivers/net/ibm_newemac/emac.h b/drivers/net/ibm_newemac/emac.h index 8a61b597a169..1568278d759a 100644 --- a/drivers/net/ibm_newemac/emac.h +++ b/drivers/net/ibm_newemac/emac.h | |||
@@ -26,6 +26,7 @@ | |||
26 | #define __IBM_NEWEMAC_H | 26 | #define __IBM_NEWEMAC_H |
27 | 27 | ||
28 | #include <linux/types.h> | 28 | #include <linux/types.h> |
29 | #include <linux/phy.h> | ||
29 | 30 | ||
30 | /* EMAC registers Write Access rules */ | 31 | /* EMAC registers Write Access rules */ |
31 | struct emac_regs { | 32 | struct emac_regs { |
@@ -106,15 +107,15 @@ struct emac_regs { | |||
106 | /* | 107 | /* |
107 | * PHY mode settings (EMAC <-> ZMII/RGMII bridge <-> PHY) | 108 | * PHY mode settings (EMAC <-> ZMII/RGMII bridge <-> PHY) |
108 | */ | 109 | */ |
109 | #define PHY_MODE_NA 0 | 110 | #define PHY_MODE_NA PHY_INTERFACE_MODE_NA |
110 | #define PHY_MODE_MII 1 | 111 | #define PHY_MODE_MII PHY_INTERFACE_MODE_MII |
111 | #define PHY_MODE_RMII 2 | 112 | #define PHY_MODE_RMII PHY_INTERFACE_MODE_RMII |
112 | #define PHY_MODE_SMII 3 | 113 | #define PHY_MODE_SMII PHY_INTERFACE_MODE_SMII |
113 | #define PHY_MODE_RGMII 4 | 114 | #define PHY_MODE_RGMII PHY_INTERFACE_MODE_RGMII |
114 | #define PHY_MODE_TBI 5 | 115 | #define PHY_MODE_TBI PHY_INTERFACE_MODE_TBI |
115 | #define PHY_MODE_GMII 6 | 116 | #define PHY_MODE_GMII PHY_INTERFACE_MODE_GMII |
116 | #define PHY_MODE_RTBI 7 | 117 | #define PHY_MODE_RTBI PHY_INTERFACE_MODE_RTBI |
117 | #define PHY_MODE_SGMII 8 | 118 | #define PHY_MODE_SGMII PHY_INTERFACE_MODE_SGMII |
118 | 119 | ||
119 | /* EMACx_MR0 */ | 120 | /* EMACx_MR0 */ |
120 | #define EMAC_MR0_RXI 0x80000000 | 121 | #define EMAC_MR0_RXI 0x80000000 |
diff --git a/drivers/net/ibm_newemac/phy.c b/drivers/net/ibm_newemac/phy.c index ac9d964e59ec..ab4e5969fe65 100644 --- a/drivers/net/ibm_newemac/phy.c +++ b/drivers/net/ibm_newemac/phy.c | |||
@@ -28,12 +28,15 @@ | |||
28 | #include "emac.h" | 28 | #include "emac.h" |
29 | #include "phy.h" | 29 | #include "phy.h" |
30 | 30 | ||
31 | static inline int phy_read(struct mii_phy *phy, int reg) | 31 | #define phy_read _phy_read |
32 | #define phy_write _phy_write | ||
33 | |||
34 | static inline int _phy_read(struct mii_phy *phy, int reg) | ||
32 | { | 35 | { |
33 | return phy->mdio_read(phy->dev, phy->address, reg); | 36 | return phy->mdio_read(phy->dev, phy->address, reg); |
34 | } | 37 | } |
35 | 38 | ||
36 | static inline void phy_write(struct mii_phy *phy, int reg, int val) | 39 | static inline void _phy_write(struct mii_phy *phy, int reg, int val) |
37 | { | 40 | { |
38 | phy->mdio_write(phy->dev, phy->address, reg, val); | 41 | phy->mdio_write(phy->dev, phy->address, reg, val); |
39 | } | 42 | } |
diff --git a/drivers/net/pcmcia/smc91c92_cs.c b/drivers/net/pcmcia/smc91c92_cs.c index 1cd9394c3359..cffbc0373fa9 100644 --- a/drivers/net/pcmcia/smc91c92_cs.c +++ b/drivers/net/pcmcia/smc91c92_cs.c | |||
@@ -809,7 +809,7 @@ static int smc91c92_config(struct pcmcia_device *link) | |||
809 | struct net_device *dev = link->priv; | 809 | struct net_device *dev = link->priv; |
810 | struct smc_private *smc = netdev_priv(dev); | 810 | struct smc_private *smc = netdev_priv(dev); |
811 | char *name; | 811 | char *name; |
812 | int i, j, rev; | 812 | int i, rev, j = 0; |
813 | unsigned int ioaddr; | 813 | unsigned int ioaddr; |
814 | u_long mir; | 814 | u_long mir; |
815 | 815 | ||
diff --git a/drivers/net/sungem.c b/drivers/net/sungem.c index be745ae8f4e3..ade35dde5b51 100644 --- a/drivers/net/sungem.c +++ b/drivers/net/sungem.c | |||
@@ -46,14 +46,15 @@ | |||
46 | #include <asm/byteorder.h> | 46 | #include <asm/byteorder.h> |
47 | #include <asm/uaccess.h> | 47 | #include <asm/uaccess.h> |
48 | #include <asm/irq.h> | 48 | #include <asm/irq.h> |
49 | #include <asm/prom.h> | ||
50 | 49 | ||
51 | #ifdef CONFIG_SPARC | 50 | #ifdef CONFIG_SPARC |
52 | #include <asm/idprom.h> | 51 | #include <asm/idprom.h> |
52 | #include <asm/prom.h> | ||
53 | #endif | 53 | #endif |
54 | 54 | ||
55 | #ifdef CONFIG_PPC_PMAC | 55 | #ifdef CONFIG_PPC_PMAC |
56 | #include <asm/pci-bridge.h> | 56 | #include <asm/pci-bridge.h> |
57 | #include <asm/prom.h> | ||
57 | #include <asm/machdep.h> | 58 | #include <asm/machdep.h> |
58 | #include <asm/pmac_feature.h> | 59 | #include <asm/pmac_feature.h> |
59 | #endif | 60 | #endif |
diff --git a/drivers/net/wireless/hostap/hostap_cs.c b/drivers/net/wireless/hostap/hostap_cs.c index c052a0d5cbdd..5441ad195119 100644 --- a/drivers/net/wireless/hostap/hostap_cs.c +++ b/drivers/net/wireless/hostap/hostap_cs.c | |||
@@ -648,6 +648,8 @@ static const struct pcmcia_device_id hostap_cs_ids[] = { | |||
648 | 0x74c5e40d), | 648 | 0x74c5e40d), |
649 | PCMCIA_DEVICE_MANF_CARD_PROD_ID1(0x0156, 0x0002, "Intersil", | 649 | PCMCIA_DEVICE_MANF_CARD_PROD_ID1(0x0156, 0x0002, "Intersil", |
650 | 0x4b801a17), | 650 | 0x4b801a17), |
651 | PCMCIA_DEVICE_MANF_CARD_PROD_ID3(0x0156, 0x0002, "Version 01.02", | ||
652 | 0x4b74baa0), | ||
651 | PCMCIA_MFC_DEVICE_PROD_ID12(0, "SanDisk", "ConnectPlus", | 653 | PCMCIA_MFC_DEVICE_PROD_ID12(0, "SanDisk", "ConnectPlus", |
652 | 0x7a954bd9, 0x74be00c6), | 654 | 0x7a954bd9, 0x74be00c6), |
653 | PCMCIA_DEVICE_PROD_ID123( | 655 | PCMCIA_DEVICE_PROD_ID123( |
diff --git a/drivers/net/wireless/orinoco/orinoco_cs.c b/drivers/net/wireless/orinoco/orinoco_cs.c index 3f7fc4a0b43d..d7dbc00bcfbe 100644 --- a/drivers/net/wireless/orinoco/orinoco_cs.c +++ b/drivers/net/wireless/orinoco/orinoco_cs.c | |||
@@ -239,7 +239,6 @@ static int orinoco_cs_resume(struct pcmcia_device *link) | |||
239 | 239 | ||
240 | static const struct pcmcia_device_id orinoco_cs_ids[] = { | 240 | static const struct pcmcia_device_id orinoco_cs_ids[] = { |
241 | PCMCIA_DEVICE_MANF_CARD(0x0101, 0x0777), /* 3Com AirConnect PCI 777A */ | 241 | PCMCIA_DEVICE_MANF_CARD(0x0101, 0x0777), /* 3Com AirConnect PCI 777A */ |
242 | PCMCIA_DEVICE_MANF_CARD(0x0156, 0x0002), /* Lucent Orinoco and old Intersil */ | ||
243 | PCMCIA_DEVICE_MANF_CARD(0x016b, 0x0001), /* Ericsson WLAN Card C11 */ | 242 | PCMCIA_DEVICE_MANF_CARD(0x016b, 0x0001), /* Ericsson WLAN Card C11 */ |
244 | PCMCIA_DEVICE_MANF_CARD(0x01eb, 0x080a), /* Nortel Networks eMobility 802.11 Wireless Adapter */ | 243 | PCMCIA_DEVICE_MANF_CARD(0x01eb, 0x080a), /* Nortel Networks eMobility 802.11 Wireless Adapter */ |
245 | PCMCIA_DEVICE_MANF_CARD(0x0261, 0x0002), /* AirWay 802.11 Adapter (PCMCIA) */ | 244 | PCMCIA_DEVICE_MANF_CARD(0x0261, 0x0002), /* AirWay 802.11 Adapter (PCMCIA) */ |
@@ -272,6 +271,7 @@ static const struct pcmcia_device_id orinoco_cs_ids[] = { | |||
272 | PCMCIA_DEVICE_PROD_ID12("PROXIM", "LAN PCI CARD HARMONY 80211B", 0xc6536a5e, 0x9f494e26), | 271 | PCMCIA_DEVICE_PROD_ID12("PROXIM", "LAN PCI CARD HARMONY 80211B", 0xc6536a5e, 0x9f494e26), |
273 | PCMCIA_DEVICE_PROD_ID12("SAMSUNG", "11Mbps WLAN Card", 0x43d74cb4, 0x579bd91b), | 272 | PCMCIA_DEVICE_PROD_ID12("SAMSUNG", "11Mbps WLAN Card", 0x43d74cb4, 0x579bd91b), |
274 | PCMCIA_DEVICE_PROD_ID12("Symbol Technologies", "LA4111 Spectrum24 Wireless LAN PC Card", 0x3f02b4d6, 0x3663cb0e), | 273 | PCMCIA_DEVICE_PROD_ID12("Symbol Technologies", "LA4111 Spectrum24 Wireless LAN PC Card", 0x3f02b4d6, 0x3663cb0e), |
274 | PCMCIA_DEVICE_MANF_CARD_PROD_ID3(0x0156, 0x0002, "Version 01.01", 0xd27deb1a), /* Lucent Orinoco */ | ||
275 | #ifdef CONFIG_HERMES_PRISM | 275 | #ifdef CONFIG_HERMES_PRISM |
276 | /* Only entries that certainly identify Prism chipset */ | 276 | /* Only entries that certainly identify Prism chipset */ |
277 | PCMCIA_DEVICE_MANF_CARD(0x000b, 0x7100), /* SonicWALL Long Range Wireless Card */ | 277 | PCMCIA_DEVICE_MANF_CARD(0x000b, 0x7100), /* SonicWALL Long Range Wireless Card */ |
@@ -321,6 +321,9 @@ static const struct pcmcia_device_id orinoco_cs_ids[] = { | |||
321 | PCMCIA_DEVICE_PROD_ID3("ISL37100P", 0x630d52b2), | 321 | PCMCIA_DEVICE_PROD_ID3("ISL37100P", 0x630d52b2), |
322 | PCMCIA_DEVICE_PROD_ID3("ISL37101P-10", 0xdd97a26b), | 322 | PCMCIA_DEVICE_PROD_ID3("ISL37101P-10", 0xdd97a26b), |
323 | PCMCIA_DEVICE_PROD_ID3("ISL37300P", 0xc9049a39), | 323 | PCMCIA_DEVICE_PROD_ID3("ISL37300P", 0xc9049a39), |
324 | |||
325 | /* This may be Agere or Intersil Firmware */ | ||
326 | PCMCIA_DEVICE_MANF_CARD(0x0156, 0x0002), | ||
324 | #endif | 327 | #endif |
325 | PCMCIA_DEVICE_NULL, | 328 | PCMCIA_DEVICE_NULL, |
326 | }; | 329 | }; |