Changeset dda5848 in mainline for uspace/drv/audio/hdaudio/codec.c


Ignore:
Timestamp:
2014-08-26T23:07:47Z (10 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
9034876
Parents:
2f6b916
Message:

Fix buffer overrun errors.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/audio/hdaudio/codec.c

    r2f6b916 rdda5848  
    5656        verb = (codec->address << 28) | (node << 20) | (vid << 8) | payload;
    5757        int rc = hda_cmd(codec->hda, verb, resp);
     58/*
    5859        if (resp != NULL) {
    5960                ddf_msg(LVL_NOTE, "verb 0x%" PRIx32 " -> 0x%" PRIx32, verb,
     
    6263                ddf_msg(LVL_NOTE, "verb 0x%" PRIx32, verb);
    6364        }
     65*/
    6466        return rc;
    6567}
     
    409411
    410412                        } else if (awtype == awt_audio_output) {
    411                                 codec->out_aw = aw;
    412413                                codec->out_aw_list[codec->out_aw_num++] = aw;
     414
     415                                rc = hda_get_supp_rates(codec, aw, &rates);
     416                                if (rc != EOK)
     417                                        goto error;
     418
     419                                rc = hda_get_supp_formats(codec, aw, &formats);
     420                                if (rc != EOK)
     421                                        goto error;
     422
     423                                ddf_msg(LVL_NOTE, "Output widget %d: rates=0x%x formats=0x%x",
     424                                    aw, rates, formats);
    413425                        }
    414426
    415 if (0) {
    416427                        if ((awcaps & BIT_V(uint32_t, awc_out_amp_present)) != 0)
    417428                                hda_set_out_amp_max(codec, aw);
     
    419430                        if ((awcaps & BIT_V(uint32_t, awc_in_amp_present)) != 0)
    420431                                hda_set_in_amp_max(codec, aw);
    421 }
    422432                }
    423433        }
    424434
    425         rc = hda_get_supp_rates(codec, codec->out_aw, &rates);
    426         if (rc != EOK)
    427                 goto error;
    428 
    429         rc = hda_get_supp_formats(codec, codec->out_aw, &formats);
    430         if (rc != EOK)
    431                 goto error;
    432 
    433         ddf_msg(LVL_NOTE, "Output widget %d: rates=0x%x formats=0x%x",
    434             codec->out_aw, rates, formats);
     435        hda_ctl_dump_info(hda->ctl);
    435436
    436437        ddf_msg(LVL_NOTE, "Codec OK");
Note: See TracChangeset for help on using the changeset viewer.