Skip to content

Commit

Permalink
ASoC: da7219: Expose BCLK and WCLK control through CCF
Browse files Browse the repository at this point in the history
For the purposes of platforms which use the codec as DAI clock
master for the CPU and other codec devices, there is the need to
not only expose the clock gating of BCLK and WCLK but also the
ability to set those rates without going through the ASoC APIs.

To make this possible, the previous CCF implementation in the
driver has been extended to separate BCLK and WCLK out. WCLK is
the parent clock to BCLK, and is also the clock gate for both.
BCLK in HW is a factor/multiplier of WCLK so derives from whatever
SR is chosen for WCLK, hence the need to make it a child of WCLK
for the purposes of CCF. Enabling/disabling either BCLK or WCLK
will result in clocks being ungated/gated accordingly. To simplify
matters, these clocks can only be configured if the codec is set
as master, otherwise CCF control is disallowed.

Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
  • Loading branch information
Adam Thomson authored and Mark Brown committed Mar 21, 2019
1 parent 41d176d commit d90ba6c
Show file tree
Hide file tree
Showing 3 changed files with 407 additions and 130 deletions.
8 changes: 7 additions & 1 deletion include/sound/da7219.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,16 @@ enum da7219_mic_amp_in_sel {

struct da7219_aad_pdata;

enum da7219_dai_clks {
DA7219_DAI_WCLK_IDX = 0,
DA7219_DAI_BCLK_IDX,
DA7219_DAI_NUM_CLKS,
};

struct da7219_pdata {
bool wakeup_source;

const char *dai_clks_name;
const char *dai_clk_names[DA7219_DAI_NUM_CLKS];

/* Mic */
enum da7219_micbias_voltage micbias_lvl;
Expand Down
Loading

0 comments on commit d90ba6c

Please sign in to comment.