Skip to content

Commit 240b560

Browse files
abonislawskinashif
authored andcommitted
drivers: ssp: unify clock selection flow across ACE platforms
During intensive testing, it was found that the clock should be set the same way on all ACE platforms Signed-off-by: Adrian Bonislawski <adrian.bonislawski@intel.com>
1 parent af1ba95 commit 240b560

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

drivers/dai/intel/ssp/ssp.c

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1937,9 +1937,7 @@ static int dai_ssp_parse_tlv(struct dai_intel_ssp *dp, const uint8_t *aux_ptr, s
19371937
struct ssp_intel_ext_ctl *ext;
19381938
#if SSP_IP_VER >= SSP_IP_VER_1_5
19391939
struct ssp_intel_link_ctl *link;
1940-
#if SSP_IP_VER > SSP_IP_VER_1_5
19411940
struct dai_intel_ssp_plat_data *ssp = dai_get_plat_data(dp);
1942-
#endif
19431941
#endif
19441942

19451943
for (i = 0; i < aux_len; i += hop) {
@@ -1987,13 +1985,13 @@ static int dai_ssp_parse_tlv(struct dai_intel_ssp *dp, const uint8_t *aux_ptr, s
19871985
case SSP_LINK_CLK_SOURCE:
19881986
#if SSP_IP_VER >= SSP_IP_VER_1_5
19891987
link = (struct ssp_intel_link_ctl *)&aux_tlv->val;
1988+
ssp->link_clock = link->clock_source;
19901989
#if SSP_IP_VER < SSP_IP_VER_2_0
19911990
sys_write32((sys_read32(dai_ip_base(dp) + I2SLCTL_OFFSET) &
19921991
~I2CLCTL_MLCS(0x7)) |
19931992
I2CLCTL_MLCS(link->clock_source), dai_ip_base(dp) +
19941993
I2SLCTL_OFFSET);
19951994
#elif SSP_IP_VER > SSP_IP_VER_1_5
1996-
ssp->link_clock = link->clock_source;
19971995
sys_write32((sys_read32(dai_i2svss_base(dp) + I2SLCTL_OFFSET) &
19981996
~I2CLCTL_MLCS(0x7)) |
19991997
I2CLCTL_MLCS(link->clock_source),
@@ -2563,6 +2561,11 @@ static void ssp_acquire_ip(struct dai_intel_ssp *dp)
25632561
~I2CLCTL_MLCS(0x7)) |
25642562
I2CLCTL_MLCS(ssp->link_clock),
25652563
dai_i2svss_base(dp) + I2SLCTL_OFFSET);
2564+
#elif SSP_IP_VER == SSP_IP_VER_1_5
2565+
sys_write32((sys_read32(dai_ip_base(dp) + I2SLCTL_OFFSET) &
2566+
~I2CLCTL_MLCS(0x7)) |
2567+
I2CLCTL_MLCS(ssp->link_clock), dai_ip_base(dp) +
2568+
I2SLCTL_OFFSET);
25662569
#endif
25672570
}
25682571
}
@@ -2595,6 +2598,11 @@ static void ssp_release_ip(struct dai_intel_ssp *dp)
25952598
~I2CLCTL_MLCS(0x7)) |
25962599
I2CLCTL_MLCS(DAI_INTEL_SSP_CLOCK_XTAL_OSCILLATOR),
25972600
dai_i2svss_base(dp) + I2SLCTL_OFFSET);
2601+
#elif SSP_IP_VER == SSP_IP_VER_1_5
2602+
sys_write32((sys_read32(dai_ip_base(dp) + I2SLCTL_OFFSET) &
2603+
~I2CLCTL_MLCS(0x7)) |
2604+
I2CLCTL_MLCS(DAI_INTEL_SSP_CLOCK_XTAL_OSCILLATOR),
2605+
dai_ip_base(dp) + I2SLCTL_OFFSET);
25982606
#endif
25992607

26002608
dai_ssp_pm_runtime_en_ssp_clk_gating(dp, ssp->ssp_index);

drivers/dai/intel/ssp/ssp.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,8 @@ struct dai_intel_ssp_plat_data {
136136
#if SSP_IP_VER > SSP_IP_VER_1_5
137137
uint32_t hdamlssp_base;
138138
uint32_t i2svss_base;
139+
#endif
140+
#if SSP_IP_VER >= SSP_IP_VER_1_5
139141
uint32_t link_clock;
140142
#endif
141143
int irq;

0 commit comments

Comments
 (0)