Re: GIISR_INFO Struct

Tech-Archive recommends: Speed Up your PC by fixing your registry



Hi,

not sure I understand what to do when I want my int thread to be called
when my device has multiple isr registers. right now I have it setup
as tho it is the only isr in the chain, (always call my thread) but
ultimately that wont work unless there is some way I can guarantee that I
am the last in the chain ? I see I can either register a second
GIISR_INFO struct with different Addr and MAsk but ultimately both
registrations will call the same thread, perhaps this does not matter,
now for the third method where I can clone the GIISR routine and make my
own routine, how does this work for the "other" devices in the same
interrupt chain ? they will not call my new routine so how is this handled
?


Thanks,

Joe W.



"Andrew at Plextek (www.plextek.co.uk)" <ams@xxxxxxxxxxx> wrote in message
news:cd846da8-58c1-4eb2-a3ff-c46c756ccecc@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Hi Joe,

You can see the source for GIISR in the public tree at PUBLIC\COMMON
\OAK\DRIVERS\GIISR. It should clear up a lot of your questions.

Basically, if CheckPort is FALSE then SYSINTR_XXX is always returned
when the interrupt occurs (This means you can only use this on an
unchained interrupt or one on the end of an interrupt chain.)

If CheckPort is TRUE then the ISR reads from the specified port
(usually set to the Int Pending register).

Now, if UseMaskReg is FALSE, the port value is masked with the Mask
value and SYSINTR_XXX is returned if the result is non-zero. If
UseMaskReg is TRUE then the ISR reads the register pointed to by
MaskAddr (usually the Int Enable Register) to get the mask value.
Again, if this mask value ANDed with the port value is non-zero then
SYSINTR_XXX is returned.

In all other cases SYSINTR_CHAIN is returned.

Note that if PortAddr and MaskAddr are memory mapped, then they must
be addressable from Kernel space, ie. a statically mapped virtual
address. Use one of the functions TransBusAddrToStatic(),
BusTransBusAddrToStatic() or CreateStaticMapping() to accomplish this
before calling KernelLibIoControl(IOCTL_GIISR_PORTVALUE).

Regards,
Andrew.

On Mar 4, 9:39 pm, "Joe Welfeld" <jwelfeldnos...@xxxxxxxxxxxxx> wrote:
Hi,

I need some help understanding this structure settings

here is what I think:

set Checkport true if you want isr routine to read interrupt register
from device pointed to by setting PortAddr to interrupt register.

set UseMaskReg True and set MaskAddr to point to the Interrupt register
MASK address register. then the ISR will AND PortAddr and MaskAddr
and if a bit is set it will call isr handler otherwise it will test next
registered chain...

so when/how do I use Mask field (is this in place of MaskAddr, where
if I dont set UseMaksReg it will and Mask field and PortAddr data)?

also what if my device has more then one Interrupt register how can I
check 2 registers ?

Thanks,

Joe W.


.



Relevant Pages

  • Re: GIISR_INFO Struct
    ... Just want to clarify a bit, This particular device has 2 Interrupt ... I think perhaps you are confusing what you have to do in an ISR and an ... register pending/enable mask pair which is what GIISR is set up for. ...
    (microsoft.public.windowsce.platbuilder)
  • Re: GIISR_INFO Struct
    ... if CheckPort is FALSE then SYSINTR_XXX is always returned ... Now, if UseMaskReg is FALSE, the port value is masked with the Mask ... UseMaskReg is TRUE then the ISR reads the register pointed to by ... from device  pointed to by setting PortAddr  to interrupt register. ...
    (microsoft.public.windowsce.platbuilder)
  • Re: caches, peripheral registers, etc.
    ... Only at the end do we find out that you are using some sort of XScale core. ... I am seeing 400nsec between clearing a GPIO pin and setting ... that triggers my ISR until the ISR actually runs & can clear a GPIO ... physical addresses if I muck around with coprocessor 15's PID register ...
    (comp.sys.arm)
  • Re: GIISR_INFO Struct
    ... I think perhaps you are confusing what you have to do in an ISR and an ... all of the interrupt servicing should be in the IST. ... register pending/enable mask pair which is what GIISR is set up for. ... Now, if UseMaskReg is FALSE, the port value is masked with the Mask ...
    (microsoft.public.windowsce.platbuilder)
  • Re: PCI Driver ISR configuration.
    ... I am using the generic ISR and I send (with the ... KernelLibIoControl) the address of the card interrupt register and the ... > Is your network card has installable ISR? ...
    (microsoft.public.windowsce.platbuilder)