Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

SM6115 TX Macro

Merge series from Konrad Dybcio <konrad.dybcio@linaro.org>:

Like most Qualcomm SoCs, SM6115 has a TX Macro.

Only some minor changes were required.

+35 -7
+18
Documentation/devicetree/bindings/sound/qcom,lpass-tx-macro.yaml
··· 13 13 compatible: 14 14 enum: 15 15 - qcom,sc7280-lpass-tx-macro 16 + - qcom,sm6115-lpass-tx-macro 16 17 - qcom,sm8250-lpass-tx-macro 17 18 - qcom,sm8450-lpass-tx-macro 18 19 - qcom,sm8550-lpass-tx-macro ··· 95 94 - const: mclk 96 95 - const: npl 97 96 - const: macro 97 + - const: dcodec 98 + - const: fsgen 99 + 100 + - if: 101 + properties: 102 + compatible: 103 + enum: 104 + - qcom,sm6115-lpass-tx-macro 105 + then: 106 + properties: 107 + clocks: 108 + minItems: 4 109 + maxItems: 4 110 + clock-names: 111 + items: 112 + - const: mclk 113 + - const: npl 98 114 - const: dcodec 99 115 - const: fsgen 100 116
+2
sound/soc/codecs/lpass-macro-common.h
··· 8 8 9 9 /* NPL clock is expected */ 10 10 #define LPASS_MACRO_FLAG_HAS_NPL_CLOCK BIT(0) 11 + /* The soundwire block should be internally reset at probe */ 12 + #define LPASS_MACRO_FLAG_RESET_SWR BIT(1) 11 13 12 14 struct lpass_macro { 13 15 struct device *macro_pd;
+15 -7
sound/soc/codecs/lpass-tx-macro.c
··· 2045 2045 if (ret) 2046 2046 goto err_fsgen; 2047 2047 2048 + 2048 2049 /* reset soundwire block */ 2049 - regmap_update_bits(tx->regmap, CDC_TX_CLK_RST_CTRL_SWR_CONTROL, 2050 - CDC_TX_SWR_RESET_MASK, CDC_TX_SWR_RESET_ENABLE); 2050 + if (flags & LPASS_MACRO_FLAG_RESET_SWR) 2051 + regmap_update_bits(tx->regmap, CDC_TX_CLK_RST_CTRL_SWR_CONTROL, 2052 + CDC_TX_SWR_RESET_MASK, CDC_TX_SWR_RESET_ENABLE); 2051 2053 2052 2054 regmap_update_bits(tx->regmap, CDC_TX_CLK_RST_CTRL_SWR_CONTROL, 2053 2055 CDC_TX_SWR_CLK_EN_MASK, 2054 2056 CDC_TX_SWR_CLK_ENABLE); 2055 - regmap_update_bits(tx->regmap, CDC_TX_CLK_RST_CTRL_SWR_CONTROL, 2056 - CDC_TX_SWR_RESET_MASK, 0x0); 2057 + 2058 + if (flags & LPASS_MACRO_FLAG_RESET_SWR) 2059 + regmap_update_bits(tx->regmap, CDC_TX_CLK_RST_CTRL_SWR_CONTROL, 2060 + CDC_TX_SWR_RESET_MASK, 0x0); 2057 2061 2058 2062 ret = devm_snd_soc_register_component(dev, &tx_macro_component_drv, 2059 2063 tx_macro_dai, ··· 2162 2158 static const struct of_device_id tx_macro_dt_match[] = { 2163 2159 { 2164 2160 .compatible = "qcom,sc7280-lpass-tx-macro", 2161 + .data = (void *)(LPASS_MACRO_FLAG_HAS_NPL_CLOCK | LPASS_MACRO_FLAG_RESET_SWR), 2162 + }, { 2163 + .compatible = "qcom,sm6115-lpass-tx-macro", 2165 2164 .data = (void *)LPASS_MACRO_FLAG_HAS_NPL_CLOCK, 2166 2165 }, { 2167 2166 .compatible = "qcom,sm8250-lpass-tx-macro", 2168 - .data = (void *)LPASS_MACRO_FLAG_HAS_NPL_CLOCK, 2167 + .data = (void *)(LPASS_MACRO_FLAG_HAS_NPL_CLOCK | LPASS_MACRO_FLAG_RESET_SWR), 2169 2168 }, { 2170 2169 .compatible = "qcom,sm8450-lpass-tx-macro", 2171 - .data = (void *)LPASS_MACRO_FLAG_HAS_NPL_CLOCK, 2170 + .data = (void *)(LPASS_MACRO_FLAG_HAS_NPL_CLOCK | LPASS_MACRO_FLAG_RESET_SWR), 2172 2171 }, { 2173 2172 .compatible = "qcom,sm8550-lpass-tx-macro", 2173 + .data = (void *)LPASS_MACRO_FLAG_RESET_SWR, 2174 2174 }, { 2175 2175 .compatible = "qcom,sc8280xp-lpass-tx-macro", 2176 - .data = (void *)LPASS_MACRO_FLAG_HAS_NPL_CLOCK, 2176 + .data = (void *)(LPASS_MACRO_FLAG_HAS_NPL_CLOCK | LPASS_MACRO_FLAG_RESET_SWR), 2177 2177 }, 2178 2178 { } 2179 2179 };