Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp1459428ybi; Fri, 2 Aug 2019 16:24:55 -0700 (PDT) X-Google-Smtp-Source: APXvYqxUD4ly34XdDnV2r/oqu4dG9z7zuavzBQSYAl1rLorlwZkXKY1pAlA8yLewU1N2780s5s3F X-Received: by 2002:a65:47c1:: with SMTP id f1mr124596724pgs.169.1564788295392; Fri, 02 Aug 2019 16:24:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564788295; cv=none; d=google.com; s=arc-20160816; b=vW3oKTpeJQNsZT1bCVGOW+Qlw5yjsTFkDBoK6owBXM5THUuPatD+aK+AmEuX6H5mC8 Y2KLpiZH6LeVGmYbJZwNSbVzG0+B7xeUEXKJupDBilGW23Ciar/OvKgmn84ThEskiDK3 Tm7lXer0E2pU9KdePvdIcET1KFhZbD4Yw6xXlh2Y2oEAem9OLnXf38yd+QV3hLYCMj4w uO2oHNu5E/DOytTFBK8KzkmIhE6xK80gJjkaCadVYvI3CunamTHY/Gnuwvwd0N46UrPr DT1Ww4e3z9eBzHe4tl/yWgEE0ArkKsOWOsIH+r7DVpZ7feraCUsV2MipEDyMw1z7Sgs7 gmEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :organization:references:in-reply-to:message-id:subject:cc:to:from :date; bh=qDWOvVPgacNU/Pnc4bRoHizeQ2Nd9SJLD3hh3J0FVAY=; b=q+05kGS2kCfz/vwqsz1BTjEGMx8ox1ZyJoj8mExor6QGlWucot21kqh2a4NBhhQYxM Roi3ieYMkLld8t58ICbjJ3ng1sPSxkWmSMm/QUx5omtsnsY+WxACr+/al4hzNltBmBh8 rPTkYCH82H9A3ge5/h0Z//nNRbrIg1rT0KvhhQs3xLZzYSfTOykNrW2doHjoVGzQIRQJ NZqb1X8RY0gm8S33nwW+hChQ0UY0BeZHw6tKIYrNHFTWHNjWUTJ0zyKxoReW2+TN2vXl 5LzNXMXu0fmRiRWM5cchEYvJt3nNWBpD7IzIjrl2OPzP7W40Bewj2O78buJ0URf3Gglm Qrjg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a21si38253145pfo.249.2019.08.02.16.24.40; Fri, 02 Aug 2019 16:24:55 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2392754AbfHBMzc (ORCPT + 99 others); Fri, 2 Aug 2019 08:55:32 -0400 Received: from mx2.suse.de ([195.135.220.15]:40050 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2404801AbfHBMz3 (ORCPT ); Fri, 2 Aug 2019 08:55:29 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id C4AA9AD85; Fri, 2 Aug 2019 12:55:27 +0000 (UTC) Date: Fri, 2 Aug 2019 14:55:26 +0200 From: Jean Delvare To: Linux I2C Cc: Wolfram Sang , linux-kernel@vger.kernel.org, Andrew Cooks , linux-acpi@vger.kernel.org, platypus-sw@opengear.com, "Tobin C . Harding" , Guenter Roeck , Will Wagner Subject: [PATCH v5 3/3] i2c: piix4: Add ACPI support Message-ID: <20190802145526.6edba0a6@endymion> In-Reply-To: <20190802145109.38dd4045@endymion> References: <20190802145109.38dd4045@endymion> Organization: SUSE Linux X-Mailer: Claws Mail 3.17.3 (GTK+ 2.24.32; x86_64-suse-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Enable the i2c-piix4 SMBus controller driver to enumerate I2C slave devices using ACPI. It builds on the related I2C mux device work in commit 8eb5c87a92c0 ("i2c: add ACPI support for I2C mux ports") In the i2c-piix4 driver the adapters are enumerated as: Main SMBus adapter Port 0, Port 2, ..., aux port (i.e., ASF adapter) However, in the AMD BKDG documentation[1], the implied order of ports is: Main SMBus adapter Port 0, ASF adapter, Port 2, Port 3, ... This ordering difference is unfortunate. We assume that ACPI developers will use the AMD documentation ordering, so we have to pass an extra parameter to piix4_add_adapter(). [1] 52740 BIOS and Kernel Developer's Guide (BKDG) for AMD Family 16h Models 30h-3Fh Processors Based on earlier work by Andrew Cooks. Reported-by: Andrew Cooks Signed-off-by: Jean Delvare --- Changes since v4: * Fix code alignment (reported by Tobin C. Harding) * Adjust to changes in previous patch * Use the SMBus numbering documented by AMD drivers/i2c/busses/i2c-piix4.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) --- linux-5.2.orig/drivers/i2c/busses/i2c-piix4.c 2019-08-02 14:26:02.197346075 +0200 +++ linux-5.2/drivers/i2c/busses/i2c-piix4.c 2019-08-02 14:40:40.990505068 +0200 @@ -811,7 +811,8 @@ static int piix4_adapter_count; static int piix4_add_adapter(struct pci_dev *dev, unsigned short smba, bool sb800_main, u8 port, bool notify_imc, - const char *name, struct i2c_adapter **padap) + u8 hw_port_nr, const char *name, + struct i2c_adapter **padap) { struct i2c_adapter *adap; struct i2c_piix4_adapdata *adapdata; @@ -843,6 +844,12 @@ static int piix4_add_adapter(struct pci_ /* set up the sysfs linkage to our parent device */ adap->dev.parent = &dev->dev; + if (has_acpi_companion(&dev->dev)) { + acpi_preset_companion(&adap->dev, + ACPI_COMPANION(&dev->dev), + hw_port_nr); + } + snprintf(adap->name, sizeof(adap->name), "SMBus PIIX4 adapter%s at %04x", name, smba); @@ -876,7 +883,10 @@ static int piix4_add_adapters_sb800(stru } for (port = 0; port < piix4_adapter_count; port++) { + u8 hw_port_nr = port == 0 ? 0 : port + 1; + retval = piix4_add_adapter(dev, smba, true, port, notify_imc, + hw_port_nr, piix4_main_port_names_sb800[port], &piix4_main_adapters[port]); if (retval < 0) @@ -947,8 +957,8 @@ static int piix4_probe(struct pci_dev *d return retval; /* Try to register main SMBus adapter, give up if we can't */ - retval = piix4_add_adapter(dev, retval, false, 0, false, "", - &piix4_main_adapters[0]); + retval = piix4_add_adapter(dev, retval, false, 0, false, 0, + "", &piix4_main_adapters[0]); if (retval < 0) return retval; } @@ -974,7 +984,7 @@ static int piix4_probe(struct pci_dev *d if (retval > 0) { /* Try to add the aux adapter if it exists, * piix4_add_adapter will clean up if this fails */ - piix4_add_adapter(dev, retval, false, 0, false, + piix4_add_adapter(dev, retval, false, 0, false, 1, is_sb800 ? piix4_aux_port_name_sb800 : "", &piix4_aux_adapter); } -- Jean Delvare SUSE L3 Support