Repository navigation
mn: clear mclk and bclk source clks in MDIVCTRL - #3083
Conversation
|
@lbetlej We check in |
|
@lgirdwood @lbetlej The case this PR is going to fix is when we want to reconfigure the same SSP (eg. index = 0).
and the we try to set MCDSS(0) , but we have "or" function here - so after that we still will have MCDSS bits set to 1. |
|
@bkokoszx ok, can you detail the "why" above in the commit message as it's now clear what you are doing and why. |
8b5728f to
f61eba1
Compare
|
@lgirdwood |
|
Travis looks like a timeout and Jenkins is usual issues |
|
SOFCI TEST |
|
@bkokoszx any idea why we are seeing the issue on CNL qemu boot ? is M/N config in the boot path ? |
|
SOFCI TEST |
|
@lgirdwood |
|
The same test failed in unrelated https://travis-ci.org/github/thesofproject/sof/jobs/702557005 / #3064 too and with even less error messages. I restored in #3101 some error messages I accidentally dropped earlier, so yes rebasing might help. BTW I tried this test a couple days ago and it passed locally. The timeout message is expected every time, see thesofproject/qemu#44 |
We should clear MNDSS and MCDSS bits before setting new mclk and bclks source clocks. This commit is going to fix case when driver want to reconfigure the same SSP (e.g. index = 0). 1. Driver sends ssp_config() and FW configures ssp (index = 0) with MCDSS bits set to e.g. 1. 2. Driver wants to reconfigure the same ssp (index = 0) by sending new ssp_config() and FW tries to configure ssp 0 once again, but firstly it reads MDIVCTRL register: mdivc = mn_reg_read(MN_MDIVCTRL, mclk_id) and then tries to set MCDSS(0): mdivc |= MCDSS(0); , but there is "or" function here - after it MCDSS bits still will be set to 1. That's why we should clear this bits earlier. Signed-off-by: Bartosz Kokoszko <bartoszx.kokoszko@linux.intel.com>
f61eba1 to
81e9e53
Compare
We should clear MNDSS and MCDSS bits before setting
new mclk and bclks source clocks. This commit is
going to fix case when driver want to reconfigure
the same SSP (e.g. index = 0).
(index = 0) with MCDSS bits set to e.g. 1.
by sending new ssp_config() and FW tries to configure
ssp 0 once again, but firstly it reads MDIVCTRL
register:
mdivc = mn_reg_read(MN_MDIVCTRL, mclk_id)and then tries to set MCDSS(0):
mdivc |= MCDSS(0);, but there is "or" function here - after it MCDSS bits
still will be set to 1. That's why we should clear this
bits earlier.
Signed-off-by: Bartosz Kokoszko bartoszx.kokoszko@linux.intel.com