Zakhar Levchenko kirjoitti:
> Hi,
>
> I've attached a patch that implements sync_control for envy24ht devices.
I would recommend you do it in slightly different way:

Add a syncstart_mask field to devc.

During SYNC_PREPARE:

    devc->syncstart_mask |= portc->mask; /* Add this sub-device to the 
mask */

During SYNC_TRIGER:

  if (devc->syncstart_mask != 0)
  {
       enable=INB();
       intrmask = INB();

       enable |= devc->syncstart_mask;
       intrmask &= ~devc->syncstart_mask;

       OUTB(enable);
       OUTB(intrmask);

       devc->syncstart_mask = 0;   /* MArk all devices as started.
  }

The above is the way how the sync start feature was originally designed 
to work. During the PREPARE step(s) the driver should construct a 
register value to be written later to some "global" start register. 
During the first TRIGGER call write this value to the start register. 
Ignore all subsequent TRIGER calls (until PREPARE has been called again).

This approach didn't work with envy24 (because of the additional 
buffering) but it works with envy24ht.

Best regards,

Hannu
_______________________________________________
oss-devel mailing list
oss-devel@mailman.opensound.com
http://mailman.opensound.com/mailman/listinfo/oss-devel

Reply via email to