diff options
author | Ken Kawasaki <ken_kawasaki@spring.nifty.jp> | 2009-05-01 22:21:26 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-05-01 22:21:26 -0400 |
commit | f0a3a1538d57dfb51c73d012cbb72f985cd419aa (patch) | |
tree | 660d030b3d55a98f0500d45fa4c678a9508e5f46 /drivers | |
parent | 88d7d8b00cdc3117150faab4c4ace6d464b71c22 (diff) |
3c589_cs: add cis(firmware) of 3Com multifunction pcmcia card
3c589_cs,3c574_cs,serial_cs:
(1)add cis(firmware) of 3Com lan&modem mulitifunction pcmcia card.
(2)load correct configuration register for 3Com card
Signed-off-by: Ken Kawasaki <ken_kawasaki@spring.nifty.jp>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/pcmcia/3c574_cs.c | 2 | ||||
-rw-r--r-- | drivers/net/pcmcia/3c589_cs.c | 4 | ||||
-rw-r--r-- | drivers/serial/serial_cs.c | 22 |
3 files changed, 20 insertions, 8 deletions
diff --git a/drivers/net/pcmcia/3c574_cs.c b/drivers/net/pcmcia/3c574_cs.c index 8f3872b8985d..f35c609ba020 100644 --- a/drivers/net/pcmcia/3c574_cs.c +++ b/drivers/net/pcmcia/3c574_cs.c | |||
@@ -1195,7 +1195,7 @@ static int el3_close(struct net_device *dev) | |||
1195 | 1195 | ||
1196 | static struct pcmcia_device_id tc574_ids[] = { | 1196 | static struct pcmcia_device_id tc574_ids[] = { |
1197 | PCMCIA_DEVICE_MANF_CARD(0x0101, 0x0574), | 1197 | PCMCIA_DEVICE_MANF_CARD(0x0101, 0x0574), |
1198 | PCMCIA_MFC_DEVICE_CIS_MANF_CARD(0, 0x0101, 0x0556, "3CCFEM556.cis"), | 1198 | PCMCIA_MFC_DEVICE_CIS_MANF_CARD(0, 0x0101, 0x0556, "cis/3CCFEM556.cis"), |
1199 | PCMCIA_DEVICE_NULL, | 1199 | PCMCIA_DEVICE_NULL, |
1200 | }; | 1200 | }; |
1201 | MODULE_DEVICE_TABLE(pcmcia, tc574_ids); | 1201 | MODULE_DEVICE_TABLE(pcmcia, tc574_ids); |
diff --git a/drivers/net/pcmcia/3c589_cs.c b/drivers/net/pcmcia/3c589_cs.c index cdf661a6092c..ec7cf5ac4f05 100644 --- a/drivers/net/pcmcia/3c589_cs.c +++ b/drivers/net/pcmcia/3c589_cs.c | |||
@@ -967,8 +967,8 @@ static struct pcmcia_device_id tc589_ids[] = { | |||
967 | PCMCIA_MFC_DEVICE_PROD_ID1(0, "Motorola MARQUIS", 0xf03e4e77), | 967 | PCMCIA_MFC_DEVICE_PROD_ID1(0, "Motorola MARQUIS", 0xf03e4e77), |
968 | PCMCIA_DEVICE_MANF_CARD(0x0101, 0x0589), | 968 | PCMCIA_DEVICE_MANF_CARD(0x0101, 0x0589), |
969 | PCMCIA_DEVICE_PROD_ID12("Farallon", "ENet", 0x58d93fc4, 0x992c2202), | 969 | PCMCIA_DEVICE_PROD_ID12("Farallon", "ENet", 0x58d93fc4, 0x992c2202), |
970 | PCMCIA_MFC_DEVICE_CIS_MANF_CARD(0, 0x0101, 0x0035, "3CXEM556.cis"), | 970 | PCMCIA_MFC_DEVICE_CIS_MANF_CARD(0, 0x0101, 0x0035, "cis/3CXEM556.cis"), |
971 | PCMCIA_MFC_DEVICE_CIS_MANF_CARD(0, 0x0101, 0x003d, "3CXEM556.cis"), | 971 | PCMCIA_MFC_DEVICE_CIS_MANF_CARD(0, 0x0101, 0x003d, "cis/3CXEM556.cis"), |
972 | PCMCIA_DEVICE_NULL, | 972 | PCMCIA_DEVICE_NULL, |
973 | }; | 973 | }; |
974 | MODULE_DEVICE_TABLE(pcmcia, tc589_ids); | 974 | MODULE_DEVICE_TABLE(pcmcia, tc589_ids); |
diff --git a/drivers/serial/serial_cs.c b/drivers/serial/serial_cs.c index 7546aa887fa7..79c9c5f5cdba 100644 --- a/drivers/serial/serial_cs.c +++ b/drivers/serial/serial_cs.c | |||
@@ -681,7 +681,7 @@ static int serial_config(struct pcmcia_device * link) | |||
681 | u_char *buf; | 681 | u_char *buf; |
682 | cisparse_t *parse; | 682 | cisparse_t *parse; |
683 | cistpl_cftable_entry_t *cf; | 683 | cistpl_cftable_entry_t *cf; |
684 | int i; | 684 | int i, last_ret, last_fn; |
685 | 685 | ||
686 | DEBUG(0, "serial_config(0x%p)\n", link); | 686 | DEBUG(0, "serial_config(0x%p)\n", link); |
687 | 687 | ||
@@ -699,6 +699,16 @@ static int serial_config(struct pcmcia_device * link) | |||
699 | tuple->TupleDataMax = 255; | 699 | tuple->TupleDataMax = 255; |
700 | tuple->Attributes = 0; | 700 | tuple->Attributes = 0; |
701 | 701 | ||
702 | /* Get configuration register information */ | ||
703 | tuple->DesiredTuple = CISTPL_CONFIG; | ||
704 | last_ret = first_tuple(link, tuple, parse); | ||
705 | if (last_ret != 0) { | ||
706 | last_fn = ParseTuple; | ||
707 | goto cs_failed; | ||
708 | } | ||
709 | link->conf.ConfigBase = parse->config.base; | ||
710 | link->conf.Present = parse->config.rmask[0]; | ||
711 | |||
702 | /* Is this a compliant multifunction card? */ | 712 | /* Is this a compliant multifunction card? */ |
703 | tuple->DesiredTuple = CISTPL_LONGLINK_MFC; | 713 | tuple->DesiredTuple = CISTPL_LONGLINK_MFC; |
704 | tuple->Attributes = TUPLE_RETURN_COMMON | TUPLE_RETURN_LINK; | 714 | tuple->Attributes = TUPLE_RETURN_COMMON | TUPLE_RETURN_LINK; |
@@ -761,7 +771,9 @@ static int serial_config(struct pcmcia_device * link) | |||
761 | kfree(cfg_mem); | 771 | kfree(cfg_mem); |
762 | return 0; | 772 | return 0; |
763 | 773 | ||
764 | failed: | 774 | cs_failed: |
775 | cs_error(link, last_fn, last_ret); | ||
776 | failed: | ||
765 | serial_remove(link); | 777 | serial_remove(link); |
766 | kfree(cfg_mem); | 778 | kfree(cfg_mem); |
767 | return -ENODEV; | 779 | return -ENODEV; |
@@ -863,10 +875,10 @@ static struct pcmcia_device_id serial_ids[] = { | |||
863 | PCMCIA_PFC_DEVICE_CIS_PROD_ID12(1, "LINKSYS", "PCMLM28", 0xf7cb0b07, 0x66881874, "PCMLM28.cis"), | 875 | PCMCIA_PFC_DEVICE_CIS_PROD_ID12(1, "LINKSYS", "PCMLM28", 0xf7cb0b07, 0x66881874, "PCMLM28.cis"), |
864 | PCMCIA_MFC_DEVICE_CIS_PROD_ID12(1, "DAYNA COMMUNICATIONS", "LAN AND MODEM MULTIFUNCTION", 0x8fdf8f89, 0xdd5ed9e8, "DP83903.cis"), | 876 | PCMCIA_MFC_DEVICE_CIS_PROD_ID12(1, "DAYNA COMMUNICATIONS", "LAN AND MODEM MULTIFUNCTION", 0x8fdf8f89, 0xdd5ed9e8, "DP83903.cis"), |
865 | PCMCIA_MFC_DEVICE_CIS_PROD_ID4(1, "NSC MF LAN/Modem", 0x58fc6056, "DP83903.cis"), | 877 | PCMCIA_MFC_DEVICE_CIS_PROD_ID4(1, "NSC MF LAN/Modem", 0x58fc6056, "DP83903.cis"), |
866 | PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0101, 0x0556, "3CCFEM556.cis"), | 878 | PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0101, 0x0556, "cis/3CCFEM556.cis"), |
867 | PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0175, 0x0000, "DP83903.cis"), | 879 | PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0175, 0x0000, "DP83903.cis"), |
868 | PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0101, 0x0035, "3CXEM556.cis"), | 880 | PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0101, 0x0035, "cis/3CXEM556.cis"), |
869 | PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0101, 0x003d, "3CXEM556.cis"), | 881 | PCMCIA_MFC_DEVICE_CIS_MANF_CARD(1, 0x0101, 0x003d, "cis/3CXEM556.cis"), |
870 | PCMCIA_DEVICE_CIS_PROD_ID12("Sierra Wireless", "AC850", 0xd85f6206, 0x42a2c018, "SW_8xx_SER.cis"), /* Sierra Wireless AC850 3G Network Adapter R1 */ | 882 | PCMCIA_DEVICE_CIS_PROD_ID12("Sierra Wireless", "AC850", 0xd85f6206, 0x42a2c018, "SW_8xx_SER.cis"), /* Sierra Wireless AC850 3G Network Adapter R1 */ |
871 | PCMCIA_DEVICE_CIS_MANF_CARD(0x0192, 0x0710, "SW_7xx_SER.cis"), /* Sierra Wireless AC710/AC750 GPRS Network Adapter R1 */ | 883 | PCMCIA_DEVICE_CIS_MANF_CARD(0x0192, 0x0710, "SW_7xx_SER.cis"), /* Sierra Wireless AC710/AC750 GPRS Network Adapter R1 */ |
872 | PCMCIA_DEVICE_CIS_MANF_CARD(0x0192, 0xa555, "SW_555_SER.cis"), /* Sierra Aircard 555 CDMA 1xrtt Modem -- pre update */ | 884 | PCMCIA_DEVICE_CIS_MANF_CARD(0x0192, 0xa555, "SW_555_SER.cis"), /* Sierra Aircard 555 CDMA 1xrtt Modem -- pre update */ |