Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f1ed0f04 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "ASoC: Fix WSA enumeration failure"

parents c074832b 55c95517
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -1292,15 +1292,20 @@ static int swrm_get_logical_dev_num(struct swr_master *mstr, u64 dev_id,
	int ret = -EINVAL;
	struct swr_mstr_ctrl *swrm = swr_get_ctrl_data(mstr);
	struct swr_device *swr_dev;
	u32 num_dev = 0;

	if (!swrm) {
		pr_err("%s: Invalid handle to swr controller\n",
			__func__);
		return ret;
	}
	if (swrm->num_dev)
		num_dev = swrm->num_dev;
	else
		num_dev = mstr->num_dev;

	pm_runtime_get_sync(&swrm->pdev->dev);
	for (i = 1; i < (mstr->num_dev + 1); i++) {
	for (i = 1; i < (num_dev + 1); i++) {
		id = ((u64)(swrm->read(swrm->handle,
			    SWRM_ENUMERATOR_SLAVE_DEV_ID_2(i))) << 32);
		id |= swrm->read(swrm->handle,
@@ -1477,6 +1482,19 @@ static int swrm_probe(struct platform_device *pdev)
	INIT_LIST_HEAD(&swrm->mport_list);
	mutex_init(&swrm->reslock);

	ret = of_property_read_u32(swrm->dev->of_node, "qcom,swr-num-dev",
				   &swrm->num_dev);
	if (ret)
		dev_dbg(&pdev->dev, "%s: Looking up %s property failed\n",
			__func__, "qcom,swr-num-dev");
	else {
		if (swrm->num_dev > SWR_MAX_SLAVE_DEVICES) {
			dev_err(&pdev->dev, "%s: num_dev %d > max limit %d\n",
				__func__, swrm->num_dev, SWR_MAX_SLAVE_DEVICES);
			ret = -EINVAL;
			goto err_pdata_fail;
		}
	}
	ret = swrm->reg_irq(swrm->handle, swr_mstr_interrupt, swrm,
			    SWR_IRQ_REGISTER);
	if (ret) {
+4 −1
Original line number Diff line number Diff line
/* Copyright (c) 2015-2017, The Linux Foundation. All rights reserved.
/* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -23,6 +23,8 @@

#define SWR_MSTR_PORT_LEN	8 /* Number of master ports */

#define SWR_MAX_SLAVE_DEVICES 11

#define SWRM_VERSION_1_0 0x01010000
#define SWRM_VERSION_1_2 0x01030000
#define SWRM_VERSION_1_3 0x01040000
@@ -94,6 +96,7 @@ struct swr_mstr_ctrl {
			void *data), void *swr_handle, int type);
	int irq;
	int version;
	u32 num_dev;
	int num_enum_slaves;
	int slave_status;
	struct swr_mstr_port *mstr_port;