diff options
Diffstat (limited to 'drivers/net/wireless/netwave_cs.c')
-rw-r--r-- | drivers/net/wireless/netwave_cs.c | 61 |
1 files changed, 28 insertions, 33 deletions
diff --git a/drivers/net/wireless/netwave_cs.c b/drivers/net/wireless/netwave_cs.c index 68dfe68ffecf..2a688865f777 100644 --- a/drivers/net/wireless/netwave_cs.c +++ b/drivers/net/wireless/netwave_cs.c | |||
@@ -190,8 +190,8 @@ module_param(mem_speed, int, 0); | |||
190 | /*====================================================================*/ | 190 | /*====================================================================*/ |
191 | 191 | ||
192 | /* PCMCIA (Card Services) related functions */ | 192 | /* PCMCIA (Card Services) related functions */ |
193 | static void netwave_release(dev_link_t *link); /* Card removal */ | 193 | static void netwave_release(struct pcmcia_device *link); /* Card removal */ |
194 | static void netwave_pcmcia_config(dev_link_t *arg); /* Runs after card | 194 | static void netwave_pcmcia_config(struct pcmcia_device *arg); /* Runs after card |
195 | insertion */ | 195 | insertion */ |
196 | static void netwave_detach(struct pcmcia_device *p_dev); /* Destroy instance */ | 196 | static void netwave_detach(struct pcmcia_device *p_dev); /* Destroy instance */ |
197 | 197 | ||
@@ -221,10 +221,10 @@ static struct iw_statistics* netwave_get_wireless_stats(struct net_device *dev); | |||
221 | static void set_multicast_list(struct net_device *dev); | 221 | static void set_multicast_list(struct net_device *dev); |
222 | 222 | ||
223 | /* | 223 | /* |
224 | A dev_link_t structure has fields for most things that are needed | 224 | A struct pcmcia_device structure has fields for most things that are needed |
225 | to keep track of a socket, but there will usually be some device | 225 | to keep track of a socket, but there will usually be some device |
226 | specific information that also needs to be kept track of. The | 226 | specific information that also needs to be kept track of. The |
227 | 'priv' pointer in a dev_link_t structure can be used to point to | 227 | 'priv' pointer in a struct pcmcia_device structure can be used to point to |
228 | a device-specific private data structure, like this. | 228 | a device-specific private data structure, like this. |
229 | 229 | ||
230 | A driver needs to provide a dev_node_t structure for each device | 230 | A driver needs to provide a dev_node_t structure for each device |
@@ -232,7 +232,7 @@ static void set_multicast_list(struct net_device *dev); | |||
232 | example, ethernet cards, modems). In other cases, there may be | 232 | example, ethernet cards, modems). In other cases, there may be |
233 | many actual or logical devices (SCSI adapters, memory cards with | 233 | many actual or logical devices (SCSI adapters, memory cards with |
234 | multiple partitions). The dev_node_t structures need to be kept | 234 | multiple partitions). The dev_node_t structures need to be kept |
235 | in a linked list starting at the 'dev' field of a dev_link_t | 235 | in a linked list starting at the 'dev' field of a struct pcmcia_device |
236 | structure. We allocate them in the card's private data structure, | 236 | structure. We allocate them in the card's private data structure, |
237 | because they generally can't be allocated dynamically. | 237 | because they generally can't be allocated dynamically. |
238 | */ | 238 | */ |
@@ -376,20 +376,19 @@ static struct iw_statistics *netwave_get_wireless_stats(struct net_device *dev) | |||
376 | * configure the card at this point -- we wait until we receive a | 376 | * configure the card at this point -- we wait until we receive a |
377 | * card insertion event. | 377 | * card insertion event. |
378 | */ | 378 | */ |
379 | static int netwave_attach(struct pcmcia_device *p_dev) | 379 | static int netwave_attach(struct pcmcia_device *link) |
380 | { | 380 | { |
381 | struct net_device *dev; | 381 | struct net_device *dev; |
382 | netwave_private *priv; | 382 | netwave_private *priv; |
383 | dev_link_t *link = dev_to_instance(p_dev); | ||
384 | 383 | ||
385 | DEBUG(0, "netwave_attach()\n"); | 384 | DEBUG(0, "netwave_attach()\n"); |
386 | 385 | ||
387 | /* Initialize the dev_link_t structure */ | 386 | /* Initialize the struct pcmcia_device structure */ |
388 | dev = alloc_etherdev(sizeof(netwave_private)); | 387 | dev = alloc_etherdev(sizeof(netwave_private)); |
389 | if (!dev) | 388 | if (!dev) |
390 | return -ENOMEM; | 389 | return -ENOMEM; |
391 | priv = netdev_priv(dev); | 390 | priv = netdev_priv(dev); |
392 | priv->p_dev = p_dev; | 391 | priv->p_dev = link; |
393 | link->priv = dev; | 392 | link->priv = dev; |
394 | 393 | ||
395 | /* The io structure describes IO port mapping */ | 394 | /* The io structure describes IO port mapping */ |
@@ -443,9 +442,8 @@ static int netwave_attach(struct pcmcia_device *p_dev) | |||
443 | * structures are freed. Otherwise, the structures will be freed | 442 | * structures are freed. Otherwise, the structures will be freed |
444 | * when the device is released. | 443 | * when the device is released. |
445 | */ | 444 | */ |
446 | static void netwave_detach(struct pcmcia_device *p_dev) | 445 | static void netwave_detach(struct pcmcia_device *link) |
447 | { | 446 | { |
448 | dev_link_t *link = dev_to_instance(p_dev); | ||
449 | struct net_device *dev = link->priv; | 447 | struct net_device *dev = link->priv; |
450 | 448 | ||
451 | DEBUG(0, "netwave_detach(0x%p)\n", link); | 449 | DEBUG(0, "netwave_detach(0x%p)\n", link); |
@@ -739,8 +737,7 @@ static const struct iw_handler_def netwave_handler_def = | |||
739 | #define CS_CHECK(fn, ret) \ | 737 | #define CS_CHECK(fn, ret) \ |
740 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) | 738 | do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0) |
741 | 739 | ||
742 | static void netwave_pcmcia_config(dev_link_t *link) { | 740 | static void netwave_pcmcia_config(struct pcmcia_device *link) { |
743 | client_handle_t handle = link->handle; | ||
744 | struct net_device *dev = link->priv; | 741 | struct net_device *dev = link->priv; |
745 | netwave_private *priv = netdev_priv(dev); | 742 | netwave_private *priv = netdev_priv(dev); |
746 | tuple_t tuple; | 743 | tuple_t tuple; |
@@ -762,9 +759,9 @@ static void netwave_pcmcia_config(dev_link_t *link) { | |||
762 | tuple.TupleDataMax = 64; | 759 | tuple.TupleDataMax = 64; |
763 | tuple.TupleOffset = 0; | 760 | tuple.TupleOffset = 0; |
764 | tuple.DesiredTuple = CISTPL_CONFIG; | 761 | tuple.DesiredTuple = CISTPL_CONFIG; |
765 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple)); | 762 | CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(link, &tuple)); |
766 | CS_CHECK(GetTupleData, pcmcia_get_tuple_data(handle, &tuple)); | 763 | CS_CHECK(GetTupleData, pcmcia_get_tuple_data(link, &tuple)); |
767 | CS_CHECK(ParseTuple, pcmcia_parse_tuple(handle, &tuple, &parse)); | 764 | CS_CHECK(ParseTuple, pcmcia_parse_tuple(link, &tuple, &parse)); |
768 | link->conf.ConfigBase = parse.config.base; | 765 | link->conf.ConfigBase = parse.config.base; |
769 | link->conf.Present = parse.config.rmask[0]; | 766 | link->conf.Present = parse.config.rmask[0]; |
770 | 767 | ||
@@ -778,11 +775,11 @@ static void netwave_pcmcia_config(dev_link_t *link) { | |||
778 | */ | 775 | */ |
779 | for (i = j = 0x0; j < 0x400; j += 0x20) { | 776 | for (i = j = 0x0; j < 0x400; j += 0x20) { |
780 | link->io.BasePort1 = j ^ 0x300; | 777 | link->io.BasePort1 = j ^ 0x300; |
781 | i = pcmcia_request_io(link->handle, &link->io); | 778 | i = pcmcia_request_io(link, &link->io); |
782 | if (i == CS_SUCCESS) break; | 779 | if (i == CS_SUCCESS) break; |
783 | } | 780 | } |
784 | if (i != CS_SUCCESS) { | 781 | if (i != CS_SUCCESS) { |
785 | cs_error(link->handle, RequestIO, i); | 782 | cs_error(link, RequestIO, i); |
786 | goto failed; | 783 | goto failed; |
787 | } | 784 | } |
788 | 785 | ||
@@ -790,16 +787,16 @@ static void netwave_pcmcia_config(dev_link_t *link) { | |||
790 | * Now allocate an interrupt line. Note that this does not | 787 | * Now allocate an interrupt line. Note that this does not |
791 | * actually assign a handler to the interrupt. | 788 | * actually assign a handler to the interrupt. |
792 | */ | 789 | */ |
793 | CS_CHECK(RequestIRQ, pcmcia_request_irq(handle, &link->irq)); | 790 | CS_CHECK(RequestIRQ, pcmcia_request_irq(link, &link->irq)); |
794 | 791 | ||
795 | /* | 792 | /* |
796 | * This actually configures the PCMCIA socket -- setting up | 793 | * This actually configures the PCMCIA socket -- setting up |
797 | * the I/O windows and the interrupt mapping. | 794 | * the I/O windows and the interrupt mapping. |
798 | */ | 795 | */ |
799 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(handle, &link->conf)); | 796 | CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link, &link->conf)); |
800 | 797 | ||
801 | /* | 798 | /* |
802 | * Allocate a 32K memory window. Note that the dev_link_t | 799 | * Allocate a 32K memory window. Note that the struct pcmcia_device |
803 | * structure provides space for one window handle -- if your | 800 | * structure provides space for one window handle -- if your |
804 | * device needs several windows, you'll need to keep track of | 801 | * device needs several windows, you'll need to keep track of |
805 | * the handles in your private data structure, dev->priv. | 802 | * the handles in your private data structure, dev->priv. |
@@ -809,7 +806,7 @@ static void netwave_pcmcia_config(dev_link_t *link) { | |||
809 | req.Attributes = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_CM|WIN_ENABLE; | 806 | req.Attributes = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_CM|WIN_ENABLE; |
810 | req.Base = 0; req.Size = 0x8000; | 807 | req.Base = 0; req.Size = 0x8000; |
811 | req.AccessSpeed = mem_speed; | 808 | req.AccessSpeed = mem_speed; |
812 | CS_CHECK(RequestWindow, pcmcia_request_window(&link->handle, &req, &link->win)); | 809 | CS_CHECK(RequestWindow, pcmcia_request_window(&link, &req, &link->win)); |
813 | mem.CardOffset = 0x20000; mem.Page = 0; | 810 | mem.CardOffset = 0x20000; mem.Page = 0; |
814 | CS_CHECK(MapMemPage, pcmcia_map_mem_page(link->win, &mem)); | 811 | CS_CHECK(MapMemPage, pcmcia_map_mem_page(link->win, &mem)); |
815 | 812 | ||
@@ -819,7 +816,7 @@ static void netwave_pcmcia_config(dev_link_t *link) { | |||
819 | 816 | ||
820 | dev->irq = link->irq.AssignedIRQ; | 817 | dev->irq = link->irq.AssignedIRQ; |
821 | dev->base_addr = link->io.BasePort1; | 818 | dev->base_addr = link->io.BasePort1; |
822 | SET_NETDEV_DEV(dev, &handle_to_dev(handle)); | 819 | SET_NETDEV_DEV(dev, &handle_to_dev(link)); |
823 | 820 | ||
824 | if (register_netdev(dev) != 0) { | 821 | if (register_netdev(dev) != 0) { |
825 | printk(KERN_DEBUG "netwave_cs: register_netdev() failed\n"); | 822 | printk(KERN_DEBUG "netwave_cs: register_netdev() failed\n"); |
@@ -851,7 +848,7 @@ static void netwave_pcmcia_config(dev_link_t *link) { | |||
851 | return; | 848 | return; |
852 | 849 | ||
853 | cs_failed: | 850 | cs_failed: |
854 | cs_error(link->handle, last_fn, last_ret); | 851 | cs_error(link, last_fn, last_ret); |
855 | failed: | 852 | failed: |
856 | netwave_release(link); | 853 | netwave_release(link); |
857 | } /* netwave_pcmcia_config */ | 854 | } /* netwave_pcmcia_config */ |
@@ -863,21 +860,20 @@ failed: | |||
863 | * device, and release the PCMCIA configuration. If the device is | 860 | * device, and release the PCMCIA configuration. If the device is |
864 | * still open, this will be postponed until it is closed. | 861 | * still open, this will be postponed until it is closed. |
865 | */ | 862 | */ |
866 | static void netwave_release(dev_link_t *link) | 863 | static void netwave_release(struct pcmcia_device *link) |
867 | { | 864 | { |
868 | struct net_device *dev = link->priv; | 865 | struct net_device *dev = link->priv; |
869 | netwave_private *priv = netdev_priv(dev); | 866 | netwave_private *priv = netdev_priv(dev); |
870 | 867 | ||
871 | DEBUG(0, "netwave_release(0x%p)\n", link); | 868 | DEBUG(0, "netwave_release(0x%p)\n", link); |
872 | 869 | ||
873 | pcmcia_disable_device(link->handle); | 870 | pcmcia_disable_device(link); |
874 | if (link->win) | 871 | if (link->win) |
875 | iounmap(priv->ramBase); | 872 | iounmap(priv->ramBase); |
876 | } | 873 | } |
877 | 874 | ||
878 | static int netwave_suspend(struct pcmcia_device *p_dev) | 875 | static int netwave_suspend(struct pcmcia_device *link) |
879 | { | 876 | { |
880 | dev_link_t *link = dev_to_instance(p_dev); | ||
881 | struct net_device *dev = link->priv; | 877 | struct net_device *dev = link->priv; |
882 | 878 | ||
883 | if ((link->state & DEV_CONFIG) && (link->open)) | 879 | if ((link->state & DEV_CONFIG) && (link->open)) |
@@ -886,9 +882,8 @@ static int netwave_suspend(struct pcmcia_device *p_dev) | |||
886 | return 0; | 882 | return 0; |
887 | } | 883 | } |
888 | 884 | ||
889 | static int netwave_resume(struct pcmcia_device *p_dev) | 885 | static int netwave_resume(struct pcmcia_device *link) |
890 | { | 886 | { |
891 | dev_link_t *link = dev_to_instance(p_dev); | ||
892 | struct net_device *dev = link->priv; | 887 | struct net_device *dev = link->priv; |
893 | 888 | ||
894 | if ((link->state & DEV_CONFIG) && (link->open)) { | 889 | if ((link->state & DEV_CONFIG) && (link->open)) { |
@@ -1100,7 +1095,7 @@ static irqreturn_t netwave_interrupt(int irq, void* dev_id, struct pt_regs *regs | |||
1100 | u_char __iomem *ramBase; | 1095 | u_char __iomem *ramBase; |
1101 | struct net_device *dev = (struct net_device *)dev_id; | 1096 | struct net_device *dev = (struct net_device *)dev_id; |
1102 | struct netwave_private *priv = netdev_priv(dev); | 1097 | struct netwave_private *priv = netdev_priv(dev); |
1103 | dev_link_t *link = priv->p_dev; | 1098 | struct pcmcia_device *link = priv->p_dev; |
1104 | int i; | 1099 | int i; |
1105 | 1100 | ||
1106 | if (!netif_device_present(dev)) | 1101 | if (!netif_device_present(dev)) |
@@ -1354,7 +1349,7 @@ static int netwave_rx(struct net_device *dev) | |||
1354 | 1349 | ||
1355 | static int netwave_open(struct net_device *dev) { | 1350 | static int netwave_open(struct net_device *dev) { |
1356 | netwave_private *priv = netdev_priv(dev); | 1351 | netwave_private *priv = netdev_priv(dev); |
1357 | dev_link_t *link = priv->p_dev; | 1352 | struct pcmcia_device *link = priv->p_dev; |
1358 | 1353 | ||
1359 | DEBUG(1, "netwave_open: starting.\n"); | 1354 | DEBUG(1, "netwave_open: starting.\n"); |
1360 | 1355 | ||
@@ -1371,7 +1366,7 @@ static int netwave_open(struct net_device *dev) { | |||
1371 | 1366 | ||
1372 | static int netwave_close(struct net_device *dev) { | 1367 | static int netwave_close(struct net_device *dev) { |
1373 | netwave_private *priv = netdev_priv(dev); | 1368 | netwave_private *priv = netdev_priv(dev); |
1374 | dev_link_t *link = priv->p_dev; | 1369 | struct pcmcia_device *link = priv->p_dev; |
1375 | 1370 | ||
1376 | DEBUG(1, "netwave_close: finishing.\n"); | 1371 | DEBUG(1, "netwave_close: finishing.\n"); |
1377 | 1372 | ||