CC: [email protected]
CC: [email protected]
CC: [email protected]
TO: "Pierre-Louis Bossart" <[email protected]>
CC: Takashi Iwai <[email protected]>
CC: Kai Vehmanen <[email protected]>
CC: Guennadi Liakhovetski <[email protected]>
CC: Bard Liao <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   26291c54e111ff6ba87a164d85d4a4e134b7315c
commit: 8d4ba1be3d2257606e04aff412829d8972670750 ASoC: SOF: pci: split PCI into 
different drivers
date:   11 months ago
:::::: branch date: 2 days ago
:::::: commit date: 11 months ago
config: riscv-randconfig-c006-20220131 
(https://download.01.org/0day-ci/archive/20220202/[email protected]/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
2cdbaca3943a4d6259119f185656328bd3805b68)
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8d4ba1be3d2257606e04aff412829d8972670750
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 8d4ba1be3d2257606e04aff412829d8972670750
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv 
clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
                           ^
   sound/core/seq/seq_prioq.c:292:16: note: Access to field 'next' results in a 
dereference of a null pointer (loaded from variable 'prev')
                                   prev->next = cell->next;
                                   ~~~~       ^
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   sound/soc/xtensa/xtfpga-i2s.c:285:11: warning: Value stored to 'channels' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           unsigned channels = params_channels(params);
                    ^~~~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/xtensa/xtfpga-i2s.c:285:11: note: Value stored to 'channels' 
during its initialization is never read
           unsigned channels = params_channels(params);
                    ^~~~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   sound/hda/hdmi_chmap.c:331:3: warning: Value stored to 'channel' is never 
