--- a/drivers/alsa/alsa_driver.c 2009-05-06 06:36:08.000000000 +1000 +++ b/drivers/alsa/alsa_driver.c 2010-07-28 21:02:57.238101024 +1000 @@ -2388,7 +2388,7 @@ strcpy (params[i].name, "period"); params[i].character = 'p'; params[i].type = JackDriverParamUInt; - params[i].value.ui = 1024U; + params[i].value.ui = 256U; /* TWL4030 capture. */ strcpy (params[i].short_desc, "Frames per period"); strcpy (params[i].long_desc, params[i].short_desc); @@ -2396,7 +2396,7 @@ strcpy (params[i].name, "nperiods"); params[i].character = 'n'; params[i].type = JackDriverParamUInt; - params[i].value.ui = 2U; + params[i].value.ui = 4U; /* TWL4030 capture. */ strcpy (params[i].short_desc, "Number of periods of playback latency"); strcpy (params[i].long_desc, params[i].short_desc); @@ -2518,8 +2518,8 @@ driver_initialize (jack_client_t *client, const JSList * params) { jack_nframes_t srate = 48000; - jack_nframes_t frames_per_interrupt = 1024; - unsigned long user_nperiods = 2; + jack_nframes_t frames_per_interrupt = 256; /* TWL4030 needs small number of frames here. */ + unsigned long user_nperiods = 4; /* TWL4030 needs 4 periods to avoid XRuns. */ char *playback_pcm_name = "hw:0"; char *capture_pcm_name = "hw:0"; int hw_monitoring = FALSE;