Changeset 320

Show
Ignore:
Timestamp:
03/25/08 01:46:01 (8 months ago)
Author:
psmedley
Message:

Fix for no sound on some HDA machines

Location:
GPL/branches/uniaud-2.0
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • GPL/branches/uniaud-2.0/alsa-kernel/core/pcm_lib.c

    r305 r320  
    13411341int snd_interval_refine_set(struct snd_interval *i, unsigned int val) 
    13421342{ 
    1343     struct snd_interval t; 
    1344     t.empty = 0; 
    1345     t.min = t.max = val; 
    1346     t.openmin = t.openmax = 0; 
    1347     t.integer = 1; 
    1348     return snd_interval_refine(i, &t); 
     1343        struct snd_interval t; 
     1344        t.empty = 0; 
     1345        t.min = t.max = val; 
     1346        t.openmin = t.openmax = 0; 
     1347        t.integer = 1; 
     1348        return snd_interval_refine(i, &t); 
    13491349} 
    13501350 
    13511351int _snd_pcm_hw_param_set(struct snd_pcm_hw_params *params, 
    1352                           snd_pcm_hw_param_t var, unsigned int val, int dir) 
    1353 { 
    1354     int changed; 
    1355     if (hw_is_mask(var)) { 
    1356         struct snd_mask *m = hw_param_mask(params, var); 
    1357         if (val == 0 && dir < 0) { 
    1358             changed = -EINVAL; 
    1359             snd_mask_none(m); 
    1360         } else { 
    1361             if (dir > 0) 
    1362                 val++; 
    1363             else if (dir < 0) 
    1364                 val--; 
    1365             changed = snd_mask_refine_set(hw_param_mask(params, var), val); 
    1366         } 
    1367     } else if (hw_is_interval(var)) { 
    1368         struct snd_interval *i = hw_param_interval(params, var); 
    1369         if (val == 0 && dir < 0) { 
    1370             changed = -EINVAL; 
    1371             snd_interval_none(i); 
    1372         } else if (dir == 0) 
    1373             changed = snd_interval_refine_set(i, val); 
    1374         else { 
    1375             struct snd_interval t; 
    1376             t.openmin = 1; 
    1377             t.openmax = 1; 
    1378             t.empty = 0; 
    1379             t.integer = 0; 
    1380             if (dir < 0) { 
    1381                 t.min = val - 1; 
    1382                 t.max = val; 
    1383             } else { 
    1384                 t.min = val; 
    1385                 t.max = val+1; 
    1386             } 
    1387             changed = snd_interval_refine(i, &t); 
    1388         } 
    1389     } else { 
    1390         assert(0); 
    1391         return -EINVAL; 
    1392     } 
    1393     if (changed) { 
    1394         params->cmask |= 1 << var; 
    1395         params->rmask |= 1 << var; 
    1396     } 
    1397     return changed; 
    1398 } 
     1352                                 snd_pcm_hw_param_t var, unsigned int val, 
     1353                                 int dir) 
     1354{ 
     1355        int changed; 
     1356        if (hw_is_mask(var)) { 
     1357                struct snd_mask *m = hw_param_mask(params, var); 
     1358                if (val == 0 && dir < 0) { 
     1359                        changed = -EINVAL; 
     1360                        snd_mask_none(m); 
     1361                } else { 
     1362                        if (dir > 0) 
     1363                                val++; 
     1364                        else if (dir < 0) 
     1365                                val--; 
     1366                        changed = snd_mask_refine_set(hw_param_mask(params, var), val); 
     1367                } 
     1368        } else if (hw_is_interval(var)) { 
     1369                struct snd_interval *i = hw_param_interval(params, var); 
     1370                if (val == 0 && dir < 0) { 
     1371                        changed = -EINVAL; 
     1372                        snd_interval_none(i); 
     1373                } else if (dir == 0) 
     1374                        changed = snd_interval_refine_set(i, val); 
     1375                else { 
     1376                        struct snd_interval t; 
     1377                        t.openmin = 1; 
     1378                        t.openmax = 1; 
     1379                        t.empty = 0; 
     1380                        t.integer = 0; 
     1381                        if (dir < 0) { 
     1382                                t.min = val - 1; 
     1383                                t.max = val; 
     1384                        } else { 
     1385                                t.min = val; 
     1386                                t.max = val+1; 
     1387                        } 
     1388                        changed = snd_interval_refine(i, &t); 
     1389                } 
     1390        } else 
     1391                return -EINVAL; 
     1392        if (changed) { 
     1393                params->cmask |= 1 << var; 
     1394                params->rmask |= 1 << var; 
     1395        } 
     1396        return changed; 
     1397} 
     1398 
    13991399#endif 
    14001400/** 
  • GPL/branches/uniaud-2.0/alsa-kernel/include/sound/asound.h

    r307 r320  
    2929#include <linux/time.h> 
    3030#include <asm/byteorder.h> 
    31 #ifdef TARGET_OS2x 
    32 #include <sound/config.h> 
    33 #endif 
    3431#ifdef  __LITTLE_ENDIAN 
    3532#define SNDRV_LITTLE_ENDIAN 
  • GPL/branches/uniaud-2.0/lib32/sound.c

    r307 r320  
    279279        fuOSSRates |= OSS32_CAPS_PCM_RATE_48000; 
    280280    } 
    281 //#if 0 
     281#if 0 
    282282    if(fuRates & SNDRV_PCM_RATE_64000) { 
    283283        fuOSSRates |= OSS32_CAPS_PCM_RATE_64000; 
     
    295295        fuOSSRates |= OSS32_CAPS_PCM_RATE_192000; 
    296296    } 
    297 //#endif 
     297#endif 
    298298    if(fuRates & SNDRV_PCM_RATE_CONTINUOUS) { 
    299299        fuOSSRates |= OSS32_CAPS_PCM_RATE_CONTINUOUS;