From owner-freebsd-hackers Fri Sep 25 11:29:31 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id LAA15522 for freebsd-hackers-outgoing; Fri, 25 Sep 1998 11:29:31 -0700 (PDT) (envelope-from owner-freebsd-hackers@FreeBSD.ORG) Received: from dingo.cdrom.com (dingo.cdrom.com [204.216.28.145]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id LAA15517; Fri, 25 Sep 1998 11:29:30 -0700 (PDT) (envelope-from mike@dingo.cdrom.com) Received: from dingo.cdrom.com (localhost.cdrom.com [127.0.0.1]) by dingo.cdrom.com (8.9.1/8.8.8) with ESMTP id LAA00465; Fri, 25 Sep 1998 11:34:58 -0700 (PDT) (envelope-from mike@dingo.cdrom.com) Message-Id: <199809251834.LAA00465@dingo.cdrom.com> X-Mailer: exmh version 2.0.2 2/24/98 To: Brian Jenkins cc: freebsd-mobile@FreeBSD.ORG, freebsd-hackers@FreeBSD.ORG, sshetty@andrew.cmu.edu Subject: Re: PCMCIA Controller Not Found In-reply-to: Your message of "Fri, 25 Sep 1998 06:09:46 PDT." <19980925130946.7967.rocketmail@send1d.yahoomail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Fri, 25 Sep 1998 11:34:58 -0700 From: Mike Smith Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG Brian; from the output that you've provided us so far, it seems clear that the system BIOS is not correctly locating and configuring the CL-PD6730, which is why we aren't finding it. If the device isn't configured by the PCI BIOS, it's quite inappropriate for us to attempt to assign resources to it. While the hack proposed below may work in your case, it's not a useful general solution, and you should pursue your vendor to have them explain why their PCI BIOS is not enumerating and configuring the board. > I have installed FreeBSD 2.2.6 and PAO-980430 on a single board > computer with a PCMCIA add-on board. The PCMCIA controller chip is a > Cirrus Logic CL-PD6730, but the PCI code is not finding it. I just > received the information below from the manufacturer. What is the > best way to modify the kernel source code in order to get this working? You could add some code to the PCI bus initialisation which would use the pci_conf_read/write routines to make the appropriate changes. The "best" way to do this would involve having the BIOS enumerate and enable the device, and then perhaps adding some trivial code in pcic_p.c. As it stands, however, it's not clear that even the code below will actually be sufficient. If you're not comfortable wrangling with your vendor, please send me a copy of the verbose boot output again, along with your technical contact with the vendor and the details of your hardware (model numbers, BIOS revisions, etc.), and I'll see if we can address this. > Brian Jenkins > b_jenkins@yahoo.com > ---------------------------------------------------- > The PCI configuration registers are accessed at I/O ports 0CF8h & 0CFCh. > > 0CF8h is the index register and 0CFCh is the data register. All > accesses must be long word accesses. The high word of the index will > be 8000h, and the low word has the target device in the high 5 bits of > the high byte, (sub fucntions, if present would be in the low 3 bits) > and the byte address of the data in the low byte. Our PCMCIA adaptor > (if the first slice on the stack, which is the case for you) is device > 4, so the indeces for the PCI configuration registers are 80002000, > 80002004, 80002008 etc. > > Register 1 needs to have 43h ORed in, to enable parity checking, and > enabling PCI memory and I/O accesses, and 03E0h must be ORed into > register 4 to set that as the standard base for operations that I > would expect your drivers to expect to find the controller at. Here > is a block of code that should acomplish this: > > mov dx,CF8h ; pointer to index > mov eax,80002004h ; index of register 1 > out dx,eax ; set it > mov dx,CFCh ; pointer to data > in eax,dx ; get the current data > or ax,43h ; set the required bits (which are in the low word) > out dx,eax ; shove the altered data back out > mov dx,CF8h ; pointer to index (again) > mov eax,80002010h ; index of register 4 > out dx,eax ; set it > mov dx,CFCh ; pointer to data > in eax,dx ; get the current data > or ax,3E0h ; set the required bits (which are in the low word) > out dx,eax ; shove this altered data back out > > This must all happen before your PCMCIA driver(s) start to install. > _________________________________________________________ > DO YOU YAHOO!? > Get your free @yahoo.com address at http://mail.yahoo.com > > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-mobile" in the body of the message > -- \\ Sometimes you're ahead, \\ Mike Smith \\ sometimes you're behind. \\ mike@smith.net.au \\ The race is long, and in the \\ msmith@freebsd.org \\ end it's only with yourself. \\ msmith@cdrom.com To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message