linux/drivers/parisc/eisa.c
<<
v3.1 /spaion /formon a v3.1 href="../linux+v3.8.6/drivers/parisc/eisa.c">v3.1 img src="../.static/gfx/right.png" alt=">>">v3 /spaionv3 spai class="lxr_search">v3.1v3.1 input typl2"hidden" naml2"navtarget" n val2"">v3.1 input typl2"text" naml2"search" id2"search">v3.1 butttiotypl2"submit">Searchv3.1 Prefsn /a>v3 /spaion.1 /divon.1 form acopti="ajax+*" method="post" onsubmit="return false;">v3 input typl2"hidden" naml2"ajax_lookup" id2"ajax_lookup" n val2"">v.1 /formonv.1 div class="headingbotttm">n div id2"file_contents"o
 
1 /a> spai class="comment">/* /spaion
 
2 /a> spai class="comment"> * eisa.c - provide support for EISA adapters in PA-RISC machines /spaion
 
3 /a> spai class="comment"> * /spaion
 
4 /a> spai class="comment"> * This program is free software; you cai redistribute it and/or /spaion
 
5 /a> spai class="comment"> * modify it under the terms of the GNU General Public License /spaion
 
6 /a> spai class="comment"> * as published by the Free Software Foundaopti; either verspti /spaion
 
7 /a> spai class="comment"> * 2 of the License, or (at your 
 
8 /a> spai class="comment"> * /spaion
 
9 /a> spai class="comment"> * Copyright (c) 2001 Matthew Wilcox for Hewlett Packard /spaion
 on>
a> spai class="comment"> * Copyright (c) 2001 Daniel Engstrom <5116@telia.com> /spaion
 11 /a> spai class="comment"> * /spaion
 12 /a> spai class="comment"> * There are two distinct EISA adapters.  Mongoose is found in machines /spaion
 13 /a> spai class="comment"> * before the 712; then the Wax ASIC is used.  To complicate matters, the /spaion
 14 /a> spai class="comment"> * Wax ASIC also includes a PS/2 and RS-232 controller, but those are /spaion
 15 /a> spai class="comment"> * dealt with elsewhere; this file is concerned only with the EISA portptis /spaion
 16 /a> spai class="comment"> * of Wax. /spaion
 17 /a> spai class="comment"> *  /spaion
 18 /a> spai class="comment"> *  /spaion
 19 /a> spai class="comment"> * HINT: /spaion
 2n>
a> spai class="comment"> * ----- /spaion
 21 /a> spai class="comment"> * To allow an ISA card to work properly in the EISA slot you need to /spaion
 22 /a> spai class="comment"> * set an edge trigger level. This may be done on the palo command line  /spaion
 23 /a> spai class="comment"> * by adding the kernel parameter "eisa_irq_edge=n,n2,[...]]", with  /spaion
 24 /a> spai class="comment"> * n and n2 as the irq levels you want to use. /spaion
 25 /a> spai class="comment"> *  /spaion
 26 /a> spai class="comment"> * Example: "eisa_irq_edge=10,11" allows ISA cards to operate at  /spaion
 27 /a> spai class="comment"> * irq levels 10 and 11. /spaion
 28 /a> spai class="comment"> */ /spaion
 29 /a>n
 3n>
a>#include <linux/init.h>
a>>n
 31>
a>#include <linux/ioport.h>
a>>n
 32>
a>#include <linux/interrupt.h>
a>>n
 33>
a>#include <linux/kernel.h>
a>>n
 34>
a>#include <linux/module.h>
a>>n
 35>
a>#include <linux/pci.h>
a>>n
 36>
a>#include <linux/spinlock.h>
a>>n
 37>
a>#include <linux/eisa.h>
a>>n
 38 /a>n
 39>
a>#include <asm/byteorder.h>
a>>n
 4n>
a>#include <asm/io.h>
a>>n
 41>
a>#include <asm/hardware.h>
a>>n
 42>
a>#include <asm/processor.h>
a>>n
 43>
a>#include <asm/parisc-device.h>
a>>n
 44>
a>#include <asm/delay.h>
a>>n
 45>
a>#include <asm/eisa_bus.h>
a>>n
 46>
a>#include <asm/eisa_eeprom.h>
a>>n
 47 /a>n
 48>
a>#if 0n
 49>
a>#define  a href="+code=EISA_DBG" class="sref">EISA_DBG>
a>( a href="+code=msg" class="sref">msg>
a>,  a href="+code=arg" class="sref">arg>
a>... )  a href="+code=printk" class="sref">printk>
a>( a href="+code=KERN_DEBUG" class="sref">KERN_DEBUG>
a>  spai class="string">"eisa: " /spaio  a href="+code=msg" class="sref">msg>
a> , ##  a href="+code=arg" class="sref">arg>
a> )n
 5n>
a>#elsen
 51>
a>#define  a href="+code=EISA_DBG" class="sref">EISA_DBG>
a>( a href="+code=msg" class="sref">msg>
a>,  a href="+code=arg" class="sref">arg>
a>... )  n
 52>
a>#endifn
 53 /a>n
 54>
a>#define  a href="+code=SNAKES_EEPROM_BASE_ADDR" class="sref">SNAKES_EEPROM_BASE_ADDR>
a> 0xF0810400n
 55>
a>#define  a href="+code=MIRAGE_EEPROM_BASE_ADDR" class="sref">MIRAGE_EEPROM_BASE_ADDR>
a> 0xF00C0400n
 56 /a>n
 57 /a>static  a href="+code=DEFINE_SPINLOCK" class="sref">DEFINE_SPINLOCK>
a>( a href="+code=eisa_irq_lock" class="sref">eisa_irq_lock>
a>);n
 58 /a>n
 59>
a>void  a href="+code=__iomem" class="sref">__iomem>
a> * a href="+code=eisa_eeprom_addr" class="sref">eisa_eeprom_addr>
a>  a href="+code=__read_mostly" class="sref">__read_mostly>
a>;n
 60 /a>n
 61 /a> spai class="comment">/* We cai only have one EISA adapter in the system because neither /spaion
 62 /a> spai class="comment"> * implementaopti cai be flexed. /spaion
 63 /a> spai class="comment"> */ /spaion
 64 /a>static struct  a href="+code=eisa_ba" class="sref">eisa_ba>
a> {n
 65>
a>        struct  a href="+code=pci_hba_data" class="sref">pci_hba_data>
a>      a href="+code=hba" class="sref">hba>
a>;n
 66>
a>        unsigned long  a href="+code=eeprom_addr" class="sref">eeprom_addr>
a>;n
 67>
a>        struct  a href="+code=eisa_root_device" class="sref">eisa_root_device>
a>  a href="+code=root" class="sref">root>
a>;n
 68 /a>}  a href="+code=eisa_dev" class="sref">eisa_dev>
a>;n
 69 /a>n
 7n>
a> spai class="comment">/* Port ops */ /spaion
 71 /a>n
 72 /a>static  a href="+code=inline" class="sref">inline>
a> unsigned long  a href="+code=eisa_permute" class="sref">eisa_permute>
a>(unsigned short  a href="+code=port" class="sref">port>
a>)n
 73 /a>{n
 74>
a>        if ( a href="+code=port" class="sref">port>
a> & 0x300) {n
 75>
a>                return 0xfc000000 | (( a href="+code=port" class="sref">port>
a> & 0xfc00) >> 6)n
 76>
a>                        | (( a href="+code=port" class="sref">port>
a> & 0x3f8) << 9) | ( a href="+code=port" class="sref">port>
a> & 7);n
 77>
a>        } else {n
 78>
a>                return 0xfc000000 |  a href="+code=port" class="sref">port>
a>;n
 79>
a>        }n
 8n>
a>}n
 81 /a>n
 82 /a>unsigned char  a href="+code=eisa_in8" class="sref">eisa_in8>
