Porting custom audio driver from pci to pci express RRS feed

  • Question

  • Hi,

    I am currently porting a roughly four year old driver form PCI to PCI express. The old driver is essentially the SB16 example from the WDK with just a handful of modifications. This is based on PortCls/WaveCyclic. The hardware is output only and really only needs to send data blocks to an I2S master.

    The HW in the new design is much the same except that it supports scatter/gather DMA. When using the old driver on the SW compatible new hardware, the DMA stream constantly runs empty very early. It seems that the interrupts from the HW are not being serviced. A kernel trace suggests that an interrupt is serviced only every 30 - 70 milliseconds, which seems strange. I am still checking whether this is a HW problem. Apparently the original hardware generated an interrupt every 700 microseconds or so (every 32 I2S samples)

    I have a question regarding the interrupts from the hardware and the notification requests as specified over  CMiniportWaveCyclicStreamSB16::SetNotificationFreq. What is the relationship between the 'notifications' and the HW interrupts or is there any? Is my understanding correct, that the notifications come periodically from the PortCls subsystem independently of any HW interrupts?

    Are there issues to be aware of when porting a WaveCyclic based minidriver to PCI exress? Would it be better to just write a new one using WavePci?



    Wednesday, November 21, 2012 12:05 AM