--- dahdi_dynamic.c.orig 2008-12-04 10:32:31.000000000 +0000 +++ dahdi_dynamic.c 2008-12-04 10:15:26.000000000 +0000 @@ -139,6 +139,7 @@ while(z) { if (z->timing) { z->master = 0; + z->span.syncsrc = 0; if (!(z->span.alarms & DAHDI_ALARM_RED) && (z->timing < best) && !z->dead) { /* If not in alarm and they're @@ -152,8 +153,11 @@ } hasmaster = newhasmaster; /* Mark the new master if there is one */ - if (master) + if (master) { master->master = 1; + master->span.syncsrc = master->span.spanno; + dahdi_alarm_notify(&(master->span)); // Call dahdi_alarm_notify so DAHDI looks at it's clock config + } spin_unlock_irqrestore(&dlock, flags); if (master) printk(KERN_INFO "TDMoX: New master: %s\n", master->span.name); @@ -432,7 +436,7 @@ /* Free z */ kfree(z); - + dahdi_alarm_notify(NULL); // Call dahdi_alarm_notify so that DAHDI checks it's clocking config checkmaster(); } @@ -611,6 +615,7 @@ z->span.open = ztd_open; z->span.close = ztd_close; z->span.chanconfig = ztd_chanconfig; + z->span.syncprio = zds->timing; for (x=0; x < z->span.channels; x++) { sprintf(z->chans[x]->name, "DYN/%s/%s/%d", zds->driver, zds->addr, x+1); z->chans[x]->sigcap = DAHDI_SIG_EM | DAHDI_SIG_CLEAR | DAHDI_SIG_FXSLS | @@ -673,6 +678,7 @@ dspans = z; spin_unlock_irqrestore(&dlock, flags); + dahdi_alarm_notify(&z->span); checkmaster(); /* All done */