From patchwork Fri Nov 20 03:27:00 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 546793 X-Patchwork-Delegate: sjg@chromium.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id BC5DD140549 for ; Fri, 20 Nov 2015 14:50:23 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.b=csFO+iEV; dkim-atps=neutral Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id B953C4B895; Fri, 20 Nov 2015 04:50:21 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jtFsSSpK8LQK; Fri, 20 Nov 2015 04:50:21 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id D3D944B86B; Fri, 20 Nov 2015 04:49:22 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id D5B534B7FB for ; Fri, 20 Nov 2015 04:27:37 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id LDgEqIl8lB2L for ; Fri, 20 Nov 2015 04:27:37 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mail-io0-f171.google.com (mail-io0-f171.google.com [209.85.223.171]) by theia.denx.de (Postfix) with ESMTPS id 0CCB24B806 for ; Fri, 20 Nov 2015 04:27:13 +0100 (CET) Received: by iofh3 with SMTP id h3so111401953iof.3 for ; Thu, 19 Nov 2015 19:27:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=i1gLmE30eDrG8RM1dPg/5s01caJ2Vmw34pDSlz8qyMw=; b=csFO+iEVqvbwVydsXP/rPiXZsEZm1CoVcLjkwUKUCUgMwiX5/pA8lalW2BYuUilxl5 KcjUAwrQ7ZW0qbeQooHBkGJv9FM+EwVdDQLQU1bv3PWkhyusJHPnda8p4ueXT0sk1l1Y a9E4+3pORY0NTAhJr9tIDY06RWCBe/ZkPmF3FLxW7bc2ATa2YhK9wnv694YQ1EDWQRNk U/MoA4tILC90sl4fWi36zIHIJUfDAG0Tqei1DOv/nw+CXfOz5z437kd9CeEmPNsWegfr usCq3OL8UzXzfuFZsIygIreTxys3DUQRbp0XnHfdn5rfe30t96JgM8pgXb44qERM80ck KEnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=i1gLmE30eDrG8RM1dPg/5s01caJ2Vmw34pDSlz8qyMw=; b=ce60wEyU0jJtspA7iPaJShhR8SSy8w1VYkHVy6kt1aJCzenqefDRKaqgiRm0S1dp2n vtDnKMa/mBjFoTOJQRHp3/gKe2ZGHrpIO4QjzEpmdXqKSjRlAzYDKWNSrmPcGls2iouu sR6sVJYcmQ6ROTcgdyc3GGIeR22LVmXA8Rx6BO5qkA2lVKmBV7I4ixp9bizizLS7vaMd xuCAGFQt5jwZ3bsWCQfRrfRiK2ncuYfQyR3IlRGP379puBZizKa8ld0sQAaHT90PYBJE wjf7nCfYUIkSQDhDXZkpxUeaL+kRr7E/hhGyA3O1VGp0ik/qWUAJpnoz20klm1PG9W6x R96A== X-Gm-Message-State: ALoCoQmQpgx/2psac1+DI6LIIRf0OdkiTtRgkKf2jQhF7oH3Y+2YW0tD/jFbVEqbvnexZcCKMM2h X-Received: by 10.107.14.137 with SMTP id 131mr107109ioo.69.1447990031185; Thu, 19 Nov 2015 19:27:11 -0800 (PST) Received: from kaki.bld.corp.google.com ([172.29.216.32]) by smtp.gmail.com with ESMTPSA id l41sm4585777iod.34.2015.11.19.19.27.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 19 Nov 2015 19:27:10 -0800 (PST) Received: by kaki.bld.corp.google.com (Postfix, from userid 121222) id D10582210F0; Thu, 19 Nov 2015 20:27:07 -0700 (MST) From: Simon Glass To: U-Boot Mailing List Date: Thu, 19 Nov 2015 20:27:00 -0700 Message-Id: <1447990022-6969-7-git-send-email-sjg@chromium.org> X-Mailer: git-send-email 2.6.0.rc2.230.g3dd15c0 In-Reply-To: <1447990022-6969-1-git-send-email-sjg@chromium.org> References: <1447990022-6969-1-git-send-email-sjg@chromium.org> Cc: Stephen Warren , Tom Warren Subject: [U-Boot] [PATCH v5 6/8] dm: pci: Add a function to get the controller for a bus X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" A PCI bus may be a bridge device where the controller is the bridge's parent. Add a function to return the controller device, given a PCI device. Signed-off-by: Simon Glass Acked-by: Stephen Warren --- Changes in v5: None Changes in v4: None Changes in v3: None Changes in v2: - Use the device_is_on_pci_bus() API drivers/pci/pci-uclass.c | 8 ++++++++ include/pci.h | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c index e38e0b2..f3f5f00 100644 --- a/drivers/pci/pci-uclass.c +++ b/drivers/pci/pci-uclass.c @@ -53,6 +53,14 @@ struct pci_controller *pci_bus_to_hose(int busnum) return dev_get_uclass_priv(bus); } +struct udevice *pci_get_controller(struct udevice *dev) +{ + while (device_is_on_pci_bus(dev)) + dev = dev->parent; + + return dev; +} + pci_dev_t pci_get_bdf(struct udevice *dev) { struct pci_child_platdata *pplat = dev_get_parent_platdata(dev); diff --git a/include/pci.h b/include/pci.h index ec2d104..f3dda70 100644 --- a/include/pci.h +++ b/include/pci.h @@ -1123,6 +1123,14 @@ ulong pci_conv_size_to_32(ulong old, ulong value, uint offset, enum pci_size_t size); /** + * pci_get_controller() - obtain the controller to use for a bus + * + * @dev: Device to check + * @return pointer to the controller device for this bus + */ +struct udevice *pci_get_controller(struct udevice *dev); + +/** * struct dm_pci_emul_ops - PCI device emulator operations */ struct dm_pci_emul_ops {