diff options
-rw-r--r-- | drivers/ide/legacy/ide-cs.c | 2 | ||||
-rw-r--r-- | drivers/pcmcia/Kconfig | 2 | ||||
-rw-r--r-- | drivers/pcmcia/cardbus.c | 5 | ||||
-rw-r--r-- | drivers/pcmcia/ti113x.h | 115 | ||||
-rw-r--r-- | drivers/pcmcia/yenta_socket.c | 62 | ||||
-rw-r--r-- | drivers/serial/serial_cs.c | 1 | ||||
-rw-r--r-- | include/linux/mod_devicetable.h | 5 | ||||
-rw-r--r-- | include/linux/pci_ids.h | 12 | ||||
-rw-r--r-- | include/pcmcia/ss.h | 9 | ||||
-rw-r--r-- | scripts/mod/file2alias.c | 2 |
10 files changed, 167 insertions, 48 deletions
diff --git a/drivers/ide/legacy/ide-cs.c b/drivers/ide/legacy/ide-cs.c index 0ccf85fcee34..a35a58bef1a4 100644 --- a/drivers/ide/legacy/ide-cs.c +++ b/drivers/ide/legacy/ide-cs.c | |||
@@ -477,7 +477,7 @@ static struct pcmcia_device_id ide_ids[] = { | |||
477 | PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDE", 0x547e66dc, 0x5c5ab149), | 477 | PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDE", 0x547e66dc, 0x5c5ab149), |
478 | PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDEII", 0x547e66dc, 0xb3662674), | 478 | PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDEII", 0x547e66dc, 0xb3662674), |
479 | PCMCIA_DEVICE_PROD_ID12("LOOKMEET", "CBIDE2 ", 0xe37be2b5, 0x8671043b), | 479 | PCMCIA_DEVICE_PROD_ID12("LOOKMEET", "CBIDE2 ", 0xe37be2b5, 0x8671043b), |
480 | PCMCIA_DEVICE_PROD_ID12(" ", "NinjaATA-", 0x3b6e20c8, 0xebe0bd79), | 480 | PCMCIA_DEVICE_PROD_ID2("NinjaATA-", 0xebe0bd79), |
481 | PCMCIA_DEVICE_PROD_ID12("PCMCIA", "CD-ROM", 0x281f1c5d, 0x66536591), | 481 | PCMCIA_DEVICE_PROD_ID12("PCMCIA", "CD-ROM", 0x281f1c5d, 0x66536591), |
482 | PCMCIA_DEVICE_PROD_ID12("PCMCIA", "PnPIDE", 0x281f1c5d, 0x0c694728), | 482 | PCMCIA_DEVICE_PROD_ID12("PCMCIA", "PnPIDE", 0x281f1c5d, 0x0c694728), |
483 | PCMCIA_DEVICE_PROD_ID12("SHUTTLE TECHNOLOGY LTD.", "PCCARD-IDE/ATAPI Adapter", 0x4a3f0ba0, 0x322560e1), | 483 | PCMCIA_DEVICE_PROD_ID12("SHUTTLE TECHNOLOGY LTD.", "PCCARD-IDE/ATAPI Adapter", 0x4a3f0ba0, 0x322560e1), |
diff --git a/drivers/pcmcia/Kconfig b/drivers/pcmcia/Kconfig index ddc741e6ecbf..36cc9a96a338 100644 --- a/drivers/pcmcia/Kconfig +++ b/drivers/pcmcia/Kconfig | |||
@@ -146,7 +146,7 @@ config I82365 | |||
146 | 146 | ||
147 | config TCIC | 147 | config TCIC |
148 | tristate "Databook TCIC host bridge support" | 148 | tristate "Databook TCIC host bridge support" |
149 | depends on PCMCIA | 149 | depends on PCMCIA && ISA |
150 | select PCCARD_NONSTATIC | 150 | select PCCARD_NONSTATIC |
151 | help | 151 | help |
152 | Say Y here to include support for the Databook TCIC family of PCMCIA | 152 | Say Y here to include support for the Databook TCIC family of PCMCIA |
diff --git a/drivers/pcmcia/cardbus.c b/drivers/pcmcia/cardbus.c index 1d755e20880c..3f6d51d11374 100644 --- a/drivers/pcmcia/cardbus.c +++ b/drivers/pcmcia/cardbus.c | |||
@@ -228,6 +228,11 @@ int cb_alloc(struct pcmcia_socket * s) | |||
228 | pci_bus_size_bridges(bus); | 228 | pci_bus_size_bridges(bus); |
229 | pci_bus_assign_resources(bus); | 229 | pci_bus_assign_resources(bus); |
230 | cardbus_assign_irqs(bus, s->pci_irq); | 230 | cardbus_assign_irqs(bus, s->pci_irq); |
231 | |||
232 | /* socket specific tune function */ | ||
233 | if (s->tune_bridge) | ||
234 | s->tune_bridge(s, bus); | ||
235 | |||
231 | pci_enable_bridges(bus); | 236 | pci_enable_bridges(bus); |
232 | pci_bus_add_devices(bus); | 237 | pci_bus_add_devices(bus); |
233 | 238 | ||
diff --git a/drivers/pcmcia/ti113x.h b/drivers/pcmcia/ti113x.h index fbe233e19ceb..da0b404561c9 100644 --- a/drivers/pcmcia/ti113x.h +++ b/drivers/pcmcia/ti113x.h | |||
@@ -59,6 +59,7 @@ | |||
59 | 59 | ||
60 | #define TI122X_SCR_SER_STEP 0xc0000000 | 60 | #define TI122X_SCR_SER_STEP 0xc0000000 |
61 | #define TI122X_SCR_INTRTIE 0x20000000 | 61 | #define TI122X_SCR_INTRTIE 0x20000000 |
62 | #define TIXX21_SCR_TIEALL 0x10000000 | ||
62 | #define TI122X_SCR_CBRSVD 0x00400000 | 63 | #define TI122X_SCR_CBRSVD 0x00400000 |
63 | #define TI122X_SCR_MRBURSTDN 0x00008000 | 64 | #define TI122X_SCR_MRBURSTDN 0x00008000 |
64 | #define TI122X_SCR_MRBURSTUP 0x00004000 | 65 | #define TI122X_SCR_MRBURSTUP 0x00004000 |
@@ -153,6 +154,12 @@ | |||
153 | /* EnE test register */ | 154 | /* EnE test register */ |
154 | #define ENE_TEST_C9 0xc9 /* 8bit */ | 155 | #define ENE_TEST_C9 0xc9 /* 8bit */ |
155 | #define ENE_TEST_C9_TLTENABLE 0x02 | 156 | #define ENE_TEST_C9_TLTENABLE 0x02 |
157 | #define ENE_TEST_C9_PFENABLE_F0 0x04 | ||
158 | #define ENE_TEST_C9_PFENABLE_F1 0x08 | ||
159 | #define ENE_TEST_C9_PFENABLE (ENE_TEST_C9_PFENABLE_F0 | ENE_TEST_C9_PFENABLE_F0) | ||
160 | #define ENE_TEST_C9_WPDISALBLE_F0 0x40 | ||
161 | #define ENE_TEST_C9_WPDISALBLE_F1 0x80 | ||
162 | #define ENE_TEST_C9_WPDISALBLE (ENE_TEST_C9_WPDISALBLE_F0 | ENE_TEST_C9_WPDISALBLE_F1) | ||
156 | 163 | ||
157 | /* | 164 | /* |
158 | * Texas Instruments CardBus controller overrides. | 165 | * Texas Instruments CardBus controller overrides. |
@@ -618,6 +625,7 @@ static int ti12xx_2nd_slot_empty(struct yenta_socket *socket) | |||
618 | int devfn; | 625 | int devfn; |
619 | unsigned int state; | 626 | unsigned int state; |
620 | int ret = 1; | 627 | int ret = 1; |
628 | u32 sysctl; | ||
621 | 629 | ||
622 | /* catch the two-slot controllers */ | 630 | /* catch the two-slot controllers */ |
623 | switch (socket->dev->device) { | 631 | switch (socket->dev->device) { |
@@ -640,6 +648,24 @@ static int ti12xx_2nd_slot_empty(struct yenta_socket *socket) | |||
640 | */ | 648 | */ |
641 | break; | 649 | break; |
642 | 650 | ||
651 | case PCI_DEVICE_ID_TI_X515: | ||
652 | case PCI_DEVICE_ID_TI_X420: | ||
653 | case PCI_DEVICE_ID_TI_X620: | ||
654 | case PCI_DEVICE_ID_TI_XX21_XX11: | ||
655 | case PCI_DEVICE_ID_TI_7410: | ||
656 | case PCI_DEVICE_ID_TI_7610: | ||
657 | /* | ||
658 | * those are either single or dual slot CB with additional functions | ||
659 | * like 1394, smartcard reader, etc. check the TIEALL flag for them | ||
660 | * the TIEALL flag binds the IRQ of all functions toghether. | ||
661 | * we catch the single slot variants later. | ||
662 | */ | ||
663 | sysctl = config_readl(socket, TI113X_SYSTEM_CONTROL); | ||
664 | if (sysctl & TIXX21_SCR_TIEALL) | ||
665 | return 0; | ||
666 | |||
667 | break; | ||
668 | |||
643 | /* single-slot controllers have the 2nd slot empty always :) */ | 669 | /* single-slot controllers have the 2nd slot empty always :) */ |
644 | default: | 670 | default: |
645 | return 1; | 671 | return 1; |
@@ -652,6 +678,15 @@ static int ti12xx_2nd_slot_empty(struct yenta_socket *socket) | |||
652 | if (!func) | 678 | if (!func) |
653 | return 1; | 679 | return 1; |
654 | 680 | ||
681 | /* | ||
682 | * check that the device id of both slots match. this is needed for the | ||
683 | * XX21 and the XX11 controller that share the same device id for single | ||
684 | * and dual slot controllers. return '2nd slot empty'. we already checked | ||
685 | * if the interrupt is tied to another function. | ||
686 | */ | ||
687 | if (socket->dev->device != func->device) | ||
688 | goto out; | ||
689 | |||
655 | slot2 = pci_get_drvdata(func); | 690 | slot2 = pci_get_drvdata(func); |
656 | if (!slot2) | 691 | if (!slot2) |
657 | goto out; | 692 | goto out; |
@@ -791,16 +826,6 @@ static int ti12xx_override(struct yenta_socket *socket) | |||
791 | config_writel(socket, TI113X_SYSTEM_CONTROL, val); | 826 | config_writel(socket, TI113X_SYSTEM_CONTROL, val); |
792 | 827 | ||
793 | /* | 828 | /* |
794 | * for EnE bridges only: clear testbit TLTEnable. this makes the | ||
795 | * RME Hammerfall DSP sound card working. | ||
796 | */ | ||
797 | if (socket->dev->vendor == PCI_VENDOR_ID_ENE) { | ||
798 | u8 test_c9 = config_readb(socket, ENE_TEST_C9); | ||
799 | test_c9 &= ~ENE_TEST_C9_TLTENABLE; | ||
800 | config_writeb(socket, ENE_TEST_C9, test_c9); | ||
801 | } | ||
802 | |||
803 | /* | ||
804 | * Yenta expects controllers to use CSCINT to route | 829 | * Yenta expects controllers to use CSCINT to route |
805 | * CSC interrupts to PCI rather than INTVAL. | 830 | * CSC interrupts to PCI rather than INTVAL. |
806 | */ | 831 | */ |
@@ -841,5 +866,75 @@ static int ti1250_override(struct yenta_socket *socket) | |||
841 | return ti12xx_override(socket); | 866 | return ti12xx_override(socket); |
842 | } | 867 | } |
843 | 868 | ||
869 | |||
870 | /** | ||
871 | * EnE specific part. EnE bridges are register compatible with TI bridges but | ||
872 | * have their own test registers and more important their own little problems. | ||
873 | * Some fixup code to make everybody happy (TM). | ||
874 | */ | ||
875 | |||
876 | /** | ||
877 | * set/clear various test bits: | ||
878 | * Defaults to clear the bit. | ||
879 | * - mask (u8) defines what bits to change | ||
880 | * - bits (u8) is the values to change them to | ||
881 | * -> it's | ||
882 | * current = (current & ~mask) | bits | ||
883 | */ | ||
884 | /* pci ids of devices that wants to have the bit set */ | ||
885 | #define DEVID(_vend,_dev,_subvend,_subdev,mask,bits) { \ | ||
886 | .vendor = _vend, \ | ||
887 | .device = _dev, \ | ||
888 | .subvendor = _subvend, \ | ||
889 | .subdevice = _subdev, \ | ||
890 | .driver_data = ((mask) << 8 | (bits)), \ | ||
891 | } | ||
892 | static struct pci_device_id ene_tune_tbl[] = { | ||
893 | /* Echo Audio products based on motorola DSP56301 and DSP56361 */ | ||
894 | DEVID(PCI_VENDOR_ID_MOTOROLA, 0x1801, 0xECC0, PCI_ANY_ID, | ||
895 | ENE_TEST_C9_TLTENABLE | ENE_TEST_C9_PFENABLE, ENE_TEST_C9_TLTENABLE), | ||
896 | DEVID(PCI_VENDOR_ID_MOTOROLA, 0x3410, 0xECC0, PCI_ANY_ID, | ||
897 | ENE_TEST_C9_TLTENABLE | ENE_TEST_C9_PFENABLE, ENE_TEST_C9_TLTENABLE), | ||
898 | |||
899 | {} | ||
900 | }; | ||
901 | |||
902 | static void ene_tune_bridge(struct pcmcia_socket *sock, struct pci_bus *bus) | ||
903 | { | ||
904 | struct yenta_socket *socket = container_of(sock, struct yenta_socket, socket); | ||
905 | struct pci_dev *dev; | ||
906 | struct pci_device_id *id = NULL; | ||
907 | u8 test_c9, old_c9, mask, bits; | ||
908 | |||
909 | list_for_each_entry(dev, &bus->devices, bus_list) { | ||
910 | id = (struct pci_device_id *) pci_match_id(ene_tune_tbl, dev); | ||
911 | if (id) | ||
912 | break; | ||
913 | } | ||
914 | |||
915 | test_c9 = old_c9 = config_readb(socket, ENE_TEST_C9); | ||
916 | if (id) { | ||
917 | mask = (id->driver_data >> 8) & 0xFF; | ||
918 | bits = id->driver_data & 0xFF; | ||
919 | |||
920 | test_c9 = (test_c9 & ~mask) | bits; | ||
921 | } | ||
922 | else | ||
923 | /* default to clear TLTEnable bit, old behaviour */ | ||
924 | test_c9 &= ~ENE_TEST_C9_TLTENABLE; | ||
925 | |||
926 | printk(KERN_INFO "yenta EnE: chaning testregister 0xC9, %02x -> %02x\n", old_c9, test_c9); | ||
927 | config_writeb(socket, ENE_TEST_C9, test_c9); | ||
928 | } | ||
929 | |||
930 | |||
931 | static int ene_override(struct yenta_socket *socket) | ||
932 | { | ||
933 | /* install tune_bridge() function */ | ||
934 | socket->socket.tune_bridge = ene_tune_bridge; | ||
935 | |||
936 | return ti1250_override(socket); | ||
937 | } | ||
938 | |||
844 | #endif /* _LINUX_TI113X_H */ | 939 | #endif /* _LINUX_TI113X_H */ |
845 | 940 | ||
diff --git a/drivers/pcmcia/yenta_socket.c b/drivers/pcmcia/yenta_socket.c index ba4d78e5b121..db9f952f9e3c 100644 --- a/drivers/pcmcia/yenta_socket.c +++ b/drivers/pcmcia/yenta_socket.c | |||
@@ -559,12 +559,6 @@ static void yenta_interrogate(struct yenta_socket *socket) | |||
559 | static int yenta_sock_init(struct pcmcia_socket *sock) | 559 | static int yenta_sock_init(struct pcmcia_socket *sock) |
560 | { | 560 | { |
561 | struct yenta_socket *socket = container_of(sock, struct yenta_socket, socket); | 561 | struct yenta_socket *socket = container_of(sock, struct yenta_socket, socket); |
562 | u16 bridge; | ||
563 | |||
564 | bridge = config_readw(socket, CB_BRIDGE_CONTROL) & ~CB_BRIDGE_INTR; | ||
565 | if (!socket->cb_irq) | ||
566 | bridge |= CB_BRIDGE_INTR; | ||
567 | config_writew(socket, CB_BRIDGE_CONTROL, bridge); | ||
568 | 562 | ||
569 | exca_writeb(socket, I365_GBLCTL, 0x00); | 563 | exca_writeb(socket, I365_GBLCTL, 0x00); |
570 | exca_writeb(socket, I365_GENCTL, 0x00); | 564 | exca_writeb(socket, I365_GENCTL, 0x00); |
@@ -819,6 +813,7 @@ enum { | |||
819 | CARDBUS_TYPE_TOPIC95, | 813 | CARDBUS_TYPE_TOPIC95, |
820 | CARDBUS_TYPE_TOPIC97, | 814 | CARDBUS_TYPE_TOPIC97, |
821 | CARDBUS_TYPE_O2MICRO, | 815 | CARDBUS_TYPE_O2MICRO, |
816 | CARDBUS_TYPE_ENE, | ||
822 | }; | 817 | }; |
823 | 818 | ||
824 | /* | 819 | /* |
@@ -865,6 +860,12 @@ static struct cardbus_type cardbus_type[] = { | |||
865 | .override = o2micro_override, | 860 | .override = o2micro_override, |
866 | .restore_state = o2micro_restore_state, | 861 | .restore_state = o2micro_restore_state, |
867 | }, | 862 | }, |
863 | [CARDBUS_TYPE_ENE] = { | ||
864 | .override = ene_override, | ||
865 | .save_state = ti_save_state, | ||
866 | .restore_state = ti_restore_state, | ||
867 | .sock_init = ti_init, | ||
868 | }, | ||
868 | }; | 869 | }; |
869 | 870 | ||
870 | 871 | ||
@@ -883,16 +884,8 @@ static unsigned int yenta_probe_irq(struct yenta_socket *socket, u32 isa_irq_mas | |||
883 | { | 884 | { |
884 | int i; | 885 | int i; |
885 | unsigned long val; | 886 | unsigned long val; |
886 | u16 bridge_ctrl; | ||
887 | u32 mask; | 887 | u32 mask; |
888 | 888 | ||
889 | /* Set up ISA irq routing to probe the ISA irqs.. */ | ||
890 | bridge_ctrl = config_readw(socket, CB_BRIDGE_CONTROL); | ||
891 | if (!(bridge_ctrl & CB_BRIDGE_INTR)) { | ||
892 | bridge_ctrl |= CB_BRIDGE_INTR; | ||
893 | config_writew(socket, CB_BRIDGE_CONTROL, bridge_ctrl); | ||
894 | } | ||
895 | |||
896 | /* | 889 | /* |
897 | * Probe for usable interrupts using the force | 890 | * Probe for usable interrupts using the force |
898 | * register to generate bogus card status events. | 891 | * register to generate bogus card status events. |
@@ -914,9 +907,6 @@ static unsigned int yenta_probe_irq(struct yenta_socket *socket, u32 isa_irq_mas | |||
914 | 907 | ||
915 | mask = probe_irq_mask(val) & 0xffff; | 908 | mask = probe_irq_mask(val) & 0xffff; |
916 | 909 | ||
917 | bridge_ctrl &= ~CB_BRIDGE_INTR; | ||
918 | config_writew(socket, CB_BRIDGE_CONTROL, bridge_ctrl); | ||
919 | |||
920 | return mask; | 910 | return mask; |
921 | } | 911 | } |
922 | 912 | ||
@@ -944,18 +934,11 @@ static irqreturn_t yenta_probe_handler(int irq, void *dev_id, struct pt_regs *re | |||
944 | /* probes the PCI interrupt, use only on override functions */ | 934 | /* probes the PCI interrupt, use only on override functions */ |
945 | static int yenta_probe_cb_irq(struct yenta_socket *socket) | 935 | static int yenta_probe_cb_irq(struct yenta_socket *socket) |
946 | { | 936 | { |
947 | u16 bridge_ctrl; | ||
948 | |||
949 | if (!socket->cb_irq) | 937 | if (!socket->cb_irq) |
950 | return -1; | 938 | return -1; |
951 | 939 | ||
952 | socket->probe_status = 0; | 940 | socket->probe_status = 0; |
953 | 941 | ||
954 | /* disable ISA interrupts */ | ||
955 | bridge_ctrl = config_readw(socket, CB_BRIDGE_CONTROL); | ||
956 | bridge_ctrl &= ~CB_BRIDGE_INTR; | ||
957 | config_writew(socket, CB_BRIDGE_CONTROL, bridge_ctrl); | ||
958 | |||
959 | if (request_irq(socket->cb_irq, yenta_probe_handler, SA_SHIRQ, "yenta", socket)) { | 942 | if (request_irq(socket->cb_irq, yenta_probe_handler, SA_SHIRQ, "yenta", socket)) { |
960 | printk(KERN_WARNING "Yenta: request_irq() in yenta_probe_cb_irq() failed!\n"); | 943 | printk(KERN_WARNING "Yenta: request_irq() in yenta_probe_cb_irq() failed!\n"); |
961 | return -1; | 944 | return -1; |
@@ -966,7 +949,7 @@ static int yenta_probe_cb_irq(struct yenta_socket *socket) | |||
966 | cb_writel(socket, CB_SOCKET_EVENT, -1); | 949 | cb_writel(socket, CB_SOCKET_EVENT, -1); |
967 | cb_writel(socket, CB_SOCKET_MASK, CB_CSTSMASK); | 950 | cb_writel(socket, CB_SOCKET_MASK, CB_CSTSMASK); |
968 | cb_writel(socket, CB_SOCKET_FORCE, CB_FCARDSTS); | 951 | cb_writel(socket, CB_SOCKET_FORCE, CB_FCARDSTS); |
969 | 952 | ||
970 | msleep(100); | 953 | msleep(100); |
971 | 954 | ||
972 | /* disable interrupts */ | 955 | /* disable interrupts */ |
@@ -1004,11 +987,12 @@ static void yenta_config_init(struct yenta_socket *socket) | |||
1004 | { | 987 | { |
1005 | u16 bridge; | 988 | u16 bridge; |
1006 | struct pci_dev *dev = socket->dev; | 989 | struct pci_dev *dev = socket->dev; |
990 | struct pci_bus_region region; | ||
1007 | 991 | ||
1008 | pci_set_power_state(socket->dev, 0); | 992 | pcibios_resource_to_bus(socket->dev, ®ion, &dev->resource[0]); |
1009 | 993 | ||
1010 | config_writel(socket, CB_LEGACY_MODE_BASE, 0); | 994 | config_writel(socket, CB_LEGACY_MODE_BASE, 0); |
1011 | config_writel(socket, PCI_BASE_ADDRESS_0, dev->resource[0].start); | 995 | config_writel(socket, PCI_BASE_ADDRESS_0, region.start); |
1012 | config_writew(socket, PCI_COMMAND, | 996 | config_writew(socket, PCI_COMMAND, |
1013 | PCI_COMMAND_IO | | 997 | PCI_COMMAND_IO | |
1014 | PCI_COMMAND_MEMORY | | 998 | PCI_COMMAND_MEMORY | |
@@ -1031,8 +1015,8 @@ static void yenta_config_init(struct yenta_socket *socket) | |||
1031 | * - PCI interrupts enabled if a PCI interrupt exists.. | 1015 | * - PCI interrupts enabled if a PCI interrupt exists.. |
1032 | */ | 1016 | */ |
1033 | bridge = config_readw(socket, CB_BRIDGE_CONTROL); | 1017 | bridge = config_readw(socket, CB_BRIDGE_CONTROL); |
1034 | bridge &= ~(CB_BRIDGE_CRST | CB_BRIDGE_PREFETCH1 | CB_BRIDGE_INTR | CB_BRIDGE_ISAEN | CB_BRIDGE_VGAEN); | 1018 | bridge &= ~(CB_BRIDGE_CRST | CB_BRIDGE_PREFETCH1 | CB_BRIDGE_ISAEN | CB_BRIDGE_VGAEN); |
1035 | bridge |= CB_BRIDGE_PREFETCH0 | CB_BRIDGE_POSTEN | CB_BRIDGE_INTR; | 1019 | bridge |= CB_BRIDGE_PREFETCH0 | CB_BRIDGE_POSTEN; |
1036 | config_writew(socket, CB_BRIDGE_CONTROL, bridge); | 1020 | config_writew(socket, CB_BRIDGE_CONTROL, bridge); |
1037 | } | 1021 | } |
1038 | 1022 | ||
@@ -1265,10 +1249,22 @@ static struct pci_device_id yenta_table [] = { | |||
1265 | CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_1250, TI1250), | 1249 | CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_1250, TI1250), |
1266 | CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_1410, TI1250), | 1250 | CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_1410, TI1250), |
1267 | 1251 | ||
1268 | CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_1211, TI12XX), | 1252 | CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_XX21_XX11, TI12XX), |
1269 | CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_1225, TI12XX), | 1253 | CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_X515, TI12XX), |
1270 | CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_1410, TI1250), | 1254 | CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_X420, TI12XX), |
1271 | CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_1420, TI12XX), | 1255 | CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_X620, TI12XX), |
1256 | CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_7410, TI12XX), | ||
1257 | CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_7510, TI12XX), | ||
1258 | CB_ID(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_7610, TI12XX), | ||
1259 | |||
1260 | CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_710, TI12XX), | ||
1261 | CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_712, TI12XX), | ||
1262 | CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_720, TI12XX), | ||
1263 | CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_722, TI12XX), | ||
1264 | CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_1211, ENE), | ||
1265 | CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_1225, ENE), | ||
1266 | CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_1410, ENE), | ||
1267 | CB_ID(PCI_VENDOR_ID_ENE, PCI_DEVICE_ID_ENE_1420, ENE), | ||
1272 | 1268 | ||
1273 | CB_ID(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_RL5C465, RICOH), | 1269 | CB_ID(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_RL5C465, RICOH), |
1274 | CB_ID(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_RL5C466, RICOH), | 1270 | CB_ID(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_RL5C466, RICOH), |
diff --git a/drivers/serial/serial_cs.c b/drivers/serial/serial_cs.c index 1ae0b381c162..2c7d3ef76e8e 100644 --- a/drivers/serial/serial_cs.c +++ b/drivers/serial/serial_cs.c | |||
@@ -859,6 +859,7 @@ static struct pcmcia_device_id serial_ids[] = { | |||
859 | PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0175, 0x0000, "DP83903.cis"), | 859 | PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0175, 0x0000, "DP83903.cis"), |
860 | PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0101, 0x0035, "3CXEM556.cis"), | 860 | PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0101, 0x0035, "3CXEM556.cis"), |
861 | PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0101, 0x003d, "3CXEM556.cis"), | 861 | PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0101, 0x003d, "3CXEM556.cis"), |
862 | PCMCIA_DEVICE_CIS_MANF_CARD(0x0192, 0x0710, "SW_7xx_SER.cis"), /* Sierra Wireless AC710/AC750 GPRS Network Adapter R1 */ | ||
862 | PCMCIA_DEVICE_CIS_PROD_ID12("MultiTech", "PCMCIA 56K DataFax", 0x842047ee, 0xc2efcf03, "MT5634ZLX.cis"), | 863 | PCMCIA_DEVICE_CIS_PROD_ID12("MultiTech", "PCMCIA 56K DataFax", 0x842047ee, 0xc2efcf03, "MT5634ZLX.cis"), |
863 | PCMCIA_DEVICE_CIS_PROD_ID12("ADVANTECH", "COMpad-32/85B-4", 0x96913a85, 0xcec8f102, "COMpad4.cis"), | 864 | PCMCIA_DEVICE_CIS_PROD_ID12("ADVANTECH", "COMpad-32/85B-4", 0x96913a85, 0xcec8f102, "COMpad4.cis"), |
864 | PCMCIA_DEVICE_CIS_PROD_ID123("ADVANTECH", "COMpad-32/85", "1.0", 0x96913a85, 0x8fbe92ae, 0x0877b627, "COMpad2.cis"), | 865 | PCMCIA_DEVICE_CIS_PROD_ID123("ADVANTECH", "COMpad-32/85", "1.0", 0x96913a85, 0x8fbe92ae, 0x0877b627, "COMpad2.cis"), |
diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h index 47da39ba3f03..4ed2107bc020 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h | |||
@@ -209,10 +209,11 @@ struct pcmcia_device_id { | |||
209 | /* for real multi-function devices */ | 209 | /* for real multi-function devices */ |
210 | __u8 function; | 210 | __u8 function; |
211 | 211 | ||
212 | /* for pseude multi-function devices */ | 212 | /* for pseudo multi-function devices */ |
213 | __u8 device_no; | 213 | __u8 device_no; |
214 | 214 | ||
215 | __u32 prod_id_hash[4]; | 215 | __u32 prod_id_hash[4] |
216 | __attribute__((aligned(sizeof(__u32)))); | ||
216 | 217 | ||
217 | /* not matched against in kernelspace*/ | 218 | /* not matched against in kernelspace*/ |
218 | #ifdef __KERNEL__ | 219 | #ifdef __KERNEL__ |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index b86a4b77007e..68f11ac1a314 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -769,6 +769,8 @@ | |||
769 | #define PCI_DEVICE_ID_TI_TVP4010 0x3d04 | 769 | #define PCI_DEVICE_ID_TI_TVP4010 0x3d04 |
770 | #define PCI_DEVICE_ID_TI_TVP4020 0x3d07 | 770 | #define PCI_DEVICE_ID_TI_TVP4020 0x3d07 |
771 | #define PCI_DEVICE_ID_TI_4450 0x8011 | 771 | #define PCI_DEVICE_ID_TI_4450 0x8011 |
772 | #define PCI_DEVICE_ID_TI_XX21_XX11 0x8031 | ||
773 | #define PCI_DEVICE_ID_TI_X515 0x8036 | ||
772 | #define PCI_DEVICE_ID_TI_1130 0xac12 | 774 | #define PCI_DEVICE_ID_TI_1130 0xac12 |
773 | #define PCI_DEVICE_ID_TI_1031 0xac13 | 775 | #define PCI_DEVICE_ID_TI_1031 0xac13 |
774 | #define PCI_DEVICE_ID_TI_1131 0xac15 | 776 | #define PCI_DEVICE_ID_TI_1131 0xac15 |
@@ -785,12 +787,17 @@ | |||
785 | #define PCI_DEVICE_ID_TI_4451 0xac42 | 787 | #define PCI_DEVICE_ID_TI_4451 0xac42 |
786 | #define PCI_DEVICE_ID_TI_4510 0xac44 | 788 | #define PCI_DEVICE_ID_TI_4510 0xac44 |
787 | #define PCI_DEVICE_ID_TI_4520 0xac46 | 789 | #define PCI_DEVICE_ID_TI_4520 0xac46 |
790 | #define PCI_DEVICE_ID_TI_7510 0xac47 | ||
791 | #define PCI_DEVICE_ID_TI_7610 0xac48 | ||
792 | #define PCI_DEVICE_ID_TI_7410 0xac49 | ||
788 | #define PCI_DEVICE_ID_TI_1410 0xac50 | 793 | #define PCI_DEVICE_ID_TI_1410 0xac50 |
789 | #define PCI_DEVICE_ID_TI_1420 0xac51 | 794 | #define PCI_DEVICE_ID_TI_1420 0xac51 |
790 | #define PCI_DEVICE_ID_TI_1451A 0xac52 | 795 | #define PCI_DEVICE_ID_TI_1451A 0xac52 |
791 | #define PCI_DEVICE_ID_TI_1620 0xac54 | 796 | #define PCI_DEVICE_ID_TI_1620 0xac54 |
792 | #define PCI_DEVICE_ID_TI_1520 0xac55 | 797 | #define PCI_DEVICE_ID_TI_1520 0xac55 |
793 | #define PCI_DEVICE_ID_TI_1510 0xac56 | 798 | #define PCI_DEVICE_ID_TI_1510 0xac56 |
799 | #define PCI_DEVICE_ID_TI_X620 0xac8d | ||
800 | #define PCI_DEVICE_ID_TI_X420 0xac8e | ||
794 | 801 | ||
795 | #define PCI_VENDOR_ID_SONY 0x104d | 802 | #define PCI_VENDOR_ID_SONY 0x104d |
796 | #define PCI_DEVICE_ID_SONY_CXD3222 0x8039 | 803 | #define PCI_DEVICE_ID_SONY_CXD3222 0x8039 |
@@ -2187,7 +2194,12 @@ | |||
2187 | #define PCI_DEVICE_ID_ENE_1211 0x1211 | 2194 | #define PCI_DEVICE_ID_ENE_1211 0x1211 |
2188 | #define PCI_DEVICE_ID_ENE_1225 0x1225 | 2195 | #define PCI_DEVICE_ID_ENE_1225 0x1225 |
2189 | #define PCI_DEVICE_ID_ENE_1410 0x1410 | 2196 | #define PCI_DEVICE_ID_ENE_1410 0x1410 |
2197 | #define PCI_DEVICE_ID_ENE_710 0x1411 | ||
2198 | #define PCI_DEVICE_ID_ENE_712 0x1412 | ||
2190 | #define PCI_DEVICE_ID_ENE_1420 0x1420 | 2199 | #define PCI_DEVICE_ID_ENE_1420 0x1420 |
2200 | #define PCI_DEVICE_ID_ENE_720 0x1421 | ||
2201 | #define PCI_DEVICE_ID_ENE_722 0x1422 | ||
2202 | |||
2191 | #define PCI_VENDOR_ID_CHELSIO 0x1425 | 2203 | #define PCI_VENDOR_ID_CHELSIO 0x1425 |
2192 | 2204 | ||
2193 | #define PCI_VENDOR_ID_MIPS 0x153f | 2205 | #define PCI_VENDOR_ID_MIPS 0x153f |
diff --git a/include/pcmcia/ss.h b/include/pcmcia/ss.h index 0f7aacc33fe9..c8592c7e8eaa 100644 --- a/include/pcmcia/ss.h +++ b/include/pcmcia/ss.h | |||
@@ -21,6 +21,9 @@ | |||
21 | #include <pcmcia/cs_types.h> | 21 | #include <pcmcia/cs_types.h> |
22 | #include <pcmcia/cs.h> | 22 | #include <pcmcia/cs.h> |
23 | #include <pcmcia/bulkmem.h> | 23 | #include <pcmcia/bulkmem.h> |
24 | #ifdef CONFIG_CARDBUS | ||
25 | #include <linux/pci.h> | ||
26 | #endif | ||
24 | 27 | ||
25 | /* Definitions for card status flags for GetStatus */ | 28 | /* Definitions for card status flags for GetStatus */ |
26 | #define SS_WRPROT 0x0001 | 29 | #define SS_WRPROT 0x0001 |
@@ -233,7 +236,11 @@ struct pcmcia_socket { | |||
233 | 236 | ||
234 | /* so is power hook */ | 237 | /* so is power hook */ |
235 | int (*power_hook)(struct pcmcia_socket *sock, int operation); | 238 | int (*power_hook)(struct pcmcia_socket *sock, int operation); |
236 | 239 | #ifdef CONFIG_CARDBUS | |
240 | /* allows tuning the CB bridge before loading driver for the CB card */ | ||
241 | void (*tune_bridge)(struct pcmcia_socket *sock, struct pci_bus *bus); | ||
242 | #endif | ||
243 | |||
237 | /* state thread */ | 244 | /* state thread */ |
238 | struct semaphore skt_sem; /* protects socket h/w state */ | 245 | struct semaphore skt_sem; /* protects socket h/w state */ |
239 | 246 | ||
diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c index d8ee38aede26..f2ee673329a7 100644 --- a/scripts/mod/file2alias.c +++ b/scripts/mod/file2alias.c | |||
@@ -295,11 +295,13 @@ static int do_pcmcia_entry(const char *filename, | |||
295 | { | 295 | { |
296 | unsigned int i; | 296 | unsigned int i; |
297 | 297 | ||
298 | id->match_flags = TO_NATIVE(id->match_flags); | ||
298 | id->manf_id = TO_NATIVE(id->manf_id); | 299 | id->manf_id = TO_NATIVE(id->manf_id); |
299 | id->card_id = TO_NATIVE(id->card_id); | 300 | id->card_id = TO_NATIVE(id->card_id); |
300 | id->func_id = TO_NATIVE(id->func_id); | 301 | id->func_id = TO_NATIVE(id->func_id); |
301 | id->function = TO_NATIVE(id->function); | 302 | id->function = TO_NATIVE(id->function); |
302 | id->device_no = TO_NATIVE(id->device_no); | 303 | id->device_no = TO_NATIVE(id->device_no); |
304 | |||
303 | for (i=0; i<4; i++) { | 305 | for (i=0; i<4; i++) { |
304 | id->prod_id_hash[i] = TO_NATIVE(id->prod_id_hash[i]); | 306 | id->prod_id_hash[i] = TO_NATIVE(id->prod_id_hash[i]); |
305 | } | 307 | } |