read [clang-analyzer-deadcode.DeadStores]
                   channel = chmap->ops.pin_get_slot_channel(
                   ^         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/hda/hdmi_chmap.c:331:3: note: Value stored to 'channel' is never read
                   channel = chmap->ops.pin_get_slot_channel(
                   ^         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   sound/soc/generic/audio-graph-card.c:618:17: warning: Value stored to 'dev' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct device *dev = simple_priv_to_dev(priv);
                          ^~~
   sound/soc/generic/audio-graph-card.c:618:17: note: Value stored to 'dev' 
during its initialization is never read
           struct device *dev = simple_priv_to_dev(priv);
                          ^~~
   sound/soc/generic/audio-graph-card.c:634:17: warning: Value stored to 'dev' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct device *dev = simple_priv_to_dev(priv);
                          ^~~
   sound/soc/generic/audio-graph-card.c:634:17: note: Value stored to 'dev' 
during its initialization is never read
           struct device *dev = simple_priv_to_dev(priv);
                          ^~~
   sound/soc/generic/audio-graph-card.c:653:17: warning: Value stored to 'dev' 
during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct device *dev = simple_priv_to_dev(priv);
                          ^~~
   sound/soc/generic/audio-graph-card.c:653:17: note: Value stored to 'dev' 
during its initialization is never read
           struct device *dev = simple_priv_to_dev(priv);
                          ^~~
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   sound/soc/bcm/bcm2835-i2s.c:356:2: warning: Value stored to 'data_delay' is 
never read [clang-analyzer-deadcode.DeadStores]
           data_delay = 0;
           ^            ~
   sound/soc/bcm/bcm2835-i2s.c:356:2: note: Value stored to 'data_delay' is 
never read
           data_delay = 0;
           ^            ~
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   4 warnings generated.
>> sound/soc/sof/intel/hda-ipc.c:150:3: warning: Value stored to 'msg_ext' is 
>> never read [clang-analyzer-deadcode.DeadStores]
                   msg_ext = hipcie & HDA_DSP_REG_HIPCIE_MSG_MASK;
                   ^         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/sof/intel/hda-ipc.c:150:3: note: Value stored to 'msg_ext' is 
never read
                   msg_ext = hipcie & HDA_DSP_REG_HIPCIE_MSG_MASK;
                   ^         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> sound/soc/sof/intel/hda-ipc.c:187:3: warning: Value stored to 'msg' is never 
>> read [clang-analyzer-deadcode.DeadStores]
                   msg = hipct & HDA_DSP_REG_HIPCT_MSG_MASK;
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/sof/intel/hda-ipc.c:187:3: note: Value stored to 'msg' is never 
read
                   msg = hipct & HDA_DSP_REG_HIPCT_MSG_MASK;
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
>> sound/soc/sof/intel/hda-dai.c:265:22: warning: Value stored to 'sdev' during 
>> its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct snd_sof_dev *sdev =
                               ^~~~
   sound/soc/sof/intel/hda-dai.c:265:22: note: Value stored to 'sdev' during 
its initialization is never read
           struct snd_sof_dev *sdev =
                               ^~~~
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   4 warnings generated.
>> sound/soc/sof/intel/cnl.c:50:3: warning: Value stored to 'msg_ext' is never 
>> read [clang-analyzer-deadcode.DeadStores]
                   msg_ext = hipci & CNL_DSP_REG_HIPCIDR_MSG_MASK;
                   ^         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/sof/intel/cnl.c:50:3: note: Value stored to 'msg_ext' is never read
                   msg_ext = hipci & CNL_DSP_REG_HIPCIDR_MSG_MASK;
                   ^         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> sound/soc/sof/intel/cnl.c:77:3: warning: Value stored to 'msg' is never read 
>> [clang-analyzer-deadcode.DeadStores]
                   msg = hipctdr & CNL_DSP_REG_HIPCTDR_MSG_MASK;
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/sof/intel/cnl.c:77:3: note: Value stored to 'msg' is never read
                   msg = hipctdr & CNL_DSP_REG_HIPCTDR_MSG_MASK;
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   7 warnings generated.
   sound/soc/codecs/wm8903.c:434:3: warning: Value stored to 'best' is never 
read [clang-analyzer-deadcode.DeadStores]
                   best = 0;
                   ^      ~
   sound/soc/codecs/wm8903.c:434:3: note: Value stored to 'best' is never read
                   best = 0;
                   ^      ~
   sound/soc/codecs/wm8903.c:1552:2: warning: Value stored to 'best_val' is 
never read [clang-analyzer-deadcode.DeadStores]
           best_val = ((clk_sys * 10) / bclk_divs[0].ratio) - bclk;
           ^          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/codecs/wm8903.c:1552:2: note: Value stored to 'best_val' is never 
read
           best_val = ((clk_sys * 10) / bclk_divs[0].ratio) - bclk;
           ^          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/codecs/wm8903.c:1559:3: warning: Value stored to 'best_val' is 
never read [clang-analyzer-deadcode.DeadStores]
                   best_val = cur_val;
                   ^          ~~~~~~~
   sound/soc/codecs/wm8903.c:1559:3: note: Value stored to 'best_val' is never 
read
                   best_val = cur_val;
                   ^          ~~~~~~~
   Suppressed 4 warnings (4 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (4 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   6 warnings generated.
   sound/soc/codecs/wm8960.c:508:18: warning: Access to field 'lout1' results 
in a dereference of a null pointer (loaded from variable 'wm8960') 
[clang-analyzer-core.NullDereference]
                           wm8960->lout1 = w;
                                         ^
   sound/soc/codecs/wm8960.c:1349:6: note: Assuming field 'capless' is false
           if (pdata->capless)
               ^~~~~~~~~~~~~~
   sound/soc/codecs/wm8960.c:1349:2: note: Taking false branch
           if (pdata->capless)
           ^
   sound/soc/codecs/wm8960.c:1356:2: note: Calling 'wm8960_add_widgets'
           wm8960_add_widgets(component);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/codecs/wm8960.c:472:2: note: 'wm8960' initialized here
           struct wm8960_priv *wm8960 = 
snd_soc_component_get_drvdata(component);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/codecs/wm8960.c:485:6: note: Assuming 'pdata' is null
           if (pdata && pdata->capless) {
               ^~~~~
   sound/soc/codecs/wm8960.c:485:12: note: Left side of '&&' is false
           if (pdata && pdata->capless) {
                     ^
   sound/soc/codecs/wm8960.c:504:2: note: Left side of '&&' is false
           list_for_each_entry(w, &component->card->widgets, list) {
           ^
   include/linux/list.h:628:13: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
                      ^
   include/linux/list.h:522:2: note: expanded from macro 'list_first_entry'
           list_entry((ptr)->next, type, member)
           ^
   include/linux/list.h:511:2: note: expanded from macro 'list_entry'
           container_of(ptr, type, member)
           ^
   include/linux/kernel.h:709:61: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
                                                                      ^
   sound/soc/codecs/wm8960.c:504:2: note: Taking false branch
           list_for_each_entry(w, &component->card->widgets, list) {
           ^
   include/linux/list.h:628:13: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
                      ^
   include/linux/list.h:522:2: note: expanded from macro 'list_first_entry'
           list_entry((ptr)->next, type, member)
           ^
   include/linux/list.h:511:2: note: expanded from macro 'list_entry'
           container_of(ptr, type, member)
           ^
   note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to 
see all)
   include/linux/compiler_types.h:320:2: note: expanded from macro 
'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
           ^
   include/linux/compiler_types.h:308:2: note: expanded from macro 
'_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:300:3: note: expanded from macro 
'__compiletime_assert'
                   if (!(condition))                                       \
                   ^
   sound/soc/codecs/wm8960.c:504:2: note: Loop condition is false.  Exiting loop
           list_for_each_entry(w, &component->card->widgets, list) {
           ^
   include/linux/list.h:628:13: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
                      ^
   include/linux/list.h:522:2: note: expanded from macro 'list_first_entry'

vim +/msg_ext +150 sound/soc/sof/intel/hda-ipc.c

6e9cde974863dc Liam Girdwood         2019-04-12  127  
6e9cde974863dc Liam Girdwood         2019-04-12  128  /* IPC handler thread */
6e9cde974863dc Liam Girdwood         2019-04-12  129  irqreturn_t 
hda_dsp_ipc_irq_thread(int irq, void *context)
6e9cde974863dc Liam Girdwood         2019-04-12  130  {
6e9cde974863dc Liam Girdwood         2019-04-12  131    struct snd_sof_dev 
*sdev = context;
6e9cde974863dc Liam Girdwood         2019-04-12  132    u32 hipci;
6e9cde974863dc Liam Girdwood         2019-04-12  133    u32 hipcie;
6e9cde974863dc Liam Girdwood         2019-04-12  134    u32 hipct;
6e9cde974863dc Liam Girdwood         2019-04-12  135    u32 hipcte;
6e9cde974863dc Liam Girdwood         2019-04-12  136    u32 msg;
6e9cde974863dc Liam Girdwood         2019-04-12  137    u32 msg_ext;
66e65339b824a5 Pierre-Louis Bossart  2019-06-03  138    bool ipc_irq = false;
6e9cde974863dc Liam Girdwood         2019-04-12  139  
6e9cde974863dc Liam Girdwood         2019-04-12  140    /* read IPC status */
6e9cde974863dc Liam Girdwood         2019-04-12  141    hipcie = 
snd_sof_dsp_read(sdev, HDA_DSP_BAR,
6e9cde974863dc Liam Girdwood         2019-04-12  142                            
  HDA_DSP_REG_HIPCIE);
6e9cde974863dc Liam Girdwood         2019-04-12  143    hipct = 
snd_sof_dsp_read(sdev, HDA_DSP_BAR, HDA_DSP_REG_HIPCT);
5dbeb828742198 Pierre-Louis Bossart  2019-06-03  144    hipci = 
snd_sof_dsp_read(sdev, HDA_DSP_BAR, HDA_DSP_REG_HIPCI);
5dbeb828742198 Pierre-Louis Bossart  2019-06-03  145    hipcte = 
snd_sof_dsp_read(sdev, HDA_DSP_BAR, HDA_DSP_REG_HIPCTE);
6e9cde974863dc Liam Girdwood         2019-04-12  146  
6e9cde974863dc Liam Girdwood         2019-04-12  147    /* is this a reply 
message from the DSP */
09a173a63fbb89 Pierre-Louis Bossart  2019-06-03  148    if (hipcie & 
HDA_DSP_REG_HIPCIE_DONE) {
6e9cde974863dc Liam Girdwood         2019-04-12  149            msg = hipci & 
HDA_DSP_REG_HIPCI_MSG_MASK;
6e9cde974863dc Liam Girdwood         2019-04-12 @150            msg_ext = 
hipcie & HDA_DSP_REG_HIPCIE_MSG_MASK;
6e9cde974863dc Liam Girdwood         2019-04-12  151  
6e9cde974863dc Liam Girdwood         2019-04-12  152            
dev_vdbg(sdev->dev,
6e9cde974863dc Liam Girdwood         2019-04-12  153                     "ipc: 
firmware response, msg:0x%x, msg_ext:0x%x\n",
6e9cde974863dc Liam Girdwood         2019-04-12  154                     msg, 
msg_ext);
6e9cde974863dc Liam Girdwood         2019-04-12  155  
6e9cde974863dc Liam Girdwood         2019-04-12  156            /* mask Done 
interrupt */
6e9cde974863dc Liam Girdwood         2019-04-12  157            
snd_sof_dsp_update_bits(sdev, HDA_DSP_BAR,
6e9cde974863dc Liam Girdwood         2019-04-12  158                            
        HDA_DSP_REG_HIPCCTL,
6e9cde974863dc Liam Girdwood         2019-04-12  159                            
        HDA_DSP_REG_HIPCCTL_DONE, 0);
6e9cde974863dc Liam Girdwood         2019-04-12  160  
1183e9a634db06 Guennadi Liakhovetski 2019-05-24  161            /*
1183e9a634db06 Guennadi Liakhovetski 2019-05-24  162             * Make sure 
the interrupt thread cannot be preempted between
1183e9a634db06 Guennadi Liakhovetski 2019-05-24  163             * waking up 
the sender and re-enabling the interrupt. Also
1183e9a634db06 Guennadi Liakhovetski 2019-05-24  164             * protect 
against a theoretical race with sof_ipc_tx_message():
1183e9a634db06 Guennadi Liakhovetski 2019-05-24  165             * if the DSP 
is fast enough to receive an IPC message, reply to
1183e9a634db06 Guennadi Liakhovetski 2019-05-24  166             * it, and the 
host interrupt processing calls this function on
1183e9a634db06 Guennadi Liakhovetski 2019-05-24  167             * a different 
core from the one, where the sending is taking
1183e9a634db06 Guennadi Liakhovetski 2019-05-24  168             * place, the 
message might not yet be marked as expecting a
1183e9a634db06 Guennadi Liakhovetski 2019-05-24  169             * reply.
1183e9a634db06 Guennadi Liakhovetski 2019-05-24  170             */
1183e9a634db06 Guennadi Liakhovetski 2019-05-24  171            
spin_lock_irq(&sdev->ipc_lock);
1183e9a634db06 Guennadi Liakhovetski 2019-05-24  172  
9b65b2a80e700c Amery Song            2020-03-12  173            /* handle 
immediate reply from DSP core */
6e9cde974863dc Liam Girdwood         2019-04-12  174            
hda_dsp_ipc_get_reply(sdev);
6e9cde974863dc Liam Girdwood         2019-04-12  175            
snd_sof_ipc_reply(sdev, msg);
6e9cde974863dc Liam Girdwood         2019-04-12  176  
6e9cde974863dc Liam Girdwood         2019-04-12  177            /* set the done 
bit */
6e9cde974863dc Liam Girdwood         2019-04-12  178            
hda_dsp_ipc_dsp_done(sdev);
6e9cde974863dc Liam Girdwood         2019-04-12  179  
1183e9a634db06 Guennadi Liakhovetski 2019-05-24  180            
spin_unlock_irq(&sdev->ipc_lock);
1183e9a634db06 Guennadi Liakhovetski 2019-05-24  181  
66e65339b824a5 Pierre-Louis Bossart  2019-06-03  182            ipc_irq = true;
6e9cde974863dc Liam Girdwood         2019-04-12  183    }
6e9cde974863dc Liam Girdwood         2019-04-12  184  
6e9cde974863dc Liam Girdwood         2019-04-12  185    /* is this a new 
message from DSP */
09a173a63fbb89 Pierre-Louis Bossart  2019-06-03  186    if (hipct & 
HDA_DSP_REG_HIPCT_BUSY) {
6e9cde974863dc Liam Girdwood         2019-04-12 @187            msg = hipct & 
HDA_DSP_REG_HIPCT_MSG_MASK;
6e9cde974863dc Liam Girdwood         2019-04-12  188            msg_ext = 
hipcte & HDA_DSP_REG_HIPCTE_MSG_MASK;
6e9cde974863dc Liam Girdwood         2019-04-12  189  
6e9cde974863dc Liam Girdwood         2019-04-12  190            
dev_vdbg(sdev->dev,
6e9cde974863dc Liam Girdwood         2019-04-12  191                     "ipc: 
firmware initiated, msg:0x%x, msg_ext:0x%x\n",
6e9cde974863dc Liam Girdwood         2019-04-12  192                     msg, 
msg_ext);
6e9cde974863dc Liam Girdwood         2019-04-12  193  
6e9cde974863dc Liam Girdwood         2019-04-12  194            /* mask BUSY 
interrupt */
6e9cde974863dc Liam Girdwood         2019-04-12  195            
snd_sof_dsp_update_bits(sdev, HDA_DSP_BAR,
6e9cde974863dc Liam Girdwood         2019-04-12  196                            
        HDA_DSP_REG_HIPCCTL,
6e9cde974863dc Liam Girdwood         2019-04-12  197                            
        HDA_DSP_REG_HIPCCTL_BUSY, 0);
6e9cde974863dc Liam Girdwood         2019-04-12  198  
6e9cde974863dc Liam Girdwood         2019-04-12  199            /* handle 
messages from DSP */
6e9cde974863dc Liam Girdwood         2019-04-12  200            if ((hipct & 
SOF_IPC_PANIC_MAGIC_MASK) == SOF_IPC_PANIC_MAGIC) {
6e9cde974863dc Liam Girdwood         2019-04-12  201                    /* this 
is a PANIC message !! */
6e9cde974863dc Liam Girdwood         2019-04-12  202                    
snd_sof_dsp_panic(sdev, HDA_DSP_PANIC_OFFSET(msg_ext));
6e9cde974863dc Liam Girdwood         2019-04-12  203            } else {
6e9cde974863dc Liam Girdwood         2019-04-12  204                    /* 
normal message - process normally */
6e9cde974863dc Liam Girdwood         2019-04-12  205                    
snd_sof_ipc_msgs_rx(sdev);
6e9cde974863dc Liam Girdwood         2019-04-12  206            }
6e9cde974863dc Liam Girdwood         2019-04-12  207  
6e9cde974863dc Liam Girdwood         2019-04-12  208            
hda_dsp_ipc_host_done(sdev);
6e9cde974863dc Liam Girdwood         2019-04-12  209  
66e65339b824a5 Pierre-Louis Bossart  2019-06-03  210            ipc_irq = true;
6e9cde974863dc Liam Girdwood         2019-04-12  211    }
6e9cde974863dc Liam Girdwood         2019-04-12  212  
66e65339b824a5 Pierre-Louis Bossart  2019-06-03  213    if (!ipc_irq) {
66e65339b824a5 Pierre-Louis Bossart  2019-06-03  214            /*
66e65339b824a5 Pierre-Louis Bossart  2019-06-03  215             * This 
interrupt is not shared so no need to return IRQ_NONE.
66e65339b824a5 Pierre-Louis Bossart  2019-06-03  216             */
717dedb1dcee92 Kai Vehmanen          2019-07-22  217            
dev_dbg_ratelimited(sdev->dev,
717dedb1dcee92 Kai Vehmanen          2019-07-22  218                            
    "nothing to do in IPC IRQ thread\n");
66e65339b824a5 Pierre-Louis Bossart  2019-06-03  219    }
66e65339b824a5 Pierre-Louis Bossart  2019-06-03  220  
66e65339b824a5 Pierre-Louis Bossart  2019-06-03  221    return IRQ_HANDLED;
6e9cde974863dc Liam Girdwood         2019-04-12  222  }
6e9cde974863dc Liam Girdwood         2019-04-12  223  

:::::: The code at line 150 was first introduced by commit
:::::: 6e9cde974863dc9d9c6cdb178f625e410c5be3d0 ASoC: SOF: Intel: Add Intel 
specific HDA IPC mechanisms.

:::::: TO: Liam Girdwood <[email protected]>
:::::: CC: Mark Brown <[email protected]>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to