From patchwork Thu Dec 14 03:11:45 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Cooks X-Patchwork-Id: 848359 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-i2c-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=opengearcom.onmicrosoft.com header.i=@opengearcom.onmicrosoft.com header.b="JZRhAW8X"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yxzC75nF2z9t2M for ; Thu, 14 Dec 2017 14:12:51 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752243AbdLNDMt (ORCPT ); Wed, 13 Dec 2017 22:12:49 -0500 Received: from mail-by2nam01on0087.outbound.protection.outlook.com ([104.47.34.87]:63552 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751092AbdLNDMR (ORCPT ); Wed, 13 Dec 2017 22:12:17 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=opengearcom.onmicrosoft.com; s=selector1-opengear-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=oYCgqLoI4mw7Rv+fyKCkDIVkwGuBRdQa7/or4bIwbC0=; b=JZRhAW8X2aGY5jaoQaPKcCghCEl4FOvNlFHP6OKeUFYBk+we+8vq6JGn+VDiVDGVTZ6Fp12LoERiWfFS38j9tyWdcna7DO3PGV5cFG5sl/lc2ajJLJxcmG1fE6txZryzjFU5VAd2XIj1nCgIwdfZyk7YOETrpCNnH3lrysX9fFc= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=andrew.cooks@opengear.com; Received: from andrewc.bne.opengear.com (59.167.150.161) by CO2PR15MB0027.namprd15.prod.outlook.com (10.161.86.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.302.9; Thu, 14 Dec 2017 03:12:14 +0000 From: Andrew Cooks To: jdelvare@suse.com, linux-i2c@vger.kernel.org Cc: platypus-sw@opengear.com, Andrew Cooks , Wolfram Sang , linux-kernel@vger.kernel.org (open list) Subject: [PATCH v2 2/3] i2c: piix4: fix number of SMBus ports on HUDSON2 Date: Thu, 14 Dec 2017 13:11:45 +1000 Message-Id: <10a5f5d056511d07c1946d744fc84f243a6097cc.1513215039.git.andrew.cooks@opengear.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [59.167.150.161] X-ClientProxiedBy: MEXPR01CA0140.ausprd01.prod.outlook.com (10.171.15.25) To CO2PR15MB0027.namprd15.prod.outlook.com (10.161.86.142) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 004491c0-3c7e-4a6f-c63c-08d542a07ab2 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307); SRVR:CO2PR15MB0027; X-Microsoft-Exchange-Diagnostics: 1; CO2PR15MB0027; 3:Qt1BYwBXHkzAKQQ3iu0YKWxGdVN86fHTVglTRVfFG9+EDdY8Bt4McRsE0hzs6DlekdVs0rVgLzehFsWPwbP0ER8U5QQ+P07H5HXuC7veeFyFUI2WBwuNKXWKJS1Vw4Z9aFNLBfEa1Xd6eRwnoTofW1TTYn9k61Y8f/jV12tyT52ss5WJrehzQ4bE3UtjjGIThMJwgYyvRakVdJak7OeTVDG76r2M/xmo2RF81K3Ta4nj9ZT2+qSuz1/A1J/Eq5LC; 25:A3JYMbap3WLxcG4ZRLkk2vxnBE7fWF6lbO3J29TDsnJLynK9wJM+37kk6LNkBsYILKv1KebYa7Y0/pvChCfMFdIa7XZvi1jXLoOpuB3ankUQpOwntEOJepVxTYAxHwSqN27JthElBi15ccewLqp2X62gN+SDUb1KYtKkAO7DEPVIcYceuoAzs9/NPS3SMYAgm1m9u1OMa5BPWYf6HKbB9v+QeufQ/NqQP3Tj32ul4vZqAjlflOy2w/aFeqMMAYlVI+gxjLhrXnX1lwbVzjx/5FtqJzyzZlSGxEzvptJHfyhK/ppy9PTHbfYi87Fmig7xAljPPVH9VVqXDEso83aPf64ujRUbAfffV4gW3zVsEfA=; 31:qixcZYsMmHSayO8RsR2jXlOSRu1YDr0N2ivmV76ki9ct4fDQ/JBwZ+zhiUoT74pVH39mPqN+EJ9tN1he6BQOD3zNJVRjlaLQHnydWI55iEgpUhPlXlzRSW+narNSlGNborLogRKCGiGn8a7ZOmktP/Va9TjQM3X9ch/lVawUtNmCS8IrL2JWI+f5DhH5GzeGWTfwcw4N+e17k4ALX6oQ/TfqwH9W5a1wvuWNZ5FJdLo= X-MS-TrafficTypeDiagnostic: CO2PR15MB0027: X-Microsoft-Exchange-Diagnostics: 1; CO2PR15MB0027; 20:L3AuLsWBdSoglmB93kYLOUtENE21SrePtJE5R/nTdSGyBIddXiVGy/2nMvjHo4BHIxcoVS+xt0EvshAazFRL0Q/qXMxC7FWu7ng+z0QRaFXYKwNI2lVDnrK1rnxh3gv1SQDq3YRVaOogJoj+1H9qTTx6pJ8mNtJxX7om+dYRv8M=; 4:n27xgwaVItHjZyn4l5IZSKzNCMUSq4M9ly1/EgVcPI4sYMmN7G9jdvptCMZiBXeTlNAnT4BVKLkowaWSB6dJTnbfHWWt6z6AgaNOecKOzeXmhozbY9t3nkurgSmorp1Bw+bUc1p2yUJlmoiTvrUPa/uF+3lP7zqerDH//ARf0k0IODwwsfG1fl5hAk65DwqbsBd+gawqT4QCys9CU7x3rkosMF+YSKCql/OwTUVqTDOdyC/Yz6ASczZ/sYfbbVZKRRekwwUPFI2WCDRUGXqrzQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(3231023)(3002001)(10201501046)(6041248)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123558100)(20161123555025)(20161123564025)(6072148)(201708071742011); SRVR:CO2PR15MB0027; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:CO2PR15MB0027; X-Forefront-PRVS: 05214FD68E X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(396003)(376002)(366004)(39840400004)(199004)(189003)(7696005)(81166006)(66066001)(81156014)(16586007)(7736002)(47776003)(305945005)(5660300001)(2950100002)(52116002)(97736004)(6666003)(68736007)(386003)(4326008)(478600001)(8676002)(316002)(51416003)(36756003)(2906002)(54906003)(53936002)(48376002)(106356001)(105586002)(25786009)(6486002)(50466002)(50226002)(3846002)(8936002)(76176011)(118296001)(16526018)(6116002)(86362001); DIR:OUT; SFP:1101; SCL:1; SRVR:CO2PR15MB0027; H:andrewc.bne.opengear.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: opengear.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; CO2PR15MB0027; 23:6KyFTXeKYROud3AbS5B4oPcXWKrzlSkXBG94ynNanKxBOOdo+uLpXQJFrK6uS6L1w000/8ur94yWdhP5+4nZDL2lWwNpdRtoZJ1LQIudQhtZLJy5faqpdgTB9idTpb27NTve4XxcqYhIcafQlBmlxgHiIuU3at7bF5pq9hcxN5Mt+WzAh95nXnsjlbGF4bj+u+BGHF1nhkKThyPO5Q+xoVgWz9H/hoBmbESHPkCaO7lrtsdZapgTJaNsiePDC1skB3B5hrRrtY+tWn+suQTsVVCR7plLCafxDWB/hqzlLlJImFs7XBojklwnDgyy9aDZDRj8hHoq1+F1H1ZfCp4NesqSanCvMvR6ECVxC1imCmw6yYHOloaiihDl9hHam9k7vXvJQnbTPKgD0qYEoPo7bQcmqKFqecBVWSZDhYugVBM/qoZtz4sIreW2AZNyMLqvBW7/7k/U+sT2Xw2BgaNjmUjFqYJW15aMKrIL90ZrvRkyaTCNwv37jNCdeiGvmXvc0x/0JPKFHUC0eAEYcdKQWHq17OIrmA4JY2cF83w+VjbiqhmHK/EIT0JSYtR10D3ONDsZFbQKOaV+2EAHKkkVAKBkI3CkvH56OrdwccVSlTJvE77LJrlqBt+UT7fsr7qRWfzEhdbGLf/4zpjJSSvmQ2VfvXZ4jtghqpjqa0OQI8B7mVU27fxwjnxSxi6fVjxHwc7qjpVPlp2bxHOCPWCXf+NrC82L9XQ6MpoO+5GEao1TMQt3Z3GRLGBVJkZ2pBUfMhEtQys6NS5OXOLq50qmMh3p/9JJ6mX047+6n7cCN6geL2W70uzhgUsF1mT/iGOYiil1jfhQXpP9AFJroUDwM5MmfpXdFIeXBNoRmUNudx1f87DS2WkW6USaI4ed3Hqt1Q0kc4YcwcQXW9/rp2d/qGyHp4/3cEjG2Dyf4kp0p6/Qhegt+n6/acJDCdu8Wi1TjiVSWlEx4ULgxBUq5beyWBkvrskeFH04Jt48TPG+36GMY8vl9Cx89aiXOgXocfNjUN3iGUQspuDAlBogcIcs79qtUgi5MbRF9LD2W4neaoE= X-Microsoft-Exchange-Diagnostics: 1; CO2PR15MB0027; 6:ehOJtp73v5OcQInm2jg/XSc/zsIStP8Yee7ZTAZOnnM7OCyf6ZmB2JylVVkROLP6uKtVq9GCldJoX/qIO7r/aGAUbiAQTF9389OVkNBPWeSGdSoq9hoeP9yYvCVre5Qsbh3jdigkU0uqb6zYRU5JjGvKhe7ivp97xff0ZgjivA0JV53GmfW1I+W7P5lxCTe7cO8Zz9AxrvwymVaUyQAtDoPLvflwn2daa4MB8AWw9qsCdbOpgDU2rQy15NCguQRuPEcxRtWr4BxqYndyYh+YuLyfoEaX3F42rkSUjHJUo7PA5tpMuIPlzrw5HRN2LwmD32eGDe066HFKWbN1HHYr6KnRoDCGDAI7RNEQc/jBUrc=; 5:JihNwE6GGNdZ0nNpjXUdwYZoVsrkSuseesP3qb729uEDjQos6mW8UYyjtblf0KLhw609IKvivDYwl8BFRRX5fASaRHQPDMUAvxi5LwtLtpvIqXo3dqYXlkLrefLCTtnEa6aVH8eb+4f1SvLMzsx1rpX8hbdOwv7ATJ/KSJlIeN8=; 24:oG3trXLNh7+Mt7dNqrCupimqTGFwkX1YtnnbhBNC8UI9MSB1EbVRPfTXnvhP1k5j3WuM453jI9MdjYzIRDBKAiM4B98PVcC44DQW1X7q6yo=; 7:C1V96YhA5Fpl3qmsKCcLvc0RVSdn21wEzn0xembawD1wXoqtt3C/JgQhpD/NVzbj9PIvf++P12OVT6gwOd9yKjLm2k+s23VncQfc+85UGwAz4qSvnHGxYRXbCDYctpCwBRCGxYwGtY9WFpcDvHNfTmSZCJR/JfSF7QbKFQm+QyYXIC9zG7354lRYS81vByDWCSA1dUePnykHEm5nNhjgbfUL21mvmvoPFW/ktcI+O54m/nbI7C8OlS2U9SsEJa0e SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: opengear.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Dec 2017 03:12:14.6655 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 004491c0-3c7e-4a6f-c63c-08d542a07ab2 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a6251c26-d21f-4164-a225-1f4eaebf5f9a X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO2PR15MB0027 Sender: linux-i2c-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org This prevents bus timeouts and resets on Hudson2 (Family 16h Models 30h), when probing reserved Port 4. According to the AMD BIOS and Kernel Developer's Guides (BKDG), Port 3 and Port 4 are reserved on the following devices: - Family 15h Model 60h-6Fh, - Family 15h Model 70h-7Fh, - Family 16h Models 30h-3Fh, Signed-off-by: Andrew Cooks --- drivers/i2c/busses/i2c-piix4.c | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/drivers/i2c/busses/i2c-piix4.c b/drivers/i2c/busses/i2c-piix4.c index b92ea5d..cc38dc3 100644 --- a/drivers/i2c/busses/i2c-piix4.c +++ b/drivers/i2c/busses/i2c-piix4.c @@ -82,6 +82,13 @@ /* Multi-port constants */ #define PIIX4_MAX_ADAPTERS 4 +/* + * Main adapter port count. At least one (Port 0) plus up to 3 additional + * (Ports 2-4) + */ +#define SB800_MAIN_PORTS 4 +#define HUDSON2_MAIN_PORTS 2 /* HUDSON2, reserves Port 3 and Port 4 */ + /* SB800 constants */ #define SB800_PIIX4_SMB_IDX 0xcd6 @@ -802,6 +809,7 @@ MODULE_DEVICE_TABLE (pci, piix4_ids); static struct i2c_adapter *piix4_main_adapters[PIIX4_MAX_ADAPTERS]; static struct i2c_adapter *piix4_aux_adapter; +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, @@ -858,10 +866,17 @@ static int piix4_add_adapters_sb800(struct pci_dev *dev, unsigned short smba, bool notify_imc) { struct i2c_piix4_adapdata *adapdata; - int port; + int port, port_count; int retval; - for (port = 0; port < PIIX4_MAX_ADAPTERS; port++) { + if (dev->device == PCI_DEVICE_ID_AMD_HUDSON2_SMBUS || + dev->device == PCI_DEVICE_ID_AMD_KERNCZ_SMBUS) { + port_count = HUDSON2_MAIN_PORTS; + } else { + port_count = SB800_MAIN_PORTS; + } + + for (port = 0; port < port_count; port++) { retval = piix4_add_adapter(dev, smba, true, port, notify_imc, piix4_main_port_names_sb800[port], &piix4_main_adapters[port]); @@ -874,7 +889,7 @@ static int piix4_add_adapters_sb800(struct pci_dev *dev, unsigned short smba, error: dev_err(&dev->dev, "Error setting up SB800 adapters. Unregistering!\n"); - while (--port >= 0) { + while (--piix4_adapter_count >= 0) { adapdata = i2c_get_adapdata(piix4_main_adapters[port]); if (adapdata->smba) { i2c_del_adapter(piix4_main_adapters[port]); @@ -995,12 +1010,10 @@ static void piix4_adap_remove(struct i2c_adapter *adap) static void piix4_remove(struct pci_dev *dev) { - int port = PIIX4_MAX_ADAPTERS; - - while (--port >= 0) { - if (piix4_main_adapters[port]) { - piix4_adap_remove(piix4_main_adapters[port]); - piix4_main_adapters[port] = NULL; + while (--piix4_adapter_count >= 0) { + if (piix4_main_adapters[piix4_adapter_count]) { + piix4_adap_remove(piix4_main_adapters[piix4_adapter_count]); + piix4_main_adapters[piix4_adapter_count] = NULL; } }