Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: PCI interrupt line routing



Josh,

Thank you for your reply. I now have interrupts working and
audio output happening.

I was tempted before to write that register with zero, but
was hesitant to try it since I thought that there was a
chance the kernel managed those things and I could step
on some toes. After your message, I proceeded boldly ahead
and all is well. Thanks again.

-- Emmett


On Mon, Aug 12, 2002 at 09:27:35PM -0700, Josh de Cesare wrote:
> Emmett,
> Mac OS X / Darwin OS do not do anything with config register
> 0x3c. On all Apple hardware each PCI slot's interrupts INTA, INTB,
> INTC & INTD are logically OR'd together. This combined signal is
> then routed directly to the interrupt controller. Interrupts are not
> shared between slots. I belive, the 0x3c config register tells the
> pci device which interrupt A-D should be asserted. Zero should be
> the default. Your audio hardware is probably defaulting to a
> different value. Your should be able to do a config write to set it
> back to zero. BTW, your code below looks fine.
> Josh
>
>
> At 6:58 PM -0500 8/12/02, Emmett James wrote:
> >I am writing an audio driver for a PCI card. I am not getting any
> >interrupts from the card.
> >
> >I can talk to all the registers on the card just fine, and I am sure
> >that the card itself is configured to generate interrupts. The DMA
> >engines are running, as I can see the DMA count registers changing.
> >
....
> >
> >After some experimentation, I have observed what I believe is the
> >reason why I do not get any interrupts. One of the PCI configuration
> >registers, at address 0x3C, is Interrupt Pin and Line. Bits 0-7
> >of this register indicate interrupt line routing. The docs I have
> >indicate that a value of 0xFF indicates that the card has no
> >connection to the Interrupt Controller. I printed the contents of
> >this register at three points in my driver initialization: when
> >the driver first loads, after adding the interrupt event source to
> >the workloop, and after calling enable() on the interrupt event
> >source. In all three cases the value of this register is 0xFF.
> >
> >I have another driver for a (totally) different PCI audio card,
> >which works fine, and I did the same experiment with that driver,
> >and the value of this register is 0x00, at the same points
> >during driver initialization.
> >
> >I assume that this 0xFF value indicates my card's IRQ line is not
> >routed to one of the inputs of the interrupt controller, and this
> >naturally would explain why I do not get interrupts from my card.
> >But I have no idea why my card would not be connected to the
> >interrupt controller. I assume the darwin kernel, at some point
> >during bootup, or perhaps when my driver is loaded, is supposed to
> >connect my card's IRQ line to the interrupt controller. What would
> >cause this to not happen?
_______________________________________________
darwin-drivers mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/darwin-drivers
Do not post admin requests to the list. They will be ignored.

References: 
 >PCI interrupt line routing (From: Emmett James <email@hidden>)
 >Re: PCI interrupt line routing (From: Josh de Cesare <email@hidden>)



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.