The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/pc/pcmciamodem.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 #include "u.h"
    2 #include "../port/lib.h"
    3 #include "mem.h"
    4 #include "dat.h"
    5 #include "fns.h"
    6 #include "io.h"
    7 #include "ureg.h"
    8 #include "../port/error.h"
    9 
   10 /*
   11  *  PCMCIA modem.
   12  *  By default, this will set it up with the port and irq of
   13  *  COM2 unless a serialx=type=com line is found in plan9.ini.
   14  *  The assumption is that a laptop with a pcmcia will have only
   15  *  one com port.
   16  */
   17 
   18 enum {
   19         Maxcard=        8,
   20 };
   21 
   22 static char* modems[] = {
   23         "IBM 33.6 Data/Fax/Voice Modem",
   24         "CM-56G",                       /* Xircom CreditCard Modem 56 - GlobalACCESS */
   25         "KeepInTouch",
   26         "CEM56",
   27         "MONTANA V.34 FAX/MODEM",       /* Motorola */
   28         "REM10",
   29         "GSM/GPRS",
   30         "AirCard 555",
   31         "Gold Card Global",             /* Psion V90 Gold card */
   32         "Merlin UMTS Modem",            /* Novatel card */
   33         0,
   34 };
   35 
   36 void
   37 pcmciamodemlink(void)
   38 {
   39         ISAConf isa;
   40         int i, j, slot, com2used, usingcom2;
   41 
   42         i = 0;
   43         com2used = 0;
   44         for(j = 0; modems[j]; j++){
   45                 memset(&isa, 0, sizeof(isa));
   46 
   47                 /* look for a configuration line */
   48                 for(; i < Maxcard; i++){
   49                         if(isaconfig("serial", i, &isa))
   50                         if(cistrcmp(isa.type, "com") == 0)
   51                                 break;
   52                         memset(&isa, 0, sizeof(isa));
   53                 }
   54 
   55                 usingcom2 = 0;
   56                 if (isa.irq == 0 && isa.port == 0) {
   57                         if (com2used == 0) {
   58                                 /* default is COM2 */
   59                                 isa.irq = 3;
   60                                 isa.port = 0x2F8;
   61                                 usingcom2 = 1;
   62                         } else
   63                                 break;
   64                 }
   65                 slot = pcmspecial(modems[j], &isa);
   66                 if(slot >= 0){
   67                         if(usingcom2)
   68                                 com2used = 1;
   69                         if(ioalloc(isa.port, 8, 0, modems[j]) < 0)
   70                                 print("%s port %lux already in use\n",
   71                                         modems[j], isa.port);
   72                         print("%s in pcmcia slot %d port 0x%lux irq %d\n",
   73                                 modems[j], slot, isa.port, isa.irq);
   74                 }
   75         }
   76 }       

Cache object: 275bfd0d5b35eff8fe27a847b111d777


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.