Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp3235580ybk; Mon, 18 May 2020 22:40:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw3UoOIU8QXKYRmZPNqkKlTUq/lwjWfKH4WLDRdoOvQXnUrW6fUyKRrKrq+En9ymcmfn5CJ X-Received: by 2002:a17:906:2e4a:: with SMTP id r10mr17309604eji.116.1589866813135; Mon, 18 May 2020 22:40:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589866813; cv=none; d=google.com; s=arc-20160816; b=vIFj0Rz2Rkna54AUnAATnME4sKq+vl8xcnFtJpx93n/CRdaiCk5fPhSYNgL8EK1fME U5vIwz1XUyetezHG5GZipyX/RmLY6JxxckTfPaPGlBTO8gJVDMdBE4Oy6CtH8sW1i7ij IC4eXdzZJ+qCi9aItB2LevJiLoYeUX6pgrkxN3J5hmX6WPWyD77d4IJtSxB3SBoCu6Zw Ne/v2V3dtIQR5iInP9cVkIa+L7Kmq2oVvGOx2LHIKxoPQKyy/b0lWjWyJZuvi2UeP7Qv MUT55n2IlplOvR42wME/TZF37Rn605TGOwDzKlNJTX4nlJhSybkgJPXn05GJRXvWWyPU 9ACw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:ironport-sdr:ironport-sdr; bh=jgA4vk8p7qgJMjsC9YQkarPTh2cXeshVf1/eX+5E8iY=; b=XiOr6Kvj2YHCorO5xitwVMF7MpQfVfZyIQh3aW9zwu+bAKktXkLLUOpM2mozUiLokL E1hHYeLWA0yV8NeN/isbdetpbPLPghRS5tNXLrs3AKt1fHfOnKAO5Yv21HcuSCVobP3p 3EMxp4zuuncoPcMwk2eCPdvZpN3BCZdIk+sCw/hMub56JyPcQCb8NGA+D9EAgR7gWiti P9B9GS7oSzpxR1X1tT0OwUe+gBPqE3+Q0IAlNzRkojjrViEJY5rOxvzHnaHriD8H5l0r X3YBv6O0DUhfw3eaf2Po/+khzkH5GLOxpuMSBucLuQUyy4yt1K2QXccyxmS/mV80ZY0/ XArg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v23si6929958ejw.62.2020.05.18.22.39.50; Mon, 18 May 2020 22:40:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728162AbgESFiZ (ORCPT + 99 others); Tue, 19 May 2020 01:38:25 -0400 Received: from mga05.intel.com ([192.55.52.43]:18092 "EHLO mga05.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726381AbgESFiZ (ORCPT ); Tue, 19 May 2020 01:38:25 -0400 IronPort-SDR: HKlnTcg0nKvREJ6/lB1/1Ey1Fu6RRAXrXjFv8NUXDqqv6elMBnRD1BL6RrozJqPLT2CeU8wf9D 60Q/ZNfL6ayg== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 May 2020 22:38:24 -0700 IronPort-SDR: tBKYjLeBqzgaLsxqg4erk2WPHigFqqhPGPQD8amOevMp+6HwX2shKqEDBC+OhhfgBya8z+/HLb pbcFj3QHp8MA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,409,1583222400"; d="scan'208";a="288836565" Received: from bard-ubuntu.sh.intel.com ([10.239.13.33]) by fmsmga004.fm.intel.com with ESMTP; 18 May 2020 22:38:20 -0700 From: Bard Liao To: alsa-devel@alsa-project.org, vkoul@kernel.org Cc: vinod.koul@linaro.org, linux-kernel@vger.kernel.org, tiwai@suse.de, broonie@kernel.org, gregkh@linuxfoundation.org, jank@cadence.com, srinivas.kandagatla@linaro.org, rander.wang@linux.intel.com, ranjani.sridharan@linux.intel.com, hui.wang@canonical.com, pierre-louis.bossart@linux.intel.com, sanyog.r.kale@intel.com, slawomir.blauciak@intel.com, mengdong.lin@intel.com, bard.liao@intel.com Subject: [PATCH v2 3/5] soundwire: bus: add unique bus id Date: Tue, 19 May 2020 01:43:20 +0800 Message-Id: <20200518174322.31561-4-yung-chuan.liao@linux.intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200518174322.31561-1-yung-chuan.liao@linux.intel.com> References: <20200518174322.31561-1-yung-chuan.liao@linux.intel.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Adding an unique id for each bus. Suggested-by: Vinod Koul Signed-off-by: Bard Liao --- drivers/soundwire/bus.c | 20 ++++++++++++++++++++ include/linux/soundwire/sdw.h | 2 ++ 2 files changed, 22 insertions(+) diff --git a/drivers/soundwire/bus.c b/drivers/soundwire/bus.c index 24064dbd74fa..2d24f183061d 100644 --- a/drivers/soundwire/bus.c +++ b/drivers/soundwire/bus.c @@ -9,6 +9,19 @@ #include #include "bus.h" +static DEFINE_IDA(sdw_ida); + +static int sdw_get_id(struct sdw_bus *bus) +{ + int rc = ida_alloc(&sdw_ida, GFP_KERNEL); + + if (rc < 0) + return rc; + + bus->id = rc; + return 0; +} + /** * sdw_bus_master_add() - add a bus Master instance * @bus: bus instance @@ -29,6 +42,12 @@ int sdw_bus_master_add(struct sdw_bus *bus, struct device *parent, return -ENODEV; } + ret = sdw_get_id(bus); + if (ret) { + dev_err(bus->dev, "Failed to get bus id\n"); + return ret; + } + if (!bus->ops) { dev_err(bus->dev, "SoundWire Bus ops are not set\n"); return -EINVAL; @@ -144,6 +163,7 @@ void sdw_bus_master_delete(struct sdw_bus *bus) device_for_each_child(bus->dev, NULL, sdw_delete_slave); sdw_bus_debugfs_exit(bus); + ida_free(&sdw_ida, bus->id); } EXPORT_SYMBOL(sdw_bus_master_delete); diff --git a/include/linux/soundwire/sdw.h b/include/linux/soundwire/sdw.h index 2003e8c55538..a32cb26f1815 100644 --- a/include/linux/soundwire/sdw.h +++ b/include/linux/soundwire/sdw.h @@ -789,6 +789,7 @@ struct sdw_master_ops { * struct sdw_bus - SoundWire bus * @dev: Master linux device * @link_id: Link id number, can be 0 to N, unique for each Master + * @id: bus system-wide unique id * @slaves: list of Slaves on this bus * @assigned: Bitmap for Slave device numbers. * Bit set implies used number, bit clear implies unused number. @@ -813,6 +814,7 @@ struct sdw_master_ops { struct sdw_bus { struct device *dev; unsigned int link_id; + int id; struct list_head slaves; DECLARE_BITMAP(assigned, SDW_MAX_DEVICES); struct mutex bus_lock; -- 2.17.1