Title: | DIGITAL UNIX (FORMERLY KNOWN AS DEC OSF/1) |
Notice: | Welcome to the Digital UNIX Conference |
Moderator: | SMURF::DENHAM |
Created: | Thu Mar 16 1995 |
Last Modified: | Fri Jun 06 1997 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 10068 |
Total number of notes: | 35879 |
Hi, a partner of us is writing on our behalf a driver for an ISA board on an AlphaServer 1000 5/300. This partner is very familiar with SCO UNIX drivers, but it is the first time he develops one for Digital UNIX. He has got the various related guides, but he still have some questions. Here they are: 1- his hardware follows Microsoft Plug'n'Play rules. Most of those rules are not usefull under UNIX. However, one of them is. He uses a fixed I/O addresses (0x0279 and 0x0A79) for querying the hardware identifier, in addition to the I/O range, configurable per board, used for later communication . He would like to know if he has to declare those fixed addresses with the ECU. More generally, except for interrupts, where the role of the PCI-EISA bridge is clear, he would like to know if declaring I/O and mem at the ECU level is just for the info to be passed to the driver, or also for configuring the bridge for granting access to the specified I/O and mem ranges. 2-he has got to define an interrupt handler. According to the doc, he is offered with two possibilities: - statically in his config.file - dynamically with the function handler_add In both cases, he can't see where the ISA IRQ is to be declared, except in !ISAxxxx.CFG. If UNIX deals with it on its own, using the handler_addr structure, what is the related IPL? He needs to know it if he wants to block INT (splxxx()). 3- is there any example of an ISA driver somewhere, with all the related config files? The doc seems to focus much more on TurboChannel drivers. Thanks for your help Vincent
T.R | Title | User | Personal Name | Date | Lines |
---|---|---|---|---|---|
9498.1 | NNTPD::"[email protected]" | Alex Malone | Tue Apr 15 1997 15:23 | 43 | |
What version of Digital UNIX is he developing for? What version of the Driver docs is he referring to? 1. There is no need to declare 0x279 and its alias 0xa79 in ECU, since the address is read-only and intended for LPT3 status. (i.e. you are not going to cause adverse effects by writing to it) If there is a device on LPT3(rare), is the value read correct? You can access the addresses through io handles which you can acquire by calling busphys_to_iohandle with your ISA hardware's controller struct. pnp_addr_reg = busphys_to_iohandle(0x279, BUS_IO, ctlrptr); pnp_wrdata_reg = busphys_to_iohandle(0xA79, BUS_IO, ctlrptr); example of usage: WRITE_BUS_D8(pnp_addr_req,0x0); mb(); WRITE_BUS_D8(pnp_wrdata_reg,0x41); mb(); data = READ_BUS_D8(pnp_wrdata_req); As far as I know, the ECU information is for the sole purpose of passing the data to the EISA bus code. (Drivers can only access assigned resources via get_config()) 2. If you are using Digital UNIX V4.0 or greater, use handler_add(), etc.. Until we support ISA PNP devices, any io/irq resources are to be entered via the ECU. The eisa bus code then knows which interrupt to associate with your handler when you call handler_add(). At this time, there is no way for you to specify which IRQ that you want to associate with your driver. 3. All device interrupts on PCI and EISA are assigned a IPL of 21 4. Check out http://www.zk3.dec.com/~malone/sblaster.html for an example ISA driver. There is a skeleton driver generator on the internal web at http://www.zk3.dec.com/uhs (a TCL/Tk version will be available soon) Hope this helps, Alex [Posted by WWW Notes gateway] |