From patchwork Wed Nov 25 15:43:03 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Loic Poulain X-Patchwork-Id: 332376 Delivered-To: patch@linaro.org Received: by 2002:a17:906:68d0:0:0:0:0 with SMTP id y16csp505991ejr; Wed, 25 Nov 2020 07:45:22 -0800 (PST) X-Google-Smtp-Source: ABdhPJxpAtsdeemRAeJH15YEj7N0Q4yS1pw2zqH4qDtypY1mjCZR5JeKQ2kTYaFyqxgARAENsyD1 X-Received: by 2002:a17:906:86cf:: with SMTP id j15mr3791513ejy.260.1606319032882; Wed, 25 Nov 2020 07:43:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1606319032; cv=none; d=google.com; s=arc-20160816; b=XnMMeXSN78rasBxfVmuo7Iuae/utLl98Nb3pbU3Kq9O6ZYOOM/TMfGhjRjX9WNltwW Y/xHx22F+yWRvnIsohOBS/NyY0pbfZcPacZ3BhPguBwEPiSziyEovXCT83mJL5RY5AuB QvzaRdBis3M4/QKhOLdhnbdlv5udhGwNBaEiFSIJTqynpFa6tGC3uRV5AU+4RQeNNzzp ADWXnPXpFzI4p90bZwgc3cr/Lm9QraDTU08k4Q9EpwNIDzXCxCPsIq2/KWJpQPXg5SFG v1PB+Q3D7OfUjiy3xVXdPdGfLHHBTCVjnbKJUj5bFGZdSVnPKB+nzGpu9zf97LbvtoPo DXnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from :dkim-signature; bh=bbVgkKAS62hFBcCu5bcswXZ0DTtj+/XPH5dTWv21sVY=; b=gBjsijQH/WHhqPN9V489DrEKFjn8miGvc6qfP1TbIKQVFC9OG5VxGAoPn8C2m/w9sc rsZ5BVhBUknEa9Jno+WtZfEw1WBkcCi6i7gDYXpEkbBjuBd0zz/xZFEkRK3pdUpfl2jZ dEcGwAWRb9WTu6AM99mC7dO5b0x5yROtlD3uCT6HPOaV8q+aiMdVXO9TNlZPuLPIPJKa g4GApklhYIcNw0WWBUqKzaD0i4c+mtWGdxlTqHSIhE87ioxS+yGRnzp0S2ONxwrqxu9r Jk3aH+8r4YTh7ahNPwT+x0h4rGM7Asjrx4ylPjIjN4k+RvdHzT90VC9d0qzXjEYJzLrj LC/A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=TQ9EbIqm; spf=pass (google.com: domain of linux-arm-msm-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-arm-msm-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u64si1297906edc.10.2020.11.25.07.43.52; Wed, 25 Nov 2020 07:43:52 -0800 (PST) Received-SPF: pass (google.com: domain of linux-arm-msm-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=TQ9EbIqm; spf=pass (google.com: domain of linux-arm-msm-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-arm-msm-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731126AbgKYPmi (ORCPT + 15 others); Wed, 25 Nov 2020 10:42:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50136 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730457AbgKYPgO (ORCPT ); Wed, 25 Nov 2020 10:36:14 -0500 Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C49D8C0613D4 for ; Wed, 25 Nov 2020 07:36:13 -0800 (PST) Received: by mail-wm1-x341.google.com with SMTP id p22so2368399wmg.3 for ; Wed, 25 Nov 2020 07:36:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=bbVgkKAS62hFBcCu5bcswXZ0DTtj+/XPH5dTWv21sVY=; b=TQ9EbIqmdPdjQUPaoLxnzMqs5PiEK61LUk3gmc3JqktB/NRcCY+YXJcuMjSQMZHCG1 NeYhHQ/MTvV7Z9DXeDrRjH19yJwqZUXwLIHePzmqrE/XKkTbrCQTgu7Ryr7fkLG59zet 7o8yeM9kKmlIstRU/+6bygLr3dcD1c5eWsnzGFIULIU2E3ZYMClxVYwTbOiySfbbuinj txDX8jO0C1pYm4qleYg6zJsXQm1pZ0pth68aVtFuVFwrYi6cxfPemRk9DCdKOFvt8R7o DbPBZQR25QksJYmoZfkSQprFLcf5WLgD6hwKmqX0ueNV/F0ijyCxa6uIPZrrf64yQMft oGgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=bbVgkKAS62hFBcCu5bcswXZ0DTtj+/XPH5dTWv21sVY=; b=kORaXQrKsFMI5kJvIe8fgeAdYXIvlUq0wpaKN/s25c0pH5NwyZu7mjV3TK3K983/NK Xh26+27R18HQZ2yDLRQiqSxCmWE3ZDRieMO+qEARw78xhI0SksTQzcP3CHbbJcgD7edF RfdD/CidZ7iYq2jyQSFwB+sceQvSgjtivefR5QXkrGF0YoiRd5jyc9cdiHvGt0MzYDNs DTQadw5E/tsnVpK/68+chCzb0wEyF+A9/U1En5iq/bmBzM33rVSRGqZfQ3bmFTNQeis4 3TtsbweGjhqqNCw4hM3YizjMWXHXZVrbspGIx/PSBJNmDkf/6qDcsrxhixoWhr81sVwb e1zA== X-Gm-Message-State: AOAM530DowEa/MYxQLRkg8QN34yC/e1puG0MCJRcegWXlcKqwo7NGqXu FlqoY92/lrgcHpUV0VFHXWl/9Q== X-Received: by 2002:a1c:9916:: with SMTP id b22mr4475343wme.182.1606318572362; Wed, 25 Nov 2020 07:36:12 -0800 (PST) Received: from localhost.localdomain ([88.122.66.28]) by smtp.gmail.com with ESMTPSA id d8sm4777811wmb.11.2020.11.25.07.36.11 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 25 Nov 2020 07:36:11 -0800 (PST) From: Loic Poulain To: manivannan.sadhasivam@linaro.org, hemantk@codeaurora.org Cc: linux-arm-msm@vger.kernel.org, jhugo@codeaurora.org, Loic Poulain Subject: [PATCH] bus: mhi: core: Indexed MHI controller name Date: Wed, 25 Nov 2020 16:43:03 +0100 Message-Id: <1606318983-24898-1-git-send-email-loic.poulain@linaro.org> X-Mailer: git-send-email 2.7.4 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Today the MHI controller name is simply cloned from the underlying bus device (its parent), that gives the following device structure for e.g. a MHI/PCI controller: devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:02:00.0 devices/pci0000:00/0000:00:01.2/0000:02:00.0/0000:02:00.0/0000:02:00.0_IPCR ... That's quite misleading/confusing and can cause device registering issues because of duplicate dev name (e.g. if a PCI device register two different MHI instances). This patch changes MHI core to create indexed mhi controller names (mhi0, mhi1...) in the same way as other busses (i2c0, usb0...). The previous example becomes: devices/pci0000:00/0000:00:01.2/0000:02:00.0/mhi0 devices/pci0000:00/0000:00:01.2/0000:02:00.0/mhi0/mhi0_IPCR ... Signed-off-by: Loic Poulain --- drivers/bus/mhi/core/init.c | 16 +++++++++++++++- drivers/bus/mhi/core/main.c | 2 +- include/linux/mhi.h | 2 ++ 3 files changed, 18 insertions(+), 2 deletions(-) -- 2.7.4 diff --git a/drivers/bus/mhi/core/init.c b/drivers/bus/mhi/core/init.c index c7a7354..ecfffb0 100644 --- a/drivers/bus/mhi/core/init.c +++ b/drivers/bus/mhi/core/init.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -18,6 +19,8 @@ #include #include "internal.h" +static DEFINE_IDA(mhi_controller_ida); + const char * const mhi_ee_str[MHI_EE_MAX] = { [MHI_EE_PBL] = "PBL", [MHI_EE_SBL] = "SBL", @@ -940,6 +943,12 @@ int mhi_register_controller(struct mhi_controller *mhi_cntrl, mhi_cntrl->minor_version = (soc_info & SOC_HW_VERSION_MINOR_VER_BMSK) >> SOC_HW_VERSION_MINOR_VER_SHFT; + mhi_cntrl->index = ida_alloc(&mhi_controller_ida, GFP_KERNEL); + if (mhi_cntrl->index < 0) { + ret = mhi_cntrl->index; + goto error_ida_alloc; + } + /* Register controller with MHI bus */ mhi_dev = mhi_alloc_device(mhi_cntrl); if (IS_ERR(mhi_dev)) { @@ -950,7 +959,7 @@ int mhi_register_controller(struct mhi_controller *mhi_cntrl, mhi_dev->dev_type = MHI_DEVICE_CONTROLLER; mhi_dev->mhi_cntrl = mhi_cntrl; - dev_set_name(&mhi_dev->dev, "%s", dev_name(mhi_cntrl->cntrl_dev)); + dev_set_name(&mhi_dev->dev, "mhi%d", mhi_cntrl->index); mhi_dev->name = dev_name(mhi_cntrl->cntrl_dev); /* Init wakeup source */ @@ -970,6 +979,9 @@ int mhi_register_controller(struct mhi_controller *mhi_cntrl, put_device(&mhi_dev->dev); error_alloc_dev: + ida_free(&mhi_controller_ida, mhi_cntrl->index); + +error_ida_alloc: kfree(mhi_cntrl->mhi_cmd); error_alloc_cmd: @@ -1004,6 +1016,8 @@ void mhi_unregister_controller(struct mhi_controller *mhi_cntrl) device_del(&mhi_dev->dev); put_device(&mhi_dev->dev); + + ida_free(&mhi_controller_ida, mhi_cntrl->index); } EXPORT_SYMBOL_GPL(mhi_unregister_controller); diff --git a/drivers/bus/mhi/core/main.c b/drivers/bus/mhi/core/main.c index 188501c0..4818f42 100644 --- a/drivers/bus/mhi/core/main.c +++ b/drivers/bus/mhi/core/main.c @@ -349,7 +349,7 @@ void mhi_create_devices(struct mhi_controller *mhi_cntrl) /* Channel name is same for both UL and DL */ mhi_dev->name = mhi_chan->name; dev_set_name(&mhi_dev->dev, "%s_%s", - dev_name(mhi_cntrl->cntrl_dev), + dev_name(&mhi_cntrl->mhi_dev->dev), mhi_dev->name); /* Init wakeup source if available */ diff --git a/include/linux/mhi.h b/include/linux/mhi.h index 27078db..2a89533 100644 --- a/include/linux/mhi.h +++ b/include/linux/mhi.h @@ -297,6 +297,7 @@ struct mhi_controller_config { * @cntrl_dev: Pointer to the struct device of physical bus acting as the MHI * controller (required) * @mhi_dev: MHI device instance for the controller + * @index: Index of the MHI controller instance * @debugfs_dentry: MHI controller debugfs directory * @regs: Base address of MHI MMIO register space (required) * @bhi: Points to base of MHI BHI register space @@ -377,6 +378,7 @@ struct mhi_controller_config { struct mhi_controller { struct device *cntrl_dev; struct mhi_device *mhi_dev; + int index; struct dentry *debugfs_dentry; void __iomem *regs; void __iomem *bhi;