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: releng/11.0/sys/dev/sio/sio_isa.c 242996 2012-11-13 20:38:55Z eadler $"); 27119419Sobrien 28174116Speter#include "opt_sio.h" 29174116Speter 3085365Simp#include <sys/param.h> 3185365Simp#include <sys/systm.h> 3285365Simp#include <sys/bus.h> 3385365Simp#include <sys/conf.h> 3485365Simp#include <sys/kernel.h> 3585365Simp#include <sys/lock.h> 3685365Simp#include <sys/malloc.h> 3785365Simp#include <sys/mutex.h> 3885365Simp#include <sys/module.h> 3985365Simp#include <sys/tty.h> 4085365Simp#include <machine/bus.h> 4185365Simp#include <sys/timepps.h> 4285365Simp 4385365Simp#include <dev/sio/siovar.h> 4485365Simp 4585365Simp#include <isa/isareg.h> 4685365Simp#include <isa/isavar.h> 4785365Simp 4893010Sbdestatic int sio_isa_attach(device_t dev); 4993010Sbdestatic int sio_isa_probe(device_t dev); 5085365Simp 5185365Simpstatic device_method_t sio_isa_methods[] = { 5285365Simp /* Device interface */ 5385365Simp DEVMETHOD(device_probe, sio_isa_probe), 5485365Simp DEVMETHOD(device_attach, sio_isa_attach), 55123910Simp DEVMETHOD(device_detach, siodetach), 5685365Simp 5785365Simp { 0, 0 } 5885365Simp}; 5985365Simp 6085365Simpstatic driver_t sio_isa_driver = { 6185365Simp sio_driver_name, 6285365Simp sio_isa_methods, 6386909Simp 0, 6485365Simp}; 6585365Simp 6685365Simpstatic struct isa_pnp_id sio_ids[] = { 6785365Simp {0x0005d041, "Standard PC COM port"}, /* PNP0500 */ 6885365Simp {0x0105d041, "16550A-compatible COM port"}, /* PNP0501 */ 6985365Simp {0x0205d041, "Multiport serial device (non-intelligent 16550)"}, /* PNP0502 */ 7085365Simp {0x1005d041, "Generic IRDA-compatible device"}, /* PNP0510 */ 7185365Simp {0x1105d041, "Generic IRDA-compatible device"}, /* PNP0511 */ 7285365Simp /* Devices that do not have a compatid */ 7385365Simp {0x12206804, NULL}, /* ACH2012 - 5634BTS 56K Video Ready Modem */ 7485365Simp {0x7602a904, NULL}, /* AEI0276 - 56K v.90 Fax Modem (LKT) */ 7585365Simp {0x00007905, NULL}, /* AKY0000 - 56K Plug&Play Modem */ 7696105Sdwmalone {0x21107905, NULL}, /* AKY1021 - 56K Plug&Play Modem */ 7785365Simp {0x01405407, NULL}, /* AZT4001 - AZT3000 PnP SOUND DEVICE, MODEM */ 7885365Simp {0x56039008, NULL}, /* BDP0356 - Best Data 56x2 */ 7985365Simp {0x56159008, NULL}, /* BDP1556 - B.D. Smart One 56SPS,Voice Modem*/ 8085365Simp {0x36339008, NULL}, /* BDP3336 - Best Data Prods. 336F */ 8185365Simp {0x0014490a, NULL}, /* BRI1400 - Boca 33.6 PnP */ 8285365Simp {0x0015490a, NULL}, /* BRI1500 - Internal Fax Data */ 8385365Simp {0x0034490a, NULL}, /* BRI3400 - Internal ACF Modem */ 8485365Simp {0x0094490a, NULL}, /* BRI9400 - Boca K56Flex PnP */ 8585365Simp {0x00b4490a, NULL}, /* BRIB400 - Boca 56k PnP */ 86242996Seadler {0x0010320d, NULL}, /* CIR1000 - Cirrus Logic V34 */ 8785365Simp {0x0030320d, NULL}, /* CIR3000 - Cirrus Logic V43 */ 8885365Simp {0x0100440e, NULL}, /* CRD0001 - Cardinal MVP288IV ? */ 8988697Ssheldonh {0x01308c0e, NULL}, /* CTL3001 - Creative Labs Phoneblaster */ 9085365Simp {0x36033610, NULL}, /* DAV0336 - DAVICOM 336PNP MODEM */ 91115053Smurray {0x01009416, NULL}, /* ETT0001 - E-Tech Bullet 33k6 PnP */ 9285365Simp {0x0000aa1a, NULL}, /* FUJ0000 - FUJITSU Modem 33600 PNP/I2 */ 9385365Simp {0x1200c31e, NULL}, /* GVC0012 - VF1128HV-R9 (win modem?) */ 9485365Simp {0x0303c31e, NULL}, /* GVC0303 - MaxTech 33.6 PnP D/F/V */ 9585365Simp {0x0505c31e, NULL}, /* GVC0505 - GVC 56k Faxmodem */ 9685365Simp {0x0116c31e, NULL}, /* GVC1601 - Rockwell V.34 Plug & Play Modem */ 9785365Simp {0x0050c31e, NULL}, /* GVC5000 - some GVC modem */ 9885365Simp {0x3800f91e, NULL}, /* GWY0038 - Telepath with v.90 */ 9985365Simp {0x9062f91e, NULL}, /* GWY6290 - Telepath with x2 Technology */ 10085365Simp {0x8100e425, NULL}, /* IOD0081 - I-O DATA DEVICE,INC. IFML-560 */ 10191589Stakawata {0x71004d24, NULL}, /* IBM0071 - IBM ThinkPad 240 IrDA controller*/ 10285365Simp {0x21002534, NULL}, /* MAE0021 - Jetstream Int V.90 56k Voice Series 2*/ 10385365Simp {0x0000f435, NULL}, /* MOT0000 - Motorola ModemSURFR 33.6 Intern */ 10485365Simp {0x5015f435, NULL}, /* MOT1550 - Motorola ModemSURFR 56K Modem */ 10585365Simp {0xf015f435, NULL}, /* MOT15F0 - Motorola VoiceSURFR 56K Modem */ 10685365Simp {0x6045f435, NULL}, /* MOT4560 - Motorola ? */ 10785365Simp {0x61e7a338, NULL}, /* NECE761 - 33.6Modem */ 108112095Stakawata {0x0160633a, NULL}, /* NSC6001 - National Semi's IrDA Controller*/ 10985365Simp {0x08804f3f, NULL}, /* OZO8008 - Zoom (33.6k Modem) */ 11085365Simp {0x0f804f3f, NULL}, /* OZO800f - Zoom 2812 (56k Modem) */ 11185365Simp {0x39804f3f, NULL}, /* OZO8039 - Zoom 56k flex */ 11285365Simp {0x00914f3f, NULL}, /* OZO9100 - Zoom 2919 (K56 Faxmodem) */ 11385365Simp {0x3024a341, NULL}, /* PMC2430 - Pace 56 Voice Internal Modem */ 11485365Simp {0x1000eb49, NULL}, /* ROK0010 - Rockwell ? */ 11585365Simp {0x1200b23d, NULL}, /* RSS0012 - OMRON ME5614ISA */ 11685365Simp {0x5002734a, NULL}, /* RSS0250 - 5614Jx3(G) Internal Modem */ 11785365Simp {0x6202734a, NULL}, /* RSS0262 - 5614Jx3[G] V90+K56Flex Modem */ 11886545Siedowse {0x1010104d, NULL}, /* SHP1010 - Rockwell 33600bps Modem */ 11991589Stakawata {0x10f0a34d, NULL}, /* SMCF010 - SMC IrCC*/ 12085365Simp {0xc100ad4d, NULL}, /* SMM00C1 - Leopard 56k PnP */ 12185365Simp {0x9012b04e, NULL}, /* SUP1290 - Supra ? */ 12285365Simp {0x1013b04e, NULL}, /* SUP1310 - SupraExpress 336i PnP */ 12385365Simp {0x8013b04e, NULL}, /* SUP1380 - SupraExpress 288i PnP Voice */ 12485365Simp {0x8113b04e, NULL}, /* SUP1381 - SupraExpress 336i PnP Voice */ 12585365Simp {0x5016b04e, NULL}, /* SUP1650 - Supra 336i Sp Intl */ 12685365Simp {0x7016b04e, NULL}, /* SUP1670 - Supra 336i V+ Intl */ 12785365Simp {0x7420b04e, NULL}, /* SUP2070 - Supra ? */ 12885365Simp {0x8020b04e, NULL}, /* SUP2080 - Supra ? */ 12985365Simp {0x8420b04e, NULL}, /* SUP2084 - SupraExpress 56i PnP */ 13085365Simp {0x7121b04e, NULL}, /* SUP2171 - SupraExpress 56i Sp? */ 13185365Simp {0x8024b04e, NULL}, /* SUP2480 - Supra ? */ 13285365Simp {0x01007256, NULL}, /* USR0001 - U.S. Robotics Inc., Sportster W */ 13385365Simp {0x02007256, NULL}, /* USR0002 - U.S. Robotics Inc. Sportster 33. */ 13485365Simp {0x04007256, NULL}, /* USR0004 - USR Sportster 14.4k */ 13585365Simp {0x06007256, NULL}, /* USR0006 - USR Sportster 33.6k */ 13685365Simp {0x11007256, NULL}, /* USR0011 - USR ? */ 13785365Simp {0x01017256, NULL}, /* USR0101 - USR ? */ 13885365Simp {0x30207256, NULL}, /* USR2030 - U.S.Robotics Inc. Sportster 560 */ 13985365Simp {0x50207256, NULL}, /* USR2050 - U.S.Robotics Inc. Sportster 33. */ 14085365Simp {0x70207256, NULL}, /* USR2070 - U.S.Robotics Inc. Sportster 560 */ 14185365Simp {0x30307256, NULL}, /* USR3030 - U.S. Robotics 56K FAX INT */ 14285365Simp {0x31307256, NULL}, /* USR3031 - U.S. Robotics 56K FAX INT */ 14385365Simp {0x50307256, NULL}, /* USR3050 - U.S. Robotics 56K FAX INT */ 14485365Simp {0x70307256, NULL}, /* USR3070 - U.S. Robotics 56K Voice INT */ 14585365Simp {0x90307256, NULL}, /* USR3090 - USR ? */ 14685365Simp {0x70917256, NULL}, /* USR9170 - U.S. Robotics 56K FAX INT */ 14785365Simp {0x90917256, NULL}, /* USR9190 - USR 56k Voice INT */ 148112095Stakawata {0x04f0235c, NULL}, /* WACF004 - Wacom Tablet PC Screen*/ 14985365Simp {0x0300695c, NULL}, /* WCI0003 - Fax/Voice/Modem/Speakphone/Asvd */ 15085365Simp {0x01a0896a, NULL}, /* ZTIA001 - Zoom Internal V90 Faxmodem */ 15185365Simp {0x61f7896a, NULL}, /* ZTIF761 - Zoom ComStar 33.6 */ 15285365Simp {0} 15385365Simp}; 15485365Simp 15585365Simpstatic int 15685365Simpsio_isa_probe(dev) 15785365Simp device_t dev; 15885365Simp{ 15985365Simp /* Check isapnp ids */ 16085365Simp if (ISA_PNP_PROBE(device_get_parent(dev), dev, sio_ids) == ENXIO) 16185365Simp return (ENXIO); 16289986Sjhay return (sioprobe(dev, 0, 0UL, 0)); 16385365Simp} 16485365Simp 16585365Simpstatic int 16685365Simpsio_isa_attach(dev) 16785365Simp device_t dev; 16885365Simp{ 16989986Sjhay return (sioattach(dev, 0, 0UL)); 17085365Simp} 17185365Simp 17285365SimpDRIVER_MODULE(sio, isa, sio_isa_driver, sio_devclass, 0, 0); 173174116Speter#ifndef COM_NO_ACPI 17485365SimpDRIVER_MODULE(sio, acpi, sio_isa_driver, sio_devclass, 0, 0); 175174116Speter#endif 176