Received: by 2002:a05:6a10:a852:0:0:0:0 with SMTP id d18csp1707841pxy; Thu, 6 May 2021 13:55:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwCs5yxKrWUFaDr1R0WRXviXue34pTxduZ64wfbUqILJn/HrDf9eoA35dy9hNbRs0gc/1Qb X-Received: by 2002:a62:ddd0:0:b029:28e:653c:6b6e with SMTP id w199-20020a62ddd00000b029028e653c6b6emr6695861pff.12.1620334529966; Thu, 06 May 2021 13:55:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620334529; cv=none; d=google.com; s=arc-20160816; b=kmSHrhkLumeFeI80bvygHlMeu3jNjFxySipw7BwWovI5ojPsImF4vKCgauT9I6BI6L 9BEWhye5a1M0GJgoENWoctzv80+H95mPXbGi+k2Sy/OwWeg9Ai10zKbvxYulfinK87FB JQGOuX06MwOg6+tro3oZ9ctxLjSe0DMUSkfrTpDWQxl/c73BBZzi8nyTv2zCLWlYLD2n jVbM75Fe6SHhuBsIu2AMpkMKyIGOaKtw+DOBv6QtMHhj3dKPzjmxHmYafFq/ytOcXuBQ /jad3LINwDyLB1SVHtEx6ijfdmBkz/6zZTs1QLCz8fwzCQBiwL2Xpf4pyCMZQCIdVamO 2LQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=vNoReDMKLGxtVQ/HUO76L61RXlajosDXB81QNCQh3t4=; b=x05Q6yjF9YyGMxU/kZ+v7VgsCpSZnYSS+JUORC/d5GMQ62jKLpZki+1kkkeABUlHKr QdLv8aopQarS4KKkJz+lH1tK0jLYYMcbY74VaLZtI5BiXwq4mzbMAPrbrZS5mLiOuZy5 M8JC8Q0VZvzth8ghkD2tu7kbE1a1hCPiBAOZhi7w56zS4wPLAAJCrGj5TeEEgJELIq56 TQT4VcTgLqX78WQg1oDbR65VjIiBzFcGuEcETp4F2cbgGjTTKwDEOLIH1nVgS6WP5Ugf OvceYY24lLAtoZV1HM65w6BVK1ftq9bW0iOgifJ/lQ6Rz3FXjt5ED6K5Z1d0eHHyZ7GM wDOw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@bewilderbeest.net header.s=thorn header.b=UqSiwV1T; 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=pass (p=NONE sp=NONE dis=NONE) header.from=bewilderbeest.net Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f9si4426372plg.285.2021.05.06.13.55.15; Thu, 06 May 2021 13:55:29 -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; dkim=pass header.i=@bewilderbeest.net header.s=thorn header.b=UqSiwV1T; 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=pass (p=NONE sp=NONE dis=NONE) header.from=bewilderbeest.net Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229960AbhEFUzl (ORCPT + 99 others); Thu, 6 May 2021 16:55:41 -0400 Received: from thorn.bewilderbeest.net ([71.19.156.171]:51875 "EHLO thorn.bewilderbeest.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229784AbhEFUzl (ORCPT ); Thu, 6 May 2021 16:55:41 -0400 Received: from hatter.bewilderbeest.net (unknown [IPv6:2600:6c44:7f:ba20::7c6]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: zev) by thorn.bewilderbeest.net (Postfix) with ESMTPSA id 0ADC7475; Thu, 6 May 2021 13:54:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bewilderbeest.net; s=thorn; t=1620334482; bh=vNoReDMKLGxtVQ/HUO76L61RXlajosDXB81QNCQh3t4=; h=From:To:Cc:Subject:Date:From; b=UqSiwV1TYfmc9tMThAqiUf57dvCOYSLJQ72d9rXD293X2le3KSui72Bi7EaXgth+F SZ3XSRkNJD1pRIK+AEvFsuLzpDYNjYAnAYEXHbh12wL+eLVM/m8BzDMiJetd+iLt/k HtvwZnY/7/g/PsZBOupIujs+EK+8ymakCOnzKruE= From: Zev Weiss To: Brendan Higgins Cc: Zev Weiss , Joel Stanley , Benjamin Herrenschmidt , Andrew Jeffery , linux-i2c@vger.kernel.org, openbmc@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, linux-aspeed@lists.ozlabs.org, linux-kernel@vger.kernel.org Subject: [PATCH v2] i2c: aspeed: disable additional device addresses on ast2[56]xx Date: Thu, 6 May 2021 15:54:19 -0500 Message-Id: <20210506205419.26294-1-zev@bewilderbeest.net> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The ast25xx and ast26xx have, respectively, two and three configurable slave device addresses to the ast24xx's one. We only support using one at a time, but the others may come up in an indeterminate state depending on hardware/bootloader behavior, so we need to make sure we disable them so as to avoid ending up with phantom devices on the bus. Signed-off-by: Zev Weiss --- Changes since v1 [0]: - reduced to simplified approach suggested by Joel [0] https://lore.kernel.org/linux-arm-kernel/20200915184525.29665-1-zev@bewilderbeest.net/ drivers/i2c/busses/i2c-aspeed.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/i2c/busses/i2c-aspeed.c b/drivers/i2c/busses/i2c-aspeed.c index 724bf30600d6..67e8b97c0c95 100644 --- a/drivers/i2c/busses/i2c-aspeed.c +++ b/drivers/i2c/busses/i2c-aspeed.c @@ -727,10 +727,14 @@ static void __aspeed_i2c_reg_slave(struct aspeed_i2c_bus *bus, u16 slave_addr) { u32 addr_reg_val, func_ctrl_reg_val; - /* Set slave addr. */ - addr_reg_val = readl(bus->base + ASPEED_I2C_DEV_ADDR_REG); - addr_reg_val &= ~ASPEED_I2CD_DEV_ADDR_MASK; - addr_reg_val |= slave_addr & ASPEED_I2CD_DEV_ADDR_MASK; + /* + * Set slave addr. Reserved bits can all safely be written with zeros + * on all of ast2[456]00, so zero everything else to ensure we only + * enable a single slave address (ast2500 has two, ast2600 has three, + * the enable bits for which are also in this register) so that we don't + * end up with additional phantom devices responding on the bus. + */ + addr_reg_val = slave_addr & ASPEED_I2CD_DEV_ADDR_MASK; writel(addr_reg_val, bus->base + ASPEED_I2C_DEV_ADDR_REG); /* Turn on slave mode. */ -- 2.31.1