Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp2083737ybl; Thu, 29 Aug 2019 03:21:08 -0700 (PDT) X-Google-Smtp-Source: APXvYqxxo1WlaDXg3/Za7ztpxADiznbKYMIgMVE9N6bhu8kLspnkgUYv2jU51W4/zJwyQwgWGTJ3 X-Received: by 2002:a63:6904:: with SMTP id e4mr3501309pgc.321.1567074068553; Thu, 29 Aug 2019 03:21:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1567074068; cv=none; d=google.com; s=arc-20160816; b=jChIOAGWOkaRM0ln28U31b8sBRKlh8eO1H5A38B/MTCF+8MoqZMxZF8m11r6j13KnU llH2rk6nd+Tp4NurYhpjjBEmhrt4zC/Rc3CbM07svUTn6lTuOD1/zBI3njeKIGSq0+BC Jr2bdcqybCVcCkZcP+0nmJfRaRZXhpU1i7MN0/RUMrjK0taVXAFBbPxf9uIUaVSgSMkG oK7McGlERnLM66rlUsmniDQd1Pg1m+hIiMr43lPV1hhq5uFOWi0N1rIWhmFdg1slIk/Y xHbUiy7cT/jgvZj9vJXlLGeKJnm1x9p+kikwlX4kJiEMYKtVHjtVJ0BxSCExuypqDgH/ LVRQ== 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:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature; bh=cGZdiHd9jIjF2g90IYpysVUcqpHWPC1S8kjmXrxr5vE=; b=v4KcVoqafLiOWjrWqm9yWY52JbOi7ECdm9WjtCQJVZjLj7T4FN6IeTGTJKoVfW18YD 6XYEsyJBvN7F597Imqxb52twG4x3YhcFwxryK/TJiRB+SzarlqxqY352ZUhh7doidtKi //Y68LnWATlo38SzJsHeRIWpf/elqR4tl9ymJtCGpMv9+dxT7OuEYLXxEofzUD0+Ztsg 6AHBoH/8uHto9983Xy9jCyiOMXzBYRN2X8vxX6FuKqdgWD4y5ybqj0ZEaS5BKcYrbrHQ Guq/Uod4GwbXGsrsKaot8HXPuHeHJs5P04kH02YKXkYi2o9uI4nNDnK/rBDueLq1ejnj Kmow== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@synopsys.com header.s=mail header.b=QVJpf1sL; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=synopsys.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j17si1564415pgj.15.2019.08.29.03.20.51; Thu, 29 Aug 2019 03:21:08 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@synopsys.com header.s=mail header.b=QVJpf1sL; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=synopsys.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727144AbfH2KTn (ORCPT + 99 others); Thu, 29 Aug 2019 06:19:43 -0400 Received: from smtprelay-out1.synopsys.com ([198.182.61.142]:36166 "EHLO smtprelay-out1.synopsys.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726642AbfH2KTk (ORCPT ); Thu, 29 Aug 2019 06:19:40 -0400 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 Cc: bbrezillon@kernel.org, robh+dt@kernel.org, mark.rutland@arm.com, Joao.Pinto@synopsys.com, Vitor Soares 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: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.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 --- 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 + -- 2.7.4