Following the patch to fix the si3054 modem detection in the Clevo m540 laptop I noticed, much to my dismay, that slmodemd refused to work spitting out the infamous error period size 48 not supported by playback (64). This error was also discussed in the ALSA bugtracking system. This problem happens in kernels post-2.6.20, specifically in my 2.6.20 with HDA drivers backported from 2.6.22.
Instead of being a bug in ALSA, it seems to me that slmodem should gracefully handle a new period size returned by snd_pcm_hw_params_set_period_size_near() if it differs from the requested period size. It does not, and stops if the value is not exactly what it wants. Proper study of the problem in slmodem’s side is required, however this quick patch solved the issue for me:
In my case, ALSA returns 64 when slmodem requests a period size of 48, and everything seems to work well as long as the returned size is larger than the requested size.
Update: the slmodemd hack works with the m540, but not with the LG LW20. Both use a si3054 codec.
Another update: it seems that it worked with the HP Pavilion DV6567CL.