anchor.diff:                    (wait-for-buffer-interrupt hda))
               (with-hda-access (hda)
                 (stream-reset hda (first-output-stream hda))
  -              (mezzano.supervisor:simple-irq-mask (hda-interrupt-handler hda))))))
  +              (mezzano.supervisor:simple-irq-mask (hda-irq hda))))))
       (device-disconnect ()
         (format t "HDA ~S disconnected.~%" hda)
         (throw 'mezzano.supervisor:terminate-thread nil))))
  +
  +(defmethod mezzano.driver.sound:sound-card-presence-event ((hda hda))
  +  (pci:pci-device-boot-id (hda-pci-device hda)))
  +
  +(pci:define-pci-driver intel-hda intel-hda-probe
  +  ((#x8086 #x2668) ; ICH6 HDA
  +   (#x8086 #x27D8)) ; ICH7 HDA
  +  ())
  
positive.code:             (dotimes (i buf-len)
                (setf (mezzano.supervisor::physical-memref-unsigned-byte-8 buffer i) 0))
              ;; Unmask the interrupt, flush any pending IRQs.
              (mezzano.supervisor:latch-reset (hda-interrupt-latch hda))
              (clear-pending-interrupt hda output-stream)
              (mezzano.supervisor:simple-irq-unmask (hda-interrupt-handler hda)))
            ;; Begin playback.
            (multiple-value-bind (converter mixer)
                (output-path output-pin)
  
negative.code:       (setf (hda-dma-buffer-size hda) buf-size
              (hda-dma-buffer-phys hda) buf-phys
              (hda-dma-buffer-virt hda) buf-virt))
      (mezzano.supervisor:simple-irq-attach (hda-irq hda))
      (initialize-corb hda)
      (initialize-rirb hda)
      (let ((dmap-address (logior (+ (hda-corb/rirb/dmap-physical hda) +dmap-offset+)
  