linux/sound/soc/codecs/wm_adsp.h
<<
>>
Prefs
   1/*
   2 * wm_adsp.h  --  Wolfson ADSP support
   3 *
   4 * Copyright 2012 Wolfson Microelectronics plc
   5 *
   6 * Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
   7 *
   8 * This program is free software; you can redistribute it and/or modify
   9 * it under the terms of the GNU General Public License version 2 as
  10 * published by the Free Software Foundation.
  11 */
  12
  13#ifndef __WM_ADSP_H
  14#define __WM_ADSP_H
  15
  16#include <sound/soc.h>
  17#include <sound/soc-dapm.h>
  18
  19#include "wmfw.h"
  20
  21struct regulator;
  22
  23struct wm_adsp_region {
  24        int type;
  25        unsigned int base;
  26};
  27
  28struct wm_adsp_alg_region {
  29        struct list_head list;
  30        unsigned int alg;
  31        int type;
  32        unsigned int base;
  33};
  34
  35struct wm_adsp {
  36        const char *part;
  37        int num;
  38        int type;
  39        struct device *dev;
  40        struct regmap *regmap;
  41
  42        int base;
  43        int sysclk_reg;
  44        int sysclk_mask;
  45        int sysclk_shift;
  46
  47        struct list_head alg_regions;
  48
  49        int fw_id;
  50
  51        const struct wm_adsp_region *mem;
  52        int num_mems;
  53
  54        int fw;
  55        bool running;
  56
  57        struct regulator *dvfs;
  58};
  59
  60#define WM_ADSP1(wname, num) \
  61        { .id = snd_soc_dapm_pga, .name = wname, .reg = SND_SOC_NOPM, \
  62        .shift = num, .event = wm_adsp1_event, \
  63        .event_flags = SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD }
  64
  65#define WM_ADSP2(wname, num) \
  66{       .id = snd_soc_dapm_pga, .name = wname, .reg = SND_SOC_NOPM, \
  67        .shift = num, .event = wm_adsp2_event, \
  68        .event_flags = SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD }
  69
  70extern const struct snd_kcontrol_new wm_adsp1_fw_controls[];
  71extern const struct snd_kcontrol_new wm_adsp2_fw_controls[];
  72
  73int wm_adsp1_init(struct wm_adsp *adsp);
  74int wm_adsp2_init(struct wm_adsp *adsp, bool dvfs);
  75int wm_adsp1_event(struct snd_soc_dapm_widget *w,
  76                   struct snd_kcontrol *kcontrol, int event);
  77int wm_adsp2_event(struct snd_soc_dapm_widget *w,
  78                   struct snd_kcontrol *kcontrol, int event);
  79
  80#endif
  81