From patchwork Thu Aug 29 10:19:32 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vitor Soares X-Patchwork-Id: 11120843 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 981B51395 for ; Thu, 29 Aug 2019 10:20:16 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 75CBD23403 for ; Thu, 29 Aug 2019 10:20:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="UCJ2gqCw"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=synopsys.com header.i=@synopsys.com header.b="Ob27sl4W" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 75CBD23403 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=synopsys.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-i3c-bounces+linux-i3c=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=j4c+6F2kLrLM3OlaAVNJfQIf9yAdeoPx4PXdtBrGIUg=; b=UCJ2gqCw62O+aDk1GgHkvO5NQl RublGOnkDMHZ8HmFfkHPpac83c3/bTwEtNX7Do3tgQYvnVXROTYVpKJ2Tj+W2xGC4T3IFQbLw3fFy sPPZ5BJ6CuTvIZjzgu7J0PDbkJTav8eQ35qOVsp4MgLPzcA+4/+odJgPcjp20IHGBwUx/4BK3XuUp vdT7Lz/2V1n02Pwc1ALpHEWomYu5LAAletcy9b0TYtU7RTmSgn94dDio1H8qxi9ZTa1nbICt8M1K5 oog70ofP/odLs9YPZRdqfpvumpAKpZAZSXUKHQmIK/v3s74B6gSQJTkDmxPhavexZXeYJv0WCFkil 2cJ+oemQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1i3HXF-0006G9-R7; Thu, 29 Aug 2019 10:20:10 +0000 Received: from dc2-smtprelay2.synopsys.com ([198.182.61.142] helo=smtprelay-out1.synopsys.com) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1i3HWp-00054g-4t for linux-i3c@lists.infradead.org; Thu, 29 Aug 2019 10:19:44 +0000 Received: from mailhost.synopsys.com (mdc-mailhost2.synopsys.com [10.225.0.210]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id 1C23FC038F; Thu, 29 Aug 2019 10:19:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1567073980; bh=Baay742tAmtR5eF4AQp0vztAEFyf6Mwi4Geo9IdjYUI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:In-Reply-To: References:From; b=Ob27sl4WyAP8VveUFpL+BxYV3wSUBnBadJam5pTzL2cVkD73KfEnXxbdjRK+7pIeL /7g2h+HmO2JSAsO5r15VgxLXoYP0GEHnR+i7TLfEofhn0FY7eMj19EcHHsNQX23p/g uXRzszdyzLILHmDcGmTEZ2rdkzy0U0kOoAS0VqXh+/Mcjpx8wWWCNUt+uDEUrQEFOR KKQnynSv4tWE/5/WvCWDRWXhT7p/QaO2j5s0JnCdOFs0jk5kuC7l4dXMGKJTZwBwVF iwXFhvhv/TbG3frCH7RGPsu6MM57qMrQPFSD/eexsoNLCW2jnv/yjnEvJm1O6/X4vR SyTHBitjKVRYw== Received: from de02.synopsys.com (germany.internal.synopsys.com [10.225.17.21]) by mailhost.synopsys.com (Postfix) with ESMTP id 3D23EA0061; Thu, 29 Aug 2019 10:19:38 +0000 (UTC) Received: from de02dwia024.internal.synopsys.com (de02dwia024.internal.synopsys.com [10.225.19.81]) by de02.synopsys.com (Postfix) with ESMTP id 236CC3B643; Thu, 29 Aug 2019 12:19:38 +0200 (CEST) From: Vitor Soares To: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-i3c@lists.infradead.org Subject: [PATCH 1/4] i3c: master: detach and free device if pre_assign_dyn_addr() fails Date: Thu, 29 Aug 2019 12:19:32 +0200 Message-Id: X-Mailer: git-send-email 2.7.4 In-Reply-To: References: In-Reply-To: References: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190829_031943_367793_59EE5630 X-CRM114-Status: GOOD ( 11.30 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.2 on bombadil.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid X-BeenThere: linux-i3c@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux I3C List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, Joao.Pinto@synopsys.com, robh+dt@kernel.org, Vitor Soares , bbrezillon@kernel.org MIME-Version: 1.0 Sender: "linux-i3c" Errors-To: linux-i3c-bounces+linux-i3c=patchwork.kernel.org@lists.infradead.org On pre_assing_dyn_addr() the devices that fail: i3c_master_setdasa_locked() i3c_master_reattach_i3c_dev() i3c_master_retrieve_dev_info() are kept in memory and master->bus.devs list. This makes the i3c devices without a dynamic address are sent on DEFSLVS CCC command. Fix this by detaching and freeing the devices that fail on pre_assign_dyn_addr(). Signed-off-by: Vitor Soares --- drivers/i3c/master.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c index 5f4bd52..4d29e1f 100644 --- a/drivers/i3c/master.c +++ b/drivers/i3c/master.c @@ -1438,7 +1438,7 @@ static void i3c_master_pre_assign_dyn_addr(struct i3c_dev_desc *dev) ret = i3c_master_setdasa_locked(master, dev->info.static_addr, dev->boardinfo->init_dyn_addr); if (ret) - return; + goto err_detach_dev; dev->info.dyn_addr = dev->boardinfo->init_dyn_addr; ret = i3c_master_reattach_i3c_dev(dev, 0); @@ -1453,6 +1453,10 @@ static void i3c_master_pre_assign_dyn_addr(struct i3c_dev_desc *dev) err_rstdaa: i3c_master_rstdaa_locked(master, dev->boardinfo->init_dyn_addr); + +err_detach_dev: + i3c_master_detach_i3c_dev(dev); + i3c_master_free_i3c_dev(dev); } static void @@ -1647,7 +1651,7 @@ static int i3c_master_bus_init(struct i3c_master_controller *master) enum i3c_addr_slot_status status; struct i2c_dev_boardinfo *i2cboardinfo; struct i3c_dev_boardinfo *i3cboardinfo; - struct i3c_dev_desc *i3cdev; + struct i3c_dev_desc *i3cdev, *i3ctmp; struct i2c_dev_desc *i2cdev; int ret; @@ -1746,7 +1750,8 @@ static int i3c_master_bus_init(struct i3c_master_controller *master) * Pre-assign dynamic address and retrieve device information if * needed. */ - i3c_bus_for_each_i3cdev(&master->bus, i3cdev) + list_for_each_entry_safe(i3cdev, i3ctmp, &master->bus.devs.i3c, + common.node) i3c_master_pre_assign_dyn_addr(i3cdev); ret = i3c_master_do_daa(master); From patchwork Thu Aug 29 10:19:33 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vitor Soares X-Patchwork-Id: 11120845 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B3549184E for ; Thu, 29 Aug 2019 10:20:16 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8ED0423427 for ; Thu, 29 Aug 2019 10:20:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="fFQTMIK+"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=synopsys.com header.i=@synopsys.com header.b="Ld9hkTWW" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8ED0423427 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=synopsys.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-i3c-bounces+linux-i3c=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=83+TenHk/aVujCazS5skQ4aY9w7vtPbh5N+rhqD397E=; b=fFQTMIK+FyxrozFLi9QJcsySul ilv0MIhlPg9bRmKTzrGXNFqFeIQiA/XQym33qoNqKtIiB9ODmxsL+wS/g4tSqgN4gKFix06FZvIAb VWkD2x61UtRmcmfK01Vx9rzDHX0qGrW2tO+bkT8BeXUo0wH0Y3uJulkQyvpf6JIcoqTEaUBfR3lWV uMzsbANtI6DBZXMEM97ljLdj5ENPnt4OPhRrey3+dgq5GZtxDjtg8GuEuD/hZM8hlTV3u6rt21v7a K5sgr/bzdF/QtNkeuKkafGacxgASefVxvDkLE0hqnd0+lTMfGMV8c/XcNmd/Ie6DcifI8NDkD5IPI JnXjyyvQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1i3HXK-0006cN-0S; Thu, 29 Aug 2019 10:20:14 +0000 Received: from dc2-smtprelay2.synopsys.com ([198.182.61.142] helo=smtprelay-out1.synopsys.com) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1i3HWq-00054V-5X for linux-i3c@lists.infradead.org; Thu, 29 Aug 2019 10:19:46 +0000 Received: from mailhost.synopsys.com (mdc-mailhost1.synopsys.com [10.225.0.209]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id 24BAAC0392; Thu, 29 Aug 2019 10:19:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1567073980; bh=QDbC66s0MbpPHltxDTwd7lR7K6eOPJkK1UO9tfAzUE4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:In-Reply-To: References:From; b=Ld9hkTWWxN/DsnaOXBnAvHG4pNKtD5vOcsH6ELjzWOfgOAz4grSJ/ttRqRJ0fyQmM qJiBDB/OnkbEYoPqchH52tQp22bk11Xz/L15yp52udkSUzkkYY2NOyOckVF8psRH7k iTYaN6b7wfakoUXrMhDIQlHReNwGgCk8iwqgRE24TDCb/uLqmd66hkJY7URkbaWon1 EBy7kzZGCLB/x2FAYUoCT44pRpKKFfPr/bb06wvcLT4TRp56V4KMSzicktNeHQPRAW ykfP5SGXZR0vQQRH5sM+QvwVbSC9fyfbrZtxQL1cs9kUVbvj8lvfLDP/jF+w0D8hLP BzGmWo2a/Mebw== Received: from de02.synopsys.com (de02.internal.synopsys.com [10.225.17.21]) by mailhost.synopsys.com (Postfix) with ESMTP id 52DA3A0064; Thu, 29 Aug 2019 10:19:38 +0000 (UTC) Received: from de02dwia024.internal.synopsys.com (de02dwia024.internal.synopsys.com [10.225.19.81]) by de02.synopsys.com (Postfix) with ESMTP id 3759A3B646; Thu, 29 Aug 2019 12:19:38 +0200 (CEST) From: Vitor Soares To: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-i3c@lists.infradead.org Subject: [PATCH 2/4] i3c: master: Check if devices have i3c_dev_boardinfo on i3c_master_add_i3c_dev_locked() Date: Thu, 29 Aug 2019 12:19:33 +0200 Message-Id: <3e21481ddf53ea58f5899df6ec542b79b8cbcd68.1567071213.git.vitor.soares@synopsys.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: References: In-Reply-To: References: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190829_031944_360615_3BBE593A X-CRM114-Status: GOOD ( 11.79 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.2 on bombadil.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid X-BeenThere: linux-i3c@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux I3C List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, Joao.Pinto@synopsys.com, robh+dt@kernel.org, Vitor Soares , bbrezillon@kernel.org MIME-Version: 1.0 Sender: "linux-i3c" Errors-To: linux-i3c-bounces+linux-i3c=patchwork.kernel.org@lists.infradead.org The I3C devices described in DT might not be attached to the master which doesn't allow to assign a specific dynamic address. This patch check if a device has i3c_dev_boardinfo and add it to i3c_dev_desc structure. In this conditions, the framework will try to assign the i3c_dev_boardinfo->init_dyn_addr even if stactic address = 0. Signed-off-by: Vitor Soares --- drivers/i3c/master.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c index 4d29e1f..85fbda6 100644 --- a/drivers/i3c/master.c +++ b/drivers/i3c/master.c @@ -1795,6 +1795,23 @@ i3c_master_search_i3c_dev_duplicate(struct i3c_dev_desc *refdev) return NULL; } +static struct i3c_dev_boardinfo * +i3c_master_search_i3c_boardinfo(struct i3c_dev_desc *dev) +{ + struct i3c_master_controller *master = i3c_dev_get_master(dev); + struct i3c_dev_boardinfo *boardinfo; + + if (dev->boardinfo) + return NULL; + + list_for_each_entry(boardinfo, &master->boardinfo.i3c, node) { + if (dev->info.pid == boardinfo->pid) + return boardinfo; + } + + return NULL; +} + /** * i3c_master_add_i3c_dev_locked() - add an I3C slave to the bus * @master: master used to send frames on the bus @@ -1816,6 +1833,7 @@ int i3c_master_add_i3c_dev_locked(struct i3c_master_controller *master, { struct i3c_device_info info = { .dyn_addr = addr }; struct i3c_dev_desc *newdev, *olddev; + struct i3c_dev_boardinfo *boardinfo; u8 old_dyn_addr = addr, expected_dyn_addr; struct i3c_ibi_setup ibireq = { }; bool enable_ibi = false; @@ -1875,6 +1893,10 @@ int i3c_master_add_i3c_dev_locked(struct i3c_master_controller *master, if (ret) goto err_detach_dev; + boardinfo = i3c_master_search_i3c_boardinfo(newdev); + if (boardinfo) + newdev->boardinfo = boardinfo; + /* * Depending on our previous state, the expected dynamic address might * differ: From patchwork Thu Aug 29 10:19:34 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vitor Soares X-Patchwork-Id: 11120841 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1BB6A18EC for ; Thu, 29 Aug 2019 10:20:16 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id EC6CB23403 for ; Thu, 29 Aug 2019 10:20:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="hMB1dUGE"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=synopsys.com header.i=@synopsys.com header.b="AvcrUPSe" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EC6CB23403 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=synopsys.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-i3c-bounces+linux-i3c=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=2CHEM5qDph5eczadKEUy4CtM2q9SYojNyNTHWZuV5Ro=; b=hMB1dUGEFXMFkyjhgkSXnIIeyF vfgWuiBsIBhuSd/lsksNgOCjD2FXd7ZmATEcVNhQlAHvpjFmUgko97ff9RvP+upJ31kdAJmXq0BUf bJvi+VDJR5lX8ZrLi71I+UJi1RW3NDPe48abJY4XgxphGNtOmhDuelpSWhApyWSimszimCqvdqjOV HfChwZoGIAwf7aQbWanAglSEb2XqFfFaBxaoU8V6NKt0T4FIWsEK66DcqLD5ccvroSUWwqWlWp71t jIfqOygQXtr1tyF9eiAC4a/5sBM0iZ7O3z1UeB2t3ogNrQGjf1bHNb9VSbu6wuYUsuei/So8EbuWe dlO046Vw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1i3HXJ-0006c8-Gm; Thu, 29 Aug 2019 10:20:13 +0000 Received: from dc2-smtprelay2.synopsys.com ([198.182.61.142] helo=smtprelay-out1.synopsys.com) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1i3HWq-00054a-2C for linux-i3c@lists.infradead.org; Thu, 29 Aug 2019 10:19:45 +0000 Received: from mailhost.synopsys.com (mdc-mailhost2.synopsys.com [10.225.0.210]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id EEFC8C0051; Thu, 29 Aug 2019 10:19:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1567073980; bh=MbJFBF3yNfMCCzFo8zZdLZFc5T6ridAamiovEWdZ+Fc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:In-Reply-To: References:From; b=AvcrUPSeAuGvPBdt69A5krNoudlmlgOz4ooksW/NZ/a3NNnVBn9IkPjJ6Eg0NsPBR 4tz/77BpZ7+qorfbJ4hrDEKs87Xt0ZpULSj7xIDdwEK1d2FFcwpRET6WJVnuAAOwQq QNyKzZGIofB3otP8tf0fFH0kMFsFOaLwuksnl1u6a9YAkpb5iiLRi+Njd8WPk1B9v+ 5X7DzCjCmIRkTp4mJUC6sOSZRpxSwvfbjDDpirEN3esezcmeZTwR2ZFNH/0n0frTYQ LygqC112lUcXaJRV+/6PxquX2klWmFfWvxF9udwmenLQ5GcLEEbGJpg2ZKiwsN1mD1 3Zh9ZLJvHy9vA== Received: from de02.synopsys.com (germany.internal.synopsys.com [10.225.17.21]) by mailhost.synopsys.com (Postfix) with ESMTP id 59ADFA0062; Thu, 29 Aug 2019 10:19:38 +0000 (UTC) Received: from de02dwia024.internal.synopsys.com (de02dwia024.internal.synopsys.com [10.225.19.81]) by de02.synopsys.com (Postfix) with ESMTP id 43C473B649; Thu, 29 Aug 2019 12:19:38 +0200 (CEST) From: Vitor Soares To: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-i3c@lists.infradead.org Subject: [PATCH 3/4] dt-bindings: i3c: Make 'assigned-address' valid if static address != 0 Date: Thu, 29 Aug 2019 12:19:34 +0200 Message-Id: <9d69c83c7193e377bbc77bea7f1812fc17dafaee.1567071213.git.vitor.soares@synopsys.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: References: In-Reply-To: References: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190829_031944_294758_D102CADB X-CRM114-Status: GOOD ( 11.43 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.2 on bombadil.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid X-BeenThere: linux-i3c@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux I3C List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, Joao.Pinto@synopsys.com, robh+dt@kernel.org, Vitor Soares , bbrezillon@kernel.org MIME-Version: 1.0 Sender: "linux-i3c" Errors-To: linux-i3c-bounces+linux-i3c=patchwork.kernel.org@lists.infradead.org The I3C devices without a static address can require a specific dynamic address for priority reasons. Let's update the binding document to make the 'assigned-address' property valid if static address != 0 and add an example with this use case. Signed-off-by: Vitor Soares --- Documentation/devicetree/bindings/i3c/i3c.txt | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/i3c/i3c.txt b/Documentation/devicetree/bindings/i3c/i3c.txt index ab729a0..c851e75 100644 --- a/Documentation/devicetree/bindings/i3c/i3c.txt +++ b/Documentation/devicetree/bindings/i3c/i3c.txt @@ -98,9 +98,7 @@ Required properties Optional properties ------------------- -- assigned-address: dynamic address to be assigned to this device. This - property is only valid if the I3C device has a static - address (first cell of the reg property != 0). +- assigned-address: dynamic address to be assigned to this device. Example: @@ -129,6 +127,15 @@ Example: /* * I3C device without a static I2C address but requiring + * specific dynamic address. + */ + sensor@0,39200154004 { + reg = <0x0 0x6072 0x303904d2>; + assigned-address = <0xb>; + }; + + /* + * I3C device without a static I2C address but requiring * resources described in the DT. */ sensor@0,39200154004 { From patchwork Thu Aug 29 10:19:35 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vitor Soares X-Patchwork-Id: 11120837 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8818114F7 for ; Thu, 29 Aug 2019 10:20:15 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 66F9C23426 for ; Thu, 29 Aug 2019 10:20:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="b4t/QfJ1"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=synopsys.com header.i=@synopsys.com header.b="QVJpf1sL" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 66F9C23426 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=synopsys.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-i3c-bounces+linux-i3c=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=Vos2Tu54DXo3lGgln8liuzUro9XWaOsWwGuKpMNR9hk=; b=b4t/QfJ19TlIJWyb+xQNRU7S0/ 4iit84lp0PeGUWGsOqLDBsWBIA1dNJT2jcAxkx2uSa+5dgFU24QiYus2E4/Dkn9VpIJuaHwNS8QGC 57xkogl4SREoCxF8KoSxz70VGo8g6XFxvFkQ6YnZ0u37AmLtAYZGiFF9JzVHq08rbDnrZPf9huxRp SN0Q+198k4+xxfqIDmsNzByMWjoYtqEYNguQeVqTeK/cYRo2mcFS90Zibih7O7pkMU0FEmPdyFH1D h4umUqVm2NfCgYfJsCjHkuIz9YjJZXBZPMCss6Lq+A3CgV9cjan9hcl/8ei0dstYDk3fj0QWUviK9 cPKS6NmA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92 #3 (Red Hat Linux)) id 1i3HXI-0006Yq-GK; Thu, 29 Aug 2019 10:20:12 +0000 Received: from dc2-smtprelay2.synopsys.com ([198.182.61.142] helo=smtprelay-out1.synopsys.com) by bombadil.infradead.org with esmtps (Exim 4.92 #3 (Red Hat Linux)) id 1i3HWp-00054d-Ui for linux-i3c@lists.infradead.org; Thu, 29 Aug 2019 10:19:45 +0000 Received: from mailhost.synopsys.com (mdc-mailhost2.synopsys.com [10.225.0.210]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id 0FC50C038D; Thu, 29 Aug 2019 10:19:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1567073980; bh=FlHiWTvjjWp92vQF4e0yCZ0JuIXNBAhd+K3GIva9RJg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:In-Reply-To: References:From; b=QVJpf1sLq+rfJ8rhKJNfxOMIiM0OrL7JRc4PRug5hYDZb8XJTJ8y/5n7FLPC7FUHb dpe0zoiIKN9qRcex+kxoIwk3M/2FnA9yMRusnzLobmeUQKLVzlBidZ1m8lIvCYrCuF wJfwEr1qpW8fg5VLVhqkG6+lKwhkK9h1UBrfnyWpEvFP3eyH2op32RsyXbl7DScYfS 9Dh7+FqvjJ4wtuAeqsxIjyyhm00rUEm2bgFLiPqNQ0DcecSAvJAwn2q/31tjNeGN7C CiU2qliVIaqcXUnoBPaKbputLw1IgiT1GlwWHvC+VLbC8Kjben9JZrf+vnj3GCRDyu uws2mUAWl1bPw== Received: from de02.synopsys.com (de02.internal.synopsys.com [10.225.17.21]) by mailhost.synopsys.com (Postfix) with ESMTP id 7F6E0A0065; Thu, 29 Aug 2019 10:19:38 +0000 (UTC) Received: from de02dwia024.internal.synopsys.com (de02dwia024.internal.synopsys.com [10.225.19.81]) by de02.synopsys.com (Postfix) with ESMTP id 53B8F3B651; Thu, 29 Aug 2019 12:19:38 +0200 (CEST) From: Vitor Soares To: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-i3c@lists.infradead.org Subject: [PATCH 4/4] i3c: master: dw: reattach device on first available location of address table Date: Thu, 29 Aug 2019 12:19:35 +0200 Message-Id: X-Mailer: git-send-email 2.7.4 In-Reply-To: References: In-Reply-To: References: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190829_031944_094176_9811343C X-CRM114-Status: UNSURE ( 9.90 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.2 on bombadil.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid X-BeenThere: linux-i3c@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux I3C List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, Joao.Pinto@synopsys.com, robh+dt@kernel.org, Vitor Soares , bbrezillon@kernel.org MIME-Version: 1.0 Sender: "linux-i3c" Errors-To: linux-i3c-bounces+linux-i3c=patchwork.kernel.org@lists.infradead.org For today the reattach function only update the device address on the controller. Update the location to the first available too, will optimize the enumeration process avoiding additional checks to keep the available positions on address table consecutive. Signed-off-by: Vitor Soares Reviewed-by: Boris Brezillon --- drivers/i3c/master/dw-i3c-master.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/i3c/master/dw-i3c-master.c b/drivers/i3c/master/dw-i3c-master.c index 1d83c97..62261ac 100644 --- a/drivers/i3c/master/dw-i3c-master.c +++ b/drivers/i3c/master/dw-i3c-master.c @@ -898,6 +898,22 @@ static int dw_i3c_master_reattach_i3c_dev(struct i3c_dev_desc *dev, struct dw_i3c_i2c_dev_data *data = i3c_dev_get_master_data(dev); struct i3c_master_controller *m = i3c_dev_get_master(dev); struct dw_i3c_master *master = to_dw_i3c_master(m); + int pos; + + pos = dw_i3c_master_get_free_pos(master); + + if (data->index > pos && pos > 0) { + writel(0, + master->regs + + DEV_ADDR_TABLE_LOC(master->datstartaddr, data->index)); + + master->addrs[data->index] = 0; + master->free_pos |= BIT(data->index); + + data->index = pos; + master->addrs[pos] = dev->info.dyn_addr; + master->free_pos &= ~BIT(pos); + } writel(DEV_ADDR_TABLE_DYNAMIC_ADDR(dev->info.dyn_addr), master->regs +