sio_isa.c revision 139749
1139749Simp/*- 285365Simp * Copyright (c) 2001 M. Warner Losh. All rights reserved. 385365Simp * 485365Simp * Redistribution and use in source and binary forms, with or without 585365Simp * modification, are permitted provided that the following conditions 685365Simp * are met: 785365Simp * 1. Redistributions of source code must retain the above copyright 885365Simp * notice, this list of conditions and the following disclaimer. 985365Simp * 2. Redistributions in binary form must reproduce the above copyright 1085365Simp * notice, this list of conditions and the following disclaimer in the 1185365Simp * documentation and/or other materials provided with the distribution. 1285365Simp * 1385365Simp * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 1485365Simp * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 1585365Simp * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 1685365Simp * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 1785365Simp * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 1885365Simp * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 1985365Simp * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2085365Simp * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2185365Simp * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 2285365Simp * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2385365Simp */ 2485365Simp 25119419Sobrien#include <sys/cdefs.h> 26119419Sobrien__FBSDID("$FreeBSD: head/sys/dev/sio/sio_isa.c 139749 2005-01-06 01:43:34Z imp $"); 27119419Sobrien 2885365Simp#include <sys/param.h> 2985365Simp#include <sys/systm.h> 3085365Simp#include <sys/bus.h> 3185365Simp#include <sys/conf.h> 3285365Simp#include <sys/kernel.h> 3385365Simp#include <sys/lock.h> 3485365Simp#include <sys/malloc.h> 3585365Simp#include <sys/mutex.h> 3685365Simp#include <sys/module.h> 3785365Simp#include <sys/tty.h> 3885365Simp#include <machine/bus_pio.h> 3985365Simp#include <machine/bus.h> 4085365Simp#include <sys/timepps.h> 4185365Simp 4285365Simp#include <dev/sio/siovar.h> 4385365Simp 4485365Simp#include <isa/isareg.h> 4585365Simp#include <isa/isavar.h> 4685365Simp 4793010Sbdestatic int sio_isa_attach(device_t dev); 4893010Sbdestatic int sio_isa_probe(device_t dev); 4985365Simp 5085365Simpstatic device_method_t sio_isa_methods[] = { 5185365Simp /* Device interface */ 5285365Simp DEVMETHOD(device_probe, sio_isa_probe), 5385365Simp DEVMETHOD(device_attach, sio_isa_attach), 54123910Simp DEVMETHOD(device_detach, siodetach), 5585365Simp 5685365Simp { 0, 0 } 5785365Simp}; 5885365Simp 5985365Simpstatic driver_t sio_isa_driver = { 6085365Simp sio_driver_name, 6185365Simp sio_isa_methods, 6286909Simp 0, 6385365Simp}; 6485365Simp 6585365Simpstatic struct isa_pnp_id sio_ids[] = { 6685365Simp {0x0005d041, "Standard PC COM port"}, /* PNP0500 */ 6785365Simp {0x0105d041, "16550A-compatible COM port"}, /* PNP0501 */ 6885365Simp {0x0205d041, "Multiport serial device (non-intelligent 16550)"}, /* PNP0502 */ 6985365Simp {0x1005d041, "Generic IRDA-compatible device"}, /* PNP0510 */ 7085365Simp {0x1105d041, "Generic IRDA-compatible device"}, /* PNP0511 */ 7185365Simp /* Devices that do not have a compatid */ 7285365Simp {0x12206804, NULL}, /* ACH2012 - 5634BTS 56K Video Ready Modem */ 7385365Simp {0x7602a904, NULL}, /* AEI0276 - 56K v.90 Fax Modem (LKT) */ 7485365Simp {0x00007905, NULL}, /* AKY0000 - 56K Plug&Play Modem */ 7596105Sdwmalone {0x21107905, NULL}, /* AKY1021 - 56K Plug&Play Modem */ 7685365Simp {0x01405407, NULL}, /* AZT4001 - AZT3000 PnP SOUND DEVICE, MODEM */ 7785365Simp {0x56039008, NULL}, /* BDP0356 - Best Data 56x2 */ 7885365Simp {0x56159008, NULL}, /* BDP1556 - B.D. Smart One 56SPS,Voice Modem*/ 7985365Simp {0x36339008, NULL}, /* BDP3336 - Best Data Prods. 336F */ 8085365Simp {0x0014490a, NULL}, /* BRI1400 - Boca 33.6 PnP */ 8185365Simp {0x0015490a, NULL}, /* BRI1500 - Internal Fax Data */ 8285365Simp {0x0034490a, NULL}, /* BRI3400 - Internal ACF Modem */ 8385365Simp {0x0094490a, NULL}, /* BRI9400 - Boca K56Flex PnP */ 8485365Simp {0x00b4490a, NULL}, /* BRIB400 - Boca 56k PnP */ 8585365Simp {0x0030320d, NULL}, /* CIR3000 - Cirrus Logic V43 */ 8685365Simp {0x0100440e, NULL}, /* CRD0001 - Cardinal MVP288IV ? */ 8788697Ssheldonh {0x01308c0e, NULL}, /* CTL3001 - Creative Labs Phoneblaster */ 8885365Simp {0x36033610, NULL}, /* DAV0336 - DAVICOM 336PNP MODEM */ 89115053Smurray {0x01009416, NULL}, /* ETT0001 - E-Tech Bullet 33k6 PnP */ 9085365Simp {0x0000aa1a, NULL}, /* FUJ0000 - FUJITSU Modem 33600 PNP/I2 */ 9185365Simp {0x1200c31e, NULL}, /* GVC0012 - VF1128HV-R9 (win modem?) */ 9285365Simp {0x0303c31e, NULL}, /* GVC0303 - MaxTech 33.6 PnP D/F/V */ 9385365Simp {0x0505c31e, NULL}, /* GVC0505 - GVC 56k Faxmodem */ 9485365Simp {0x0116c31e, NULL}, /* GVC1601 - Rockwell V.34 Plug & Play Modem */ 9585365Simp {0x0050c31e, NULL}, /* GVC5000 - some GVC modem */ 9685365Simp {0x3800f91e, NULL}, /* GWY0038 - Telepath with v.90 */ 9785365Simp {0x9062f91e, NULL}, /* GWY6290 - Telepath with x2 Technology */ 9885365Simp {0x8100e425, NULL}, /* IOD0081 - I-O DATA DEVICE,INC. IFML-560 */ 9991589Stakawata {0x71004d24, NULL}, /* IBM0071 - IBM ThinkPad 240 IrDA controller*/ 10085365Simp {0x21002534, NULL}, /* MAE0021 - Jetstream Int V.90 56k Voice Series 2*/ 10185365Simp {0x0000f435, NULL}, /* MOT0000 - Motorola ModemSURFR 33.6 Intern */ 10285365Simp {0x5015f435, NULL}, /* MOT1550 - Motorola ModemSURFR 56K Modem */ 10385365Simp {0xf015f435, NULL}, /* MOT15F0 - Motorola VoiceSURFR 56K Modem */ 10485365Simp {0x6045f435, NULL}, /* MOT4560 - Motorola ? */ 10585365Simp {0x61e7a338, NULL}, /* NECE761 - 33.6Modem */ 106112095Stakawata {0x0160633a, NULL}, /* NSC6001 - National Semi's IrDA Controller*/ 10785365Simp {0x08804f3f, NULL}, /* OZO8008 - Zoom (33.6k Modem) */ 10885365Simp {0x0f804f3f, NULL}, /* OZO800f - Zoom 2812 (56k Modem) */ 10985365Simp {0x39804f3f, NULL}, /* OZO8039 - Zoom 56k flex */ 11085365Simp {0x00914f3f, NULL}, /* OZO9100 - Zoom 2919 (K56 Faxmodem) */ 11185365Simp {0x3024a341, NULL}, /* PMC2430 - Pace 56 Voice Internal Modem */ 11285365Simp {0x1000eb49, NULL}, /* ROK0010 - Rockwell ? */ 11385365Simp {0x1200b23d, NULL}, /* RSS0012 - OMRON ME5614ISA */ 11485365Simp {0x5002734a, NULL}, /* RSS0250 - 5614Jx3(G) Internal Modem */ 11585365Simp {0x6202734a, NULL}, /* RSS0262 - 5614Jx3[G] V90+K56Flex Modem */ 11686545Siedowse {0x1010104d, NULL}, /* SHP1010 - Rockwell 33600bps Modem */ 11791589Stakawata {0x10f0a34d, NULL}, /* SMCF010 - SMC IrCC*/ 11885365Simp {0xc100ad4d, NULL}, /* SMM00C1 - Leopard 56k PnP */ 11985365Simp {0x9012b04e, NULL}, /* SUP1290 - Supra ? */ 12085365Simp {0x1013b04e, NULL}, /* SUP1310 - SupraExpress 336i PnP */ 12185365Simp {0x8013b04e, NULL}, /* SUP1380 - SupraExpress 288i PnP Voice */ 12285365Simp {0x8113b04e, NULL}, /* SUP1381 - SupraExpress 336i PnP Voice */ 12385365Simp {0x5016b04e, NULL}, /* SUP1650 - Supra 336i Sp Intl */ 12485365Simp {0x7016b04e, NULL}, /* SUP1670 - Supra 336i V+ Intl */ 12585365Simp {0x7420b04e, NULL}, /* SUP2070 - Supra ? */ 12685365Simp {0x8020b04e, NULL}, /* SUP2080 - Supra ? */ 12785365Simp {0x8420b04e, NULL}, /* SUP2084 - SupraExpress 56i PnP */ 12885365Simp {0x7121b04e, NULL}, /* SUP2171 - SupraExpress 56i Sp? */ 12985365Simp {0x8024b04e, NULL}, /* SUP2480 - Supra ? */ 13085365Simp {0x01007256, NULL}, /* USR0001 - U.S. Robotics Inc., Sportster W */ 13185365Simp {0x02007256, NULL}, /* USR0002 - U.S. Robotics Inc. Sportster 33. */ 13285365Simp {0x04007256, NULL}, /* USR0004 - USR Sportster 14.4k */ 13385365Simp {0x06007256, NULL}, /* USR0006 - USR Sportster 33.6k */ 13485365Simp {0x11007256, NULL}, /* USR0011 - USR ? */ 13585365Simp {0x01017256, NULL}, /* USR0101 - USR ? */ 13685365Simp {0x30207256, NULL}, /* USR2030 - U.S.Robotics Inc. Sportster 560 */ 13785365Simp {0x50207256, NULL}, /* USR2050 - U.S.Robotics Inc. Sportster 33. */ 13885365Simp {0x70207256, NULL}, /* USR2070 - U.S.Robotics Inc. Sportster 560 */ 13985365Simp {0x30307256, NULL}, /* USR3030 - U.S. Robotics 56K FAX INT */ 14085365Simp {0x31307256, NULL}, /* USR3031 - U.S. Robotics 56K FAX INT */ 14185365Simp {0x50307256, NULL}, /* USR3050 - U.S. Robotics 56K FAX INT */ 14285365Simp {0x70307256, NULL}, /* USR3070 - U.S. Robotics 56K Voice INT */ 14385365Simp {0x90307256, NULL}, /* USR3090 - USR ? */ 14485365Simp {0x70917256, NULL}, /* USR9170 - U.S. Robotics 56K FAX INT */ 14585365Simp {0x90917256, NULL}, /* USR9190 - USR 56k Voice INT */ 146112095Stakawata {0x04f0235c, NULL}, /* WACF004 - Wacom Tablet PC Screen*/ 14785365Simp {0x0300695c, NULL}, /* WCI0003 - Fax/Voice/Modem/Speakphone/Asvd */ 14885365Simp {0x01a0896a, NULL}, /* ZTIA001 - Zoom Internal V90 Faxmodem */ 14985365Simp {0x61f7896a, NULL}, /* ZTIF761 - Zoom ComStar 33.6 */ 15085365Simp {0} 15185365Simp}; 15285365Simp 15385365Simpstatic int 15485365Simpsio_isa_probe(dev) 15585365Simp device_t dev; 15685365Simp{ 15785365Simp /* Check isapnp ids */ 15885365Simp if (ISA_PNP_PROBE(device_get_parent(dev), dev, sio_ids) == ENXIO) 15985365Simp return (ENXIO); 16089986Sjhay return (sioprobe(dev, 0, 0UL, 0)); 16185365Simp} 16285365Simp 16385365Simpstatic int 16485365Simpsio_isa_attach(dev) 16585365Simp device_t dev; 16685365Simp{ 16789986Sjhay return (sioattach(dev, 0, 0UL)); 16885365Simp} 16985365Simp 17085365SimpDRIVER_MODULE(sio, isa, sio_isa_driver, sio_devclass, 0, 0); 17185365SimpDRIVER_MODULE(sio, acpi, sio_isa_driver, sio_devclass, 0, 0); 172