a>(unsigned short  a href="+code=port" class="sref">port>
a>)n
 83 /a>{n
 84>
a>        if ( a href="+code=EISA_bus" class="sref">EISA_bus>
a>)n
 85>
a>                return  a href="+code=gsc_readb" class="sref">gsc_readb>
a>( a href="+code=eisa_permute" class="sref">eisa_permute>
a>( a href="+code=port" class="sref">port>
a>));n
 86>
a>        return 0xff;n
 87>
a>}n
 88 /a>n
 89 /a>unsigned short  a href="+code=eisa_in16" class="sref">eisa_in16 /a>(unsigned short  a href="+code=port" class="sref">port>
a>)n
 90 /a>{n
 91>
a>        if ( a href="+code=EISA_bus" class="sref">EISA_bus>
a>)n
 92>
a>                return  a href="+code=le16_to_cpu" class="sref">le16_to_cpu>
a>( a href="+code=gsc_readw" class="sref">gsc_readw>
a>( a href="+code=eisa_permute" class="sref">eisa_permute>
a>( a href="+code=port" class="sref">port>
a>)));n
 93>
a>        return 0xffff;n
 94>
a>}n
 95 /a>n
 96 /a>unsigned int  a href="+code=eisa_in32" class="sref">eisa_in32>
a>(unsigned short  a href="+code=port" class="sref">port>
a>)n
 97 /a>{n
 98>
a>        if ( a href="+code=EISA_bus" class="sref">EISA_bus>
a>)n
 99>
a>                return  a href="+code=le32_to_cpu" class="sref">le32_to_cpu>
a>( a href="+code=gsc_readl" class="sref">gsc_readl>
a>( a href="+code=eisa_permute" class="sref">eisa_permute>
a>( a href="+code=port" class="sref">port>
a>)));n
100>
a>        return 0xffffffff;n
101>
a>}n
102 /a>n
103>
a>void  a href="+code=eisa_out8" class="sref">eisa_out8>
a>(unsigned char  a href="+code=data" class="sref">data>
a>, unsigned short  a href="+code=port" class="sref">port>
a>)n
104 /a>{n
105>
a>        if ( a href="+code=EISA_bus" class="sref">EISA_bus>
a>)n
106>
a>                 a href="+code=gsc_writeb" class="sref">gsc_writeb>
a>( a href="+code=data" class="sref">data>
a>,  a href="+code=eisa_permute" class="sref">eisa_permute>
a>( a href="+code=port" class="sref">port>
a>));n
107>
a>}n
108 /a>n
109>
a>void  a href="+code=eisa_out16" class="sref">eisa_out16>
a>(unsigned short  a href="+code=data" class="sref">data>
a>, unsigned short  a href="+code=port" class="sref">port>
a>)n
110 /a>{n
111>
a>        if ( a href="+code=EISA_bus" class="sref">EISA_bus>
a>)   n
112>
a>                 a href="+code=gsc_writew" class="sref">gsc_writew>
a>( a href="+code=cpu_to_le16" class="sref">cpu_to_le16>
a>( a href="+code=data" class="sref">data>
a>),  a href="+code=eisa_permute" class="sref">eisa_permute>
a>( a href="+code=port" class="sref">port>
a>));n
113 /a>}n
114 /a>n
115 /a>void  a href="+code=eisa_out32" class="sref">eisa_out32>
a>(unsigned int  a href="+code=data" class="sref">data>
a>, unsigned short  a href="+code=port" class="sref">port>
a>)n
116>
a>{n
117>
a>        if ( a href="+code=EISA_bus" class="sref">EISA_bus>
a>)n
118>
a>                 a href="+code=gsc_writel" class="sref">gsc_writel>
a>( a href="+code=cpu_to_le32" class="sref">cpu_to_le32>
a>( a href="+code=data" class="sref">data>
a>),  a href="+code=eisa_permute" class="sref">eisa_permute>
a>( a href="+code=port" class="sref">port>
a>));n
119 /a>}n
120 /a>n
121>
a>#ifndef  a href="+code=CONFIG_PCI" class="sref">CONFIG_PCI /a>n
122 /a> spai class="comment">/* We call these directly without PCI.  See asm/io.h. */ /spaion
123 /a> a href="+code=EXPORT_SYMBOL" class="sref">EXPORT_SYMBOL>
a>( a href="+code=eisa_in8" class="sref">eisa_in8>
a>);n
124 /a> a href="+code=EXPORT_SYMBOL" class="sref">EXPORT_SYMBOL>
a>( a href="+code=eisa_in16" class="sref">eisa_in16 /a>);n
125 /a> a href="+code=EXPORT_SYMBOL" class="sref">EXPORT_SYMBOL>
a>( a href="+code=eisa_in32" class="sref">eisa_in32>
a>);n
126 /a> a href="+code=EXPORT_SYMBOL" class="sref">EXPORT_SYMBOL>
a>( a href="+code=eisa_out8" class="sref">eisa_out8>
a>);n
127 /a> a href="+code=EXPORT_SYMBOL" class="sref">EXPORT_SYMBOL>
a>( a href="+code=eisa_out16" class="sref">eisa_out16>
a>);n
128 /a> a href="+code=EXPORT_SYMBOL" class="sref">EXPORT_SYMBOL>
a>( a href="+code=eisa_out32" class="sref">eisa_out32>
a>);n
129 /a>#endifn
130 /a>n
131 /a> spai class="comment">/* Interrupt handling */ /spaion
132 /a>n
133 /a> spai class="comment">/* cached interrupt mask registers */ /spaion
134 /a>static int  a href="+code=master_mask" class="sref">master_mask>
a>;n
135>
a>static int  a href="+code=slave_mask" class="sref">slave_mask>
a>;n
136 /a>n
137 /a> spai class="comment">/* the trig level cai be set with the /spaion
138 /a> spai class="comment"> * eisa_irq_edge=n,n,n commandline parameter  /spaion
139 /a> spai class="comment"> * We should really read this from the EEPROM  /spaion
14n>
a> spai class="comment"> * in the furure.  /spaion
141 /a> spai class="comment"> */ /spaion
142 /a> spai class="comment">/* irq 13,8,2,1,0 must be edge */ /spaion
143>
a>static unsigned int  a href="+code=eisa_irq_level" class="sref">eisa_irq_level>
a>  a href="+code=__read_mostly" class="sref">__read_mostly>
a>;  spai class="comment">/* default to edge triggered */ /spaion
144 /a>n
145 /a>n
146 /a> spai class="comment">/* called by free irq */ /spaion
147 /a>static void  a href="+code=eisa_mask_irq" class="sref">eisa_mask_irq>
a>(struct  a href="+code=irq_data" class="sref">irq_data>
a> * a href="+code=d" class="sref">d>
a>)n
148>
a>{n
149>
a>        unsigned int  a href="+code=irq" class="sref">irq>
a> =  a href="+code=d" class="sref">d>
a>-> a href="+code=irq" class="sref">irq>
a>;n
150>
a>        unsigned long  a href="+code=flags" class="sref">flags>
a>;n
151 /a>n
152>
a>         a href="+code=EISA_DBG" class="sref">EISA_DBG>
a>( spai class="string">"disable irq %d\n" /spaio,  a href="+code=irq" class="sref">irq>
a>);n
153>
a>         spai class="comment">/* just mask for now */ /spaion
154>
a>         a href="+code=spin_lock_irqsave" class="sref">spin_lock_irqsave>
a>(& a href="+code=eisa_irq_lock" class="sref">eisa_irq_lock>
a>,  a href="+code=flags" class="sref">flags>
a>);n
155>
a>        if ( a href="+code=irq" class="sref">irq>
a> & 8) {n
156>
a>                 a href="+code=slave_mask" class="sref">slave_mask>
a> |= (1 << ( a href="+code=irq" class="sref">irq>
a>&7));n
157>
a>                 a href="+code=eisa_out8" class="sref">eisa_out8>
a>( a href="+code=slave_mask" class="sref">slave_mask>
a>, 0xa1);n
158>
a>        } else {n
159>
a>                 a href="+code=master_mask" class="sref">master_mask>
a> |= (1 << ( a href="+code=irq" class="sref">irq>
a>&7));n
160>
a>                 a href="+code=eisa_out8" class="sref">eisa_out8>
a>( a href="+code=master_mask" class="sref">master_mask>
a>, 0x21);n
161>
a>        }n
162>
a>         a href="+code=spin_unlock_irqrestore" class="sref">spin_unlock_irqrestore>
a>(& a href="+code=eisa_irq_lock" class="sref">eisa_irq_lock>
a>,  a href="+code=flags" class="sref">flags>
a>);n
163>
a>         a href="+code=EISA_DBG" class="sref">EISA_DBG>
a>( spai class="string">"pic0 mask %02x\n" /spaio,  a href="+code=eisa_in8" class="sref">eisa_in8>
a>(0x21));n
164>
a>         a href="+code=EISA_DBG" class="sref">EISA_DBG>
a>( spai class="string">"pic1 mask %02x\n" /spaio,  a href="+code=eisa_in8" class="sref">eisa_in8>
a>(0xa1));n
165>
a>}n
166 /a>n
167 /a> spai class="comment">/* called by request irq */ /spaion
168 /a>static void  a href="+code=eisa_unmask_irq" class="sref">eisa_unmask_irq>
a>(struct  a href="+code=irq_data" class="sref">irq_data>
a> * a href="+code=d" class="sref">d>
a>)n
169 /a>{n
170>
a>        unsigned int  a href="+code=irq" class="sref">irq>
a> =  a href="+code=d" class="sref">d>
a>-> a href="+code=irq" class="sref">irq>
a>;n
171>
a>        unsigned long  a href="+code=flags" class="sref">flags>
a>;n
172>
a>         a href="+code=EISA_DBG" class="sref">EISA_DBG>
a>( spai class="string">"enable irq %d\n" /spaio,  a href="+code=irq" class="sref">irq>
a>);n
173>
a>                n
174>
a>         a href="+code=spin_lock_irqsave" class="sref">spin_lock_irqsave>
a>(& a href="+code=eisa_irq_lock" class="sref">eisa_irq_lock>
a>,  a href="+code=flags" class="sref">flags>
a>);n
175>
a>        if ( a href="+code=irq" class="sref">irq>
a> & 8) {n
176>
a>                 a href="+code=slave_mask" class="sref">slave_mask>
a> &= ~(1 << ( a href="+code=irq" class="sref">irq>
a>&7));n
177>
a>                 a href="+code=eisa_out8" class="sref">eisa_out8>
a>( a href="+code=slave_mask" class="sref">slave_mask>
a>, 0xa1);n
178>
a>        } else {n
179>
a>                 a href="+code=master_mask" class="sref">master_mask>
a> &= ~(1 << ( a href="+code=irq" class="sref">irq>
a>&7));n
180>
a>                 a href="+code=eisa_out8" class="sref">eisa_out8>
a>( a href="+code=master_mask" class="sref">master_mask>
a>, 0x21);n
181>
a>        }n
182>
a>         a href="+code=spin_unlock_irqrestore" class="sref">spin_unlock_irqrestore>
a>(& a href="+code=eisa_irq_lock" class="sref">eisa_irq_lock>
a>,  a href="+code=flags" class="sref">flags>
a>);n
183>
a>         a href="+code=EISA_DBG" class="sref">EISA_DBG>
a>( spai class="string">"pic0 mask %02x\n" /spaio,  a href="+code=eisa_in8" class="sref">eisa_in8>
a>(0x21));n
184>
a>         a href="+code=EISA_DBG" class="sref">EISA_DBG>
a>( spai class="string">"pic1 mask %02x\n" /spaio,  a href="+code=eisa_in8" class="sref">eisa_in8>
a>(0xa1));n
185>
a>}n
186 /a>n
187 /a>static struct  a href="+code=irq_chip" class="sref">irq_chip>
a>  a href="+code=eisa_interrupt_type" class="sref">eisa_interrupt_type>
a> = {n
188>
a>        . a href="+code=naml" class="sref">naml>
a>           =        spai class="string">"EISA" /spaio,n
189>
a>        . a href="+code=irq_unmask" class="sref">irq_unmask>
a>     =        a href="+code=eisa_unmask_irq" class="sref">eisa_unmask_irq>
a>,n
190>
a>        . a href="+code=irq_mask" class="sref">irq_mask>
a>       =        a href="+code=eisa_mask_irq" class="sref">eisa_mask_irq>
a>,n
191>
a>};n
192 /a>n
193>
a>static  a href="+code=irqreturn_t" class="sref">irqreturn_t>
a>  a href="+code=eisa_irq" class="sref">eisa_irq>
a>(int  a href="+code=wax_irq" class="sref">wax_irq>
a>, void * a href="+code=intr_dev" class="sref">intr_dev>
a>)n
194 /a>{n
195>
a>        int  a href="+code=irq" class="sref">irq>
a> =  a href="+code=gsc_readb" class="sref">gsc_readb>
a>(0xfc01f000);  spai class="comment">/* EISA supports 16 irqs */ /spaion
196>
a>        unsigned long  a href="+code=flags" class="sref">flags>
a>;n
197>
a>        n
198>
a>         a href="+code=spin_lock_irqsave" class="sref">spin_lock_irqsave>
a>(& a href="+code=eisa_irq_lock" class="sref">eisa_irq_lock>
a>,  a href="+code=flags" class="sref">flags>
a>);n
199>
a>         spai class="comment">/* read IRR command */ /spaion
200>
a>         a href="+code=eisa_out8" class="sref">eisa_out8>
a>(0x0a, 0x20);n
201>
a>         a href="+code=eisa_out8" class="sref">eisa_out8>
a>(0x0a, 0xa0);n
202 /a>n
203>
a>         a href="+code=EISA_DBG" class="sref">EISA_DBG>
a>( spai class="string">"irq IAR %02x 8259-1 irr %02x 8259-2 irr %02x\n" /spaio,n
204>
a>                    a href="+code=irq" class="sref">irq>
a>,  a href="+code=eisa_in8" class="sref">eisa_in8>
a>(0x20),  a href="+code=eisa_in8" class="sref">eisa_in8>
a>(0xa0));n
205>
a>   n
206>
a>         spai class="comment">/* read ISR command */ /spaion
207>
a>         a href="+code=eisa_out8" class="sref">eisa_out8>
a>(0x0a, 0x20);n
208>
a>         a href="+code=eisa_out8" class="sref">eisa_out8>
a>(0x0a, 0xa0);n
209>
a>         a href="+code=EISA_DBG" class="sref">EISA_DBG>
a>( spai class="string">"irq 8259-1 isr %02x imr %02x 8259-2 isr %02x imr %02x\n" /spaio,n
210>
a>                  a href="+code=eisa_in8" class="sref">eisa_in8>
a>(0x20),  a href="+code=eisa_in8" class="sref">eisa_in8>
a>(0x21),  a href="+code=eisa_in8" class="sref">eisa_in8>
a>(0xa0),  a href="+code=eisa_in8" class="sref">eisa_in8>
a>(0xa1));n
211>
a>        n
212>
a>         a href="+code=irq" class="sref">irq>
a> &= 0xf;n
213>
a>        n
214>
a>         spai class="comment">/* mask irq and write eoi */ /spaion
215>
a>        if ( a href="+code=irq" class="sref">irq>
a> & 8) {n
216>
a>                 a href="+code=slave_mask" class="sref">slave_mask>
a> |= (1 << ( a href="+code=irq" class="sref">irq>
a>&7));n
217>
a>                 a href="+code=eisa_out8" class="sref">eisa_out8>
a>( a href="+code=slave_mask" class="sref">slave_mask>
a>, 0xa1);n
218>
a>                 a href="+code=eisa_out8" class="sref">eisa_out8>
a>(0x60 | ( a href="+code=irq" class="sref">irq>
a>&7),0xa0); spai class="comment">/* 'Specific EOI' to slave */ /spaion
219>
a>                 a href="+code=eisa_out8" class="sref">eisa_out8>
a>(0x62,0x20);    spai class="comment">/* 'Specific EOI' to master-IRQ2 */ /spaion
220>
a>                n
221>
a>        } else {n
222>
a>                 a href="+code=master_mask" class="sref">master_mask>
a> |= (1 << ( a href="+code=irq" class="sref">irq>
a>&7));n
223>
a>                 a href="+code=eisa_out8" class="sref">eisa_out8>
a>( a href="+code=master_mask" class="sref">master_mask>
a>, 0x21);n
224>
a>                 a href="+code=eisa_out8" class="sref">eisa_out8>
a>(0x60| a href="+code=irq" class="sref">irq>
a>,0x20);        spai class="comment">/* 'Specific EOI' to master */ /spaion
225>
a>        }n
226>
a>         a href="+code=spin_unlock_irqrestore" class="sref">spin_unlock_irqrestore>
a>(& a href="+code=eisa_irq_lock" class="sref">eisa_irq_lock>
a>,  a href="+code=flags" class="sref">flags>
a>);n
227 /a>n
228>
a>         a href="+code=generic_handle_irq" class="sref">generic_handle_irq>
a>( a href="+code=irq" class="sref">irq>
a>);n
229>
a>   n
230>
a>         a href="+code=spin_lock_irqsave" class="sref">spin_lock_irqsave>
a>(& a href="+code=eisa_irq_lock" class="sref">eisa_irq_lock>
a>,  a href="+code=flags" class="sref">flags>
a>);n
231>
a>         spai class="comment">/* unmask */ /spaion
232>
a>        if ( a href="+code=irq" class="sref">irq>
a> & 8) {n
233>
a>                 a href="+code=slave_mask" class="sref">slave_mask>
a> &= ~(1 << ( a href="+code=irq" class="sref">irq>
a>&7));n
234>
a>                 a href="+code=eisa_out8" class="sref">eisa_out8>
a>( a href="+code=slave_mask" class="sref">slave_mask>
a>, 0xa1);n
235>
a>        } else {n
236>
a>                 a href="+code=master_mask" class="sref">master_mask>
a> &= ~(1 << ( a href="+code=irq" class="sref">irq>
a>&7));n
237>
a>                 a href="+code=eisa_out8" class="sref">eisa_out8>
a>( a href="+code=master_mask" class="sref">master_mask>
a>, 0x21);n
238>
a>        }n
239>
a>         a href="+code=spin_unlock_irqrestore" class="sref">spin_unlock_irqrestore>
a>(& a href="+code=eisa_irq_lock" class="sref">eisa_irq_lock>
a>,  a href="+code=flags" class="sref">flags>
a>);n
240>
a>        return  a href="+code=IRQ_HANDLED" class="sref">IRQ_HANDLED>
a>;n
241>
a>}n
242 /a>n
243>
a>static  a href="+code=irqreturn_t" class="sref">irqreturn_t>
a>  a href="+code=dummy_irq2_handler" class="sref">dummy_irq2_handler>
a>(int _, void * a href="+code=dev" class="sref">dev>
a>)n
244 /a>{n
245>
a>         a href="+code=printk" class="sref">printk>
a>( a href="+code=KERN_ALERT" class="sref">KERN_ALERT>
a>  spai class="string">"eisa: uhh, irq2?\n" /spaio);n
246>
a>        return  a href="+code=IRQ_HANDLED" class="sref">IRQ_HANDLED>
a>;n
247>
a>}n
248 /a>n
249>
a>static struct  a href="+code=irqacopti" class="sref">irqacopti>
a>  a href="+code=irq2_acopti" class="sref">irq2_acopti>
a> = {n
250>
a>        . a href="+code=handler" class="sref">handler>
a> =  a href="+code=dummy_irq2_handler" class="sref">dummy_irq2_handler>
a>,n
251>
a>        . a href="+code=naml" class="sref">naml>
a> =  spai class="string">"cascade" /spaio,n
252>
a>};n
253 /a>n
254 /a>static void  a href="+code=init_eisa_pic" class="sref">init_eisa_pic>
a>(void)n
255>
a>{n
256>
a>        unsigned long  a href="+code=flags" class="sref">flags>
a>;n
257>
a>        n
258>
a>         a href="+code=spin_lock_irqsave" class="sref">spin_lock_irqsave>
a>(& a href="+code=eisa_irq_lock" class="sref">eisa_irq_lock>
a>,  a href="+code=flags" class="sref">flags>
a>);n
259 /a>n
260>
a>         a href="+code=eisa_out8" class="sref">eisa_out8>
a>(0xff, 0x21);  spai class="comment">/* mask during init */ /spaion
261>
a>         a href="+code=eisa_out8" class="sref">eisa_out8>
a>(0xff, 0xa1);  spai class="comment">/* mask during init */ /spaion
262>
a>        n
263>
a>         spai class="comment">/* master pic */ /spaion
264>
a>         a href="+code=eisa_out8" class="sref">eisa_out8>
a>(0x11,0x20);  spai class="comment">/* ICW1 */ /spaio   n
265>
a>         a href="+code=eisa_out8" class="sref">eisa_out8>
a>(0x00,0x21);  spai class="comment">/* ICW2 */ /spaio   n
266>
a>         a href="+code=eisa_out8" class="sref">eisa_out8>
a>(0x04,0x21);  spai class="comment">/* ICW3 */ /spaio   n
267>
a>         a href="+code=eisa_out8" class="sref">eisa_out8>
a>(0x01,0x21);  spai class="comment">/* ICW4 */ /spaio   n
268>
a>         a href="+code=eisa_out8" class="sref">eisa_out8>
a>(0x40,0x20);  spai class="comment">/* OCW2 */ /spaio   n
269>
a>        n
270>
a>         spai class="comment">/* slave pic */ /spaion
271>
a>         a href="+code=eisa_out8" class="sref">eisa_out8>
a>(0x11,0xa0);  spai class="comment">/* ICW1 */ /spaio   n
272>
a>         a href="+code=eisa_out8" class="sref">eisa_out8>
a>(0x08,0xa1);  spai class="comment">/* ICW2 */ /spaio   n
273>
a>         a href="+code=eisa_out8" class="sref">eisa_out8>
a>(0x02,0xa1);  spai class="comment">/* ICW3 */ /spaio   n
274>
a>         a href="+code=eisa_out8" class="sref">eisa_out8>
a>(0x01,0xa1);  spai class="comment">/* ICW4 */ /spaio   n
275>
a>         a href="+code=eisa_out8" class="sref">eisa_out8>
a>(0x40,0xa0);  spai class="comment">/* OCW2 */ /spaio   n
276>
a>        n
277>
a>         a href="+code=udelay" class="sref">udelay>
a>(100);n
278>
a>        n
279>
a>         a href="+code=slave_mask" class="sref">slave_mask>
a> = 0xff; n
280>
a>         a href="+code=master_mask" class="sref">master_mask>
a> = 0xfb; n
281>
a>         a href="+code=eisa_out8" class="sref">eisa_out8>
a>( a href="+code=slave_mask" class="sref">slave_mask>
a>, 0xa1);  spai class="comment">/* OCW1 */ /spaion
282>
a>         a href="+code=eisa_out8" class="sref">eisa_out8>
a>( a href="+code=master_mask" class="sref">master_mask>
a>, 0x21);  spai class="comment">/* OCW1 */ /spaion
283>
a>        n
284>
a>         spai class="comment">/* setup trig level */ /spaion
285>
a>         a href="+code=EISA_DBG" class="sref">EISA_DBG>
a>( spai class="string">"EISA edge/level %04x\n" /spaio,  a href="+code=eisa_irq_level" class="sref">eisa_irq_level>
a>);n
286>
a>        n
287>
a>         a href="+code=eisa_out8" class="sref">eisa_out8>
a>( a href="+code=eisa_irq_level" class="sref">eisa_irq_level>
a>&0xff, 0x4d0);  spai class="comment">/* Set all irq's to edge  */ /spaion
288>
a>         a href="+code=eisa_out8" class="sref">eisa_out8>
a>(( a href="+code=eisa_irq_level" class="sref">eisa_irq_level>
a> >> 8) & 0xff, 0x4d1); n
289>
a>        n
290>
a>         a href="+code=EISA_DBG" class="sref">EISA_DBG>
a>( spai class="string">"pic0 mask %02x\n" /spaio,  a href="+code=eisa_in8" class="sref">eisa_in8>
a>(0x21));n
291>
a>         a href="+code=EISA_DBG" class="sref">EISA_DBG>
a>( spai class="string">"pic1 mask %02x\n" /spaio,  a href="+code=eisa_in8" class="sref">eisa_in8>
a>(0xa1));n
292>
a>         a href="+code=EISA_DBG" class="sref">EISA_DBG>
a>( spai class="string">"pic0 edge/level %02x\n" /spaio,  a href="+code=eisa_in8" class="sref">eisa_in8>
a>(0x4d0));n
293>
a>         a href="+code=EISA_DBG" class="sref">EISA_DBG>
a>( spai class="string">"pic1 edge/level %02x\n" /spaio,  a href="+code=eisa_in8" class="sref">eisa_in8>
a>(0x4d1));n
294>
a>        n
295>
a>         a href="+code=spin_unlock_irqrestore" class="sref">spin_unlock_irqrestore>
a>(& a href="+code=eisa_irq_lock" class="sref">eisa_irq_lock>
a>,  a href="+code=flags" class="sref">flags>
a>);n
296>
a>}n
297 /a>n
298 /a> spai class="comment">/* Device initialisaopti */ /spaion
299 /a>n
300>
a>#define  a href="+code=is_mongoose" class="sref">is_mongoose>
a>( a href="+code=dev" class="sref">dev>
a>) ( a href="+code=dev" class="sref">dev>
a>-> a href="+code=id" class="sref">id>
a>. a href="+code=sverspti" class="sref">sverspti>
a> == 0x00076)n
301 /a>n
302 /a>static int  a href="+code=__init" class="sref">__init>
a>  a href="+code=eisa_probe" class="sref">eisa_probe>
a>(struct  a href="+code=parisc_device" class="sref">parisc_device>
a> * a href="+code=dev" class="sref">dev>
a>)n
303>
a>{n
304>
a>        int  a href="+code=i" class="sref">i>
a>,  a href="+code=result" class="sref">result>
a>;n
305 /a>n
306>
a>        char * a href="+code=naml" class="sref">naml>
a> =  a href="+code=is_mongoose" class="sref">is_mongoose>
a>( a href="+code=dev" class="sref">dev>
a>) ?  spai class="string">"Mongoose" /spaio :  spai class="string">"Wax" /spaio;n
307 /a>n
308>
a>         a href="+code=printk" class="sref">printk>
a>( a href="+code=KERN_INFO" class="sref">KERN_INFO>
a>  spai class="string">"%s EISA Adapter found at 0x%08lx\n" /spaio, n
309>
a>                 a href="+code=naml" class="sref">naml>
a>, (unsigned long) a href="+code=dev" class="sref">dev>
a>-> a href="+code=hpa" class="sref">hpa>
a>. a href="+code=start" class="sref">start>
a>);n
310 /a>n
311>
a>         a href="+code=eisa_dev" class="sref">eisa_dev>
a>. a href="+code=hba" class="sref">hba>
a>. a href="+code=dev" class="sref">dev>
a> =  a href="+code=dev" class="sref">dev>
a>;n
312>
a>         a href="+code=eisa_dev" class="sref">eisa_dev>
a>. a href="+code=hba" class="sref">hba>
a>. a href="+code=iommu" class="sref">iommu>
a> =  a href="+code=ccio_get_iommu" class="sref">ccio_get_iommu>
a>( a href="+code=dev" class="sref">dev>
a>);n
313 /a>n
314>
a>         a href="+code=eisa_dev" class="sref">eisa_dev>
a>. a href="+code=hba" class="sref">hba>
a>. a href="+code=lmmio_space" class="sref">lmmio_space>
a>. a href="+code=naml" class="sref">naml>
a> =  spai class="string">"EISA&qf">dev>
a>);n4ss="line" naml2622s      a href="+code=eisa_out8" clss="sref">eisa_dev>
a>. a href="+code=hba" class="sref">hba>
a>. a href="+code=lmmio_space" class="sref">lmmio_space>
a>. a href="+code=naml" cllass="sref">start>
a>);nIRQ_HANDF_EXTEN=f, 0xa1)c000000ef="drivers/parisc/eisa.c#L313" id2"L306" class="line" naml2"L216">
213>
a> 31      a href="+code=eisa_out8" clss="sref">eisa_dev>
a>. a href="+code=hba" class="sref">hba>
a>. a href="+code=lmmio_space" class="sref">lmmio_space>
a>. a href="+code=naml" clen="sref">id>
a>. en=a href="+code=ccio_getF_EXTEN="sref">IRQ_HANDF_EXTEN=f, 0xa1)fbfffffef="drivers/parisc/eisa.c#L313" id2"L307" class="line" naml2"L217">
213>
a> 31      a href="+code=eisa_out8" clss="sref">eisa_dev>
a>. a href="+code=hba" class="sref">hba>
a>. a href="+code=lmmio_space" class="sref">lmmio_space>
a>. a href="+code=naml" cllass="sref">flags>
a>);nflags>
aIORESOURCE_MEM href="drivers/parisc/eisa.c#L312" id2"L308" class="line" naml2"L218">
213>
a> 31      a href="+code=printk" class="sref">result>
a>;nlmmio_sp_iommirq */ mirsours=href="+code=dev" class="sref">dev>
a>);neisa_dev>
a>. a href="+code=hba" class="sref">hba>
a>. a href="+code=lmmio_space" class="sref">lmmio_space>
a>. a hrefef="drivers/parisc/eisa.c#L313" id2"L309" class="line" naml2"L219">
213>
a> 3              ref="+code=irq" claclass="sref">result>
a>;n
223>
a> 3              nprintk>
a>( a href="+code=KERN_INFO" clERR"sref">KERN_INFO>
a>ERRai class="string">"%s E>dev: faiequetostriimapter Bus adda>;s >. a ! /spaio);n
223>
a> 3      } else {{{{{{{{{a href="+code=IRQ_HANDclass="sref">result>
a>;n
223>
a> 3              f="drivers/parisc/eisa.c#L297" id23L223" cla3s="line" naml2"L223">
223>
a> 32      a href="+code=eisa_out8" clss="sref">eisa_dev>
a>. a href="+code=hba" class="sref">hba>
a>. a href="+code=iommu" claclass="sref">lmmio_sp>
a>. a href="+code=naml" class="sref">naml>
a> =  spai class="string">"EISA&qf">dev>
a>);n
223>
a> 32      a href="+code=eisa_dev" class="sref">eisa_dev>
a>. a href="+code=hba" class="sref">hba>
a>. a href="+code=lmmio_splaclass="sref">lmmio_sp>
a>. a href="+code=naml" cllass="sref">start>
a>);n
223>
a> 32      a href="+code=eisa_out8" clss="sref">eisa_dev>
a>. a href="+code=hba" class="sref">hba>
a>. a href="+code=lmmio_splaclass="sref">lmmio_sp>
a>. a href="+code=naml" clen="sref">id>
a>. en=a href=a1)ffef="drivers/parisc/eisa.c#L213" id23L226" cla3s="line" naml2"L226">
223>
a> 3       a href="+code=spin_unl_lockss="sref">eisa_dev>
a>. a href="+code=hba" class="sref">hba>
a>. a href="+code=lmmio_space" class="sref">lmmio_space>
a>. a href="+code=naml" cllass="sref">flags>
a>);nKERN_INFIORESOURCE_I= href="drivers/parisc/eisa.c#L305" id2"L307" class="line" naml2"L227">
223 /a>n32      a href="+code=eisa_outclass="sref">result>
a>;nlmmio_spirq */ mirsours=href=href="+code=eisa_irqio irqmirsours="sref">lmmio_spio irqmirsours=a hr, href="+code=eisa_irq_lockss="sref">eisa_dev>
a>. a href="+code=hba" class="sref">hba>
a>. a href="+code=lmmio_splaclass="sref">lmmio_sp>
a>. a hrefef="drivers/parisc/eisa.c#L246" id23L308" class="line" naml2"L228">
223>
a> 3       a href=ref="+code=irq" claclass="sref">result>
a>;n
223>
a> 32              a href="+code=naml" clclass="sref">printk>
a>( a href="+code=KERN_INFO" clERR"sref">KERN_INFO>
a>ERRai class="string">"%s E>dev: faiequetostriimapter Bus  irq >. a ! /spaio);n
233>
a> 33             nresult>
a>;n
233>
a> 3       spai clf="drivers/parisc/eisa.c#L297" id23L232" cla3s="line" naml2"L232">
233>
a> 33      a href="+code=eisa_devpcibiosmirgik>
a>ss="sref">hba>
a>.pcibiosmirgik>
a>ss=p; a href="+code=eisa_irq_lockss="sref">eisa_dev>
a>. a href="+code=hba" class="sref">hba>
a>. a hrefef="drivers/parisc/eisa.c#L246" id23L223" cla3s="line" naml2"L233">
233>
a> 33 href="drivers/parisc/eisa.c#L314" id2"L234" cla3s="line" naml2"L234">
233>
a> 33      a href="+code=eisa_devclass="sref">result>
a>;nirq>
a>&irq */ mss=href="+code=dev" class="sref">dev>
a>);nirq>
a>;neisa_dev>
a>.nIRQ_HANDLEDF_SHARs= href="ss="string">"EISA" /spaio,neisa_dev>
a>. a hrefef="drivers/parisc/eisa.c#L246" id23Ls="line" s="line" naml2"L235">
233>
a> 3      } else {ref="+code=irq" claclass="sref">result>
a>;n
233>
a> 3               a href="+code=master_mclass="sref">printk>
a>( a href="+code=KERN_INFO" clERR"sref">KERN_INFO>
a>ERRai class="string">"%s E>dev: irq */ mss= faiequ! /spaio);n
233>
a> 3               a href=a href="+code=IRQ_HANDclass="sref">result>
a>;n
233>
a> 3      }n
233>
a> 33     n
243>
a> 34      spai class="comment">/* slave piReserve /spaion
243>
a>}34      a href="+code=eisa_devig leel" "sref">eisa_devig leel" href=2f href="+code=eisa_irqpti" class="sref">irq2_acopti>
a> = {n
243 /a>n34      a href=forf="+code=irq" clas"sref">irq2_acopa href=0f="+code=i" class="sref">i>
a>,  a hree href16f="+code=i" class="sref">i>
a>,  a hre++ref="drivers/parisc/eisa.c#L233" id23L243" cla3s="line" naml2"L243">
243>
a>s34              a href="+code=slave_ma>
a>ig >  a _and" class="sref">dummy_ir>
a>ig >  a _and" class=href="+code=KERN_INF="sref">i>
a>,  a href=href="+code=eisa_irq_lock"_type" class="sref">eisa_interrupt_type>
a> = {n
243 /a>{34                 a href======================="+code=hba" clasq>
a>(simpclass="sref">generic_sq>
a>(simpclass=n
243>
a> 3       a href=f="drivers/parisc/eisa.c#L239" id23L246" cla3s="line" naml2"L246">
243>
a> 34     n
243>
a>}34      a href="+code=eisa_out>
a>(bu="sref">flags>
a>
a>(bu=a href=1f="drivers/parisc/eisa.c#L246" id23L308" class="line" naml2"L248">
243 /a>n3a href="drivers/parisc/eisa.c#L249" id23L249" cla3s="line" naml2"L249">
243>
a>s34             ref="+code=irq" class="sref">dev>
a>);nflags>
anum_adda= hreref="drivers/parisc/eisa.c#L233" id23L250" cla3s="line" naml2"L250">
253>
a> 35             n/* slave pinew at irmware sq>
 out the eeprom adda>;s on
253>
a> 35     } else {{{{{{{{{"+code=eisa_irq_lockss="sref">eisa_dev>
a>. a href="+code=hba" claeeprom_adda"sref">eisa_dev>eprom_adda hreef="+code=ccio_getss="sref">dev>
a>);neisa_devadda hre[0]f="drivers/parisc/eisa.c#L246" id23L252" cla3s="line" naml2"L252">
253>
a>}35             f
253 /a>n35              a href="ss="comment">/* slave pioldt irmware,inequetosfigure out the box on
253 /a>s35                 a hrref="+code=irq" classe" class="sref">is_mongoose>
a>( a href="+code=dev" class="sref">dev>
a>) ?  spairef="drivers/parisc/eisa.c#L233" id23Ls="line" s="line" naml2"L255">
253>
a>{355                a href======"+code=eisa_irq_lockss="sref">eisa_dev>
a>. a href="+code=hba" claeeprom_adda"sref">eisa_dev>eprom_adda hreef="+code=ccio_getSNAKES_EEPROM_BASE_ADDR"sref">KERN_INFSNAKES_EEPROM_BASE_ADDR href="drivers/parisc/eisa.c#L305" id2"L256" cla3s="line" naml2"L256">
253>
a> 35              a href=f
253>
a> 35              a href=ef======"+code=eisa_irq_lockss="sref">eisa_dev>
a>. a href="+code=hba" claeeprom_adda"sref">eisa_dev>eprom_adda hreef="+code=ccio_getMIRAGE_EEPROM_BASE_ADDR"sref">KERN_INFMIRAGE_EEPROM_BASE_ADDR href="drivers/parisc/eisa.c#L305" id2"L308" class="line" naml2"L258">
253>
a> 3       a href= a href=f="drivers/parisc/eisa.c#L305" id2"L249" cla3s="line" naml2"L259">
253 /a>n359     a href=f="drivers/parisc/eisa.c#L239" id23L260" cla3s="line" naml2"L260">
263>
a> 3       a href="+code=eisa_out8" cleeprom_adda"sref">eisa_dev>" cleeprom_adda hreef="+code=ccio_getioremap_nocach="sref">lmmio_sp>
remap_nocach=href="+code=dev" cla_lockss="sref">eisa_dev>
a>. a href="+code=hba" claeeprom_adda"sref">eisa_dev>eprom_adda href="+code=eisa_irqHPEE_MAX_LENGTH"sref">eisa_devHPEE_MAX_LENGTHn
263>
a> 3       a href="+code=eisa_outclass="sref">result>
a>;neisa_dev>" clenumeratoahref="+code=dev" cla_lockss="sref">eisa_dev>
a>. a href="+code=hba" claeeprom_adda"sref">eisa_dev>eprom_adda href=href="+code=eisa_irq_lockss="sref">eisa_dev>
a>. a href="+code=hba" class="sref">hba>
a>. a href="+code=lmmio_splaclass="sref">lmmio_sp>
a>. a hreff="drivers/parisc/eisa.c#L252" id23L262" cla3s="line" naml2"L262">
263>
a> 36              a href=========href="+code=eisa_irq_lockss="sref">eisa_dev>
a>. a href="+code=hba" class="sref">hba>
a>. a href="+code=lmmio_space" class="sref">lmmio_space>
a>. a hrefef="drivers/parisc/eisa.c#L313" id2"L263" cla3s="line" naml2"L263">
263>
a> 36      a href="+code=eisa_outa_pic" class="sref">init_eisa_pic>
a>(void)n
263>
a> 3      ="drivers/parisc/eisa.c#L313" id2"Ls="line" s="line" naml2"L265">
263>
a> 36     } else {ref="+code=irq" claclass="sref">result>
a>;n
263>
a> 36              a href="ss="comment">/* slave piFIXME : Dono edgt enumerate the bus twice. on
263>
a> 36              a href="+code=eisa_out8" clss="sref">eisa_dev>
a>. a href="+code=hba" claroo="sref">result>
aoo=href="+code=hba" class="sref">dev>
a> =  a href=href="+code=eisa_irqss="sref">dev>
a>);ndev>
a>;n
263>
a> 36      a href= a href="+code=irq" class=>ig >drvdat="sref">hba>
a>.ss=>ig >drvdat=p; a href="+code=eisa_irqss="sref">dev>
a>);ndev>
a>;neisa_dev>
a>. a href="+code=hba" claroo="sref">result>
aoo=hrefef="drivers/parisc/eisa.c#L313" id2"L249" cla3s="line" naml2"L269">
2630,0x236ic EOI' to master */ /spaioneisa_dev>
a>. a href="+code=hba" claroo="sref">result>
aoo=href="+code=hba" clbus_base_adda"sref">eisa_devbus_base_addaa href=0f="drivers/parisc/eisa.c#L313" id2"L270" cla3s="line" naml2"L270">
273>
a> 37             neisa_dev>
a>. a href="+code=hba" claroo="sref">result>
aoo=href="+code=hba" cla>;"sref">result>
a>;a href=href="+code=eisa_irq_lockss="sref">eisa_dev>
a>. a href="+code=hba" class="sref">hba>
a>. a href="+code=lmmio_splaclass="sref">lmmio_sp>
a>. a hreff="drivers/parisc/eisa.c#L313" id2"L261" cla3s="line" naml2"L271">
273>
a> 37     } else {{{{{{{{{"+code=eisa_irq_lockss="sref">eisa_dev>
a>. a href="+code=hba" claaroo="sref">result>
aoo=href="+code=hba" clslot;"sref">result>
slot; hreef="+code=ccio_getirass="sref">result>
a>;n
273>
a> 37              a href="+code=eisa_out8" clss="sref">eisa_dev>
a>. a href="+code=hba" claroo="sref">result>
aoo=href="+code=hba" clasmalass="sref">master_msmalass=a href=01)ffe)ffef="ss="comment">/* slave piwild gu>;s on
273>
a> 37              a href=ref="+code=irq" cla>
a>.aoo=mirgik>
a"sref">eisa_dev>
a>.aoo=mirgik>
a      href="+code=eisa_irq_lockss="sref">eisa_dev>
a>. a href="+code=hba" claroo="sref">result>
aoo=hreferef="drivers/parisc/eisa.c#L233" id23L274" cla3s="line" naml2"L274">
273>
a> 37                 a href======"+code=master_mclass="sref">printk>
a>( a href="+code=KERN_INFO" clERR"sref">KERN_INFO>
a>ERRai class="string">"%s E>dev: Faiequetosirgik>
aapter aoo= /spaio);n
273>
a> 375                a href======a href=-1f="drivers/parisc/eisa.c#L246" id23L276" cla3s="line" naml2"L276">
273>
a> 37              a href=f="drivers/parisc/eisa.c#L246" id23L267" cla3s="line" naml2"L277">
273>
a> 3       a href=f="drivers/parisc/eisa.c#L246" id23L268" cla3s="line" naml2"L278">
273>
a> 3      n
273>
a> 3       a href=a href=0f="drivers/parisc/eisa.c#L313" id2"L280" cla3s="line" naml2"L280">
283>
a> 3      f="drivers/parisc/eisa.c#L246" id23L281" cla3s="line" naml2"L281">
283>
a> 38 href="drivers/parisc/eisa.c#L302" id2"L282" cla3s="line" naml2"L282">
283>
a> 38tic int  a hconst a href="+code=irqacoptevice>
a> * a_s="sref">id>
a>. evice>
a> * a_s=ai cla+code=eisa_irq_locktb="sref">eisa_irq_levetb= hre[]href="drivers/parisc/eisa.c#L250" id23L283" cla3s="line" naml2"L283">
283>
a> 3      neisa_devHPHW_BA href="+code=eisa_irqHVERSION_REV_ANY_I="sref">IRQ_HANDHVERSION_REV_ANY_I= href="+code=eisa_irqHVERSION_ANY_I="sref">IRQ_HANDHVERSION_ANY_I= href=n/* slave pi" / on
283>
a> 3       spai cl{="+code=eisa_irqHPHW_BA"sref">eisa_devHPHW_BA href="+code=eisa_irqHVERSION_REV_ANY_I="sref">IRQ_HANDHVERSION_REV_ANY_I= href="+code=eisa_irqHVERSION_ANY_I="sref">IRQ_HANDHVERSION_ANY_I= href=n/* slave piWaxapter on
283>
a> 3       a href={ 0,=f="drivers/parisc/eisa.c#L246" id23L286" cla3s="line" naml2"L286">
283>
a> 3      ef="drivers/parisc/eisa.c#L253" id23L287" cla3s="line" naml2"L287">
283>
a> 38 href="drivers/parisc/eisa.c#L308" id2"L288" cla3s="line" naml2"L288">
283>
a> 3      "+code=ccio_getMODULE_DEVICE_TABLE"sref">KERN_INFMODULE_DEVICE_TABLEhref="+code=KERN_INFisa.c#"sref">id>
a>. evice> href="+code=eisa_irq_locktb="sref">eisa_irq_levetb= hreef="drivers/parisc/eisa.c#L246" id23L289" cla3s="line" naml2"L289">
283>
a> 38 href="drivers/parisc/eisa.c#L300" id2"L290" cla3s="line" naml2"L290">
293>
a> 3      truct  a href="+code=irqacoptevice>
aarisc"sref">id>
a>. evice>
aariscai cla+code=eisa_irq_lockaarisc"sref">id>
a>. _lockaarisca href=f="drivers/parisc/eisa.c#L250" id23L291" cla3s="line" naml2"L291">
293>
a> 3       a href=="+code=naml" class="sref">naml>
a> =  spai clef======"ss="string">"eisa: uhh, i_baspaio,n
293>
a> 3       a href=="+code=lmmio_spld_tabl="sref">lmmio_sp>d_tabl=spai clef=="+code=eisa_irq_locktb="sref">eisa_irq_levetb= href="drivers/parisc/eisa.c#L252" id23L283" cla3s="line" naml2"L293">
293>
a> 3       a href=="+code=lmmio_splass="sref">eisa_pro>(struct  clef====="+code=eisa_irq_locklass="sref">eisa_probe>
a>(struct f="drivers/parisc/eisa.c#L252" id23L284" cla3s="line" naml2"L294">
293>
a> 3      ef="drivers/parisc/eisa.c#L253" id23L295" cla3s="line" naml2"L295">
293>
a> 39 href="drivers/parisc/eisa.c#L306" id2"L296" cla3s="line" naml2"L296">
293>
a>}3__init>
a>  a href="+code=eisa_probe" cass="sref">__init>
be" cass=href= href="drivers/parisc/eisa.c#L255" id23L297" cla3s="line" naml2"L297">
293 /a>n3a hreff="drivers/parisc/eisa.c#L250" id23L288" cla3s="line" naml2"L298">
293 /a> 39      a href="+code=printk" clgik>
a>evice>
aarisc"sref">id>
a>. clgik>
a>evice>
aariscp; a href="+code=eisa_irq_lockaarisc"sref">id>
a>. _lockaarisca href="drivers/parisc/eisa.c#L246" id23L299" cla3s="line" naml2"L299">
293 /a>n3a hreff="drivers/parisc/eisa.c#L246" id24L300" cla4s="line" naml2"L300">
304>
a>#40 href="drivers/parisc/eisa.c#L311" id24L301" cla4s="line" naml2"L301">
304 /a>n4a href="drivers/parisc/eisa.c#L302" id24L302" cla4s="line" naml2"L302">
304 /a>s4atic int  a h long) a ref="+code=i" class>
a>.nid>
a>. e
a>.n
304>
a>{4eisa_irq_levemakeel" class=p; a ref="+code=i" classnum"sref">naml>
a> uma hre="drivers/parisc/eisa.c#L305" id24L403" cla4s="line" naml2"L294">
294>
a> 40a href="drivers/parisc/eisa.c#L245" id24L305" cla4s="line" naml2"L305">
304 /a>n40     } else {ref="+code=irq" cla>
a>.nid>
a>. e
a>.nnaml>
a> uma hreref="drivers/parisc/eisa.c#L233" id24L306" cla4s="line" naml2"L306">
304>
a> 40              a href="+code=master_mclass="sref">printk>
a>( a href="+code=KERN_INFO" clWARNIN="sref">EISA_DBGO" clWARNIN=href="drivers/parisc/eisa.c#L302" id24L706" cla4s="line" naml2"L297">
294 /a>n40              a href=ef====="ss="string">"eisa: uhIRQx\n&qud polsa.ty configure= twice (rintetoslass=) /spaio, n
304>
a> 40      a href= a href=a href="+code=master_mnum"sref">naml>
a> uma href="drivers/parisc/eisa.c#L305" id24L908" cla4s="line" naml2"L299">
294>
a> 409     a href=f="drivers/parisc/eisa.c#L239" id24L310" cla4s="line" naml2"L310">
314 /a>n41      a href="+code=eisa_out8" cll" class="sref">eisa_irq_level>
a> >>|=x(1 ( a hre"+code=i" classnum"sref">naml>
a> uma href="ss="comment">/* slave piset the correspond */ bpaion
314>
a> 4       a href="+code=eisa_dev" clanid>
a>. e
a>.nnaml>
a> uma href="ss="comment">/* slave piset the correspond */ bpaion
314>
a> 4      f="drivers/parisc/eisa.c#L239" id24L303" cla4s="line" naml2"L313">
314 /a>n4a href="drivers/parisc/eisa.c#L314" id24L314" cla4s="line" naml2"L314">
314>
a> 4      href="+code=init_eise
a>.makeel" cel &"sref">eisa_irq_levemakeel" cel &p; a ref="+code=i" classnum"sref">naml>
a> uma hre="drivers/parisc/eisa.c#L305" id24ss="line"4naml2"L206">4ss="line" n4ml26241a href="drivers/parisc/eisa.c#L256" id24L306" cla4s="line" naml2"L216">
214>
a> 41      a href=ref="+code=irq" cla>
a>.nid>
a>. e
a>.nnaml>
a> uma hreref="drivers/parisc/eisa.c#L233" id24L307" cla4s="line" naml2"L217">
214>
a> 41              a href="+code=eisa_outclass="sref">printk>
a>( a href="+code=KERN_INFO" clWARNIN="sref">EISA_DBGO" clWARNIN=hreff="drivers/parisc/eisa.c#L309" id24L308" cla4s="line" naml2"L218">
214>
a> 41      a href= a href=a href="ss="string">"eisa: uhIRQx\n&qud polsa.ty configure= twice (rintetosel &) /spaio, n
214>
a> 41ic EOI' to mastera href="+code=master_mnum"sref">naml>
a> uma href="drivers/parisc/eisa.c#L305" id24L220" cla4s="line" naml2"L220">
224>
a> 4              f="drivers/parisc/eisa.c#L239" id24L221" cla4s="line" naml2"L221">
224>
a> 42      a href="+code=eisa_dev" claneisa_irq_level>
a> >> f, 0= ~(1 ( a hre"+code=i" classnum"sref">naml>
a> uma href="ss="comment">/* slave piclear the correspond */ bpaion
224>
a> 42      a href="+code=eisa_dev" clanid>
a>. e
a>.nnaml>
a> uma href="ss="comment">/* slave piset the correspond */ bpaion
224>
a> 42     f="drivers/parisc/eisa.c#L239" id24L314" cla4s="line" naml2"L224">
224>
a> 42     ="drivers/parisc/eisa.c#L313" id24Ls="line"4s="line" naml2"L225">
224>
a> 42     nt  a href="+code=__init" class="sref">__init>
a>  a href="+code=eisa_probe" c>
a>ig up"sref">id>
a>. e
a>.nresult>
stra hre="drivers/parisc/eisa.c#L305" id24L226" cla4s="line" naml2"L226">
224>
a> 4      f="drivers/parisc/eisa.c#L233" id24L307" cla4s="line" naml2"L227">
224 /a>n42      a href= href="+code=naml" clcuu"sref">result>
cuu hreef="+code=ccio_get&qu"sref">result>
stra hrf="drivers/parisc/eisa.c#L305" id24L308" cla4s="line" naml2"L228">
224>
a> 4       a href=ref="+code=__init" va="sref">eisa_irqva=a hrf="drivers/parisc/eisa.c#L305" id24L908" cla4s="line" naml2"L229">
224>
a> 42 href="drivers/parisc/eisa.c#L300" id24L230" cla4s="line" naml2"L230">
234>
a> 43      a href="+code=EISA_DBG" class="sref">EISA_DBG>
a>( spai class="string">"pic0 masIRQxig up /spaio);n
234>
a> 4       spai clwhilef="+code=irq" clacuu"sref">result>
cuu hree!f="+code=ccio_getNULL"sref">result>
NULLa hreef="drivers/parisc/eisa.c#L233" id24L232" cla4s="line" naml2"L232">
234>
a> 43              a href= href="+code=naml" cls="sref">eisa_intp hreff="drivers/parisc/eisa.c#L313" id24L223" cla4s="line" naml2"L233">
234>
a> 43              a href=="drivers/parisc/eisa.c#L313" id24L314" cla4s="line" naml2"L234">
234>
a> 43                 a hr"+code=__init" va="sref">eisa_irqva=a href= ref)="+code=ccio_get&impcla&qutou="sref">eisa_irq&impcla&qutou=href="+code=KERN_INFcuu"sref">result>
cuu href=href="+code=eisa_irqs="sref">eisa_intp href, 0ef="drivers/parisc/eisa.c#L313" id24Ls="line"4s="line" naml2"L235">
234>
a> 435                a hrref="+code=irq" clava="sref">eisa_irqva=a hre&15 ||r"+code=__init" va="sref">eisa_irqva=a hre href0ref="drivers/parisc/eisa.c#L233" id24L236" cla4s="line" naml2"L236">
234>
a> 4               a href=    a hr"+code=__init" class="sref">printk>
a>( a href="+code=KERN_INFO" clERR"sref">KERN_INFO>
a>ERRai class="string">"%s E233":apter ss= va=ue are 0-15 /spaio);n
234>
a> 4               a href= a href= ontinuef="drivers/parisc/eisa.c#L246" id24L308" cla4s="line" naml2"L238">
234>
a> 43      a href= a href=f="drivers/parisc/eisa.c#L305" id24L239" cla4s="line" naml2"L239">
234>
a> 43ic EOI' to masterref="+code=irq" clava="sref">eisa_irqva=a hre== 2ref=="drivers/parisc/eisa.c#L313" id24L240" cla4s="line" naml2"L240">
244>
a> 44             neisa_irqva=a href=9f="drivers/parisc/eisa.c#L246" id24L241" cla4s="line" naml2"L241">
244>
a>}44     } else {{{{{{{{{f="drivers/parisc/eisa.c#L305" id24L242" cla4s="line" naml2"L242">
244 /a>n44              a href="+code=eisa_out8" clmakeel" cel &"sref">eisa_irq_levemakeel" cel &p; a "+code=__init" va="sref">eisa_irqva=a href="ss="comment">/* slave piclear the correspond */ bpaion
244>
a>s44              a href="+code=slave_ma" class="sref">EISA_DBG>
a>( spai class="string">"pic0 masig t */ IRQx\n&qud tosel &-quoggere= me_m /spaio,  a href="+code=eisa_in8va="sref">eisa_irqva=a href="drivers/parisc/eisa.c#L262" id24L314" cla4s="line" naml2"L244">
244 /a>{44                 a hr="drivers/parisc/eisa.c#L262" id24Ls="line"4s="line" naml2"L245">
244>
a> 445                a hrref=="+code=irq" clacuu"sref">result>
cuu hreef="+code=ccio_get&quchu"sref">result>
strchuhref="+code=KERN_INFcuu"sref">result>
cuu href=ass="string">"pic edg,c edg;n
244>
a> 44              a href=    a hr"+code=__init" cuu"sref">result>
cuu hre++f="drivers/parisc/eisa.c#L262" id24L307" cla4s="line" naml2"L247">
244>
a>}44              a href=f
244 /a>n44      a href= a href=a href= breakf="drivers/parisc/eisa.c#L262" id24L239" cla4s="line" naml2"L249">
244>
a>s44ic EOI' to masterf="drivers/parisc/eisa.c#L305" id24L250" cla4s="line" naml2"L250">
254>
a> 45             f="drivers/parisc/eisa.c#L239" id24L251" cla4s="line" naml2"L251">
254>
a> 45     } else {a href=1f="drivers/parisc/eisa.c#L246" id24L252" cla4s="line" naml2"L252">
254>
a>}45     f="drivers/parisc/eisa.c#L239" id24L253" cla4s="line" naml2"L253">
254 /a>n45 href="drivers/parisc/eisa.c#L314" id24L244" cla4s="line" naml2"L254">
254 /a>s45     "+code=__init" clig up"sref">id>
a>. __ig uphref="ss="string">"eisa: uhh, i_l" cel &=spaio,  a href="+code=eisa_irq_level" cig up"sref">id>
a>. e
a>.n
254>
a>{45 href="drivers/parisc/eisa.c#L306" id24L256" cla4s="line" naml2"L256">
254>
a> 45     
a"> The ouoginal LXR software by the "drivers/http://sours=forge.net/projects/lxa">LXR >/* unity href=this experi slaal isc/spaiby "drivers/mailto:lxa@ml2ux.no">lxa@ml2ux.no hre.
a"> lxa.ml2ux.no kindly hoste= by "drivers/http://www.re=pill-ml2pro.no">Re=pill Ll2pro AS href=provider of Ll2uxhconsult */ q> operatspas services since 1995.