Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

ASoC: cs43130: Allow configuration of bit clock and frame inversion

Signed-off-by: Maciej Strozek <mstrozek@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20231124095030.24539-1-mstrozek@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Maciej Strozek and committed by
Mark Brown
52be2c49 fa91703d

+41 -2
+40 -2
sound/soc/codecs/cs43130.c
··· 620 620 return -EINVAL; 621 621 } 622 622 623 + switch (cs43130->dais[dai_id].dai_invert) { 624 + case SND_SOC_DAIFMT_NB_NF: 625 + sclk_edge = 1; 626 + lrck_edge = 0; 627 + break; 628 + case SND_SOC_DAIFMT_IB_NF: 629 + sclk_edge = 0; 630 + lrck_edge = 0; 631 + break; 632 + case SND_SOC_DAIFMT_NB_IF: 633 + sclk_edge = 1; 634 + lrck_edge = 1; 635 + break; 636 + case SND_SOC_DAIFMT_IB_IF: 637 + sclk_edge = 0; 638 + lrck_edge = 1; 639 + break; 640 + default: 641 + return -EINVAL; 642 + } 643 + 623 644 switch (cs43130->dais[dai_id].dai_mode) { 624 645 case SND_SOC_DAIFMT_CBS_CFS: 625 646 dai_mode_val = 0; ··· 653 632 } 654 633 655 634 frm_size = bitwidth_sclk * params_channels(params); 656 - sclk_edge = 1; 657 - lrck_edge = 0; 658 635 loc_ch1 = 0; 659 636 loc_ch2 = bitwidth_sclk * (params_channels(params) - 1); 660 637 ··· 1532 1513 break; 1533 1514 default: 1534 1515 dev_err(cs43130->dev, "unsupported mode\n"); 1516 + return -EINVAL; 1517 + } 1518 + 1519 + switch (fmt & SND_SOC_DAIFMT_INV_MASK) { 1520 + case SND_SOC_DAIFMT_NB_NF: 1521 + cs43130->dais[codec_dai->id].dai_invert = SND_SOC_DAIFMT_NB_NF; 1522 + break; 1523 + case SND_SOC_DAIFMT_IB_NF: 1524 + cs43130->dais[codec_dai->id].dai_invert = SND_SOC_DAIFMT_IB_NF; 1525 + break; 1526 + case SND_SOC_DAIFMT_NB_IF: 1527 + cs43130->dais[codec_dai->id].dai_invert = SND_SOC_DAIFMT_NB_IF; 1528 + break; 1529 + case SND_SOC_DAIFMT_IB_IF: 1530 + cs43130->dais[codec_dai->id].dai_invert = SND_SOC_DAIFMT_IB_IF; 1531 + break; 1532 + default: 1533 + dev_err(cs43130->dev, "Unsupported invert mode 0x%x\n", 1534 + fmt & SND_SOC_DAIFMT_INV_MASK); 1535 1535 return -EINVAL; 1536 1536 } 1537 1537
+1
sound/soc/codecs/cs43130.h
··· 497 497 unsigned int sclk; 498 498 unsigned int dai_format; 499 499 unsigned int dai_mode; 500 + unsigned int dai_invert; 500 501 }; 501 502 502 503 struct cs43130_private {