Commit eb379c3c authored by Takashi Iwai's avatar Takashi Iwai
Browse files

Merge branch 'for-linus' into for-next



Pull the last minute fixes for 6.17.

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parents 6b9c4a05 5c444aa6
Loading
Loading
Loading
Loading
+14 −18
Original line number Diff line number Diff line
@@ -121,6 +121,16 @@ static const struct reg_default aic3x_reg[] = {
	{ 108, 0x00 }, { 109, 0x00 },
};

static const struct reg_sequence aic3007_class_d[] = {
	/* Class-D speaker driver init; datasheet p. 46 */
	{ AIC3X_PAGE_SELECT, 0x0D },
	{ 0xD, 0x0D },
	{ 0x8, 0x5C },
	{ 0x8, 0x5D },
	{ 0x8, 0x5C },
	{ AIC3X_PAGE_SELECT, 0x00 },
};

static bool aic3x_volatile_reg(struct device *dev, unsigned int reg)
{
	switch (reg) {
@@ -1393,6 +1403,10 @@ static int aic3x_set_power(struct snd_soc_component *component, int power)
			gpiod_set_value(aic3x->gpio_reset, 0);
		}

		if (aic3x->model == AIC3X_MODEL_3007)
			regmap_multi_reg_write_bypassed(aic3x->regmap, aic3007_class_d,
							ARRAY_SIZE(aic3007_class_d));

		/* Sync reg_cache with the hardware */
		regcache_cache_only(aic3x->regmap, false);
		regcache_sync(aic3x->regmap);
@@ -1723,17 +1737,6 @@ static void aic3x_configure_ocmv(struct device *dev, struct aic3x_priv *aic3x)
	}
}


static const struct reg_sequence aic3007_class_d[] = {
	/* Class-D speaker driver init; datasheet p. 46 */
	{ AIC3X_PAGE_SELECT, 0x0D },
	{ 0xD, 0x0D },
	{ 0x8, 0x5C },
	{ 0x8, 0x5D },
	{ 0x8, 0x5C },
	{ AIC3X_PAGE_SELECT, 0x00 },
};

int aic3x_probe(struct device *dev, struct regmap *regmap, kernel_ulong_t driver_data)
{
	struct aic3x_priv *aic3x;
@@ -1823,13 +1826,6 @@ int aic3x_probe(struct device *dev, struct regmap *regmap, kernel_ulong_t driver

	aic3x_configure_ocmv(dev, aic3x);

	if (aic3x->model == AIC3X_MODEL_3007) {
		ret = regmap_register_patch(aic3x->regmap, aic3007_class_d,
					    ARRAY_SIZE(aic3007_class_d));
		if (ret != 0)
			dev_err(dev, "Failed to init class D: %d\n", ret);
	}

	ret = devm_snd_soc_register_component(dev, &soc_component_dev_aic3x, &aic3x_dai, 1);
	if (ret)
		return ret;
+15 −2
Original line number Diff line number Diff line
@@ -5794,6 +5794,13 @@ static const struct snd_soc_component_driver wcd934x_component_drv = {
	.endianness = 1,
};

static void wcd934x_put_device_action(void *data)
{
	struct device *dev = data;

	put_device(dev);
}

static int wcd934x_codec_parse_data(struct wcd934x_codec *wcd)
{
	struct device *dev = &wcd->sdev->dev;
@@ -5810,11 +5817,13 @@ static int wcd934x_codec_parse_data(struct wcd934x_codec *wcd)
		return dev_err_probe(dev, -EINVAL, "Unable to get SLIM Interface device\n");

	slim_get_logical_addr(wcd->sidev);
	wcd->if_regmap = regmap_init_slimbus(wcd->sidev,
	wcd->if_regmap = devm_regmap_init_slimbus(wcd->sidev,
				  &wcd934x_ifc_regmap_config);
	if (IS_ERR(wcd->if_regmap))
	if (IS_ERR(wcd->if_regmap)) {
		put_device(&wcd->sidev->dev);
		return dev_err_probe(dev, PTR_ERR(wcd->if_regmap),
				     "Failed to allocate ifc register map\n");
	}

	of_property_read_u32(dev->parent->of_node, "qcom,dmic-sample-rate",
			     &wcd->dmic_sample_rate);
@@ -5857,6 +5866,10 @@ static int wcd934x_codec_probe(struct platform_device *pdev)
	if (ret)
		return ret;

	ret = devm_add_action_or_reset(dev, wcd934x_put_device_action, &wcd->sidev->dev);
	if (ret)
		return ret;

	/* set default rate 9P6MHz */
	regmap_update_bits(wcd->regmap, WCD934X_CODEC_RPM_CLK_MCLK_CFG,
			   WCD934X_CODEC_RPM_CLK_MCLK_CFG_MCLK_MASK,
+1 −1
Original line number Diff line number Diff line
@@ -841,7 +841,7 @@ static int create_sdw_dailink(struct snd_soc_card *card,
			(*codec_conf)++;
		}

		if (sof_end->include_sidecar) {
		if (sof_end->include_sidecar && sof_end->codec_info->add_sidecar) {
			ret = sof_end->codec_info->add_sidecar(card, dai_links, codec_conf);
			if (ret)
				return ret;
+2 −2
Original line number Diff line number Diff line
@@ -194,8 +194,8 @@ static const struct of_device_id snd_sc8280xp_dt_match[] = {
	{.compatible = "qcom,qcm6490-idp-sndcard", "qcm6490"},
	{.compatible = "qcom,qcs6490-rb3gen2-sndcard", "qcs6490"},
	{.compatible = "qcom,qcs8275-sndcard", "qcs8300"},
	{.compatible = "qcom,qcs9075-sndcard", "qcs9075"},
	{.compatible = "qcom,qcs9100-sndcard", "qcs9100"},
	{.compatible = "qcom,qcs9075-sndcard", "sa8775p"},
	{.compatible = "qcom,qcs9100-sndcard", "sa8775p"},
	{.compatible = "qcom,sc8280xp-sndcard", "sc8280xp"},
	{.compatible = "qcom,sm8450-sndcard", "sm8450"},
	{.compatible = "qcom,sm8550-sndcard", "sm8550"},
+2 −2
Original line number Diff line number Diff line
@@ -639,14 +639,14 @@ static int ipc4_ssp_dai_config_pcm_params_match(struct snd_sof_dev *sdev,

		if (params_rate(params) == le32_to_cpu(hw_config->fsync_rate) &&
		    params_width(params) == le32_to_cpu(hw_config->tdm_slot_width) &&
		    params_channels(params) == le32_to_cpu(hw_config->tdm_slots)) {
		    params_channels(params) <= le32_to_cpu(hw_config->tdm_slots)) {
			current_config = le32_to_cpu(hw_config->id);
			partial_match = false;
			/* best match found */
			break;
		} else if (current_config < 0 &&
			   params_rate(params) == le32_to_cpu(hw_config->fsync_rate) &&
			   params_channels(params) == le32_to_cpu(hw_config->tdm_slots)) {
			   params_channels(params) <= le32_to_cpu(hw_config->tdm_slots)) {
			current_config = le32_to_cpu(hw_config->id);
			partial_match = true;
			/* keep looking for better match */