Changeset a64970e1 in mainline for uspace/drv/audio/sb16


Ignore:
Timestamp:
2025-03-05T19:25:06Z (5 months ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
07039850, df2b4ce7
Parents:
89b5a75
Message:

Implement quiesce in HD Audio and SB16 drivers.

Location:
uspace/drv/audio/sb16
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/audio/sb16/dsp.c

    r89b5a75 ra64970e1  
    11/*
     2 * Copyright (c) 2025 Jiri Svoboda
    23 * Copyright (c) 2011 Jan Vesely
    34 * All rights reserved.
     
    7475                [DSP_READY] = "READY",
    7576                [DSP_NO_BUFFER] = "NO BUFFER",
     77                [DSP_QUIESCED] = "QUIESCED"
    7678        };
    7779        if ((size_t)state < ARRAY_SIZE(state_names))
     
    8385{
    8486        assert(dsp);
     87        if (dsp->state == DSP_QUIESCED)
     88                return;
     89
    8590        ddf_log_verbose("Changing state from %s to %s",
    8691            dsp_state_to_str(dsp->state), dsp_state_to_str(state));
     
    230235
    231236        return ret;
     237}
     238
     239void sb_dsp_quiesce(sb_dsp_t *dsp)
     240{
     241        dsp->state = DSP_QUIESCED;
     242        dsp_reset(dsp);
    232243}
    233244
  • uspace/drv/audio/sb16/dsp.h

    r89b5a75 ra64970e1  
    11/*
     2 * Copyright (c) 2025 Jiri Svoboda
    23 * Copyright (c) 2011 Jan Vesely
    34 * All rights reserved.
     
    5152        DSP_READY,
    5253        DSP_NO_BUFFER,
     54        DSP_QUIESCED
    5355} dsp_state_t;
    5456
     
    7880errno_t sb_dsp_init(sb_dsp_t *dsp, sb16_regs_t *regs, ddf_dev_t *dev,
    7981    int dma8, int dma16);
     82void sb_dsp_quiesce(sb_dsp_t *dsp);
    8083void sb_dsp_interrupt(sb_dsp_t *dsp);
    8184unsigned sb_dsp_query_cap(sb_dsp_t *dsp, audio_cap_t cap);
  • uspace/drv/audio/sb16/main.c

    r89b5a75 ra64970e1  
    11/*
     2 * Copyright (c) 2025 Jiri Svoboda
    23 * Copyright (c) 2011 Jan Vesely
    34 * Copyright (c) 2011 Vojtech Horky
     
    4849
    4950static errno_t sb_add_device(ddf_dev_t *device);
     51static errno_t sb_dev_quiesce(ddf_dev_t *device);
    5052static errno_t sb_get_res(ddf_dev_t *device, addr_range_t **pp_sb_regs,
    5153    addr_range_t **pp_mpu_regs, int *irq, int *dma8, int *dma16);
     
    5456static driver_ops_t sb_driver_ops = {
    5557        .dev_add = sb_add_device,
     58        .dev_quiesce = sb_dev_quiesce
    5659};
    5760
     
    178181}
    179182
     183/** Initialize new SB16 driver instance.
     184 *
     185 * @param[in] device DDF instance of the device to initialize.
     186 * @return Error code.
     187 */
     188static errno_t sb_dev_quiesce(ddf_dev_t *device)
     189{
     190        sb16_t *soft_state = (sb16_t *)ddf_dev_data_get(device);
     191
     192        return sb16_quiesce(soft_state);
     193}
     194
    180195static errno_t sb_get_res(ddf_dev_t *device, addr_range_t **pp_sb_regs,
    181196    addr_range_t **pp_mpu_regs, int *irq, int *dma8, int *dma16)
  • uspace/drv/audio/sb16/sb16.c

    r89b5a75 ra64970e1  
    11/*
     2 * Copyright (c) 2025 Jiri Svoboda
    23 * Copyright (c) 2011 Jan Vesely
    34 * All rights reserved.
     
    191192}
    192193
     194errno_t sb16_quiesce(sb16_t *sb)
     195{
     196        sb_dsp_quiesce(&sb->dsp);
     197        return EOK;
     198}
     199
    193200void sb16_interrupt(sb16_t *sb)
    194201{
  • uspace/drv/audio/sb16/sb16.h

    r89b5a75 ra64970e1  
    11/*
     2 * Copyright (c) 2025 Jiri Svoboda
    23 * Copyright (c) 2011 Jan Vesely
    34 * All rights reserved.
     
    5556errno_t sb16_init_sb16(sb16_t *sb, addr_range_t *regs, ddf_dev_t *dev, int dma8, int dma16);
    5657errno_t sb16_init_mpu(sb16_t *sb, addr_range_t *regs);
     58errno_t sb16_quiesce(sb16_t *sb);
    5759void sb16_interrupt(sb16_t *sb);
    5860
Note: See TracChangeset for help on using the changeset viewer.