lkml.org 
[lkml]   [2023]   [Jul]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 07/11] ALSA: hda: hda_component: Add pre and post playback hooks to hda_component
    Date
    These hooks can be used to add callbacks that would be run before and after
    the main playback hooks. These hooks would be called for all amps, before
    moving on to the next hook, i.e. pre_playback_hook would be called for
    all amps, before the playback_hook is called for all amps, then finally
    the post_playback_hook is called for all amps.

    Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
    ---
    sound/pci/hda/hda_component.h | 2 ++
    sound/pci/hda/patch_realtek.c | 10 +++++++++-
    2 files changed, 11 insertions(+), 1 deletion(-)

    diff --git a/sound/pci/hda/hda_component.h b/sound/pci/hda/hda_component.h
    index 534e845b9cd1d..f170aec967c18 100644
    --- a/sound/pci/hda/hda_component.h
    +++ b/sound/pci/hda/hda_component.h
    @@ -15,5 +15,7 @@ struct hda_component {
    struct device *dev;
    char name[HDA_MAX_NAME_SIZE];
    struct hda_codec *codec;
    + void (*pre_playback_hook)(struct device *dev, int action);
    void (*playback_hook)(struct device *dev, int action);
    + void (*post_playback_hook)(struct device *dev, int action);
    };
    diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
    index 52ea7d757d6ad..a6585afb77071 100644
    --- a/sound/pci/hda/patch_realtek.c
    +++ b/sound/pci/hda/patch_realtek.c
    @@ -6716,9 +6716,17 @@ static void comp_generic_playback_hook(struct hda_pcm_stream *hinfo, struct hda_
    int i;

    for (i = 0; i < HDA_MAX_COMPONENTS; i++) {
    - if (spec->comps[i].dev)
    + if (spec->comps[i].dev && spec->comps[i].pre_playback_hook)
    + spec->comps[i].pre_playback_hook(spec->comps[i].dev, action);
    + }
    + for (i = 0; i < HDA_MAX_COMPONENTS; i++) {
    + if (spec->comps[i].dev && spec->comps[i].playback_hook)
    spec->comps[i].playback_hook(spec->comps[i].dev, action);
    }
    + for (i = 0; i < HDA_MAX_COMPONENTS; i++) {
    + if (spec->comps[i].dev && spec->comps[i].post_playback_hook)
    + spec->comps[i].post_playback_hook(spec->comps[i].dev, action);
    + }
    }

    struct cs35l41_dev_name {
    --
    2.34.1
    \
     
     \ /
      Last update: 2023-07-21 17:20    [W:2.279 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site