[LinuxBIOS] Geode GX1/5530: How to forward SMI to a regular IRQ
juergen127 at kreuzholzen.de
Tue Aug 8 20:05:42 CEST 2006
On Tuesday 08 August 2006 19:03, ollie wrote:
> On Tue, 2006-08-08 at 08:47 +0200, Juergen Beisert wrote:
> > Hi Ronald,
> > On Monday 07 August 2006 22:48, Ronald G Minnich wrote:
> > > > On Monday 07 August 2006 11:19, myself wrote:
> > > >>I try to write a native sound driver for the Geode GX1/5530a
> > > >> Companion chip. Problem here: The sound chip only generates SMI.
> > > >> Does anyone knows a trick or a chipset switch that let me forward
> > > >> this SMI to a regular IRQ? Its too ugly to use a polling loop....
> > > >> ;-)
> > > >
> > > > Sorry. I think I must explain: I'm using linuxbios on this Geode
> > > > system, so there is no SMM emulation of the sound hardware. Thats why
> > > > I'm searching for a solution to forward the SMI to a regular IRQ. Has
> > > > someone experience in programming this SMM code? Maybe a short
> > > > routine that only triggers a regular interrupt when an SMI occures
> > > > would help.
> > >
> > > Is there some reason to continue to use SMI? why not just drive the
> > > hardware directly w/o smi?
> > Yes, there is: The audio hardware part of the chip can only generate SMI.
> > I didn't find any chipset settings to let it generate a regular IRQ
> > instead. There is only one register to let the SMM software trigger a
> > regular IRQ.
> Under what circumstances do you want the audio device generate SMI? If
> you just want to translate SMI to IRQ for DMA completion like other
> sound devices do, it should not be difficult to write a small SMM code
> to do that.
ALSA wants to be informed when a buffer is transmitted to the sound device
(and the next begins). Thats on reason. CS5530's master DMA generates an SMI
whenever it jumps to the next buffer to transmitt.
The other reason is, if I do not read back the SMI status registers until a
second jump to another block happens the sound hardware stops with a bus
So my answer to your question is: Yes, only to translate the SMI to a DMA
There are some registers in this audio hardware to trigger a regular interrupt
in software from inside an SMI routine. Maybe this could be a starting point.
More information about the coreboot