From patchwork Mon Jan 29 03:54:18 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Cooks X-Patchwork-Id: 867013 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=opengear.com header.i=@opengear.com header.b="gREVb/yG"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zVFyv1TTjz9s7n for ; Mon, 29 Jan 2018 14:55:19 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751169AbeA2DzF (ORCPT ); Sun, 28 Jan 2018 22:55:05 -0500 Received: from mail-dm3nam03on0047.outbound.protection.outlook.com ([104.47.41.47]:62784 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751112AbeA2DzB (ORCPT ); Sun, 28 Jan 2018 22:55:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=opengear.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=6nG/9bB8J0cWFMqFlxbyg5ZOK2CrXAXuXj0LQPNkaqg=; b=gREVb/yGkCB27jrfkfAt3dxJUazfVJMuzUJJCxxbQ9X6yDQKSZ0hIsqYcF6a1k4m69mAVCSZ63dQEjeMXHRsQxuU+PQCwSbeLNkXuwZzaQVKHottySBcPja52kevD+8VtQfsYcAXIp0RcGT9DYLayfYLej9Kh3G+OIy90LZSxRE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=andrew.cooks@opengear.com; Received: from andrewc.bne.opengear.com (59.167.150.161) by CO2PR15MB0028.namprd15.prod.outlook.com (10.161.86.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.444.14; Mon, 29 Jan 2018 03:54:58 +0000 From: Andrew Cooks To: Jean Delvare , Wolfram Sang , linux-i2c@vger.kernel.org (open list:I2C/SMBUS CONTROLLER DRIVERS FOR PC), linux-kernel@vger.kernel.org (open list) Cc: Andrew Cooks Subject: [PATCH 1/3] i2c: piix4: Fix port selection for AMD Family 16h Model 30h Date: Mon, 29 Jan 2018 13:54:18 +1000 Message-Id: <45ca7022f97260c6d1c838de93ef2af0f75cee49.1517195327.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: SY2PR01CA0015.ausprd01.prod.outlook.com (52.134.186.27) To CO2PR15MB0028.namprd15.prod.outlook.com (10.161.86.143) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 741bf6c0-d49d-4048-4fb8-08d566cc11b6 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:CO2PR15MB0028; X-Microsoft-Exchange-Diagnostics: 1; CO2PR15MB0028; 3:3O7+27d73o5+ig2gNdV7AuHfk4YCEPn4VxjfPg7aUm2O4M7emOKvrqPRmXA6ZSGoqPEJEE2VXGYW8bPvuDmirIlssPAXE4Y9MdXyj0NUwyYOMg7bPJcWVe9ci9sC4wCwWA9ldmtd+7sqJs229++TK1XP83P4ayVBnS06thc0eaotpOVTUzHc0ue6W+dUQWGKkT4oiVcCNkByDcVYNqfa3KFYmz8LfjzAPkFRbEZsZyMKeSbWbCw/pbxTXz98P9Rc; 25:EnmnzQfogUXX/VU+4pbznWYIBAjHLjWrsJBfQn2jsq8xYwWN0dhgH4LXrWcvbTSXPWJ7otw9YYQrgGTL3GVs5LN3wiEk/zpFQEPdsyQL1mR0FkvUhgJDiC0wXevEsxp7D2zdbzFxWEL5Rb067rvL0VwcWxsaKlNUspi+HEgN4cYiX2n7a3FqakC6xdLxsM8sRm/h6DJLJASWGHUPkArhgZwMuxHL/LbGWssrTSd7v21JHZQiWIfFSBUGfROjsHfsUn7/++worNmaauoskUKvfhQOhNzWjJSrmIZrvfLD1Kf0Cqlj2fR5ghVNfmeKVb8kw0r12+qvFneu03zSxAZzRQ==; 31:XUjPBWK2ocGYeANlrWC2YR5iXNBwGG4JsHm9b9sZ/j7Lt5eeVbesU4J0sCiclp/bRm5e/BFw0LOyuL1/gkLTSLsuU6aBqq1WKs5v8VEGWCZIUVika9Ab/TqwZkEE0P6+KZHHCHSP8wToF46SxIBeD+AtlUy8TdX90qoSu8bhXsJ+Wix7rfO7KpW5cltoBDyNWN7Yri37/FRe3axjPh7GXJNyrXcSqMgCa9oNByBHJaU= X-MS-TrafficTypeDiagnostic: CO2PR15MB0028: X-Microsoft-Exchange-Diagnostics: 1; CO2PR15MB0028; 20:uhHQArG4K5smA8ef8RZt7wOVjggW11nLrOblNZjObt1jrDwoPeQf9EGey6FaqZHcSHcAfQGcENujc7HkANkuOzXjORGQzSlDZD6xIfc4ngJBvssc/HoQzY6wuI415I8LXmjjqnZpo5xoePCTiTk8TBdgauqJ43/QzS7619zDu+4=; 4:9oMCB/9GW/h7WETkA6SgvSKDjTgOZ2JFEkikiYgGWKTQ+/kLmNb1q23KOUw1/uuKHiusvJQ5BnIdfEOGRj7SfVBuq3wtapXfV+3bMDpuWIRo3mAO54MVX9gld3cupP9X+W0ZKeK9on4+hYQpESVY7paCu9I9ko/iOAV7YtmWkf/IzYvsKgWyOjTfCqWgFAQyT1EUQETWbyk1x89E8Q4maQ0G2Z1poRGDie6kQ793bVWZfyQcTu+/Lws7t+oHfcsziR0x6K4xidPvgN/CsUwzxg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(3231101)(944501161)(6041288)(20161123558120)(20161123564045)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:CO2PR15MB0028; BCL:0; PCL:0; RULEID:; SRVR:CO2PR15MB0028; X-Forefront-PRVS: 0567A15835 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(39830400003)(376002)(39380400002)(366004)(199004)(189003)(26005)(16526019)(2906002)(107886003)(68736007)(52116002)(386003)(3846002)(59450400001)(51416003)(7696005)(66066001)(76176011)(4326008)(36756003)(53936002)(97736004)(106356001)(6116002)(186003)(2950100002)(105586002)(86362001)(575784001)(6666003)(50466002)(316002)(110136005)(48376002)(25786009)(5660300001)(118296001)(16586007)(81156014)(81166006)(305945005)(7736002)(478600001)(50226002)(6486002)(8676002)(47776003)(8936002); DIR:OUT; SFP:1101; SCL:1; SRVR:CO2PR15MB0028; 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; CO2PR15MB0028; 23:C6KBKLVFxDMXaM6oRDHkG4llRRoDNXXpFRgHUaQsb180KRKGVF8mHUuvHRLN3Tuh4xhSCyEkXayF62r0VsSV7YFsF5V6A1Qk9f0lDwy1UCaXuZS2G6g1twHEpplQ7TBrj+SX67DfzDG9K5NxIcPH4c13G2kpkuDK9u/m9L9YVHoe8ewHbmQ+kgWwKkZ/ZYQgGRBctqaupMSLRXJUPikQTihYmKipUvxYbSbTDlrUqJcpXua3/81cq7S/fEhHXaMegIn+/3N2SSVr/GA/Y6Nwtp126SqCHxdfW6dGVo3+V0Bj59JdU0kaGDZFZJz3KZ8obODmNwYADaUD8GKXHZ4GfeOiPVq89fjCUu9nQOXszfFkYee8sn6KFFQGIH0JBBkhbjX8MO6f7AbtUjEm02qFg/jPI4av/pn2ECEusTOkkXaqRwQdqd02m4g2duejOfkgiG4dGdjUAMtO3RyaQlOCxoUQO1M+I0pHddst/OTK67F7YUn4wLjnL3AOc4Wuu7kXrvrmG1icuw4n7iqoPabvk2ORoV1WEhRCfFjGmyUughY/pZ9rn/o3YQXs9qveNUXugNucMf5m+7Ane6yRmsS7eHggqCl08zxcqdkXUhOOy9JZ7Oy+7gWEtjUeu7L9mFOdDacJ5HSrjZmkeutmh2LBxJL/bNw3yAElFr+ne8yOg024wbeV7giD1dBTu9/hkOzefSFQYY+F2BjmXDo53LuW4tgettEOjhFfaxDNOvxj7i9yH+jc1RmtrpNQnxqZaqjfKq3l68nLGK9QT+I+jSASX1p91vWwEg70Lr25ob9NDRc2YguBuoANyphLf+gngyAAceCvoSpNdmjhpCSi43tT6t7SemNP8V2rt5u01XbVpypLWZ7v6sXICpobtXEVhrKZLQQQekwPgX059l+A27trOuH+CbBEz8GtnVI5v9xeCe5CARvkYMGe/dc+7MDIqwmqABkAJaR1ngsWwb4w4BKjfS5CZO5oiWCdkWWwD+TN7exnlFSVFleYY9Y92ADJPm3hFM+eSffvXQzx8CzbnXZ6KFVjUn+lbo8i5IZfmre5Ed3aUf5IdJLu8XCi2eGEW+5B/AX58PlSLfsfzaiYwsQ/mvL29G7MpzpQOe67YFQenYrUnqI2K37MTM4mspsR++qELSAbfGG6ZeSI9cM9W6KmvYaqEAoj235PPFXgaNjRRNE= X-Microsoft-Exchange-Diagnostics: 1; CO2PR15MB0028; 6:0vq5vCdyOfLQxjktrnUCa153LPP8uRT6+xDYwVvxmy8yPmR0lkcjTmfHkGXOrLod+gydkBRuQOx8IaEvOeWSQ75ATj/3eScocrFKUU0Rna3kuTRLrfx6BgUwmIiRWsfWKOca8fOcq8KDoy6HSAbRjpQYvJvAOlfLJHN7Jjrm0Ni/Zhiv7bAp2PldvzZ93Xghjn6fiMsYllbdPLss8YeXbYHTOBiy5tI033Myf7FWxmuSokpknCjmDCLIefcGIfMjwjPEHwc1+RBEEy3KZpKCvfjwWP2NRda1+pkYaiK4rjxBcEwlSprLSXeKnjvUt+sPlQa8dxFhEydLQgbHtRCnY/V4AOTCzQKLpivwmjSz8Kw=; 5:VncQ/hs3+Vj0/GqdvI85QgWHRrGfO3l/Qihe/RSMEF9/BHC5vZNjD72WBGVT0aOoX18NXCfKhxoNQ0N/Yn8WS3vinzvjCBNLgetp5HfVc/GIoVBKm05QcFjQUbETb7NBOfaJu2AHOspGtTW1Zgy9q5qYY6UMglv4la6gzcjaKVQ=; 24:vM8r1nXWz9dKMfdzaX067B/EHKVKyxdNDbuLkU49GFQn22OBMTvFHdjOs5973eFnBmg4q0IRfxqi4iQYkolpTpPIEFn6pzBTzzdSZcNlNo4=; 7:CgWmdhMatkLlBLcThLFWBnrHKauyndWmk85ypUf2pb5hm6XyM+OPSvLZUic1vAZoEjIlcEVPulxhOQRcNGWn8yBcyBvqaXNGk+SmyILkDEu9xbnuwi5YNcI4DSG8KxUTOYgXw3YYBas9nwjjnSlb9/e8X2lsw1jGbDxPpRb8QCwfzhvTQ+GbueD817Q8fEmhsWIOzPOJlo4p2TvUJS6LfHE0dI64Og6KI3Hnk8rzN5dWhVb5CfiC8KtOjVLAWIl7 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: opengear.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jan 2018 03:54:58.5877 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 741bf6c0-d49d-4048-4fb8-08d566cc11b6 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a6251c26-d21f-4164-a225-1f4eaebf5f9a X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO2PR15MB0028 Sender: linux-i2c-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org Family 16h Model 30h SMBus controller has the same port selection register as described and fixed in commit 0fe16195f89173652cf111d7b384941b00c5aabd ("i2c: piix4: Fix SMBus port selection for AMD Family 17h chips") commit 6befa3fde65fe437f588da490c07a114393ce229 ("i2c: piix4: Support alternative port selection register") also fixed the port selection for Hudson2. Unfortunately the AMD naming and PCI Device IDs aren't particularly helpful here. The SMBus port selection register is common to the following Families and models, as documented in AMD's publicly available BIOS and Kernel Developer Guides: 50742 - Family 15h Model 60h-6Fh (PCI_DEVICE_ID_AMD_KERNCZ_SMBUS) 55072 - Family 15h Model 70h-7Fh (PCI_DEVICE_ID_AMD_KERNCZ_SMBUS) 52740 - Family 16h Model 30h-3Fh (PCI_DEVICE_ID_AMD_HUDSON2_SMBUS) The Hudson2 PCI Device ID (PCI_DEVICE_ID_AMD_HUDSON2_SMBUS) is shared between Bolton FCH and Family 16h Model 30h, but the location of the SmBus0Sel port selection bits are different: 51192 - Bolton Register Reference Guide We distinguish between Bolton and Family 16h Model 30h using the PCI Revision ID: Bolton is device 0x780b, revision 0x15 Family 16h Model 30h is device 0x780b, revision 0x1F Family 15h Model 60h and 70h are both device 0x790b, revision 0x4A. The following additional public AMD BKDG documents were checked and do not share the same port selection register: 42301 - Family 15h Model 00h-0Fh doesn't mention any 42300 - Family 15h Model 10h-1Fh doesn't mention any 49125 - Family 15h Model 30h-3Fh doesn't mention any 48751 - Family 16h Model 00h-0Fh uses the previously supported index register SB800_PIIX4_PORT_IDX_ALT at 0x2e Signed-off-by: Andrew Cooks --- drivers/i2c/busses/i2c-piix4.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/drivers/i2c/busses/i2c-piix4.c b/drivers/i2c/busses/i2c-piix4.c index 462948e..89692f4 100644 --- a/drivers/i2c/busses/i2c-piix4.c +++ b/drivers/i2c/busses/i2c-piix4.c @@ -99,7 +99,7 @@ #define SB800_PIIX4_PORT_IDX_MASK 0x06 #define SB800_PIIX4_PORT_IDX_SHIFT 1 -/* On kerncz, SmBus0Sel is at bit 20:19 of PMx00 DecodeEn */ +/* On kerncz and Hudson2, SmBus0Sel is at bit 20:19 of PMx00 DecodeEn */ #define SB800_PIIX4_PORT_IDX_KERNCZ 0x02 #define SB800_PIIX4_PORT_IDX_MASK_KERNCZ 0x18 #define SB800_PIIX4_PORT_IDX_SHIFT_KERNCZ 3 @@ -359,18 +359,16 @@ static int piix4_setup_sb800(struct pci_dev *PIIX4_dev, /* Find which register is used for port selection */ if (PIIX4_dev->vendor == PCI_VENDOR_ID_AMD) { - switch (PIIX4_dev->device) { - case PCI_DEVICE_ID_AMD_KERNCZ_SMBUS: + if ((PIIX4_dev->device == PCI_DEVICE_ID_AMD_KERNCZ_SMBUS) || + (PIIX4_dev->device == PCI_DEVICE_ID_AMD_HUDSON2_SMBUS && + PIIX4_dev->revision >= 0x1F)) { piix4_port_sel_sb800 = SB800_PIIX4_PORT_IDX_KERNCZ; piix4_port_mask_sb800 = SB800_PIIX4_PORT_IDX_MASK_KERNCZ; piix4_port_shift_sb800 = SB800_PIIX4_PORT_IDX_SHIFT_KERNCZ; - break; - case PCI_DEVICE_ID_AMD_HUDSON2_SMBUS: - default: + } else { piix4_port_sel_sb800 = SB800_PIIX4_PORT_IDX_ALT; piix4_port_mask_sb800 = SB800_PIIX4_PORT_IDX_MASK; piix4_port_shift_sb800 = SB800_PIIX4_PORT_IDX_SHIFT; - break; } } else { mutex_lock(&piix4_mutex_sb800);