From patchwork Tue Jul 12 19:38:51 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xavier Gnata X-Patchwork-Id: 647597 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3rpsjK5Q18z9s9x for ; Wed, 13 Jul 2016 05:39:17 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=EYh61b4K; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751405AbcGLTi4 (ORCPT ); Tue, 12 Jul 2016 15:38:56 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:35010 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751193AbcGLTiz (ORCPT ); Tue, 12 Jul 2016 15:38:55 -0400 Received: by mail-wm0-f67.google.com with SMTP id i5so3110663wmg.2; Tue, 12 Jul 2016 12:38:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:subject:to:cc:message-id:date:user-agent:mime-version :content-transfer-encoding; bh=An3ZkqGu3mPPs7Bfr3IUosKOk1p4NQnY32mpyF5YhLw=; b=EYh61b4K9GQcgM/S+8GSVZ8WCe+X0+QgnOABVhzFnupo7+LJ12BjTRCaolJ0jJgCyu LoLezmfPnkq7kU5Bgv/69ShEnDKI0efBIJH/Scq1KaOF7wbSKjuHLRrFbRdeEds3ed0p /e9Zw0cF/Aj/i3kWHfKUtnBni1wlrR/JKWeOHeNnBG0oU5qOhQe0AXXxwFZa6Kl58Vue 5249phjFrOGm/J8POnH8J6QNVPQUPhXVx8LXVnmBQ8jsDdX1YuDLo9kX2Z1c1MdvdouT CBJ18y3HkOQk0q7qJ8Xlm2GnbgXOOQZpU5Cn5owkW13j0OYTUd42blTPtD0Tv2uGnqhr 0DQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:subject:to:cc:message-id:date:user-agent :mime-version:content-transfer-encoding; bh=An3ZkqGu3mPPs7Bfr3IUosKOk1p4NQnY32mpyF5YhLw=; b=bdnXDhQrW1I7QoY99wQYB/go0FOtuqOAG7ZShTcx+C3EY40oxGk6SfZ821HZrKAWrt EYrWyiOyZfn35ucVq3BLEIICpzn6g027ThzTMKTpRI5Ue/4YczOOeoCZ7lnmpcWU5I7E OSmrVeYBSpDbjOaQVCYCKV36BJTRvKMJtvr434oPgcGWQ05uh+gmOHjyMGT5e0BViRyV zxACo+2talgwnQgGZf+xAVPt6RZ4O/rJpE5lDR46q7PPulhtF5vZyg//plr149Z6bWYp BcibbdRpOcRx2NEUrs8k81wZtdq1uXFbvPiSe03YMWkyDZ+giDmQ1p8GWZi9SCyRKoo8 pXZQ== X-Gm-Message-State: ALyK8tIqZNC8zZOQtNGsPErsMEO5mpeyXZseL93h07MWpwjhhfLAbEdKBl6w72Q+DXBILA== X-Received: by 10.28.11.79 with SMTP id 76mr5671146wml.91.1468352332835; Tue, 12 Jul 2016 12:38:52 -0700 (PDT) Received: from ?IPv6:2001:a61:3154:4901:21fb:fec3:af70:bc9a? ([2001:a61:3154:4901:21fb:fec3:af70:bc9a]) by smtp.gmail.com with ESMTPSA id i66sm3774653wmg.9.2016.07.12.12.38.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 12 Jul 2016 12:38:52 -0700 (PDT) From: Xavier Gnata Subject: [PATCH] thunderbolt: Add support for INTEL_FALCON_RIDGE_2C controller To: linux-kernel@vger.kernel.org, Andreas Noever Cc: linux-pci@vger.kernel.org Message-ID: <5785474B.6070608@gmail.com> Date: Tue, 12 Jul 2016 21:38:51 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.8.0 MIME-Version: 1.0 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org Add support to INTEL_FALCON_RIDGE_2C controller and corresponding quirk to support suspend/resume. Tested against 4.7 master on a MacBook Air 11" 2015 --- drivers/thunderbolt/nhi.c | 6 ++++++ 1 file changed, 6 insertions(+) dev_info(&dev->dev, "quirk: waiting for thunderbolt to reestablish PCI tunnels...\n"); device_pm_wait_for_dev(&dev->dev, &nhi->dev); out: @@ -3344,6 +3348,9 @@ DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_INTEL, DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_FALCON_RIDGE_4C_BRIDGE, quirk_apple_wait_for_thunderbolt); +DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_INTEL, + PCI_DEVICE_ID_INTEL_FALCON_RIDGE_2C_BRIDGE, + quirk_apple_wait_for_thunderbolt); #endif static void pci_do_fixups(struct pci_dev *dev, struct pci_fixup *f, diff --git a/drivers/thunderbolt/nhi.c b/drivers/thunderbolt/nhi.c index 9c15344..b3d55ec 100644 --- a/drivers/thunderbolt/nhi.c +++ b/drivers/thunderbolt/nhi.c @@ -654,6 +654,12 @@ static struct pci_device_id nhi_ids[] = { .device = PCI_DEVICE_ID_INTEL_FALCON_RIDGE_4C_NHI, .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, }, + { + .class = PCI_CLASS_SYSTEM_OTHER << 8, .class_mask = ~0, + .vendor = PCI_VENDOR_ID_INTEL, + .device = PCI_DEVICE_ID_INTEL_FALCON_RIDGE_2C_NHI, + .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, + }, { 0,} }; -- 2.7.4 --- drivers/pci/quirks.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index ee72ebe..e280351 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -3320,15 +3320,19 @@ static void quirk_apple_wait_for_thunderbolt(struct pci_dev *dev) if (!sibling || !sibling->subordinate) goto out; nhi = pci_get_slot(sibling->subordinate, 0x0); - if (!nhi) - goto out; - if (nhi->vendor != PCI_VENDOR_ID_INTEL - || (nhi->device != PCI_DEVICE_ID_INTEL_LIGHT_RIDGE && - nhi->device != PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_4C && - nhi->device != PCI_DEVICE_ID_INTEL_FALCON_RIDGE_4C_NHI) - || nhi->subsystem_vendor != 0x2222 - || nhi->subsystem_device != 0x1111) + if (!nhi || nhi->vendor != PCI_VENDOR_ID_INTEL) goto out; + if (nhi->device != PCI_DEVICE_ID_INTEL_LIGHT_RIDGE && + nhi->device != PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_4C && + nhi->device != PCI_DEVICE_ID_INTEL_FALCON_RIDGE_4C_NHI && + nhi->device != PCI_DEVICE_ID_INTEL_FALCON_RIDGE_2C_NHI) + goto out; + if((nhi->device == PCI_DEVICE_ID_INTEL_LIGHT_RIDGE || + nhi->device == PCI_DEVICE_ID_INTEL_CACTUS_RIDGE_4C || + nhi->device == PCI_DEVICE_ID_INTEL_FALCON_RIDGE_4C_NHI) + && (nhi->subsystem_vendor != 0x222 + || nhi->subsystem_device != 0x1111)) + goto out;