Changeset 320 for GPL


Ignore:
Timestamp:
Mar 25, 2008, 1:46:01 AM (17 years ago)
Author:
Paul Smedley
Message:

Fix for no sound on some HDA machines

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

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;
Note: See TracChangeset for help on using the changeset viewer.