Re: [PATCH 13/17] ASoC: Intel: avs: Dynamic firmware resources management

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2022-02-25 9:21 PM, Pierre-Louis Bossart wrote:
+static int avs_dsp_enable(struct avs_dev *adev, u32 core_mask)
+{
+    u32 mask;
+    int ret;
+
+    ret = avs_dsp_core_enable(adev, core_mask);
+    if (ret < 0)
+        return ret;
+
+    mask = core_mask & ~AVS_MAIN_CORE_MASK;

so here BIT(MAIN_CORE) is zero in mask


What's wrong with AVS_MAIN_CORE_MASK being used explicitly?

+    if (!mask)
+        /*
+         * without main core, fw is dead anyway
+         * so setting D0 for it is futile.

I don't get the comment, you explicitly discarded the main core with
your logical AND above, so this test means that all other non-main cores
are disabled.

There is no setting D0 for MAIN_CORE as firmware is not operational
without it. Firmware needs to be notified about D3 -> D0 transitions
only in case of non-MAIN_COREs.

the comment was about 'without main core'.

This is difficult to follow, because you've discarded the main code in
the if (!mask), so that's an always-true case, which makes the rest of
the explanations not so clear.


I'm afraid, not seeing the problem. It's clearly not always-true statement as 'mask' can be non-zero after discarding the MAIN_CORE.



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux