From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com
Subject: [jsarha:topic/chromeos-4.19-s0ix 3632/9999] sound/soc/soc-topology.c:790:26: sparse: sparse: incorrect type in assignment (different base types)
Date: Sat, 13 May 2023 20:22:59 +0800 [thread overview]
Message-ID: <202305132033.BI5EScAZ-lkp@intel.com> (raw)
::::::
:::::: Manual check reason: "low confidence bisect report"
::::::
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Liam Girdwood <liam.r.girdwood@linux.intel.com>
CC: "Pierre-Louis Bossart" <pierre-louis.bossart@linux.intel.com>
CC: "Ap, Kamal" <kamal.ap@intel.corp-partner.google.com>
CC: Ben Zhang <benzh@google.com>
tree: https://github.com/jsarha/linux topic/chromeos-4.19-s0ix
head: 430bdaa0a8c38697780f45a148964d71951df11f
commit: f05fac60091358fb9805b6a6c6dc38a995361910 [3632/9999] FROMLIST: ASoC: SOF: Add Build support for SOF core and Intel drivers
:::::: branch date: 3 years, 7 months ago
:::::: commit date: 4 years, 1 month ago
config: alpha-randconfig-s032-20230509 (https://download.01.org/0day-ci/archive/20230513/202305132033.BI5EScAZ-lkp@intel.com/config)
compiler: alpha-linux-gcc (GCC) 12.1.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-39-gce1a6720-dirty
# https://github.com/jsarha/linux/commit/f05fac60091358fb9805b6a6c6dc38a995361910
git remote add jsarha https://github.com/jsarha/linux
git fetch --no-tags jsarha topic/chromeos-4.19-s0ix
git checkout f05fac60091358fb9805b6a6c6dc38a995361910
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=alpha olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=alpha SHELL=/bin/bash sound/soc/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Link: https://lore.kernel.org/r/202305132033.BI5EScAZ-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
sound/soc/soc-topology.c:2556:45: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:200:28: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:201:39: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted __le32 [usertype] reg @@
sound/soc/soc-topology.c:201:39: sparse: expected int
sound/soc/soc-topology.c:201:39: sparse: got restricted __le32 [usertype] reg
sound/soc/soc-topology.c:213:28: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:214:39: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted __le32 [usertype] shift @@
sound/soc/soc-topology.c:214:39: sparse: expected int
sound/soc/soc-topology.c:214:39: sparse: got restricted __le32 [usertype] shift
sound/soc/soc-topology.c:593:21: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:612:70: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:614:70: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:629:60: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:631:60: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:633:61: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:646:60: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:648:60: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:650:61: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:709:14: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int @@ got restricted __le32 [usertype] min @@
sound/soc/soc-topology.c:709:14: sparse: expected unsigned int
sound/soc/soc-topology.c:709:14: sparse: got restricted __le32 [usertype] min
sound/soc/soc-topology.c:710:22: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:722:17: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:725:17: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:727:33: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:778:33: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:788:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [addressable] [assigned] access @@ got restricted __le32 [usertype] access @@
sound/soc/soc-topology.c:788:27: sparse: expected unsigned int [addressable] [assigned] access
sound/soc/soc-topology.c:788:27: sparse: got restricted __le32 [usertype] access
>> sound/soc/soc-topology.c:790:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected int max @@ got restricted __le32 [usertype] max @@
sound/soc/soc-topology.c:790:26: sparse: expected int max
sound/soc/soc-topology.c:790:26: sparse: got restricted __le32 [usertype] max
sound/soc/soc-topology.c:858:33: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:868:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [addressable] [assigned] access @@ got restricted __le32 [usertype] access @@
sound/soc/soc-topology.c:868:27: sparse: expected unsigned int [addressable] [assigned] access
sound/soc/soc-topology.c:868:27: sparse: got restricted __le32 [usertype] access
sound/soc/soc-topology.c:880:25: sparse: sparse: incorrect type in assignment (different base types) @@ expected int max @@ got restricted __le32 [usertype] max @@
sound/soc/soc-topology.c:880:25: sparse: expected int max
sound/soc/soc-topology.c:880:25: sparse: got restricted __le32 [usertype] max
>> sound/soc/soc-topology.c:881:25: sparse: sparse: incorrect type in assignment (different base types) @@ expected int min @@ got restricted __le32 [usertype] min @@
sound/soc/soc-topology.c:881:25: sparse: expected int min
sound/soc/soc-topology.c:881:25: sparse: got restricted __le32 [usertype] min
>> sound/soc/soc-topology.c:882:28: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int invert:1 @@ got restricted __le32 [usertype] invert @@
sound/soc/soc-topology.c:882:28: sparse: expected unsigned int invert:1
sound/soc/soc-topology.c:882:28: sparse: got restricted __le32 [usertype] invert
>> sound/soc/soc-topology.c:883:34: sparse: sparse: incorrect type in assignment (different base types) @@ expected int platform_max @@ got restricted __le32 [usertype] platform_max @@
sound/soc/soc-topology.c:883:34: sparse: expected int platform_max
sound/soc/soc-topology.c:883:34: sparse: got restricted __le32 [usertype] platform_max
sound/soc/soc-topology.c:933:27: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected unsigned long [usertype] n @@ got restricted __le32 [usertype] items @@
sound/soc/soc-topology.c:933:27: sparse: expected unsigned long [usertype] n
sound/soc/soc-topology.c:933:27: sparse: got restricted __le32 [usertype] items
sound/soc/soc-topology.c:937:27: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:965:15: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:969:46: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:997:33: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1015:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [addressable] [assigned] access @@ got restricted __le32 [usertype] access @@
sound/soc/soc-topology.c:1015:27: sparse: expected unsigned int [addressable] [assigned] access
sound/soc/soc-topology.c:1015:27: sparse: got restricted __le32 [usertype] access
>> sound/soc/soc-topology.c:1023:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int items @@ got restricted __le32 [usertype] items @@
sound/soc/soc-topology.c:1023:27: sparse: expected unsigned int items
sound/soc/soc-topology.c:1023:27: sparse: got restricted __le32 [usertype] items
>> sound/soc/soc-topology.c:1024:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int mask @@ got restricted __le32 [usertype] mask @@
sound/soc/soc-topology.c:1024:26: sparse: expected unsigned int mask
sound/soc/soc-topology.c:1024:26: sparse: got restricted __le32 [usertype] mask
sound/soc/soc-topology.c:1030:36: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1030:36: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1030:36: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1030:36: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1030:36: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1103:33: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1103:45: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1110:28: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1114:32: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1127:60: sparse: sparse: incorrect type in argument 3 (different base types) @@ expected unsigned long [usertype] size @@ got restricted __le32 [usertype] payload_size @@
sound/soc/soc-topology.c:1127:60: sparse: expected unsigned long [usertype] size
sound/soc/soc-topology.c:1127:60: sparse: got restricted __le32 [usertype] payload_size
sound/soc/soc-topology.c:1134:59: sparse: sparse: incorrect type in argument 3 (different base types) @@ expected unsigned long [usertype] size @@ got restricted __le32 [usertype] payload_size @@
sound/soc/soc-topology.c:1134:59: sparse: expected unsigned long [usertype] size
sound/soc/soc-topology.c:1134:59: sparse: got restricted __le32 [usertype] payload_size
sound/soc/soc-topology.c:1137:60: sparse: sparse: incorrect type in argument 3 (different base types) @@ expected unsigned long [usertype] size @@ got restricted __le32 [usertype] payload_size @@
sound/soc/soc-topology.c:1137:60: sparse: expected unsigned long [usertype] size
sound/soc/soc-topology.c:1137:60: sparse: got restricted __le32 [usertype] payload_size
sound/soc/soc-topology.c:1119:41: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1119:41: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1119:41: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1119:41: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1119:41: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1119:41: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1119:41: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1119:41: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1119:41: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1119:41: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1119:41: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1119:41: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1119:41: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1165:24: sparse: sparse: incorrect type in initializer (different base types) @@ expected int count @@ got restricted __le32 [usertype] count @@
sound/soc/soc-topology.c:1165:24: sparse: expected int count
sound/soc/soc-topology.c:1165:24: sparse: got restricted __le32 [usertype] count
sound/soc/soc-topology.c:1169:33: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1169:45: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1175:27: sparse: sparse: incorrect type in argument 4 (different base types) @@ expected unsigned long [usertype] bytes @@ got restricted __le32 [usertype] payload_size @@
sound/soc/soc-topology.c:1175:27: sparse: expected unsigned long [usertype] bytes
sound/soc/soc-topology.c:1175:27: sparse: got restricted __le32 [usertype] payload_size
sound/soc/soc-topology.c:1285:33: sparse: sparse: restricted __le32 degrades to integer
>> sound/soc/soc-topology.c:1300:30: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int access @@ got restricted __le32 [usertype] access @@
sound/soc/soc-topology.c:1300:30: sparse: expected unsigned int access
sound/soc/soc-topology.c:1300:30: sparse: got restricted __le32 [usertype] access
sound/soc/soc-topology.c:1312:25: sparse: sparse: incorrect type in assignment (different base types) @@ expected int max @@ got restricted __le32 [usertype] max @@
sound/soc/soc-topology.c:1312:25: sparse: expected int max
sound/soc/soc-topology.c:1312:25: sparse: got restricted __le32 [usertype] max
sound/soc/soc-topology.c:1313:25: sparse: sparse: incorrect type in assignment (different base types) @@ expected int min @@ got restricted __le32 [usertype] min @@
sound/soc/soc-topology.c:1313:25: sparse: expected int min
sound/soc/soc-topology.c:1313:25: sparse: got restricted __le32 [usertype] min
sound/soc/soc-topology.c:1314:28: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int invert:1 @@ got restricted __le32 [usertype] invert @@
sound/soc/soc-topology.c:1314:28: sparse: expected unsigned int invert:1
sound/soc/soc-topology.c:1314:28: sparse: got restricted __le32 [usertype] invert
sound/soc/soc-topology.c:1315:34: sparse: sparse: incorrect type in assignment (different base types) @@ expected int platform_max @@ got restricted __le32 [usertype] platform_max @@
sound/soc/soc-topology.c:1315:34: sparse: expected int platform_max
sound/soc/soc-topology.c:1315:34: sparse: got restricted __le32 [usertype] platform_max
sound/soc/soc-topology.c:1386:30: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int access @@ got restricted __le32 [usertype] access @@
sound/soc/soc-topology.c:1386:30: sparse: expected unsigned int access
sound/soc/soc-topology.c:1386:30: sparse: got restricted __le32 [usertype] access
sound/soc/soc-topology.c:1395:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int items @@ got restricted __le32 [usertype] items @@
sound/soc/soc-topology.c:1395:27: sparse: expected unsigned int items
sound/soc/soc-topology.c:1395:27: sparse: got restricted __le32 [usertype] items
sound/soc/soc-topology.c:1396:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int mask @@ got restricted __le32 [usertype] mask @@
sound/soc/soc-topology.c:1396:26: sparse: expected unsigned int mask
sound/soc/soc-topology.c:1396:26: sparse: got restricted __le32 [usertype] mask
sound/soc/soc-topology.c:1399:36: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1399:36: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1399:36: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1399:36: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1399:36: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1442:41: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1455:35: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1493:33: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1506:30: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int access @@ got restricted __le32 [usertype] access @@
sound/soc/soc-topology.c:1506:30: sparse: expected unsigned int access
sound/soc/soc-topology.c:1506:30: sparse: got restricted __le32 [usertype] access
sound/soc/soc-topology.c:1508:26: sparse: sparse: incorrect type in assignment (different base types) @@ expected int max @@ got restricted __le32 [usertype] max @@
sound/soc/soc-topology.c:1508:26: sparse: expected int max
sound/soc/soc-topology.c:1508:26: sparse: got restricted __le32 [usertype] max
sound/soc/soc-topology.c:1565:38: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected int tplg_type @@ got restricted __le32 [usertype] id @@
sound/soc/soc-topology.c:1565:38: sparse: expected int tplg_type
sound/soc/soc-topology.c:1565:38: sparse: got restricted __le32 [usertype] id
sound/soc/soc-topology.c:1578:22: sparse: sparse: incorrect type in assignment (different base types) @@ expected int [addressable] [assigned] reg @@ got restricted __le32 [usertype] reg @@
sound/soc/soc-topology.c:1578:22: sparse: expected int [addressable] [assigned] reg
sound/soc/soc-topology.c:1578:22: sparse: got restricted __le32 [usertype] reg
sound/soc/soc-topology.c:1579:24: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned char [addressable] [assigned] shift @@ got restricted __le32 [usertype] shift @@
sound/soc/soc-topology.c:1579:24: sparse: expected unsigned char [addressable] [assigned] shift
sound/soc/soc-topology.c:1579:24: sparse: got restricted __le32 [usertype] shift
sound/soc/soc-topology.c:1580:23: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [addressable] [assigned] mask @@ got restricted __le32 [usertype] mask @@
sound/soc/soc-topology.c:1580:23: sparse: expected unsigned int [addressable] [assigned] mask
sound/soc/soc-topology.c:1580:23: sparse: got restricted __le32 [usertype] mask
sound/soc/soc-topology.c:1581:25: sparse: sparse: incorrect type in assignment (different base types) @@ expected int [addressable] [assigned] subseq @@ got restricted __le32 [usertype] subseq @@
sound/soc/soc-topology.c:1581:25: sparse: expected int [addressable] [assigned] subseq
sound/soc/soc-topology.c:1581:25: sparse: got restricted __le32 [usertype] subseq
sound/soc/soc-topology.c:1584:33: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned char [addressable] [assigned] ignore_suspend:1 @@ got restricted __le32 [usertype] ignore_suspend @@
sound/soc/soc-topology.c:1584:33: sparse: expected unsigned char [addressable] [assigned] ignore_suspend:1
sound/soc/soc-topology.c:1584:33: sparse: got restricted __le32 [usertype] ignore_suspend
sound/soc/soc-topology.c:1585:30: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned short [addressable] [assigned] event_flags @@ got restricted __le16 [usertype] event_flags @@
sound/soc/soc-topology.c:1585:30: sparse: expected unsigned short [addressable] [assigned] event_flags
sound/soc/soc-topology.c:1585:30: sparse: got restricted __le16 [usertype] event_flags
sound/soc/soc-topology.c:1589:67: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1608:40: sparse: sparse: incorrect type in assignment (different base types) @@ expected int [addressable] [assigned] num_kcontrols @@ got restricted __le32 [usertype] num_kcontrols @@
sound/soc/soc-topology.c:1608:40: sparse: expected int [addressable] [assigned] num_kcontrols
sound/soc/soc-topology.c:1608:40: sparse: got restricted __le32 [usertype] num_kcontrols
sound/soc/soc-topology.c:1623:40: sparse: sparse: incorrect type in assignment (different base types) @@ expected int [addressable] [assigned] num_kcontrols @@ got restricted __le32 [usertype] num_kcontrols @@
sound/soc/soc-topology.c:1623:40: sparse: expected int [addressable] [assigned] num_kcontrols
sound/soc/soc-topology.c:1623:40: sparse: got restricted __le32 [usertype] num_kcontrols
sound/soc/soc-topology.c:1634:40: sparse: sparse: incorrect type in assignment (different base types) @@ expected int [addressable] [assigned] num_kcontrols @@ got restricted __le32 [usertype] num_kcontrols @@
sound/soc/soc-topology.c:1634:40: sparse: expected int [addressable] [assigned] num_kcontrols
sound/soc/soc-topology.c:1634:40: sparse: got restricted __le32 [usertype] num_kcontrols
sound/soc/soc-topology.c:1600:33: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1600:33: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1600:33: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1600:33: sparse: sparse: restricted __le32 degrades to integer
sound/soc/soc-topology.c:1600:33: sparse: sparse: too many warnings
vim +790 sound/soc/soc-topology.c
8a9782346dccd8 Liam Girdwood 2015-05-29 695
28a87eebcad401 Mengdong Lin 2015-08-05 696
28a87eebcad401 Mengdong Lin 2015-08-05 697 static int soc_tplg_create_tlv_db_scale(struct soc_tplg *tplg,
28a87eebcad401 Mengdong Lin 2015-08-05 698 struct snd_kcontrol_new *kc, struct snd_soc_tplg_tlv_dbscale *scale)
8a9782346dccd8 Liam Girdwood 2015-05-29 699 {
28a87eebcad401 Mengdong Lin 2015-08-05 700 unsigned int item_len = 2 * sizeof(unsigned int);
28a87eebcad401 Mengdong Lin 2015-08-05 701 unsigned int *p;
28a87eebcad401 Mengdong Lin 2015-08-05 702
28a87eebcad401 Mengdong Lin 2015-08-05 703 p = kzalloc(item_len + 2 * sizeof(unsigned int), GFP_KERNEL);
28a87eebcad401 Mengdong Lin 2015-08-05 704 if (!p)
28a87eebcad401 Mengdong Lin 2015-08-05 705 return -ENOMEM;
8a9782346dccd8 Liam Girdwood 2015-05-29 706
28a87eebcad401 Mengdong Lin 2015-08-05 707 p[0] = SNDRV_CTL_TLVT_DB_SCALE;
28a87eebcad401 Mengdong Lin 2015-08-05 708 p[1] = item_len;
28a87eebcad401 Mengdong Lin 2015-08-05 @709 p[2] = scale->min;
28a87eebcad401 Mengdong Lin 2015-08-05 710 p[3] = (scale->step & TLV_DB_SCALE_MASK)
28a87eebcad401 Mengdong Lin 2015-08-05 711 | (scale->mute ? TLV_DB_SCALE_MUTE : 0);
28a87eebcad401 Mengdong Lin 2015-08-05 712
28a87eebcad401 Mengdong Lin 2015-08-05 713 kc->tlv.p = (void *)p;
8a9782346dccd8 Liam Girdwood 2015-05-29 714 return 0;
28a87eebcad401 Mengdong Lin 2015-08-05 715 }
8a9782346dccd8 Liam Girdwood 2015-05-29 716
28a87eebcad401 Mengdong Lin 2015-08-05 717 static int soc_tplg_create_tlv(struct soc_tplg *tplg,
28a87eebcad401 Mengdong Lin 2015-08-05 718 struct snd_kcontrol_new *kc, struct snd_soc_tplg_ctl_hdr *tc)
28a87eebcad401 Mengdong Lin 2015-08-05 719 {
28a87eebcad401 Mengdong Lin 2015-08-05 720 struct snd_soc_tplg_ctl_tlv *tplg_tlv;
28a87eebcad401 Mengdong Lin 2015-08-05 721
28a87eebcad401 Mengdong Lin 2015-08-05 722 if (!(tc->access & SNDRV_CTL_ELEM_ACCESS_TLV_READWRITE))
28a87eebcad401 Mengdong Lin 2015-08-05 723 return 0;
8a9782346dccd8 Liam Girdwood 2015-05-29 724
1a3232d2f61d28 Mengdong Lin 2015-08-18 725 if (!(tc->access & SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK)) {
28a87eebcad401 Mengdong Lin 2015-08-05 726 tplg_tlv = &tc->tlv;
28a87eebcad401 Mengdong Lin 2015-08-05 727 switch (tplg_tlv->type) {
28a87eebcad401 Mengdong Lin 2015-08-05 728 case SNDRV_CTL_TLVT_DB_SCALE:
28a87eebcad401 Mengdong Lin 2015-08-05 729 return soc_tplg_create_tlv_db_scale(tplg, kc,
28a87eebcad401 Mengdong Lin 2015-08-05 730 &tplg_tlv->scale);
8a9782346dccd8 Liam Girdwood 2015-05-29 731
28a87eebcad401 Mengdong Lin 2015-08-05 732 /* TODO: add support for other TLV types */
28a87eebcad401 Mengdong Lin 2015-08-05 733 default:
28a87eebcad401 Mengdong Lin 2015-08-05 734 dev_dbg(tplg->dev, "Unsupported TLV type %d\n",
28a87eebcad401 Mengdong Lin 2015-08-05 735 tplg_tlv->type);
28a87eebcad401 Mengdong Lin 2015-08-05 736 return -EINVAL;
28a87eebcad401 Mengdong Lin 2015-08-05 737 }
28a87eebcad401 Mengdong Lin 2015-08-05 738 }
8a9782346dccd8 Liam Girdwood 2015-05-29 739
8a9782346dccd8 Liam Girdwood 2015-05-29 740 return 0;
8a9782346dccd8 Liam Girdwood 2015-05-29 741 }
8a9782346dccd8 Liam Girdwood 2015-05-29 742
8a9782346dccd8 Liam Girdwood 2015-05-29 743 static inline void soc_tplg_free_tlv(struct soc_tplg *tplg,
8a9782346dccd8 Liam Girdwood 2015-05-29 744 struct snd_kcontrol_new *kc)
8a9782346dccd8 Liam Girdwood 2015-05-29 745 {
8a9782346dccd8 Liam Girdwood 2015-05-29 746 kfree(kc->tlv.p);
8a9782346dccd8 Liam Girdwood 2015-05-29 747 }
8a9782346dccd8 Liam Girdwood 2015-05-29 748
8a9782346dccd8 Liam Girdwood 2015-05-29 749 static int soc_tplg_dbytes_create(struct soc_tplg *tplg, unsigned int count,
8a9782346dccd8 Liam Girdwood 2015-05-29 750 size_t size)
8a9782346dccd8 Liam Girdwood 2015-05-29 751 {
8a9782346dccd8 Liam Girdwood 2015-05-29 752 struct snd_soc_tplg_bytes_control *be;
8a9782346dccd8 Liam Girdwood 2015-05-29 753 struct soc_bytes_ext *sbe;
8a9782346dccd8 Liam Girdwood 2015-05-29 754 struct snd_kcontrol_new kc;
8a9782346dccd8 Liam Girdwood 2015-05-29 755 int i, err;
8a9782346dccd8 Liam Girdwood 2015-05-29 756
8a9782346dccd8 Liam Girdwood 2015-05-29 757 if (soc_tplg_check_elem_count(tplg,
8a9782346dccd8 Liam Girdwood 2015-05-29 758 sizeof(struct snd_soc_tplg_bytes_control), count,
8a9782346dccd8 Liam Girdwood 2015-05-29 759 size, "mixer bytes")) {
8a9782346dccd8 Liam Girdwood 2015-05-29 760 dev_err(tplg->dev, "ASoC: Invalid count %d for byte control\n",
8a9782346dccd8 Liam Girdwood 2015-05-29 761 count);
8a9782346dccd8 Liam Girdwood 2015-05-29 762 return -EINVAL;
8a9782346dccd8 Liam Girdwood 2015-05-29 763 }
8a9782346dccd8 Liam Girdwood 2015-05-29 764
8a9782346dccd8 Liam Girdwood 2015-05-29 765 for (i = 0; i < count; i++) {
8a9782346dccd8 Liam Girdwood 2015-05-29 766 be = (struct snd_soc_tplg_bytes_control *)tplg->pos;
8a9782346dccd8 Liam Girdwood 2015-05-29 767
8a9782346dccd8 Liam Girdwood 2015-05-29 768 /* validate kcontrol */
8a9782346dccd8 Liam Girdwood 2015-05-29 769 if (strnlen(be->hdr.name, SNDRV_CTL_ELEM_ID_NAME_MAXLEN) ==
8a9782346dccd8 Liam Girdwood 2015-05-29 770 SNDRV_CTL_ELEM_ID_NAME_MAXLEN)
8a9782346dccd8 Liam Girdwood 2015-05-29 771 return -EINVAL;
8a9782346dccd8 Liam Girdwood 2015-05-29 772
8a9782346dccd8 Liam Girdwood 2015-05-29 773 sbe = kzalloc(sizeof(*sbe), GFP_KERNEL);
8a9782346dccd8 Liam Girdwood 2015-05-29 774 if (sbe == NULL)
8a9782346dccd8 Liam Girdwood 2015-05-29 775 return -ENOMEM;
8a9782346dccd8 Liam Girdwood 2015-05-29 776
8a9782346dccd8 Liam Girdwood 2015-05-29 777 tplg->pos += (sizeof(struct snd_soc_tplg_bytes_control) +
8a9782346dccd8 Liam Girdwood 2015-05-29 778 be->priv.size);
8a9782346dccd8 Liam Girdwood 2015-05-29 779
8a9782346dccd8 Liam Girdwood 2015-05-29 780 dev_dbg(tplg->dev,
8a9782346dccd8 Liam Girdwood 2015-05-29 781 "ASoC: adding bytes kcontrol %s with access 0x%x\n",
8a9782346dccd8 Liam Girdwood 2015-05-29 782 be->hdr.name, be->hdr.access);
8a9782346dccd8 Liam Girdwood 2015-05-29 783
8a9782346dccd8 Liam Girdwood 2015-05-29 784 memset(&kc, 0, sizeof(kc));
8a9782346dccd8 Liam Girdwood 2015-05-29 785 kc.name = be->hdr.name;
8a9782346dccd8 Liam Girdwood 2015-05-29 786 kc.private_value = (long)sbe;
8a9782346dccd8 Liam Girdwood 2015-05-29 787 kc.iface = SNDRV_CTL_ELEM_IFACE_MIXER;
8a9782346dccd8 Liam Girdwood 2015-05-29 788 kc.access = be->hdr.access;
8a9782346dccd8 Liam Girdwood 2015-05-29 789
8a9782346dccd8 Liam Girdwood 2015-05-29 @790 sbe->max = be->max;
8a9782346dccd8 Liam Girdwood 2015-05-29 791 sbe->dobj.type = SND_SOC_DOBJ_BYTES;
8a9782346dccd8 Liam Girdwood 2015-05-29 792 sbe->dobj.ops = tplg->ops;
8a9782346dccd8 Liam Girdwood 2015-05-29 793 INIT_LIST_HEAD(&sbe->dobj.list);
8a9782346dccd8 Liam Girdwood 2015-05-29 794
8a9782346dccd8 Liam Girdwood 2015-05-29 795 /* map io handlers */
2b5cdb9156f761 Mengdong Lin 2015-08-18 796 err = soc_tplg_kcontrol_bind_io(&be->hdr, &kc, tplg);
8a9782346dccd8 Liam Girdwood 2015-05-29 797 if (err) {
8a9782346dccd8 Liam Girdwood 2015-05-29 798 soc_control_err(tplg, &be->hdr, be->hdr.name);
8a9782346dccd8 Liam Girdwood 2015-05-29 799 kfree(sbe);
8a9782346dccd8 Liam Girdwood 2015-05-29 800 continue;
8a9782346dccd8 Liam Girdwood 2015-05-29 801 }
8a9782346dccd8 Liam Girdwood 2015-05-29 802
8a9782346dccd8 Liam Girdwood 2015-05-29 803 /* pass control to driver for optional further init */
8a9782346dccd8 Liam Girdwood 2015-05-29 804 err = soc_tplg_init_kcontrol(tplg, &kc,
8a9782346dccd8 Liam Girdwood 2015-05-29 805 (struct snd_soc_tplg_ctl_hdr *)be);
8a9782346dccd8 Liam Girdwood 2015-05-29 806 if (err < 0) {
8a9782346dccd8 Liam Girdwood 2015-05-29 807 dev_err(tplg->dev, "ASoC: failed to init %s\n",
8a9782346dccd8 Liam Girdwood 2015-05-29 808 be->hdr.name);
8a9782346dccd8 Liam Girdwood 2015-05-29 809 kfree(sbe);
8a9782346dccd8 Liam Girdwood 2015-05-29 810 continue;
8a9782346dccd8 Liam Girdwood 2015-05-29 811 }
8a9782346dccd8 Liam Girdwood 2015-05-29 812
8a9782346dccd8 Liam Girdwood 2015-05-29 813 /* register control here */
8a9782346dccd8 Liam Girdwood 2015-05-29 814 err = soc_tplg_add_kcontrol(tplg, &kc,
8a9782346dccd8 Liam Girdwood 2015-05-29 815 &sbe->dobj.control.kcontrol);
8a9782346dccd8 Liam Girdwood 2015-05-29 816 if (err < 0) {
8a9782346dccd8 Liam Girdwood 2015-05-29 817 dev_err(tplg->dev, "ASoC: failed to add %s\n",
8a9782346dccd8 Liam Girdwood 2015-05-29 818 be->hdr.name);
8a9782346dccd8 Liam Girdwood 2015-05-29 819 kfree(sbe);
8a9782346dccd8 Liam Girdwood 2015-05-29 820 continue;
8a9782346dccd8 Liam Girdwood 2015-05-29 821 }
8a9782346dccd8 Liam Girdwood 2015-05-29 822
8a9782346dccd8 Liam Girdwood 2015-05-29 823 list_add(&sbe->dobj.list, &tplg->comp->dobj_list);
8a9782346dccd8 Liam Girdwood 2015-05-29 824 }
8a9782346dccd8 Liam Girdwood 2015-05-29 825 return 0;
8a9782346dccd8 Liam Girdwood 2015-05-29 826
8a9782346dccd8 Liam Girdwood 2015-05-29 827 }
8a9782346dccd8 Liam Girdwood 2015-05-29 828
8a9782346dccd8 Liam Girdwood 2015-05-29 829 static int soc_tplg_dmixer_create(struct soc_tplg *tplg, unsigned int count,
8a9782346dccd8 Liam Girdwood 2015-05-29 830 size_t size)
8a9782346dccd8 Liam Girdwood 2015-05-29 831 {
8a9782346dccd8 Liam Girdwood 2015-05-29 832 struct snd_soc_tplg_mixer_control *mc;
8a9782346dccd8 Liam Girdwood 2015-05-29 833 struct soc_mixer_control *sm;
8a9782346dccd8 Liam Girdwood 2015-05-29 834 struct snd_kcontrol_new kc;
8a9782346dccd8 Liam Girdwood 2015-05-29 835 int i, err;
8a9782346dccd8 Liam Girdwood 2015-05-29 836
8a9782346dccd8 Liam Girdwood 2015-05-29 837 if (soc_tplg_check_elem_count(tplg,
8a9782346dccd8 Liam Girdwood 2015-05-29 838 sizeof(struct snd_soc_tplg_mixer_control),
8a9782346dccd8 Liam Girdwood 2015-05-29 839 count, size, "mixers")) {
8a9782346dccd8 Liam Girdwood 2015-05-29 840
8a9782346dccd8 Liam Girdwood 2015-05-29 841 dev_err(tplg->dev, "ASoC: invalid count %d for controls\n",
8a9782346dccd8 Liam Girdwood 2015-05-29 842 count);
8a9782346dccd8 Liam Girdwood 2015-05-29 843 return -EINVAL;
8a9782346dccd8 Liam Girdwood 2015-05-29 844 }
8a9782346dccd8 Liam Girdwood 2015-05-29 845
8a9782346dccd8 Liam Girdwood 2015-05-29 846 for (i = 0; i < count; i++) {
8a9782346dccd8 Liam Girdwood 2015-05-29 847 mc = (struct snd_soc_tplg_mixer_control *)tplg->pos;
8a9782346dccd8 Liam Girdwood 2015-05-29 848
8a9782346dccd8 Liam Girdwood 2015-05-29 849 /* validate kcontrol */
8a9782346dccd8 Liam Girdwood 2015-05-29 850 if (strnlen(mc->hdr.name, SNDRV_CTL_ELEM_ID_NAME_MAXLEN) ==
8a9782346dccd8 Liam Girdwood 2015-05-29 851 SNDRV_CTL_ELEM_ID_NAME_MAXLEN)
8a9782346dccd8 Liam Girdwood 2015-05-29 852 return -EINVAL;
8a9782346dccd8 Liam Girdwood 2015-05-29 853
8a9782346dccd8 Liam Girdwood 2015-05-29 854 sm = kzalloc(sizeof(*sm), GFP_KERNEL);
8a9782346dccd8 Liam Girdwood 2015-05-29 855 if (sm == NULL)
8a9782346dccd8 Liam Girdwood 2015-05-29 856 return -ENOMEM;
8a9782346dccd8 Liam Girdwood 2015-05-29 857 tplg->pos += (sizeof(struct snd_soc_tplg_mixer_control) +
8a9782346dccd8 Liam Girdwood 2015-05-29 858 mc->priv.size);
8a9782346dccd8 Liam Girdwood 2015-05-29 859
8a9782346dccd8 Liam Girdwood 2015-05-29 860 dev_dbg(tplg->dev,
8a9782346dccd8 Liam Girdwood 2015-05-29 861 "ASoC: adding mixer kcontrol %s with access 0x%x\n",
8a9782346dccd8 Liam Girdwood 2015-05-29 862 mc->hdr.name, mc->hdr.access);
8a9782346dccd8 Liam Girdwood 2015-05-29 863
8a9782346dccd8 Liam Girdwood 2015-05-29 864 memset(&kc, 0, sizeof(kc));
8a9782346dccd8 Liam Girdwood 2015-05-29 865 kc.name = mc->hdr.name;
8a9782346dccd8 Liam Girdwood 2015-05-29 866 kc.private_value = (long)sm;
8a9782346dccd8 Liam Girdwood 2015-05-29 867 kc.iface = SNDRV_CTL_ELEM_IFACE_MIXER;
8a9782346dccd8 Liam Girdwood 2015-05-29 @868 kc.access = mc->hdr.access;
8a9782346dccd8 Liam Girdwood 2015-05-29 869
8a9782346dccd8 Liam Girdwood 2015-05-29 870 /* we only support FL/FR channel mapping atm */
8a9782346dccd8 Liam Girdwood 2015-05-29 871 sm->reg = tplc_chan_get_reg(tplg, mc->channel,
8a9782346dccd8 Liam Girdwood 2015-05-29 872 SNDRV_CHMAP_FL);
8a9782346dccd8 Liam Girdwood 2015-05-29 873 sm->rreg = tplc_chan_get_reg(tplg, mc->channel,
8a9782346dccd8 Liam Girdwood 2015-05-29 874 SNDRV_CHMAP_FR);
8a9782346dccd8 Liam Girdwood 2015-05-29 875 sm->shift = tplc_chan_get_shift(tplg, mc->channel,
8a9782346dccd8 Liam Girdwood 2015-05-29 876 SNDRV_CHMAP_FL);
8a9782346dccd8 Liam Girdwood 2015-05-29 877 sm->rshift = tplc_chan_get_shift(tplg, mc->channel,
8a9782346dccd8 Liam Girdwood 2015-05-29 878 SNDRV_CHMAP_FR);
8a9782346dccd8 Liam Girdwood 2015-05-29 879
8a9782346dccd8 Liam Girdwood 2015-05-29 @880 sm->max = mc->max;
8a9782346dccd8 Liam Girdwood 2015-05-29 @881 sm->min = mc->min;
8a9782346dccd8 Liam Girdwood 2015-05-29 @882 sm->invert = mc->invert;
8a9782346dccd8 Liam Girdwood 2015-05-29 @883 sm->platform_max = mc->platform_max;
8a9782346dccd8 Liam Girdwood 2015-05-29 884 sm->dobj.index = tplg->index;
8a9782346dccd8 Liam Girdwood 2015-05-29 885 sm->dobj.ops = tplg->ops;
8a9782346dccd8 Liam Girdwood 2015-05-29 886 sm->dobj.type = SND_SOC_DOBJ_MIXER;
8a9782346dccd8 Liam Girdwood 2015-05-29 887 INIT_LIST_HEAD(&sm->dobj.list);
8a9782346dccd8 Liam Girdwood 2015-05-29 888
8a9782346dccd8 Liam Girdwood 2015-05-29 889 /* map io handlers */
2b5cdb9156f761 Mengdong Lin 2015-08-18 890 err = soc_tplg_kcontrol_bind_io(&mc->hdr, &kc, tplg);
8a9782346dccd8 Liam Girdwood 2015-05-29 891 if (err) {
8a9782346dccd8 Liam Girdwood 2015-05-29 892 soc_control_err(tplg, &mc->hdr, mc->hdr.name);
8a9782346dccd8 Liam Girdwood 2015-05-29 893 kfree(sm);
8a9782346dccd8 Liam Girdwood 2015-05-29 894 continue;
8a9782346dccd8 Liam Girdwood 2015-05-29 895 }
8a9782346dccd8 Liam Girdwood 2015-05-29 896
8a9782346dccd8 Liam Girdwood 2015-05-29 897 /* pass control to driver for optional further init */
8a9782346dccd8 Liam Girdwood 2015-05-29 898 err = soc_tplg_init_kcontrol(tplg, &kc,
8a9782346dccd8 Liam Girdwood 2015-05-29 899 (struct snd_soc_tplg_ctl_hdr *) mc);
8a9782346dccd8 Liam Girdwood 2015-05-29 900 if (err < 0) {
8a9782346dccd8 Liam Girdwood 2015-05-29 901 dev_err(tplg->dev, "ASoC: failed to init %s\n",
8a9782346dccd8 Liam Girdwood 2015-05-29 902 mc->hdr.name);
8a9782346dccd8 Liam Girdwood 2015-05-29 903 kfree(sm);
8a9782346dccd8 Liam Girdwood 2015-05-29 904 continue;
8a9782346dccd8 Liam Girdwood 2015-05-29 905 }
8a9782346dccd8 Liam Girdwood 2015-05-29 906
8a9782346dccd8 Liam Girdwood 2015-05-29 907 /* create any TLV data */
28a87eebcad401 Mengdong Lin 2015-08-05 908 soc_tplg_create_tlv(tplg, &kc, &mc->hdr);
8a9782346dccd8 Liam Girdwood 2015-05-29 909
8a9782346dccd8 Liam Girdwood 2015-05-29 910 /* register control here */
8a9782346dccd8 Liam Girdwood 2015-05-29 911 err = soc_tplg_add_kcontrol(tplg, &kc,
8a9782346dccd8 Liam Girdwood 2015-05-29 912 &sm->dobj.control.kcontrol);
8a9782346dccd8 Liam Girdwood 2015-05-29 913 if (err < 0) {
8a9782346dccd8 Liam Girdwood 2015-05-29 914 dev_err(tplg->dev, "ASoC: failed to add %s\n",
8a9782346dccd8 Liam Girdwood 2015-05-29 915 mc->hdr.name);
8a9782346dccd8 Liam Girdwood 2015-05-29 916 soc_tplg_free_tlv(tplg, &kc);
8a9782346dccd8 Liam Girdwood 2015-05-29 917 kfree(sm);
8a9782346dccd8 Liam Girdwood 2015-05-29 918 continue;
8a9782346dccd8 Liam Girdwood 2015-05-29 919 }
8a9782346dccd8 Liam Girdwood 2015-05-29 920
8a9782346dccd8 Liam Girdwood 2015-05-29 921 list_add(&sm->dobj.list, &tplg->comp->dobj_list);
8a9782346dccd8 Liam Girdwood 2015-05-29 922 }
8a9782346dccd8 Liam Girdwood 2015-05-29 923
8a9782346dccd8 Liam Girdwood 2015-05-29 924 return 0;
8a9782346dccd8 Liam Girdwood 2015-05-29 925 }
8a9782346dccd8 Liam Girdwood 2015-05-29 926
8a9782346dccd8 Liam Girdwood 2015-05-29 927 static int soc_tplg_denum_create_texts(struct soc_enum *se,
8a9782346dccd8 Liam Girdwood 2015-05-29 928 struct snd_soc_tplg_enum_control *ec)
8a9782346dccd8 Liam Girdwood 2015-05-29 929 {
8a9782346dccd8 Liam Girdwood 2015-05-29 930 int i, ret;
8a9782346dccd8 Liam Girdwood 2015-05-29 931
8a9782346dccd8 Liam Girdwood 2015-05-29 932 se->dobj.control.dtexts =
6396bb221514d2 Kees Cook 2018-06-12 @933 kcalloc(ec->items, sizeof(char *), GFP_KERNEL);
8a9782346dccd8 Liam Girdwood 2015-05-29 934 if (se->dobj.control.dtexts == NULL)
8a9782346dccd8 Liam Girdwood 2015-05-29 935 return -ENOMEM;
8a9782346dccd8 Liam Girdwood 2015-05-29 936
8a9782346dccd8 Liam Girdwood 2015-05-29 937 for (i = 0; i < ec->items; i++) {
8a9782346dccd8 Liam Girdwood 2015-05-29 938
8a9782346dccd8 Liam Girdwood 2015-05-29 939 if (strnlen(ec->texts[i], SNDRV_CTL_ELEM_ID_NAME_MAXLEN) ==
8a9782346dccd8 Liam Girdwood 2015-05-29 940 SNDRV_CTL_ELEM_ID_NAME_MAXLEN) {
8a9782346dccd8 Liam Girdwood 2015-05-29 941 ret = -EINVAL;
8a9782346dccd8 Liam Girdwood 2015-05-29 942 goto err;
8a9782346dccd8 Liam Girdwood 2015-05-29 943 }
8a9782346dccd8 Liam Girdwood 2015-05-29 944
8a9782346dccd8 Liam Girdwood 2015-05-29 945 se->dobj.control.dtexts[i] = kstrdup(ec->texts[i], GFP_KERNEL);
8a9782346dccd8 Liam Girdwood 2015-05-29 946 if (!se->dobj.control.dtexts[i]) {
8a9782346dccd8 Liam Girdwood 2015-05-29 947 ret = -ENOMEM;
8a9782346dccd8 Liam Girdwood 2015-05-29 948 goto err;
8a9782346dccd8 Liam Girdwood 2015-05-29 949 }
8a9782346dccd8 Liam Girdwood 2015-05-29 950 }
8a9782346dccd8 Liam Girdwood 2015-05-29 951
b6e38b2944f115 Mousumi Jana 2017-04-11 952 se->texts = (const char * const *)se->dobj.control.dtexts;
8a9782346dccd8 Liam Girdwood 2015-05-29 953 return 0;
8a9782346dccd8 Liam Girdwood 2015-05-29 954
8a9782346dccd8 Liam Girdwood 2015-05-29 955 err:
8a9782346dccd8 Liam Girdwood 2015-05-29 956 for (--i; i >= 0; i--)
8a9782346dccd8 Liam Girdwood 2015-05-29 957 kfree(se->dobj.control.dtexts[i]);
8a9782346dccd8 Liam Girdwood 2015-05-29 958 kfree(se->dobj.control.dtexts);
8a9782346dccd8 Liam Girdwood 2015-05-29 959 return ret;
8a9782346dccd8 Liam Girdwood 2015-05-29 960 }
8a9782346dccd8 Liam Girdwood 2015-05-29 961
8a9782346dccd8 Liam Girdwood 2015-05-29 962 static int soc_tplg_denum_create_values(struct soc_enum *se,
8a9782346dccd8 Liam Girdwood 2015-05-29 963 struct snd_soc_tplg_enum_control *ec)
8a9782346dccd8 Liam Girdwood 2015-05-29 964 {
8a9782346dccd8 Liam Girdwood 2015-05-29 @965 if (ec->items > sizeof(*ec->values))
8a9782346dccd8 Liam Girdwood 2015-05-29 966 return -EINVAL;
8a9782346dccd8 Liam Girdwood 2015-05-29 967
376c0afe2f0047 Andrzej Hajda 2015-08-07 968 se->dobj.control.dvalues = kmemdup(ec->values,
376c0afe2f0047 Andrzej Hajda 2015-08-07 969 ec->items * sizeof(u32),
376c0afe2f0047 Andrzej Hajda 2015-08-07 970 GFP_KERNEL);
8a9782346dccd8 Liam Girdwood 2015-05-29 971 if (!se->dobj.control.dvalues)
8a9782346dccd8 Liam Girdwood 2015-05-29 972 return -ENOMEM;
8a9782346dccd8 Liam Girdwood 2015-05-29 973
8a9782346dccd8 Liam Girdwood 2015-05-29 974 return 0;
8a9782346dccd8 Liam Girdwood 2015-05-29 975 }
8a9782346dccd8 Liam Girdwood 2015-05-29 976
:::::: The code at line 790 was first introduced by commit
:::::: 8a9782346dccd82cf912552735bda619de4efd8c ASoC: topology: Add topology core
:::::: TO: Liam Girdwood <liam.r.girdwood@linux.intel.com>
:::::: CC: Mark Brown <broonie@kernel.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
reply other threads:[~2023-05-13 12:23 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202305132033.BI5EScAZ-lkp@intel.com \
--to=lkp@intel.com \
--cc=oe-kbuild@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.