sound/soc/intel/skylake/skl-ssp-clk.c:18:25: note: in expansion of macro 'container_of'
From: kbuild test robot
Date: Wed May 22 2019 - 19:29:16 EST
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 54dee406374ce8adb352c48e175176247cb8db7c
commit: 164a263bf8d003e4cbb197d52b74d26df72604d7 ASoC: Intel: Make boards more available for compile test
date: 3 weeks ago
config: ia64-allyesconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 7.4.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 164a263bf8d003e4cbb197d52b74d26df72604d7
# save the attached .config to linux build tree
GCC_VERSION=7.4.0 make.cross ARCH=ia64
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>
All warnings (new ones prefixed by >>):
sound/soc/intel/skylake/skl-ssp-clk.c:26:16: error: field 'hw' has incomplete type
struct clk_hw hw;
^~
In file included from include/linux/kernel.h:11:0,
from sound/soc/intel/skylake/skl-ssp-clk.c:8:
sound/soc/intel/skylake/skl-ssp-clk.c: In function 'skl_clk_prepare':
include/linux/kernel.h:979:32: error: dereferencing pointer to incomplete type 'struct clk_hw'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~
include/linux/compiler.h:324:9: note: in definition of macro '__compiletime_assert'
if (!(condition)) \
^~~~~~~~~
include/linux/compiler.h:344:2: note: in expansion of macro '_compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~~~~~~~~~~~~~~~~~
include/linux/kernel.h:979:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~~~~~~~~~~~
include/linux/kernel.h:979:20: note: in expansion of macro '__same_type'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~~~~~~
>> sound/soc/intel/skylake/skl-ssp-clk.c:18:25: note: in expansion of macro 'container_of'
#define to_skl_clk(_hw) container_of(_hw, struct skl_clk, hw)
^~~~~~~~~~~~
>> sound/soc/intel/skylake/skl-ssp-clk.c:201:27: note: in expansion of macro 'to_skl_clk'
struct skl_clk *clkdev = to_skl_clk(hw);
^~~~~~~~~~
sound/soc/intel/skylake/skl-ssp-clk.c: At top level:
sound/soc/intel/skylake/skl-ssp-clk.c:260:21: error: variable 'skl_clk_ops' has initializer but incomplete type
static const struct clk_ops skl_clk_ops = {
^~~~~~~
sound/soc/intel/skylake/skl-ssp-clk.c:261:3: error: 'const struct clk_ops' has no member named 'prepare'
.prepare = skl_clk_prepare,
^~~~~~~
sound/soc/intel/skylake/skl-ssp-clk.c:261:13: warning: excess elements in struct initializer
.prepare = skl_clk_prepare,
^~~~~~~~~~~~~~~
sound/soc/intel/skylake/skl-ssp-clk.c:261:13: note: (near initialization for 'skl_clk_ops')
sound/soc/intel/skylake/skl-ssp-clk.c:262:3: error: 'const struct clk_ops' has no member named 'unprepare'
.unprepare = skl_clk_unprepare,
^~~~~~~~~
sound/soc/intel/skylake/skl-ssp-clk.c:262:15: warning: excess elements in struct initializer
.unprepare = skl_clk_unprepare,
^~~~~~~~~~~~~~~~~
sound/soc/intel/skylake/skl-ssp-clk.c:262:15: note: (near initialization for 'skl_clk_ops')
sound/soc/intel/skylake/skl-ssp-clk.c:263:3: error: 'const struct clk_ops' has no member named 'set_rate'
.set_rate = skl_clk_set_rate,
^~~~~~~~
sound/soc/intel/skylake/skl-ssp-clk.c:263:14: warning: excess elements in struct initializer
.set_rate = skl_clk_set_rate,
^~~~~~~~~~~~~~~~
sound/soc/intel/skylake/skl-ssp-clk.c:263:14: note: (near initialization for 'skl_clk_ops')
sound/soc/intel/skylake/skl-ssp-clk.c:264:3: error: 'const struct clk_ops' has no member named 'round_rate'
.round_rate = skl_clk_round_rate,
^~~~~~~~~~
sound/soc/intel/skylake/skl-ssp-clk.c:264:16: warning: excess elements in struct initializer
.round_rate = skl_clk_round_rate,
^~~~~~~~~~~~~~~~~~
sound/soc/intel/skylake/skl-ssp-clk.c:264:16: note: (near initialization for 'skl_clk_ops')
sound/soc/intel/skylake/skl-ssp-clk.c:265:3: error: 'const struct clk_ops' has no member named 'recalc_rate'
.recalc_rate = skl_clk_recalc_rate,
^~~~~~~~~~~
sound/soc/intel/skylake/skl-ssp-clk.c:265:17: warning: excess elements in struct initializer
.recalc_rate = skl_clk_recalc_rate,
^~~~~~~~~~~~~~~~~~~
sound/soc/intel/skylake/skl-ssp-clk.c:265:17: note: (near initialization for 'skl_clk_ops')
sound/soc/intel/skylake/skl-ssp-clk.c: In function 'unregister_parent_src_clk':
sound/soc/intel/skylake/skl-ssp-clk.c:273:3: error: implicit declaration of function 'clk_hw_unregister_fixed_rate'; did you mean 'clk_hw_register_clkdev'? [-Werror=implicit-function-declaration]
clk_hw_unregister_fixed_rate(pclk[id].hw);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
clk_hw_register_clkdev
sound/soc/intel/skylake/skl-ssp-clk.c: In function 'skl_register_parent_clks':
sound/soc/intel/skylake/skl-ssp-clk.c:294:18: error: implicit declaration of function 'clk_hw_register_fixed_rate'; did you mean 'clk_hw_register_clkdev'? [-Werror=implicit-function-declaration]
parent[i].hw = clk_hw_register_fixed_rate(dev, pclk[i].name,
^~~~~~~~~~~~~~~~~~~~~~~~~~
clk_hw_register_clkdev
>> sound/soc/intel/skylake/skl-ssp-clk.c:294:16: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
parent[i].hw = clk_hw_register_fixed_rate(dev, pclk[i].name,
^
sound/soc/intel/skylake/skl-ssp-clk.c: In function 'register_skl_clk':
sound/soc/intel/skylake/skl-ssp-clk.c:321:23: error: storage size of 'init' isn't known
struct clk_init_data init;
^~~~
sound/soc/intel/skylake/skl-ssp-clk.c:331:15: error: 'CLK_SET_RATE_GATE' undeclared (first use in this function); did you mean 'DL_STATE_NONE'?
init.flags = CLK_SET_RATE_GATE;
^~~~~~~~~~~~~~~~~
DL_STATE_NONE
sound/soc/intel/skylake/skl-ssp-clk.c:331:15: note: each undeclared identifier is reported only once for each function it appears in
sound/soc/intel/skylake/skl-ssp-clk.c:338:8: error: implicit declaration of function 'devm_clk_hw_register'; did you mean 'devm_clk_hw_register_clkdev'? [-Werror=implicit-function-declaration]
ret = devm_clk_hw_register(dev, &clkdev->hw);
^~~~~~~~~~~~~~~~~~~~
devm_clk_hw_register_clkdev
sound/soc/intel/skylake/skl-ssp-clk.c:321:23: warning: unused variable 'init' [-Wunused-variable]
struct clk_init_data init;
^~~~
sound/soc/intel/skylake/skl-ssp-clk.c: At top level:
sound/soc/intel/skylake/skl-ssp-clk.c:260:29: error: storage size of 'skl_clk_ops' isn't known
static const struct clk_ops skl_clk_ops = {
^~~~~~~~~~~
cc1: some warnings being treated as errors
vim +/container_of +18 sound/soc/intel/skylake/skl-ssp-clk.c
01f50d69 Sriram Periyasamy 2018-01-04 17
01f50d69 Sriram Periyasamy 2018-01-04 @18 #define to_skl_clk(_hw) container_of(_hw, struct skl_clk, hw)
01f50d69 Sriram Periyasamy 2018-01-04 19
01f50d69 Sriram Periyasamy 2018-01-04 20 struct skl_clk_parent {
01f50d69 Sriram Periyasamy 2018-01-04 21 struct clk_hw *hw;
01f50d69 Sriram Periyasamy 2018-01-04 22 struct clk_lookup *lookup;
01f50d69 Sriram Periyasamy 2018-01-04 23 };
01f50d69 Sriram Periyasamy 2018-01-04 24
01f50d69 Sriram Periyasamy 2018-01-04 25 struct skl_clk {
01f50d69 Sriram Periyasamy 2018-01-04 26 struct clk_hw hw;
01f50d69 Sriram Periyasamy 2018-01-04 27 struct clk_lookup *lookup;
01f50d69 Sriram Periyasamy 2018-01-04 28 unsigned long rate;
01f50d69 Sriram Periyasamy 2018-01-04 29 struct skl_clk_pdata *pdata;
01f50d69 Sriram Periyasamy 2018-01-04 30 u32 id;
01f50d69 Sriram Periyasamy 2018-01-04 31 };
01f50d69 Sriram Periyasamy 2018-01-04 32
01f50d69 Sriram Periyasamy 2018-01-04 33 struct skl_clk_data {
01f50d69 Sriram Periyasamy 2018-01-04 34 struct skl_clk_parent parent[SKL_MAX_CLK_SRC];
01f50d69 Sriram Periyasamy 2018-01-04 35 struct skl_clk *clk[SKL_MAX_CLK_CNT];
01f50d69 Sriram Periyasamy 2018-01-04 36 u8 avail_clk_cnt;
01f50d69 Sriram Periyasamy 2018-01-04 37 };
01f50d69 Sriram Periyasamy 2018-01-04 38
01f50d69 Sriram Periyasamy 2018-01-04 39 static int skl_get_clk_type(u32 index)
01f50d69 Sriram Periyasamy 2018-01-04 40 {
01f50d69 Sriram Periyasamy 2018-01-04 41 switch (index) {
01f50d69 Sriram Periyasamy 2018-01-04 42 case 0 ... (SKL_SCLK_OFS - 1):
01f50d69 Sriram Periyasamy 2018-01-04 43 return SKL_MCLK;
01f50d69 Sriram Periyasamy 2018-01-04 44
01f50d69 Sriram Periyasamy 2018-01-04 45 case SKL_SCLK_OFS ... (SKL_SCLKFS_OFS - 1):
01f50d69 Sriram Periyasamy 2018-01-04 46 return SKL_SCLK;
01f50d69 Sriram Periyasamy 2018-01-04 47
01f50d69 Sriram Periyasamy 2018-01-04 48 case SKL_SCLKFS_OFS ... (SKL_MAX_CLK_CNT - 1):
01f50d69 Sriram Periyasamy 2018-01-04 49 return SKL_SCLK_FS;
01f50d69 Sriram Periyasamy 2018-01-04 50
01f50d69 Sriram Periyasamy 2018-01-04 51 default:
01f50d69 Sriram Periyasamy 2018-01-04 52 return -EINVAL;
01f50d69 Sriram Periyasamy 2018-01-04 53 }
01f50d69 Sriram Periyasamy 2018-01-04 54 }
01f50d69 Sriram Periyasamy 2018-01-04 55
01f50d69 Sriram Periyasamy 2018-01-04 56 static int skl_get_vbus_id(u32 index, u8 clk_type)
01f50d69 Sriram Periyasamy 2018-01-04 57 {
01f50d69 Sriram Periyasamy 2018-01-04 58 switch (clk_type) {
01f50d69 Sriram Periyasamy 2018-01-04 59 case SKL_MCLK:
01f50d69 Sriram Periyasamy 2018-01-04 60 return index;
01f50d69 Sriram Periyasamy 2018-01-04 61
01f50d69 Sriram Periyasamy 2018-01-04 62 case SKL_SCLK:
01f50d69 Sriram Periyasamy 2018-01-04 63 return index - SKL_SCLK_OFS;
01f50d69 Sriram Periyasamy 2018-01-04 64
01f50d69 Sriram Periyasamy 2018-01-04 65 case SKL_SCLK_FS:
01f50d69 Sriram Periyasamy 2018-01-04 66 return index - SKL_SCLKFS_OFS;
01f50d69 Sriram Periyasamy 2018-01-04 67
01f50d69 Sriram Periyasamy 2018-01-04 68 default:
01f50d69 Sriram Periyasamy 2018-01-04 69 return -EINVAL;
01f50d69 Sriram Periyasamy 2018-01-04 70 }
01f50d69 Sriram Periyasamy 2018-01-04 71 }
01f50d69 Sriram Periyasamy 2018-01-04 72
01f50d69 Sriram Periyasamy 2018-01-04 73 static void skl_fill_clk_ipc(struct skl_clk_rate_cfg_table *rcfg, u8 clk_type)
01f50d69 Sriram Periyasamy 2018-01-04 74 {
01f50d69 Sriram Periyasamy 2018-01-04 75 struct nhlt_fmt_cfg *fmt_cfg;
01f50d69 Sriram Periyasamy 2018-01-04 76 union skl_clk_ctrl_ipc *ipc;
01f50d69 Sriram Periyasamy 2018-01-04 77 struct wav_fmt *wfmt;
01f50d69 Sriram Periyasamy 2018-01-04 78
01f50d69 Sriram Periyasamy 2018-01-04 79 if (!rcfg)
01f50d69 Sriram Periyasamy 2018-01-04 80 return;
01f50d69 Sriram Periyasamy 2018-01-04 81
01f50d69 Sriram Periyasamy 2018-01-04 82 ipc = &rcfg->dma_ctl_ipc;
01f50d69 Sriram Periyasamy 2018-01-04 83 if (clk_type == SKL_SCLK_FS) {
01f50d69 Sriram Periyasamy 2018-01-04 84 fmt_cfg = (struct nhlt_fmt_cfg *)rcfg->config;
01f50d69 Sriram Periyasamy 2018-01-04 85 wfmt = &fmt_cfg->fmt_ext.fmt;
01f50d69 Sriram Periyasamy 2018-01-04 86
01f50d69 Sriram Periyasamy 2018-01-04 87 /* Remove TLV Header size */
01f50d69 Sriram Periyasamy 2018-01-04 88 ipc->sclk_fs.hdr.size = sizeof(struct skl_dmactrl_sclkfs_cfg) -
01f50d69 Sriram Periyasamy 2018-01-04 89 sizeof(struct skl_tlv_hdr);
01f50d69 Sriram Periyasamy 2018-01-04 90 ipc->sclk_fs.sampling_frequency = wfmt->samples_per_sec;
01f50d69 Sriram Periyasamy 2018-01-04 91 ipc->sclk_fs.bit_depth = wfmt->bits_per_sample;
01f50d69 Sriram Periyasamy 2018-01-04 92 ipc->sclk_fs.valid_bit_depth =
01f50d69 Sriram Periyasamy 2018-01-04 93 fmt_cfg->fmt_ext.sample.valid_bits_per_sample;
01f50d69 Sriram Periyasamy 2018-01-04 94 ipc->sclk_fs.number_of_channels = wfmt->channels;
01f50d69 Sriram Periyasamy 2018-01-04 95 } else {
01f50d69 Sriram Periyasamy 2018-01-04 96 ipc->mclk.hdr.type = DMA_CLK_CONTROLS;
01f50d69 Sriram Periyasamy 2018-01-04 97 /* Remove TLV Header size */
01f50d69 Sriram Periyasamy 2018-01-04 98 ipc->mclk.hdr.size = sizeof(struct skl_dmactrl_mclk_cfg) -
01f50d69 Sriram Periyasamy 2018-01-04 99 sizeof(struct skl_tlv_hdr);
01f50d69 Sriram Periyasamy 2018-01-04 100 }
01f50d69 Sriram Periyasamy 2018-01-04 101 }
01f50d69 Sriram Periyasamy 2018-01-04 102
01f50d69 Sriram Periyasamy 2018-01-04 103 /* Sends dma control IPC to turn the clock ON/OFF */
01f50d69 Sriram Periyasamy 2018-01-04 104 static int skl_send_clk_dma_control(struct skl *skl,
01f50d69 Sriram Periyasamy 2018-01-04 105 struct skl_clk_rate_cfg_table *rcfg,
01f50d69 Sriram Periyasamy 2018-01-04 106 u32 vbus_id, u8 clk_type,
01f50d69 Sriram Periyasamy 2018-01-04 107 bool enable)
01f50d69 Sriram Periyasamy 2018-01-04 108 {
01f50d69 Sriram Periyasamy 2018-01-04 109 struct nhlt_specific_cfg *sp_cfg;
01f50d69 Sriram Periyasamy 2018-01-04 110 u32 i2s_config_size, node_id = 0;
01f50d69 Sriram Periyasamy 2018-01-04 111 struct nhlt_fmt_cfg *fmt_cfg;
01f50d69 Sriram Periyasamy 2018-01-04 112 union skl_clk_ctrl_ipc *ipc;
01f50d69 Sriram Periyasamy 2018-01-04 113 void *i2s_config = NULL;
01f50d69 Sriram Periyasamy 2018-01-04 114 u8 *data, size;
01f50d69 Sriram Periyasamy 2018-01-04 115 int ret;
01f50d69 Sriram Periyasamy 2018-01-04 116
01f50d69 Sriram Periyasamy 2018-01-04 117 if (!rcfg)
01f50d69 Sriram Periyasamy 2018-01-04 118 return -EIO;
01f50d69 Sriram Periyasamy 2018-01-04 119
01f50d69 Sriram Periyasamy 2018-01-04 120 ipc = &rcfg->dma_ctl_ipc;
01f50d69 Sriram Periyasamy 2018-01-04 121 fmt_cfg = (struct nhlt_fmt_cfg *)rcfg->config;
01f50d69 Sriram Periyasamy 2018-01-04 122 sp_cfg = &fmt_cfg->config;
01f50d69 Sriram Periyasamy 2018-01-04 123
01f50d69 Sriram Periyasamy 2018-01-04 124 if (clk_type == SKL_SCLK_FS) {
01f50d69 Sriram Periyasamy 2018-01-04 125 ipc->sclk_fs.hdr.type =
01f50d69 Sriram Periyasamy 2018-01-04 126 enable ? DMA_TRANSMITION_START : DMA_TRANSMITION_STOP;
01f50d69 Sriram Periyasamy 2018-01-04 127 data = (u8 *)&ipc->sclk_fs;
01f50d69 Sriram Periyasamy 2018-01-04 128 size = sizeof(struct skl_dmactrl_sclkfs_cfg);
01f50d69 Sriram Periyasamy 2018-01-04 129 } else {
01f50d69 Sriram Periyasamy 2018-01-04 130 /* 1 to enable mclk, 0 to enable sclk */
01f50d69 Sriram Periyasamy 2018-01-04 131 if (clk_type == SKL_SCLK)
01f50d69 Sriram Periyasamy 2018-01-04 132 ipc->mclk.mclk = 0;
01f50d69 Sriram Periyasamy 2018-01-04 133 else
01f50d69 Sriram Periyasamy 2018-01-04 134 ipc->mclk.mclk = 1;
01f50d69 Sriram Periyasamy 2018-01-04 135
01f50d69 Sriram Periyasamy 2018-01-04 136 ipc->mclk.keep_running = enable;
01f50d69 Sriram Periyasamy 2018-01-04 137 ipc->mclk.warm_up_over = enable;
01f50d69 Sriram Periyasamy 2018-01-04 138 ipc->mclk.clk_stop_over = !enable;
01f50d69 Sriram Periyasamy 2018-01-04 139 data = (u8 *)&ipc->mclk;
01f50d69 Sriram Periyasamy 2018-01-04 140 size = sizeof(struct skl_dmactrl_mclk_cfg);
01f50d69 Sriram Periyasamy 2018-01-04 141 }
01f50d69 Sriram Periyasamy 2018-01-04 142
01f50d69 Sriram Periyasamy 2018-01-04 143 i2s_config_size = sp_cfg->size + size;
01f50d69 Sriram Periyasamy 2018-01-04 144 i2s_config = kzalloc(i2s_config_size, GFP_KERNEL);
01f50d69 Sriram Periyasamy 2018-01-04 145 if (!i2s_config)
01f50d69 Sriram Periyasamy 2018-01-04 146 return -ENOMEM;
01f50d69 Sriram Periyasamy 2018-01-04 147
01f50d69 Sriram Periyasamy 2018-01-04 148 /* copy blob */
01f50d69 Sriram Periyasamy 2018-01-04 149 memcpy(i2s_config, sp_cfg->caps, sp_cfg->size);
01f50d69 Sriram Periyasamy 2018-01-04 150
01f50d69 Sriram Periyasamy 2018-01-04 151 /* copy additional dma controls information */
01f50d69 Sriram Periyasamy 2018-01-04 152 memcpy(i2s_config + sp_cfg->size, data, size);
01f50d69 Sriram Periyasamy 2018-01-04 153
01f50d69 Sriram Periyasamy 2018-01-04 154 node_id = ((SKL_DMA_I2S_LINK_INPUT_CLASS << 8) | (vbus_id << 4));
01f50d69 Sriram Periyasamy 2018-01-04 155 ret = skl_dsp_set_dma_control(skl->skl_sst, (u32 *)i2s_config,
01f50d69 Sriram Periyasamy 2018-01-04 156 i2s_config_size, node_id);
01f50d69 Sriram Periyasamy 2018-01-04 157 kfree(i2s_config);
01f50d69 Sriram Periyasamy 2018-01-04 158
01f50d69 Sriram Periyasamy 2018-01-04 159 return ret;
01f50d69 Sriram Periyasamy 2018-01-04 160 }
01f50d69 Sriram Periyasamy 2018-01-04 161
01f50d69 Sriram Periyasamy 2018-01-04 162 static struct skl_clk_rate_cfg_table *skl_get_rate_cfg(
01f50d69 Sriram Periyasamy 2018-01-04 163 struct skl_clk_rate_cfg_table *rcfg,
01f50d69 Sriram Periyasamy 2018-01-04 164 unsigned long rate)
01f50d69 Sriram Periyasamy 2018-01-04 165 {
01f50d69 Sriram Periyasamy 2018-01-04 166 int i;
01f50d69 Sriram Periyasamy 2018-01-04 167
01f50d69 Sriram Periyasamy 2018-01-04 168 for (i = 0; (i < SKL_MAX_CLK_RATES) && rcfg[i].rate; i++) {
01f50d69 Sriram Periyasamy 2018-01-04 169 if (rcfg[i].rate == rate)
01f50d69 Sriram Periyasamy 2018-01-04 170 return &rcfg[i];
01f50d69 Sriram Periyasamy 2018-01-04 171 }
01f50d69 Sriram Periyasamy 2018-01-04 172
01f50d69 Sriram Periyasamy 2018-01-04 173 return NULL;
01f50d69 Sriram Periyasamy 2018-01-04 174 }
01f50d69 Sriram Periyasamy 2018-01-04 175
01f50d69 Sriram Periyasamy 2018-01-04 176 static int skl_clk_change_status(struct skl_clk *clkdev,
01f50d69 Sriram Periyasamy 2018-01-04 177 bool enable)
01f50d69 Sriram Periyasamy 2018-01-04 178 {
01f50d69 Sriram Periyasamy 2018-01-04 179 struct skl_clk_rate_cfg_table *rcfg;
01f50d69 Sriram Periyasamy 2018-01-04 180 int vbus_id, clk_type;
01f50d69 Sriram Periyasamy 2018-01-04 181
01f50d69 Sriram Periyasamy 2018-01-04 182 clk_type = skl_get_clk_type(clkdev->id);
01f50d69 Sriram Periyasamy 2018-01-04 183 if (clk_type < 0)
01f50d69 Sriram Periyasamy 2018-01-04 184 return clk_type;
01f50d69 Sriram Periyasamy 2018-01-04 185
01f50d69 Sriram Periyasamy 2018-01-04 186 vbus_id = skl_get_vbus_id(clkdev->id, clk_type);
01f50d69 Sriram Periyasamy 2018-01-04 187 if (vbus_id < 0)
01f50d69 Sriram Periyasamy 2018-01-04 188 return vbus_id;
01f50d69 Sriram Periyasamy 2018-01-04 189
01f50d69 Sriram Periyasamy 2018-01-04 190 rcfg = skl_get_rate_cfg(clkdev->pdata->ssp_clks[clkdev->id].rate_cfg,
01f50d69 Sriram Periyasamy 2018-01-04 191 clkdev->rate);
01f50d69 Sriram Periyasamy 2018-01-04 192 if (!rcfg)
01f50d69 Sriram Periyasamy 2018-01-04 193 return -EINVAL;
01f50d69 Sriram Periyasamy 2018-01-04 194
01f50d69 Sriram Periyasamy 2018-01-04 195 return skl_send_clk_dma_control(clkdev->pdata->pvt_data, rcfg,
01f50d69 Sriram Periyasamy 2018-01-04 196 vbus_id, clk_type, enable);
01f50d69 Sriram Periyasamy 2018-01-04 197 }
01f50d69 Sriram Periyasamy 2018-01-04 198
01f50d69 Sriram Periyasamy 2018-01-04 199 static int skl_clk_prepare(struct clk_hw *hw)
01f50d69 Sriram Periyasamy 2018-01-04 200 {
01f50d69 Sriram Periyasamy 2018-01-04 @201 struct skl_clk *clkdev = to_skl_clk(hw);
01f50d69 Sriram Periyasamy 2018-01-04 202
01f50d69 Sriram Periyasamy 2018-01-04 203 return skl_clk_change_status(clkdev, true);
01f50d69 Sriram Periyasamy 2018-01-04 204 }
01f50d69 Sriram Periyasamy 2018-01-04 205
:::::: The code at line 18 was first introduced by commit
:::::: 01f50d69bebe1bb0b30bba1eba3cdaf1f02dd7c4 ASoC: Intel: Skylake: Add ssp clock driver
:::::: TO: Sriram Periyasamy <sriramx.periyasamy@xxxxxxxxx>
:::::: CC: Mark Brown <broonie@xxxxxxxxxx>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip