diff options
Diffstat (limited to 'drivers/net/pcmcia/xirc2ps_cs.c')
-rw-r--r-- | drivers/net/pcmcia/xirc2ps_cs.c | 108 |
1 files changed, 51 insertions, 57 deletions
diff --git a/drivers/net/pcmcia/xirc2ps_cs.c b/drivers/net/pcmcia/xirc2ps_cs.c index 94a1e644abdc..84328da075c3 100644 --- a/drivers/net/pcmcia/xirc2ps_cs.c +++ b/drivers/net/pcmcia/xirc2ps_cs.c | |||
@@ -289,9 +289,9 @@ static void mii_wr(kio_addr_t ioaddr, u_char phyaddr, u_char phyreg, | |||
289 | * and ejection events. They are invoked from the event handler. | 289 | * and ejection events. They are invoked from the event handler. |
290 | */ | 290 | */ |
291 | 291 | ||
292 | static int has_ce2_string(dev_link_t * link); | 292 | static int has_ce2_string(struct pcmcia_device * link); |
293 | static void xirc2ps_config(dev_link_t * link); | 293 | static void xirc2ps_config(struct pcmcia_device * link); |
294 | static void xirc2ps_release(dev_link_t * link); | 294 | static void xirc2ps_release(struct pcmcia_device * link); |
295 | 295 | ||
296 | /**************** | 296 | /**************** |
297 | * The attach() and detach() entry points are used to create and destroy | 297 | * The attach() and detach() entry points are used to create and destroy |
@@ -313,10 +313,10 @@ static irqreturn_t xirc2ps_interrupt(int irq, void *dev_id, struct pt_regs *regs | |||
313 | /**************** | 313 | /**************** |
314 | * A linked list of "instances" of the device. Each actual | 314 | * A linked list of "instances" of the device. Each actual |
315 | * PCMCIA card corresponds to one device instance, and is described | 315 | * PCMCIA card corresponds to one device instance, and is described |
316 | * by one dev_link_t structure (defined in ds.h). | 316 | * by one struct pcmcia_device structure (defined in ds.h). |
317 | * | 317 | * |
318 | * You may not want to use a linked list for this -- for example, the | 318 | * You may not want to use a linked list for this -- for example, the |
319 | * memory card driver uses an array of dev_link_t pointers, where minor | 319 | * memory card driver uses an array of struct pcmcia_device pointers, where minor |
320 | * device numbers are used to derive the corresponding array index. | 320 | * device numbers are used to derive the corresponding array index. |
321 | */ | 321 | */ |
322 | 322 | ||
@@ -326,7 +326,7 @@ static irqreturn_t xirc2ps_interrupt(int irq, void *dev_id, struct pt_regs *regs | |||
326 | * example, ethernet cards, modems). In other cases, there may be | 326 | * example, ethernet cards, modems). In other cases, there may be |
327 | * many actual or logical devices (SCSI adapters, memory cards with | 327 | * many actual or logical devices (SCSI adapters, memory cards with |
328 | * multiple partitions). The dev_node_t structures need to be kept | 328 | * multiple partitions). The dev_node_t structures need to be kept |
329 | * in a linked list starting at the 'dev' field of a dev_link_t | 329 | * in a linked list starting at the 'dev' field of a struct pcmcia_device |
330 | * structure. We allocate them in the card's private data structure, | 330 | * structure. We allocate them in the card's private data structure, |
331 | * because they generally can't be allocated dynamically. | 331 | * because they generally can't be allocated dynamically. |
332 | */ | 332 | */ |
@@ -355,7 +355,7 @@ static void do_tx_timeout(struct net_device *dev); | |||
355 | static struct net_device_stats *do_get_stats(struct net_device *dev); | 355 | static struct net_device_stats *do_get_stats(struct net_device *dev); |
356 | static void set_addresses(struct net_device *dev); | 356 | static void set_addresses(struct net_device *dev); |
357 | static void set_multicast_list(struct net_device *dev); | 357 | static void set_multicast_list(struct net_device *dev); |
358 | static int set_card_type(dev_link_t *link, const void *s); | 358 | static int set_card_type(struct pcmcia_device *link, const void *s); |
359 | static int do_config(struct net_device *dev, struct ifmap *map); | 359 | static int do_config(struct net_device *dev, struct ifmap *map); |
360 | static int do_open(struct net_device *dev); | 360 | static int do_open(struct net_device *dev); |
361 | static int do_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); | 361 | static int do_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); |
@@ -368,7 +368,7 @@ static int do_stop(struct net_device *dev); | |||
368 | 368 | ||
369 | /*=============== Helper functions =========================*/ | 369 | /*=============== Helper functions =========================*/ |
370 | static int | 370 | static int |
371 | first_tuple(client_handle_t handle, tuple_t *tuple, cisparse_t *parse) | 371 | first_tuple(struct pcmcia_device *handle, tuple_t *tuple, cisparse_t *parse) |
372 | { | 372 | { |
373 | int err; | 373 | int err; |
374 | 374 | ||
@@ -379,7 +379,7 @@ first_tuple(client_handle_t handle, tuple_t *tuple, cisparse_t *parse) | |||
379 | } | 379 | } |
380 | 380 | ||
381 | static int | 381 | static int |
382 | next_tuple(client_handle_t handle, tuple_t *tuple, cisparse_t *parse) | 382 | next_tuple(struct pcmcia_device *handle, tuple_t *tuple, cisparse_t *parse) |
383 | { | 383 | { |
384 | int err; | 384 | int err; |
385 | 385 | ||
@@ -553,11 +553,10 @@ mii_wr(kio_addr_t ioaddr, u_char phyaddr, u_char phyreg, unsigned data, int len) | |||
553 | */ | 553 | */ |
554 | 554 | ||
555 | static int | 555 | static int |
556 | xirc2ps_attach(struct pcmcia_device *p_dev) | 556 | xirc2ps_attach(struct pcmcia_device *link) |
557 | { | 557 | { |
558 | struct net_device *dev; | 558 | struct net_device *dev; |
559 | local_info_t *local; | 559 | local_info_t *local; |
560 | dev_link_t *link = dev_to_instance(p_dev); | ||
561 | 560 | ||
562 | DEBUG(0, "attach()\n"); | 561 | DEBUG(0, "attach()\n"); |
563 | 562 | ||
@@ -566,7 +565,7 @@ xirc2ps_attach(struct pcmcia_device *p_dev) | |||
566 | if (!dev) | 565 | if (!dev) |
567 | return -ENOMEM; | 566 | return -ENOMEM; |
568 | local = netdev_priv(dev); | 567 | local = netdev_priv(dev); |
569 | local->p_dev = p_dev; | 568 | local->p_dev = link; |
570 | link->priv = dev; | 569 | link->priv = dev; |
571 | 570 | ||
572 | /* General socket configuration */ | 571 | /* General socket configuration */ |
@@ -606,9 +605,8 @@ xirc2ps_attach(struct pcmcia_device *p_dev) | |||
606 | */ | 605 | */ |
607 | 606 | ||
608 | static void | 607 | static void |
609 | xirc2ps_detach(struct pcmcia_device *p_dev) | 608 | xirc2ps_detach(struct pcmcia_device *link) |
610 | { | 609 | { |
611 | dev_link_t *link = dev_to_instance(p_dev); | ||
612 | struct net_device *dev = link->priv; | 610 | struct net_device *dev = link->priv; |
613 | 611 | ||
614 | DEBUG(0, "detach(0x%p)\n", link); | 612 | DEBUG(0, "detach(0x%p)\n", link); |
@@ -641,7 +639,7 @@ xirc2ps_detach(struct pcmcia_device *p_dev) | |||
641 | * | 639 | * |
642 | */ | 640 | */ |
643 | static int | 641 | static int |
644 | set_card_type(dev_link_t *link, const void *s) | 642 | set_card_type(struct pcmcia_device *link, const void *s) |
645 | { | 643 | { |
646 | struct net_device *dev = link->priv; | 644 | struct net_device *dev = link->priv; |
647 | local_info_t *local = netdev_priv(dev); | 645 | local_info_t *local = netdev_priv(dev); |
@@ -710,9 +708,8 @@ set_card_type(dev_link_t *link, const void *s) | |||
710 | * Returns: true if this is a CE2 | 708 | * Returns: true if this is a CE2 |
711 | */ | 709 | */ |
712 | static int | 710 | static int |
713 | has_ce2_string(dev_link_t * link) | 711 | has_ce2_string(struct pcmcia_device * link) |
714 | { | 712 | { |
715 | client_handle_t handle = link->handle; | ||
716 | tuple_t tuple; | 713 | tuple_t tuple; |
717 | cisparse_t parse; | 714 | cisparse_t parse; |
718 | u_char buf[256]; | 715 | u_char buf[256]; |
@@ -722,7 +719,7 @@ has_ce2_string(dev_link_t * link) | |||
722 | tuple.TupleDataMax = 254; | 719 | tuple.TupleDataMax = 254; |
723 | tuple.TupleOffset = 0; | 720 | tuple.TupleOffset = 0; |
724 | tuple.DesiredTuple = CISTPL_VERS_1; | 721 | tuple.DesiredTuple = CISTPL_VERS_1; |
725 | if (!first_tuple(handle, &tuple, &parse) && parse.version_1.ns > 2) { | 722 | if (!first_tuple(link, &tuple, &parse) && parse.version_1.ns > 2) { |
726 | if (strstr(parse.version_1.str + parse.version_1.ofs[2], "CE2")) | 723 | if (strstr(parse.version_1.str + parse.version_1.ofs[2], "CE2")) |
727 | return 1; | 724 | return 1; |
728 | } | 725 | } |
@@ -735,9 +732,8 @@ has_ce2_string(dev_link_t * link) | |||
735 | * ethernet device available to the system. | 732 | * ethernet device available to the system. |
736 | */ | 733 | */ |
737 | static void | 734 | static void |
738 | xirc2ps_config(dev_link_t * link) | 735 | xirc2ps_config(struct pcmcia_device * link) |
739 | { | 736 | { |
740 | client_handle_t handle = link->handle; | ||
741 | struct net_device *dev = link->priv; | 737 | struct net_device *dev = link->priv; |
742 | local_info_t *local = netdev_priv(dev); | 738 | local_info_t *local = netdev_priv(dev); |
743 | tuple_t tuple; | 739 | tuple_t tuple; |
@@ -763,7 +759,7 @@ xirc2ps_config(dev_link_t * link) | |||
763 | 759 | ||
764 | /* Is this a valid card */ | 760 | /* Is this a valid card */ |
765 | tuple.DesiredTuple = CISTPL_MANFID; | 761 | tuple.DesiredTuple = CISTPL_MANFID; |
766 | if ((err=first_tuple(handle, &tuple, &parse))) { | 762 | if ((err=first_tuple(link, &tuple, &parse))) { |
767 | printk(KNOT_XIRC "manfid not found in CIS\n"); | 763 | printk(KNOT_XIRC "manfid not found in CIS\n"); |
768 | goto failure; | 764 | goto failure; |
769 | } | 765 | } |
@@ -799,15 +795,15 @@ xirc2ps_config(dev_link_t * link) | |||
799 | 795 | ||
800 | /* get configuration stuff */ | 796 | /* get configuration stuff */ |
801 | tuple.DesiredTuple = CISTPL_CONFIG; | 797 | tuple.DesiredTuple = CISTPL_CONFIG; |
802 | if ((err=first_tuple(handle, &tuple, &parse))) | 798 | if ((err=first_tuple(link, &tuple, &parse))) |
803 | goto cis_error; | 799 | goto cis_error; |
804 | link->conf.ConfigBase = parse.config.base; | 800 | link->conf.ConfigBase = parse.config.base; |
805 | link->conf.Present = parse.config.rmask[0]; | 801 | link->conf.Present = parse.config.rmask[0]; |
806 | 802 | ||
807 | /* get the ethernet address from the CIS */ | 803 | /* get the ethernet address from the CIS */ |
808 | tuple.DesiredTuple = CISTPL_FUNCE; | 804 | tuple.DesiredTuple = CISTPL_FUNCE; |
809 | for (err = first_tuple(handle, &tuple, &parse); !err; | 805 | for (err = first_tuple(link, &tuple, &parse); !err; |
810 | err = next_tuple(handle, &tuple, &parse)) { | 806 | err = next_tuple(link, &tuple, &parse)) { |
811 | /* Once I saw two CISTPL_FUNCE_LAN_NODE_ID entries: | 807 | /* Once I saw two CISTPL_FUNCE_LAN_NODE_ID entries: |
812 | * the first one with a length of zero the second correct - | 808 | * the first one with a length of zero the second correct - |
813 | * so I skip all entries with length 0 */ | 809 | * so I skip all entries with length 0 */ |
@@ -817,8 +813,8 @@ xirc2ps_config(dev_link_t * link) | |||
817 | } | 813 | } |
818 | if (err) { /* not found: try to get the node-id from tuple 0x89 */ | 814 | if (err) { /* not found: try to get the node-id from tuple 0x89 */ |
819 | tuple.DesiredTuple = 0x89; /* data layout looks like tuple 0x22 */ | 815 | tuple.DesiredTuple = 0x89; /* data layout looks like tuple 0x22 */ |
820 | if ((err = pcmcia_get_first_tuple(handle, &tuple)) == 0 && | 816 | if ((err = pcmcia_get_first_tuple(link, &tuple)) == 0 && |
821 | (err = pcmcia_get_tuple_data(handle, &tuple)) == 0) { | 817 | (err = pcmcia_get_tuple_data(link, &tuple)) == 0) { |
822 | if (tuple.TupleDataLen == 8 && *buf == CISTPL_FUNCE_LAN_NODE_ID) | 818 | if (tuple.TupleDataLen == 8 && *buf == CISTPL_FUNCE_LAN_NODE_ID) |
823 | memcpy(&parse, buf, 8); | 819 | memcpy(&parse, buf, 8); |
824 | else | 820 | else |
@@ -827,8 +823,8 @@ xirc2ps_config(dev_link_t * link) | |||
827 | } | 823 | } |
828 | if (err) { /* another try (James Lehmer's CE2 version 4.1)*/ | 824 | if (err) { /* another try (James Lehmer's CE2 version 4.1)*/ |
829 | tuple.DesiredTuple = CISTPL_FUNCE; | 825 | tuple.DesiredTuple = CISTPL_FUNCE; |
830 | for (err = first_tuple(handle, &tuple, &parse); !err; | 826 | for (err = first_tuple(link, &tuple, &parse); !err; |
831 | err = next_tuple(handle, &tuple, &parse)) { | 827 | err = next_tuple(link, &tuple, &parse)) { |
832 | if (parse.funce.type == 0x02 && parse.funce.data[0] == 1 | 828 | if (parse.funce.type == 0x02 && parse.funce.data[0] == 1 |
833 | && parse.funce.data[1] == 6 && tuple.TupleDataLen == 13) { | 829 | && parse.funce.data[1] == 6 && tuple.TupleDataLen == 13) { |
834 | buf[1] = 4; | 830 | buf[1] = 4; |
@@ -871,14 +867,14 @@ xirc2ps_config(dev_link_t * link) | |||
871 | * Ethernet port */ | 867 | * Ethernet port */ |
872 | link->io.NumPorts1 = 16; /* no Mako stuff anymore */ | 868 | link->io.NumPorts1 = 16; /* no Mako stuff anymore */ |
873 | tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; | 869 | tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; |
874 | for (err = first_tuple(handle, &tuple, &parse); !err; | 870 | for (err = first_tuple(link, &tuple, &parse); !err; |
875 | err = next_tuple(handle, &tuple, &parse)) { | 871 | err = next_tuple(link, &tuple, &parse)) { |
876 | if (cf->io.nwin > 0 && (cf->io.win[0].base & 0xf) == 8) { | 872 | if (cf->io.nwin > 0 && (cf->io.win[0].base & 0xf) == 8) { |
877 | for (ioaddr = 0x300; ioaddr < 0x400; ioaddr += 0x10) { | 873 | for (ioaddr = 0x300; ioaddr < 0x400; ioaddr += 0x10) { |
878 | link->conf.ConfigIndex = cf->index ; | 874 | link->conf.ConfigIndex = cf->index ; |
879 | link->io.BasePort2 = cf->io.win[0].base; | 875 | link->io.BasePort2 = cf->io.win[0].base; |
880 | link->io.BasePort1 = ioaddr; | 876 | link->io.BasePort1 = ioaddr; |
881 | if (!(err=pcmcia_request_io(link->handle, &link->io))) | 877 | if (!(err=pcmcia_request_io(link, &link->io))) |
882 | goto port_found; | 878 | goto port_found; |
883 | } | 879 | } |
884 | } | 880 | } |
@@ -892,15 +888,15 @@ xirc2ps_config(dev_link_t * link) | |||
892 | */ | 888 | */ |
893 | for (pass=0; pass < 2; pass++) { | 889 | for (pass=0; pass < 2; pass++) { |
894 | tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; | 890 | tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; |
895 | for (err = first_tuple(handle, &tuple, &parse); !err; | 891 | for (err = first_tuple(link, &tuple, &parse); !err; |
896 | err = next_tuple(handle, &tuple, &parse)){ | 892 | err = next_tuple(link, &tuple, &parse)){ |
897 | if (cf->io.nwin > 0 && (cf->io.win[0].base & 0xf) == 8){ | 893 | if (cf->io.nwin > 0 && (cf->io.win[0].base & 0xf) == 8){ |
898 | link->conf.ConfigIndex = cf->index ; | 894 | link->conf.ConfigIndex = cf->index ; |
899 | link->io.BasePort2 = cf->io.win[0].base; | 895 | link->io.BasePort2 = cf->io.win[0].base; |
900 | link->io.BasePort1 = link->io.BasePort2 | 896 | link->io.BasePort1 = link->io.BasePort2 |
901 | + (pass ? (cf->index & 0x20 ? -24:8) | 897 | + (pass ? (cf->index & 0x20 ? -24:8) |
902 | : (cf->index & 0x20 ? 8:-24)); | 898 | : (cf->index & 0x20 ? 8:-24)); |
903 | if (!(err=pcmcia_request_io(link->handle, &link->io))) | 899 | if (!(err=pcmcia_request_io(link, &link->io))) |
904 | goto port_found; | 900 | goto port_found; |
905 | } | 901 | } |
906 | } | 902 | } |
@@ -915,12 +911,12 @@ xirc2ps_config(dev_link_t * link) | |||
915 | link->io.NumPorts1 = 16; | 911 | link->io.NumPorts1 = 16; |
916 | for (ioaddr = 0x300; ioaddr < 0x400; ioaddr += 0x10) { | 912 | for (ioaddr = 0x300; ioaddr < 0x400; ioaddr += 0x10) { |
917 | link->io.BasePort1 = ioaddr; | 913 | link->io.BasePort1 = ioaddr; |
918 | if (!(err=pcmcia_request_io(link->handle, &link->io))) | 914 | if (!(err=pcmcia_request_io(link, &link->io))) |
919 | goto port_found; | 915 | goto port_found; |
920 | } | 916 | } |
921 | link->io.BasePort1 = 0; /* let CS decide */ | 917 | link->io.BasePort1 = 0; /* let CS decide */ |
922 | if ((err=pcmcia_request_io(link->handle, &link->io))) { | 918 | if ((err=pcmcia_request_io(link, &link->io))) { |
923 | cs_error(link->handle, RequestIO, err); | 919 | cs_error(link, RequestIO, err); |
924 | goto config_error; | 920 | goto config_error; |
925 | } | 921 | } |
926 | } | 922 | } |
@@ -932,8 +928,8 @@ xirc2ps_config(dev_link_t * link) | |||
932 | * Now allocate an interrupt line. Note that this does not | 928 | * Now allocate an interrupt line. Note that this does not |
933 | * actually assign a handler to the interrupt. | 929 | * actually assign a handler to the interrupt. |
934 | */ | 930 | */ |
935 | if ((err=pcmcia_request_irq(link->handle, &link->irq))) { | 931 | if ((err=pcmcia_request_irq(link, &link->irq))) { |
936 | cs_error(link->handle, RequestIRQ, err); | 932 | cs_error(link, RequestIRQ, err); |
937 | goto config_error; | 933 | goto config_error; |
938 | } | 934 | } |
939 | 935 | ||
@@ -941,8 +937,8 @@ xirc2ps_config(dev_link_t * link) | |||
941 | * This actually configures the PCMCIA socket -- setting up | 937 | * This actually configures the PCMCIA socket -- setting up |
942 | * the I/O windows and the interrupt mapping. | 938 | * the I/O windows and the interrupt mapping. |
943 | */ | 939 | */ |
944 | if ((err=pcmcia_request_configuration(link->handle, &link->conf))) { | 940 | if ((err=pcmcia_request_configuration(link, &link->conf))) { |
945 | cs_error(link->handle, RequestConfiguration, err); | 941 | cs_error(link, RequestConfiguration, err); |
946 | goto config_error; | 942 | goto config_error; |
947 | } | 943 | } |
948 | 944 | ||
@@ -959,15 +955,15 @@ xirc2ps_config(dev_link_t * link) | |||
959 | reg.Action = CS_WRITE; | 955 | reg.Action = CS_WRITE; |
960 | reg.Offset = CISREG_IOBASE_0; | 956 | reg.Offset = CISREG_IOBASE_0; |
961 | reg.Value = link->io.BasePort2 & 0xff; | 957 | reg.Value = link->io.BasePort2 & 0xff; |
962 | if ((err = pcmcia_access_configuration_register(link->handle, ®))) { | 958 | if ((err = pcmcia_access_configuration_register(link, ®))) { |
963 | cs_error(link->handle, AccessConfigurationRegister, err); | 959 | cs_error(link, AccessConfigurationRegister, err); |
964 | goto config_error; | 960 | goto config_error; |
965 | } | 961 | } |
966 | reg.Action = CS_WRITE; | 962 | reg.Action = CS_WRITE; |
967 | reg.Offset = CISREG_IOBASE_1; | 963 | reg.Offset = CISREG_IOBASE_1; |
968 | reg.Value = (link->io.BasePort2 >> 8) & 0xff; | 964 | reg.Value = (link->io.BasePort2 >> 8) & 0xff; |
969 | if ((err = pcmcia_access_configuration_register(link->handle, ®))) { | 965 | if ((err = pcmcia_access_configuration_register(link, ®))) { |
970 | cs_error(link->handle, AccessConfigurationRegister, err); | 966 | cs_error(link, AccessConfigurationRegister, err); |
971 | goto config_error; | 967 | goto config_error; |
972 | } | 968 | } |
973 | 969 | ||
@@ -978,15 +974,15 @@ xirc2ps_config(dev_link_t * link) | |||
978 | req.Attributes = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE; | 974 | req.Attributes = WIN_DATA_WIDTH_8|WIN_MEMORY_TYPE_AM|WIN_ENABLE; |
979 | req.Base = req.Size = 0; | 975 | req.Base = req.Size = 0; |
980 | req.AccessSpeed = 0; | 976 | req.AccessSpeed = 0; |
981 | if ((err = pcmcia_request_window(&link->handle, &req, &link->win))) { | 977 | if ((err = pcmcia_request_window(&link, &req, &link->win))) { |
982 | cs_error(link->handle, RequestWindow, err); | 978 | cs_error(link, RequestWindow, err); |
983 | goto config_error; | 979 | goto config_error; |
984 | } | 980 | } |
985 | local->dingo_ccr = ioremap(req.Base,0x1000) + 0x0800; | 981 | local->dingo_ccr = ioremap(req.Base,0x1000) + 0x0800; |
986 | mem.CardOffset = 0x0; | 982 | mem.CardOffset = 0x0; |
987 | mem.Page = 0; | 983 | mem.Page = 0; |
988 | if ((err = pcmcia_map_mem_page(link->win, &mem))) { | 984 | if ((err = pcmcia_map_mem_page(link->win, &mem))) { |
989 | cs_error(link->handle, MapMemPage, err); | 985 | cs_error(link, MapMemPage, err); |
990 | goto config_error; | 986 | goto config_error; |
991 | } | 987 | } |
992 | 988 | ||
@@ -1048,7 +1044,7 @@ xirc2ps_config(dev_link_t * link) | |||
1048 | 1044 | ||
1049 | link->dev_node = &local->node; | 1045 | link->dev_node = &local->node; |
1050 | link->state &= ~DEV_CONFIG_PENDING; | 1046 | link->state &= ~DEV_CONFIG_PENDING; |
1051 | SET_NETDEV_DEV(dev, &handle_to_dev(handle)); | 1047 | SET_NETDEV_DEV(dev, &handle_to_dev(link)); |
1052 | 1048 | ||
1053 | if ((err=register_netdev(dev))) { | 1049 | if ((err=register_netdev(dev))) { |
1054 | printk(KNOT_XIRC "register_netdev() failed\n"); | 1050 | printk(KNOT_XIRC "register_netdev() failed\n"); |
@@ -1084,7 +1080,7 @@ xirc2ps_config(dev_link_t * link) | |||
1084 | * still open, this will be postponed until it is closed. | 1080 | * still open, this will be postponed until it is closed. |
1085 | */ | 1081 | */ |
1086 | static void | 1082 | static void |
1087 | xirc2ps_release(dev_link_t *link) | 1083 | xirc2ps_release(struct pcmcia_device *link) |
1088 | { | 1084 | { |
1089 | DEBUG(0, "release(0x%p)\n", link); | 1085 | DEBUG(0, "release(0x%p)\n", link); |
1090 | 1086 | ||
@@ -1094,15 +1090,14 @@ xirc2ps_release(dev_link_t *link) | |||
1094 | if (local->dingo) | 1090 | if (local->dingo) |
1095 | iounmap(local->dingo_ccr - 0x0800); | 1091 | iounmap(local->dingo_ccr - 0x0800); |
1096 | } | 1092 | } |
1097 | pcmcia_disable_device(link->handle); | 1093 | pcmcia_disable_device(link); |
1098 | } /* xirc2ps_release */ | 1094 | } /* xirc2ps_release */ |
1099 | 1095 | ||
1100 | /*====================================================================*/ | 1096 | /*====================================================================*/ |
1101 | 1097 | ||
1102 | 1098 | ||
1103 | static int xirc2ps_suspend(struct pcmcia_device *p_dev) | 1099 | static int xirc2ps_suspend(struct pcmcia_device *link) |
1104 | { | 1100 | { |
1105 | dev_link_t *link = dev_to_instance(p_dev); | ||
1106 | struct net_device *dev = link->priv; | 1101 | struct net_device *dev = link->priv; |
1107 | 1102 | ||
1108 | if ((link->state & DEV_CONFIG) && (link->open)) { | 1103 | if ((link->state & DEV_CONFIG) && (link->open)) { |
@@ -1113,9 +1108,8 @@ static int xirc2ps_suspend(struct pcmcia_device *p_dev) | |||
1113 | return 0; | 1108 | return 0; |
1114 | } | 1109 | } |
1115 | 1110 | ||
1116 | static int xirc2ps_resume(struct pcmcia_device *p_dev) | 1111 | static int xirc2ps_resume(struct pcmcia_device *link) |
1117 | { | 1112 | { |
1118 | dev_link_t *link = dev_to_instance(p_dev); | ||
1119 | struct net_device *dev = link->priv; | 1113 | struct net_device *dev = link->priv; |
1120 | 1114 | ||
1121 | if ((link->state & DEV_CONFIG) && (link->open)) { | 1115 | if ((link->state & DEV_CONFIG) && (link->open)) { |
@@ -1534,7 +1528,7 @@ static int | |||
1534 | do_open(struct net_device *dev) | 1528 | do_open(struct net_device *dev) |
1535 | { | 1529 | { |
1536 | local_info_t *lp = netdev_priv(dev); | 1530 | local_info_t *lp = netdev_priv(dev); |
1537 | dev_link_t *link = lp->p_dev; | 1531 | struct pcmcia_device *link = lp->p_dev; |
1538 | 1532 | ||
1539 | DEBUG(0, "do_open(%p)\n", dev); | 1533 | DEBUG(0, "do_open(%p)\n", dev); |
1540 | 1534 | ||
@@ -1864,7 +1858,7 @@ do_stop(struct net_device *dev) | |||
1864 | { | 1858 | { |
1865 | kio_addr_t ioaddr = dev->base_addr; | 1859 | kio_addr_t ioaddr = dev->base_addr; |
1866 | local_info_t *lp = netdev_priv(dev); | 1860 | local_info_t *lp = netdev_priv(dev); |
1867 | dev_link_t *link = lp->p_dev; | 1861 | struct pcmcia_device *link = lp->p_dev; |
1868 | 1862 | ||
1869 | DEBUG(0, "do_stop(%p)\n", dev); | 1863 | DEBUG(0, "do_stop(%p)\n", dev); |
1870 | 1864 | ||