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