From patchwork Sun Jul 29 13:36:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 950614 X-Patchwork-Delegate: sjg@chromium.org 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=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="nhj7GCoB"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41dkCz6zClz9s0w for ; Sun, 29 Jul 2018 23:33:03 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 36D1AC21FBF; Sun, 29 Jul 2018 13:32:43 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 03351C21F5B; Sun, 29 Jul 2018 13:32:26 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 4B46BC21EB4; Sun, 29 Jul 2018 13:32:22 +0000 (UTC) Received: from mail-pf1-f194.google.com (mail-pf1-f194.google.com [209.85.210.194]) by lists.denx.de (Postfix) with ESMTPS id AB54DC21C4A for ; Sun, 29 Jul 2018 13:32:21 +0000 (UTC) Received: by mail-pf1-f194.google.com with SMTP id k21-v6so3356051pff.11 for ; Sun, 29 Jul 2018 06:32:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=MBzz8JrQnO10J0bJKzvNvdMfmd83vrIRkZWBlBTiCKc=; b=nhj7GCoBG/yk9dLK9gwqDItAf+QY5ECHlVrNA+PcVnGGX4OG0CaOgZcZaxF09sU68+ Mok7OeDwszNooYAumQQ9VLLwvHdCXCiPtO/Guv2tGj0Cm7j8EQ5JNm86I68UIfxdu5gS RjOspX96vao6I4nogFzRTNI8HL3tBDZuxDwR1IEIdqSulLBPfAJ+3pQwCeNaA1vtsuOV 8azC5OxF7A0qS4VG6/+1Nc7cHLPAARo/jOSoZHTCYbC4EaqH+0VtpoXra+PIRTHHHNTN 5zeg0Cod+q7rfKQXG0NbTZ3jNpdqNbX7Sc90+R0QyN3X3B9zK1hYYoJUtvpCzWhVMQRj RsFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=MBzz8JrQnO10J0bJKzvNvdMfmd83vrIRkZWBlBTiCKc=; b=n1rrE0X+VP829xrSFUrlyme8gslFqzThBUlNzAf/c/6cQW5oLmy2ya2iSXfcpC8tCM avFYuHJOwueXX4EKkfSvaUeSkJMQT7PQN67xqDhdLrlDwXZIwSCTf7vQzgBCyJXfqX7F 6z/9W50+4wj8Y4NI9dK+2z+2Xju4JYC7G525LKSPCyiXV8WkdrBL/BnL48AhhCIyHxIR uynFhuDHvov87HnBPQGA10SO17FfmluJ4n5QsvErAuUhw8mYR97Owwh6SOTPcYohnDnN Y4YZSiNIyPxj8LT7EA2LTR/iK6leCNv0tniNgz6fSyoxNXpAlxI90ioh1NIYyPrV5h0E li5g== X-Gm-Message-State: AOUpUlF1r6KvS4BI4oOyV4ZALSaEHIIWLwtNPTJwvb+SDFA7I8ciybpt Wl9pFJXhtw+SEztvaf9Qo98= X-Google-Smtp-Source: AAOMgpcNrGgCg8UXfBa49lRmlUKBNMAi0dCMkU46gWEr9C5qT13ALWHvMqONzgAOutLCWpdRf01DZQ== X-Received: by 2002:a63:d946:: with SMTP id e6-v6mr7934970pgj.24.1532871140276; Sun, 29 Jul 2018 06:32:20 -0700 (PDT) Received: from ala-d2121-lx1.wrs.com (unknown-156-139.windriver.com. [147.11.156.139]) by smtp.gmail.com with ESMTPSA id h132-v6sm13438674pfc.100.2018.07.29.06.32.18 (version=TLS1_1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 29 Jul 2018 06:32:19 -0700 (PDT) From: Bin Meng To: Simon Glass , U-Boot Mailing List Date: Sun, 29 Jul 2018 06:36:52 -0700 Message-Id: <1532871432-30703-2-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> References: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> Subject: [U-Boot] [PATCH v2 01/21] pci: Remove 440ep specific macros X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" These macros should not be put in the generic pci.h header file. Since they are not referenced anywhere, remove them completely. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- Changes in v2: None include/pci.h | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/include/pci.h b/include/pci.h index 8e27cbf..427094c 100644 --- a/include/pci.h +++ b/include/pci.h @@ -271,21 +271,6 @@ #define PCI_BRIDGE_CTL_BUS_RESET 0x40 /* Secondary bus reset */ #define PCI_BRIDGE_CTL_FAST_BACK 0x80 /* Fast Back2Back enabled on secondary interface */ -/* From 440ep */ -#define PCI_ERREN 0x48 /* Error Enable */ -#define PCI_ERRSTS 0x49 /* Error Status */ -#define PCI_BRDGOPT1 0x4A /* PCI Bridge Options 1 */ -#define PCI_PLBSESR0 0x4C /* PCI PLB Slave Error Syndrome 0 */ -#define PCI_PLBSESR1 0x50 /* PCI PLB Slave Error Syndrome 1 */ -#define PCI_PLBSEAR 0x54 /* PCI PLB Slave Error Address */ -#define PCI_CAPID 0x58 /* Capability Identifier */ -#define PCI_NEXTITEMPTR 0x59 /* Next Item Pointer */ -#define PCI_PMC 0x5A /* Power Management Capabilities */ -#define PCI_PMCSR 0x5C /* Power Management Control Status */ -#define PCI_PMCSRBSE 0x5E /* PMCSR PCI to PCI Bridge Support Extensions */ -#define PCI_BRDGOPT2 0x60 /* PCI Bridge Options 2 */ -#define PCI_PMSCRR 0x64 /* Power Management State Change Request Re. */ - /* Header type 2 (CardBus bridges) */ #define PCI_CB_CAPABILITY_LIST 0x14 /* 0x15 reserved */ From patchwork Sun Jul 29 13:36:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 950616 X-Patchwork-Delegate: sjg@chromium.org 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=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Gkid+Ooi"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41dkDb1mtPz9s0w for ; Sun, 29 Jul 2018 23:33:35 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id D6F2BC21EB4; Sun, 29 Jul 2018 13:33:01 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id E339AC21F19; Sun, 29 Jul 2018 13:32:34 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id C8A85C21F7F; Sun, 29 Jul 2018 13:32:26 +0000 (UTC) Received: from mail-pg1-f193.google.com (mail-pg1-f193.google.com [209.85.215.193]) by lists.denx.de (Postfix) with ESMTPS id EDB0AC21F3A for ; Sun, 29 Jul 2018 13:32:22 +0000 (UTC) Received: by mail-pg1-f193.google.com with SMTP id n7-v6so5767081pgq.4 for ; Sun, 29 Jul 2018 06:32:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=bMgWaG9OBqRFzTx5XOJTMAFEsyCFDWCBUK+s3rV72XE=; b=Gkid+OoiRZBC4kixyo0bFrnO/LkTHhaY3JhLKA4xXlPyjXtgSc3LBEFVwIQqEqFZHg NqbMB79i+CA0lBFEgzrRrq4xpIpfLDhfwHLb1iYZHgauM+caeXAvUBl5h6Kezl6ipVlU d3XTxBn5f9az1u1ce/gaYrOZyo5exEGBaQjmbuTnlq69DggpD9m/Iso62a7YgXl9uQeX j8CJ3z9O2b6NaQBcazhCahcK/Le2YrwWJFu6lpoCiGSs2si3d3Q5NdSIvhSnVSPn2X7Z OsIL5kjo0dH8CWfbQiw76rrE3FGXbHEh0nJ1gekGMi7hl3TIn+WudG+Be8mDaPyZXSRT mQIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=bMgWaG9OBqRFzTx5XOJTMAFEsyCFDWCBUK+s3rV72XE=; b=rdHT2wFULvAnjtGOVxrfMO0tdKF8w+HJ6VGAUAhOrFLuGmzDn0VoK+tBWjeU4RpwnQ O/SlReryLe4THuxkp18TbFxcYFTPBvFp5UCLLGQVZnZN2QYS0kA2+6z+JWqbV/XEpdRb udR+4yV7d7ZnU2ohHtxSJAUQ7etPX2Whly2ioKuFy7DDu+5xrRFEI3nxySCEtC+PXfwB m0LeAydn9fWbLT2+2H/ztzwhpK665mMLD9NybAC8tNOKzglggBOw1WmLOcFGTEMeYTd7 oL5IxDk+CuAL6WE0TBDedTS5n/KiGPjBjajovdYiztpMUL6bVM688ZytqeT8wj502cIY cGJA== X-Gm-Message-State: AOUpUlFBTy1kjKbOgKmgXN4SPvPc/i2d/XPRa40chhe4i610D6RuWLPR qA/Cp4O9fgYAsSDXAbzO85Zjc5XM X-Google-Smtp-Source: AAOMgpdTTsCD3IYvYXe5sMo9+Js93neUcwBI7I5z1Lup20xqsryFWhT78e+7Yhcz70sRTbS8x6E+/g== X-Received: by 2002:a63:175b:: with SMTP id 27-v6mr12688847pgx.31.1532871141682; Sun, 29 Jul 2018 06:32:21 -0700 (PDT) Received: from ala-d2121-lx1.wrs.com (unknown-156-139.windriver.com. [147.11.156.139]) by smtp.gmail.com with ESMTPSA id h132-v6sm13438674pfc.100.2018.07.29.06.32.20 (version=TLS1_1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 29 Jul 2018 06:32:20 -0700 (PDT) From: Bin Meng To: Simon Glass , U-Boot Mailing List Date: Sun, 29 Jul 2018 06:36:53 -0700 Message-Id: <1532871432-30703-3-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> References: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> Subject: [U-Boot] [PATCH v2 02/21] dm: Correct typos in uclass_first/next_device_check() X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" Correct typos in the comment block of uclass_first/next_device_check(). Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- Changes in v2: None include/dm/uclass.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/dm/uclass.h b/include/dm/uclass.h index 9fbaa7d..0e882ce 100644 --- a/include/dm/uclass.h +++ b/include/dm/uclass.h @@ -302,7 +302,7 @@ int uclass_first_device_err(enum uclass_id id, struct udevice **devp); int uclass_next_device(struct udevice **devp); /** - * uclass_first_device() - Get the first device in a uclass + * uclass_first_device_check() - Get the first device in a uclass * * The device returned is probed if necessary, and ready for use * @@ -318,7 +318,7 @@ int uclass_next_device(struct udevice **devp); int uclass_first_device_check(enum uclass_id id, struct udevice **devp); /** - * uclass_next_device() - Get the next device in a uclass + * uclass_next_device_check() - Get the next device in a uclass * * The device returned is probed if necessary, and ready for use * From patchwork Sun Jul 29 13:36:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 950618 X-Patchwork-Delegate: sjg@chromium.org 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=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="IZLDjjAT"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41dkHj2FmKz9s1x for ; Sun, 29 Jul 2018 23:36:16 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 31589C21FBC; Sun, 29 Jul 2018 13:33:40 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 5F355C21F3D; Sun, 29 Jul 2018 13:32:41 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 3FEFAC21FBC; Sun, 29 Jul 2018 13:32:28 +0000 (UTC) Received: from mail-pg1-f194.google.com (mail-pg1-f194.google.com [209.85.215.194]) by lists.denx.de (Postfix) with ESMTPS id 5F54CC21F2F for ; Sun, 29 Jul 2018 13:32:24 +0000 (UTC) Received: by mail-pg1-f194.google.com with SMTP id s7-v6so5761301pgv.3 for ; Sun, 29 Jul 2018 06:32:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=9WaYSCb/azPuzGOahPEKLSrkMMh91ZFvMVMUpfKuBhk=; b=IZLDjjATaihfe/rdbIWPd2kY22Ew2JzzMEdUci6lxeIee+PW9YMKMrRurhOFXIFWtI gV4WDJS0amuGTVXeEa24HvHUKWlTmpzZHAZgYMTOBi9kNHyO2AwjgNO4u8SzMGRysGXq l0PXT0iFFD6Jq54z7gyMLH1FXpwcclIsBEK+dUVUM5pU7V1mTWypxjSq9m6NjrVVLxYs RjFEvcU4EqDLjr1E4cEwXId6lblalUJ4BB/3VRM7I0if/0ifTU2GlMeX4nCoU2qg1wS7 EoMAzslHm/6BlRSid4ae+MXdwE255xEq8Th0mifKk/Y0MK1pcUYtnVuiaHRPaxcQuuRf i6Jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=9WaYSCb/azPuzGOahPEKLSrkMMh91ZFvMVMUpfKuBhk=; b=p2rhEPjj/D1n+KaKMOYLrB0gmc0/hoZtuqTtOcYfsvJqySY4/okctfrcZhB3Md2XLp bQbajbc/gD7lMidVFF1A8azJ29xJIDYDtLZZMGCYuDZJ/6erryFt1+atKhcw9N6uKNXj 6HzkGb3owAA9NjIq/eM+kFGPkMP2e8xpXi/3i5u3pcZ2myGblsh979RccrhxP/IKeYeW +r0N877eNf0X6kFzKj28/5kxFz3koewpPFyP1xD45POroL98Crt5pSyPBsOXydOYaaSE 6Uoq/hIS47UUXlVGx2inNaO3XGea2Fe+BXF0cSaK/0s6YltkT3BJUHqYksf0KsBF48sW X1fQ== X-Gm-Message-State: AOUpUlESCJPRitSw20VCXnZ8mcdycXXfRcd15rIb2Ju8XtUPMZFignnu DUF2NuGrkJTjk2Ed9cO9lZc= X-Google-Smtp-Source: AAOMgpe267zoUY0lCpJRlfSp2BTtziz9JB6A4poIS1hzta+N7n74FcelVO/hJB2CR1WeXwpJsG5l3w== X-Received: by 2002:a65:5545:: with SMTP id t5-v6mr12753678pgr.157.1532871143078; Sun, 29 Jul 2018 06:32:23 -0700 (PDT) Received: from ala-d2121-lx1.wrs.com (unknown-156-139.windriver.com. [147.11.156.139]) by smtp.gmail.com with ESMTPSA id h132-v6sm13438674pfc.100.2018.07.29.06.32.21 (version=TLS1_1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 29 Jul 2018 06:32:22 -0700 (PDT) From: Bin Meng To: Simon Glass , U-Boot Mailing List Date: Sun, 29 Jul 2018 06:36:54 -0700 Message-Id: <1532871432-30703-4-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> References: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> Subject: [U-Boot] [PATCH v2 03/21] dm: core: Add ofnode function to read PCI vendor and device id X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" We don't have the live-tree version of fdtdec_get_pci_vendev(). This adds the API. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- Changes in v2: None drivers/core/ofnode.c | 36 ++++++++++++++++++++++++++++++++++++ include/dm/ofnode.h | 13 +++++++++++++ 2 files changed, 49 insertions(+) diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c index 2937539..0cfb0fb 100644 --- a/drivers/core/ofnode.c +++ b/drivers/core/ofnode.c @@ -623,6 +623,42 @@ fail: return ret; } +int ofnode_read_pci_vendev(ofnode node, u16 *vendor, u16 *device) +{ + const char *list, *end; + int len; + + list = ofnode_get_property(node, "compatible", &len); + if (!list) + return -ENOENT; + + end = list + len; + while (list < end) { + len = strlen(list); + if (len >= strlen("pciVVVV,DDDD")) { + char *s = strstr(list, "pci"); + + /* + * check if the string is something like pciVVVV,DDDD.RR + * or just pciVVVV,DDDD + */ + if (s && s[7] == ',' && + (s[12] == '.' || s[12] == 0)) { + s += 3; + *vendor = simple_strtol(s, NULL, 16); + + s += 5; + *device = simple_strtol(s, NULL, 16); + + return 0; + } + } + list += (len + 1); + } + + return -ENOENT; +} + int ofnode_read_addr_cells(ofnode node) { if (ofnode_is_np(node)) diff --git a/include/dm/ofnode.h b/include/dm/ofnode.h index cd08a7e..ab36b74 100644 --- a/include/dm/ofnode.h +++ b/include/dm/ofnode.h @@ -586,6 +586,19 @@ int ofnode_read_pci_addr(ofnode node, enum fdt_pci_space type, const char *propname, struct fdt_pci_addr *addr); /** + * ofnode_read_pci_vendev() - look up PCI vendor and device id + * + * Look at the compatible property of a device node that represents a PCI + * device and extract pci vendor id and device id from it. + * + * @param node node to examine + * @param vendor vendor id of the pci device + * @param device device id of the pci device + * @return 0 if ok, negative on error + */ +int ofnode_read_pci_vendev(ofnode node, u16 *vendor, u16 *device); + +/** * ofnode_read_addr_cells() - Get the number of address cells for a node * * This walks back up the tree to find the closest #address-cells property From patchwork Sun Jul 29 13:36:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 950626 X-Patchwork-Delegate: sjg@chromium.org 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=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="NthKeURV"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41dkNT2Jycz9s0w for ; Sun, 29 Jul 2018 23:40:25 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id F1B3DC21C4A; Sun, 29 Jul 2018 13:33:57 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 33479C21C6A; Sun, 29 Jul 2018 13:32:42 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id B9050C21FB2; Sun, 29 Jul 2018 13:32:29 +0000 (UTC) Received: from mail-pf1-f193.google.com (mail-pf1-f193.google.com [209.85.210.193]) by lists.denx.de (Postfix) with ESMTPS id A5F80C21F69 for ; Sun, 29 Jul 2018 13:32:25 +0000 (UTC) Received: by mail-pf1-f193.google.com with SMTP id j26-v6so3354763pfi.10 for ; Sun, 29 Jul 2018 06:32:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=WUcnO3CDoxHULS7zC+julOVEsLeRliuiZwsD+t/0mLY=; b=NthKeURVptKQIafzyRNKjf3mlHIwPwJrStJezMcQXMaTsC5emTJClDLPP8pd/vAtpk clNDOQlNjQrSNozX1el6umHwdtExc5SeVQavvQBjDIxjr4sMGpZw37yVvDqsY3Xg1BxR Rjty0h2PTbm6jvSdO+nRLe36S0Mf64mEWHVKKCFhGGTTwMKsxHxCW4Lqcd9edALMGhBj nbVsYVXMGaO2FP7MbJeCIGLzUsnE05Ch8QIKeItVMWnB7Eo3ECiD0dmCQKnghFbZzOpW bF7jLZlZdt04iuIytmiGT5ShxW5Wsi2VGj6Rnw51UjyWA+/s2y1Izf3Jtuvs/VKN/2/2 3HGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=WUcnO3CDoxHULS7zC+julOVEsLeRliuiZwsD+t/0mLY=; b=FXnLnGZiQsjfpTd7obJHnZT2OpO6qE4ZWJigecswqPVgHX/92OjAqvw4auAD9+73wy 8+vlD/gGU0ybTqvnmISScvVcWzDeC8SnqtfEYbDriaiQOjdIkepzM1ELa41ODnQB2Cpm Qy3W602rQH/SzhBFgf+268PiXpx1uC/2ewjjCr4JQBBETurW0EiaVNRoyrAbzIhaDKRZ H74LWWRwlAISPgilLvPf+7k8Hd2cnPk1X4kbw9TY7EhBR0bAZhec6woETBy/rRZ3tEQr B06jtudq1ecpZu1+LEc2WZfOU51ocJplOL/Z/rJgjrZ265QBTKUaeLUqVfnOrDQZnJoG OEKg== X-Gm-Message-State: AOUpUlEBzohPGyUU5zBQvA7FqzIuRBUhel2LAVWFFf+6VdbGWODHuHbC zHWugei7H8gmQI1qtQwxuWg= X-Google-Smtp-Source: AAOMgpfMqYV1ov3nglo8tQK7o4pE7q+lI9bv6BOc2R2GS/x+mYXsutoQ/R8xVFAKGTrqK5KkJK40pg== X-Received: by 2002:a62:d39b:: with SMTP id z27-v6mr14273305pfk.182.1532871144399; Sun, 29 Jul 2018 06:32:24 -0700 (PDT) Received: from ala-d2121-lx1.wrs.com (unknown-156-139.windriver.com. [147.11.156.139]) by smtp.gmail.com with ESMTPSA id h132-v6sm13438674pfc.100.2018.07.29.06.32.23 (version=TLS1_1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 29 Jul 2018 06:32:23 -0700 (PDT) From: Bin Meng To: Simon Glass , U-Boot Mailing List Date: Sun, 29 Jul 2018 06:36:55 -0700 Message-Id: <1532871432-30703-5-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> References: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> Subject: [U-Boot] [PATCH v2 04/21] dm: pci: Extract vendor/device id in child_post_bind() X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" Currently only devfn is extracted in child_post_bind(). Now that we have the live-tree version API to look up PCI vendor and device id from the compatible string, let's extract and save them too. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- Changes in v2: None drivers/pci/pci-uclass.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c index 46e9c71..b2909a3 100644 --- a/drivers/pci/pci-uclass.c +++ b/drivers/pci/pci-uclass.c @@ -987,19 +987,18 @@ static int pci_uclass_child_post_bind(struct udevice *dev) if (!dev_of_valid(dev)) return 0; - /* - * We could read vendor, device, class if available. But for now we - * just check the address. - */ pplat = dev_get_parent_platdata(dev); + + /* Extract vendor id and device id if available */ + ofnode_read_pci_vendev(dev_ofnode(dev), &pplat->vendor, &pplat->device); + + /* Extract the devfn from fdt_pci_addr */ ret = ofnode_read_pci_addr(dev_ofnode(dev), FDT_PCI_SPACE_CONFIG, "reg", &addr); - if (ret) { if (ret != -ENOENT) return -EINVAL; } else { - /* extract the devfn from fdt_pci_addr */ pplat->devfn = addr.phys_hi & 0xff00; } From patchwork Sun Jul 29 13:36:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 950623 X-Patchwork-Delegate: sjg@chromium.org 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=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="B7FoUwsr"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41dkLN2tZHz9s0w for ; Sun, 29 Jul 2018 23:38:36 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id B855AC21F19; Sun, 29 Jul 2018 13:33:21 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id A985AC21F47; Sun, 29 Jul 2018 13:32:35 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 602CCC21F93; Sun, 29 Jul 2018 13:32:30 +0000 (UTC) Received: from mail-pf1-f193.google.com (mail-pf1-f193.google.com [209.85.210.193]) by lists.denx.de (Postfix) with ESMTPS id 09577C21F47 for ; Sun, 29 Jul 2018 13:32:27 +0000 (UTC) Received: by mail-pf1-f193.google.com with SMTP id q7-v6so3360056pff.2 for ; Sun, 29 Jul 2018 06:32:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=nTiIwnPwkbhhJLtgRAsmPHexaJpcxwhBi2o46siT+Ps=; b=B7FoUwsrM81eNTDrAUFXGXDSw16Q+cJ4lmAGtsHeFTSzI0BayBDo2kFF4Zwn0s2CmK U9BEfTnOP7DwJIfsR7LxHmDI39wgoqkmEdgrUaFtxEjeJSiBnsaHaPAvJu2VvtM4Vqgr uDrVbmYuk22KogEg3G5rmorFC+TnzwSwj/MBt2yJfH6Q9IQj6iwjT2vl2SX+8M0zio59 d1zvQ4Y16XCujcBR0OTRqlAWAxybDJk9DDDfmvoIhA4/wTHIZeADRbjBkhGt8Hh3ci3s rwwkg6fvM84IpKwHRuBGEuFYSth0MZEfWLfErz9DjzqgiTSN4pVb5YUZjuxnJehIAu0h gACw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=nTiIwnPwkbhhJLtgRAsmPHexaJpcxwhBi2o46siT+Ps=; b=iUvhSIvN8s333u7PpIhsgY76p+zOXmwN0f5w7Olu4JJ+GRPMpLjwzo1L2dIvd+B/mL lMx8m1mCQSXTDR/T7AM4DJWlz39SKd5wtG9aPxrvsQcu4UIEGVOGVjrHWLVtwPjR/Tp4 yLNahVwgKi6YnBWgcvXSkqDuNRq5M4J/HMFHrkgxxR4Fn8CWz4KefebkVPw06YXjrX7H pZPl6mwnMFxbppX3PvjB9s2K2aA+GHlNR5pUVQ1hhmhRy6GyERVQjRSOTZc3WhsSBtbb ZdvY0qjvixx3yS1b4SmAe1Gjs5vH7QjwDl23IlD902gly9wl4jRzUKVs4PEkcD0e0LOm VhLg== X-Gm-Message-State: AOUpUlG5JJ1h8BoRV/f7AoAZtJlj6e/qrKh/arpRZnl0zIojqGr7CQ69 9ZJfk8VDiE0fyhO5J2NpXng= X-Google-Smtp-Source: AAOMgpfEr1NBGhIUwGecSa+H2e21q/AOJPCkNLbogWbzoYpx8QW8H7WYezmeM12vykM9dHWtpF9jbw== X-Received: by 2002:a62:229a:: with SMTP id p26-v6mr14106113pfj.53.1532871145801; Sun, 29 Jul 2018 06:32:25 -0700 (PDT) Received: from ala-d2121-lx1.wrs.com (unknown-156-139.windriver.com. [147.11.156.139]) by smtp.gmail.com with ESMTPSA id h132-v6sm13438674pfc.100.2018.07.29.06.32.24 (version=TLS1_1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 29 Jul 2018 06:32:24 -0700 (PDT) From: Bin Meng To: Simon Glass , U-Boot Mailing List Date: Sun, 29 Jul 2018 06:36:56 -0700 Message-Id: <1532871432-30703-6-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> References: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> Subject: [U-Boot] [PATCH v2 05/21] dm: pci: Fix scanning multi-function device X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" The flag to control whether to scan multi-function device during enumeration should be cleared at the beginning of each iteration if the device's function number equals to zero. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- Changes in v2: None drivers/pci/pci-uclass.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c index b2909a3..28ea8c5 100644 --- a/drivers/pci/pci-uclass.c +++ b/drivers/pci/pci-uclass.c @@ -745,6 +745,8 @@ int pci_bind_bus_devices(struct udevice *bus) struct udevice *dev; ulong class; + if (!PCI_FUNC(bdf)) + found_multi = false; if (PCI_FUNC(bdf) && !found_multi) continue; /* Check only the first access, we don't expect problems */ From patchwork Sun Jul 29 13:36:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 950622 X-Patchwork-Delegate: sjg@chromium.org 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=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="le7pSvBV"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41dkL42pTYz9s0w for ; Sun, 29 Jul 2018 23:38:20 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id DAC20C21C6A; Sun, 29 Jul 2018 13:34:15 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 06500C21FA2; Sun, 29 Jul 2018 13:32:46 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 6BB38C21E56; Sun, 29 Jul 2018 13:32:32 +0000 (UTC) Received: from mail-pg1-f193.google.com (mail-pg1-f193.google.com [209.85.215.193]) by lists.denx.de (Postfix) with ESMTPS id 7BEAEC21F7E for ; Sun, 29 Jul 2018 13:32:28 +0000 (UTC) Received: by mail-pg1-f193.google.com with SMTP id s7-v6so5761350pgv.3 for ; Sun, 29 Jul 2018 06:32:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=YVmIVyHeejfgAqjZB6gXaMpJZXrU+Wr3nT4U+DxowLI=; b=le7pSvBV77cHuZ3f2EYz2Bip9p/u1mo79g/UZO14xGlvypdgz5ohAb0iTP2RH+nhfR JCTqTruuXxBKBrndqpyu9RepDxbqx2PbeM2tw7xyMffIkKc0M+Ickx/obTb0oHqPwtBL SfzGe5wYXMQodNIoJQW4W+lshethkMUaUViggcGC407IpW+4TL+ElNLEKYZD5bW9VuOn Lff9YV9LA2HJTfTxmv/b9uMrHC9v2EImArPHF6HM/xWCc0G9BQ+kTfZvHTy53qPyVenL Oobh0qKYsTK4+KmmPx8N1WorMxJXNORFC9eR7nHsYcqZniDeJaHneROrp58ZlE1IfN/q 568g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=YVmIVyHeejfgAqjZB6gXaMpJZXrU+Wr3nT4U+DxowLI=; b=AUTl0KzUJLsLbUOwj0t0VCaHPcYrZhq4Ppq+e78UAPCIFhi6dTApqbUw9NyDv+h9QF 5ZuFJTwmbjPllCun6yJStIi9kuL0/XfW0cb1fkT25vr70lSjCVBkKe3f8wiwiuvoBB5y 6No4ebQ5Q1/OfD6jlbgiAQWdO8TuXEleCDfG3WKsL3fOS3fSpLGO24/LUBQ9nNaau5Zo 7jFnD/Ug/aiMCSdYcVRbK8HpcAJPC5OlX4f6sI80203Fe1X9AtZx90KIxL/Iu4VoPXbY oGFQlRBvDAzAosedxVqg9LmmmKeIOZXevACTk5aNMCpzrSNh7pAMcYf3h2eJ6UK9F4/q 86Kw== X-Gm-Message-State: AOUpUlESVjgER4Z+ezA02rpZoU6sGO1KuhBYu+H8J3JKdXhNmOBohFwl zBu8NKLXfEQkefMBn662TLk= X-Google-Smtp-Source: AAOMgpfpllXSjCfm7+bWTc/uorSm5dL5PBc+PeNSBZSyyZFEyoZCRGvP7NhYq7IsLkumrOiEvF0AMA== X-Received: by 2002:a62:a05:: with SMTP id s5-v6mr14026867pfi.147.1532871147284; Sun, 29 Jul 2018 06:32:27 -0700 (PDT) Received: from ala-d2121-lx1.wrs.com (unknown-156-139.windriver.com. [147.11.156.139]) by smtp.gmail.com with ESMTPSA id h132-v6sm13438674pfc.100.2018.07.29.06.32.25 (version=TLS1_1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 29 Jul 2018 06:32:26 -0700 (PDT) From: Bin Meng To: Simon Glass , U-Boot Mailing List Date: Sun, 29 Jul 2018 06:36:57 -0700 Message-Id: <1532871432-30703-7-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> References: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> Subject: [U-Boot] [PATCH v2 06/21] test: dm: pci: Remove unnecessary steps in dm_test_pci_swapcase() X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" The check on uclass_get_device() and device_active() is unnecessary as the follow-up test operations will implicitly probe the driver. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- Changes in v2: None test/dm/pci.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/test/dm/pci.c b/test/dm/pci.c index 47b5d22..be1208c 100644 --- a/test/dm/pci.c +++ b/test/dm/pci.c @@ -34,14 +34,12 @@ DM_TEST(dm_test_pci_busnum, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT); /* Test that we can use the swapcase device correctly */ static int dm_test_pci_swapcase(struct unit_test_state *uts) { - struct udevice *emul, *swap; + struct udevice *swap; ulong io_addr, mem_addr; char *ptr; /* Check that asking for the device automatically fires up PCI */ - ut_assertok(uclass_get_device(UCLASS_PCI_EMUL, 0, &emul)); ut_assertok(dm_pci_bus_find_bdf(PCI_BDF(0, 0x1f, 0), &swap)); - ut_assert(device_active(swap)); /* First test I/O */ io_addr = dm_pci_read_bar32(swap, 0); From patchwork Sun Jul 29 13:36:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 950628 X-Patchwork-Delegate: sjg@chromium.org 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=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="KSyWOKaA"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41dkQG4jJ5z9s0R for ; Sun, 29 Jul 2018 23:41:58 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 4C745C21F87; Sun, 29 Jul 2018 13:34:31 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id E3FA6C21FB0; Sun, 29 Jul 2018 13:32:54 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 86431C21FB7; Sun, 29 Jul 2018 13:32:33 +0000 (UTC) Received: from mail-pg1-f196.google.com (mail-pg1-f196.google.com [209.85.215.196]) by lists.denx.de (Postfix) with ESMTPS id F2543C21E42 for ; Sun, 29 Jul 2018 13:32:29 +0000 (UTC) Received: by mail-pg1-f196.google.com with SMTP id k3-v6so5763665pgq.5 for ; Sun, 29 Jul 2018 06:32:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=xeT8dkyCc8LoDUkhCAtlVt8Jdukwrrg7sQ5GCsjPpYA=; b=KSyWOKaAjz9/8ZPhKl+sZsY/eEE7NCTTHL+Crpu1c+APJxzPYNLZ7K+XFlkEbRYJLR XE5WKBA7L8rK8tUJ644uKwuJsGc3Lox7wK/kvrkKwXV73Oc4d255i+lvOvC+JyuSRrr+ Wz1IXE0Bv0+aKp6M2egkKCUHG8TqLDpEAtFWgsECIsJHPgene124EO2xmAJ/AX3EXhnj V0L9SaBMVnS2uYGRr0L8quB/+LDkEdfwkcCDHpJ4E7Qjhvi+d16uVEHR1ftUk1TyKpTS /ckQ5etDB5GJE+UUt0wuTwGgLoYnkA+ukMDYbNdkN05fIqQ0wjWD3piNXflLfwZTGA9Z g5vA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=xeT8dkyCc8LoDUkhCAtlVt8Jdukwrrg7sQ5GCsjPpYA=; b=nwxQO3F2OxTe42FvbyZx1aMgDvtEInjAVVHtylE2mWrpwHmT9GUiwvX6ZFHJns9IMj 9lVrg6s4jPpP4sZzorJTTOqDR9Xw2hrdBD/ierV3p7nSTlcAH42LSnesHQjQKkNY0Fga R18PNc6/x1I35LubohrSRbEtcB7hsHnSKYKs/kkyoi1zB2/h7aDB9cBxrAkDOy3aAJcw V2JITkgU0fk0CTXDcNxlSJ7X0FOdW2I+6paw9uivRlHQ1hinRn0ZjQTN9bW2Vp1cfaY/ gfKf5ihDjtmm+rr37ilV/ANylls2SNghXD0yVLKaPQJwKWLHX45FCeb1+Xa+96iLAVjN Y1iw== X-Gm-Message-State: AOUpUlHaOs+nh/JEhsqfsWAeAfj9X6KeisQHkxz+DFKp3i9AWUzdt1Jk QMhvaU1G4uZbgG2ZP3p9II7tZ/j3 X-Google-Smtp-Source: AAOMgpeBThgbZ8Kpc5xsKajC/fRElZYe0hs7D9epBXXPHUa+2LQIstLLl6o3IblTRmp1QoE+bhwkiA== X-Received: by 2002:a62:5d55:: with SMTP id r82-v6mr14137791pfb.150.1532871148696; Sun, 29 Jul 2018 06:32:28 -0700 (PDT) Received: from ala-d2121-lx1.wrs.com (unknown-156-139.windriver.com. [147.11.156.139]) by smtp.gmail.com with ESMTPSA id h132-v6sm13438674pfc.100.2018.07.29.06.32.27 (version=TLS1_1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 29 Jul 2018 06:32:27 -0700 (PDT) From: Bin Meng To: Simon Glass , U-Boot Mailing List Date: Sun, 29 Jul 2018 06:36:58 -0700 Message-Id: <1532871432-30703-8-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> References: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> Subject: [U-Boot] [PATCH v2 07/21] test: dm: pci: Test more than one device on the same bus X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" It's quite common to have more than one device on the same PCI bus. This updates the test case to test such scenario. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- Changes in v2: None arch/sandbox/dts/test.dts | 7 +++++++ test/dm/pci.c | 37 +++++++++++++++++++++++++++++++++---- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts index 137679a..237266d 100644 --- a/arch/sandbox/dts/test.dts +++ b/arch/sandbox/dts/test.dts @@ -302,6 +302,13 @@ #size-cells = <2>; ranges = <0x02000000 0 0x10000000 0x10000000 0 0x2000 0x01000000 0 0x20000000 0x20000000 0 0x2000>; + pci@0,0 { + compatible = "pci-generic"; + reg = <0x0000 0 0 0 0>; + emul@0,0 { + compatible = "sandbox,swap-case"; + }; + }; pci@1f,0 { compatible = "pci-generic"; reg = <0xf800 0 0 0 0>; diff --git a/test/dm/pci.c b/test/dm/pci.c index be1208c..f2bd52a 100644 --- a/test/dm/pci.c +++ b/test/dm/pci.c @@ -20,16 +20,24 @@ static int dm_test_pci_base(struct unit_test_state *uts) } DM_TEST(dm_test_pci_base, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT); -/* Test that sandbox PCI bus numbering works correctly */ -static int dm_test_pci_busnum(struct unit_test_state *uts) +/* Test that sandbox PCI bus numbering and device works correctly */ +static int dm_test_pci_busdev(struct unit_test_state *uts) { struct udevice *bus; + struct udevice *emul, *swap; ut_assertok(uclass_get_device_by_seq(UCLASS_PCI, 0, &bus)); + ut_assertok(uclass_get_device(UCLASS_PCI_EMUL, 0, &emul)); + ut_assertok(dm_pci_bus_find_bdf(PCI_BDF(0, 0x00, 0), &swap)); + ut_assert(device_active(swap)); + ut_assertok(uclass_get_device(UCLASS_PCI_EMUL, 1, &emul)); + ut_assertok(dm_pci_bus_find_bdf(PCI_BDF(0, 0x1f, 0), &swap)); + ut_assert(device_active(swap)); + return 0; } -DM_TEST(dm_test_pci_busnum, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT); +DM_TEST(dm_test_pci_busdev, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT); /* Test that we can use the swapcase device correctly */ static int dm_test_pci_swapcase(struct unit_test_state *uts) @@ -38,7 +46,28 @@ static int dm_test_pci_swapcase(struct unit_test_state *uts) ulong io_addr, mem_addr; char *ptr; - /* Check that asking for the device automatically fires up PCI */ + /* Check that asking for the device 0 automatically fires up PCI */ + ut_assertok(dm_pci_bus_find_bdf(PCI_BDF(0, 0x00, 0), &swap)); + + /* First test I/O */ + io_addr = dm_pci_read_bar32(swap, 0); + outb(2, io_addr); + ut_asserteq(2, inb(io_addr)); + + /* + * Now test memory mapping - note we must unmap and remap to cause + * the swapcase emulation to see our data and response. + */ + mem_addr = dm_pci_read_bar32(swap, 1); + ptr = map_sysmem(mem_addr, 20); + strcpy(ptr, "This is a TesT"); + unmap_sysmem(ptr); + + ptr = map_sysmem(mem_addr, 20); + ut_asserteq_str("tHIS IS A tESt", ptr); + unmap_sysmem(ptr); + + /* Check that asking for the device 1 automatically fires up PCI */ ut_assertok(dm_pci_bus_find_bdf(PCI_BDF(0, 0x1f, 0), &swap)); /* First test I/O */ From patchwork Sun Jul 29 13:36:59 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 950627 X-Patchwork-Delegate: sjg@chromium.org 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=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Yh235aKj"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41dkNp6hccz9s0w for ; Sun, 29 Jul 2018 23:40:41 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 0C29DC21F7F; Sun, 29 Jul 2018 13:35:40 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 8E8D9C21FBE; Sun, 29 Jul 2018 13:33:09 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 1D017C21FB8; Sun, 29 Jul 2018 13:32:35 +0000 (UTC) Received: from mail-pf1-f195.google.com (mail-pf1-f195.google.com [209.85.210.195]) by lists.denx.de (Postfix) with ESMTPS id 40E53C21F3A for ; Sun, 29 Jul 2018 13:32:31 +0000 (UTC) Received: by mail-pf1-f195.google.com with SMTP id i26-v6so3357123pfo.12 for ; Sun, 29 Jul 2018 06:32:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=aCuik8Gf1FmlJ2Ev5PqI4+Knb8+EbgjSI77Yt2gxWqc=; b=Yh235aKjrm8o3UOf6z6oHvtu9tYXx5K5KZVKlHrh3ve6Wuq0vrNaV/g+Z8NxmC4w+/ LQ6Xt20u61ThUsIdLHHaxFQIIkgEV6guAVk1NfNy/cBlJwZWhuo76NbdQ+VMUtEIpZPt soNK93d2Ai820iwXrnT4UfCPcFYDO2IxuvfHpdlmQJCFFbA2vsVa3mfDi54hc10ovfu7 tP50oA5MwmYNK1+eeF+PZAJ7qKLWz5uSm8qqNT++ff0hAyNyQnUrDyghSGNHzyj9zp17 70pbrb6eYAhXXVgU7TB7rXRcPWqScQ/6FFHlI1+MDntaI6FO0T/u1FaBg04HftJ/amiU cnog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=aCuik8Gf1FmlJ2Ev5PqI4+Knb8+EbgjSI77Yt2gxWqc=; b=kGBno3FhrDSQLofn7EhzXyCuCvyPrCkXF6H9R/8qgag3T/5wVFObmoCgtC+lbC2iKP EF3khzaAqBLQJgXLi3MOLK/HHSp9rTf8MBdA/mFmTjnOv7H/OWIGlQLsJqaUuJmEAQEB kh+z8687qrZcAByy2txDQaTtN0V7xyDMaFI6A9zC1MM5+o23Y4871Nprfp2sxUIYxjf9 S4cjN9+M6/9ezI9Lr9C0zb1QZcwgdIbVIars/ynjUjZ0+MbpkrLvu7C8r/U9K1h9jRZO CiyYGjQluPZ5iJz2yQwsuM883rprLlSg98q9Lgpu/7kt2RXp0MeQZSFbLg6WILkx2CAe IVjQ== X-Gm-Message-State: AOUpUlF916XyZaH4YZsEiVUWsNBe+ddSKl9lLcgSonMRdbbK5jSXXSuc RCwfV3v8eRoWSbiEchS/HIQ= X-Google-Smtp-Source: AAOMgpfGbSW6IXnHS+u3XjTAhtnPgLY7Pr9eqDxNina4W8iRCxDJSj6IpmuJXGSVnpwnTjHPisytjw== X-Received: by 2002:a63:3c4a:: with SMTP id i10-v6mr12785615pgn.415.1532871149995; Sun, 29 Jul 2018 06:32:29 -0700 (PDT) Received: from ala-d2121-lx1.wrs.com (unknown-156-139.windriver.com. [147.11.156.139]) by smtp.gmail.com with ESMTPSA id h132-v6sm13438674pfc.100.2018.07.29.06.32.28 (version=TLS1_1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 29 Jul 2018 06:32:29 -0700 (PDT) From: Bin Meng To: Simon Glass , U-Boot Mailing List Date: Sun, 29 Jul 2018 06:36:59 -0700 Message-Id: <1532871432-30703-9-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> References: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> Subject: [U-Boot] [PATCH v2 08/21] pci: sandbox: swap_case: Preserve space indicator bit in BAR registers X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" With the newly added testing of more than one device, we get: => ut dm pci_swapcase Test: dm_test_pci_swapcase: pci.c test/dm/pci.c:88, dm_test_pci_swapcase(): "tHIS IS A tESt" = ptr: Expected "tHIS IS A tESt", got "this is a test" Test: dm_test_pci_swapcase: pci.c (flat tree) test/dm/pci.c:88, dm_test_pci_swapcase(): "tHIS IS A tESt" = ptr: Expected "tHIS IS A tESt", got "this is a test" Failures: 2 The failure only happens on the 2nd swap_case device on the PCI bus. The case passes on the 1st device. It turns out the swap_case driver does not emulate bit#0 in BAR registers as a read-only bit. This corrects the implementation. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- Changes in v2: None drivers/misc/swap_case.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/misc/swap_case.c b/drivers/misc/swap_case.c index b777404..80ccb9f 100644 --- a/drivers/misc/swap_case.c +++ b/drivers/misc/swap_case.c @@ -142,6 +142,8 @@ static int sandbox_swap_case_write_config(struct udevice *emul, uint offset, debug("w bar %d=%lx\n", barnum, value); *bar = value; + /* space indicator (bit#0) is read-only */ + *bar |= barinfo[barnum].type; break; } } @@ -157,11 +159,11 @@ static int sandbox_swap_case_find_bar(struct udevice *emul, unsigned int addr, for (barnum = 0; barnum < ARRAY_SIZE(barinfo); barnum++) { unsigned int size = barinfo[barnum].size; + u32 base = plat->bar[barnum] & ~PCI_BASE_ADDRESS_SPACE; - if (addr >= plat->bar[barnum] && - addr < plat->bar[barnum] + size) { + if (addr >= base && addr < base + size) { *barnump = barnum; - *offsetp = addr - plat->bar[barnum]; + *offsetp = addr - base; return 0; } } From patchwork Sun Jul 29 13:37:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 950621 X-Patchwork-Delegate: sjg@chromium.org 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=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="SmFUjg5+"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41dkKW4Dd6z9s0w for ; Sun, 29 Jul 2018 23:37:51 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 2D6E4C21F38; Sun, 29 Jul 2018 13:36:19 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 44AF4C21FB2; Sun, 29 Jul 2018 13:33:17 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 29B34C21FD8; Sun, 29 Jul 2018 13:32:37 +0000 (UTC) Received: from mail-pg1-f193.google.com (mail-pg1-f193.google.com [209.85.215.193]) by lists.denx.de (Postfix) with ESMTPS id AD4C3C21F95 for ; Sun, 29 Jul 2018 13:32:32 +0000 (UTC) Received: by mail-pg1-f193.google.com with SMTP id y5-v6so5768385pgv.1 for ; Sun, 29 Jul 2018 06:32:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=PSUZwDLPgwqJNIjugCP0CqPMWfM4QlK/Q3ybC7hkXyk=; b=SmFUjg5+l/A9tyeIaWHYs5gQWCDFPxuQ60noq7f0e4ISsF+rvEEP1TKATGgYehWiN+ GnWrZbZeYhN7SDYZNsUTICA+AFe4LRaaZYqCumrQcRBXFBqZFVjt8BE+rMHMQ9MZMhxX XVS7ODShygFvNKmKvtLMjfbQPFGc3SK+5j7S6QWd1OU8m5r6xKG6Dva4goSXY35UmIFa A8TQ46MZf0dqIx17XILV0qPArLVqKnYgf2dufUHpwZNsEFEPIyjGciqPZ6y4ug3SRpKT wD2dFjiLl1JrbOjbteq2bOrpRk5edpQLyqbPuGtbga08DC6G0OIENhgwpsHUedJIIuDc 9HeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=PSUZwDLPgwqJNIjugCP0CqPMWfM4QlK/Q3ybC7hkXyk=; b=PkSpeuRGOB0t+kuA/8uaF8oMxXMFsgPsX1luhWiUlZ9pyO63s/4as6n0oVL3gN7eWv ORtYn7INPQrgCML+x5TY81lWEUxWUjY0pTwu4gBiUxYrBjq5aNtznQ3Z8lkp0ApehUR5 6eyElzx+FGSuuO1EL4uQM1k+Z1NZX2a+3O5kukdtOhNxaR1QXPOu1/9FYQ7Jusw+fTB8 UiIRU5uDGnlxSFT7ZbsMdrjz3dJCidoIu9RM78Ytus93SvbRf8BVRp4hsLWrAj/3Olny xKm61tbsfwOAB+J6nxtTAOsUfU8T9CCPrKi4gEevV6Zn6qkhLGai0tpTut5dpLw+tRmR dNKw== X-Gm-Message-State: AOUpUlEDRz/gSycqgy8mCqR2rSJIDQ1s4Ux6CHKbzYCXs1X4fg7g0skE jmn9qr4lHOOQhRurjrf4QLQ= X-Google-Smtp-Source: AAOMgpfvKcGlpv+zt2Qf5e1AfAsP+IcFq9j2OMFFQdr3sMiVItvKTv4LafAyXI7TKVElTz+bv+KXyg== X-Received: by 2002:a63:a502:: with SMTP id n2-v6mr12956179pgf.263.1532871151434; Sun, 29 Jul 2018 06:32:31 -0700 (PDT) Received: from ala-d2121-lx1.wrs.com (unknown-156-139.windriver.com. [147.11.156.139]) by smtp.gmail.com with ESMTPSA id h132-v6sm13438674pfc.100.2018.07.29.06.32.30 (version=TLS1_1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 29 Jul 2018 06:32:30 -0700 (PDT) From: Bin Meng To: Simon Glass , U-Boot Mailing List Date: Sun, 29 Jul 2018 06:37:00 -0700 Message-Id: <1532871432-30703-10-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> References: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> Subject: [U-Boot] [PATCH v2 09/21] test: dm: pci: Test more than one PCI host controller X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" So far there is only one PCI host controller in the sandbox test configuration. This is normally the case for x86, but it can be common on other architectures like ARM/PPC to have more than one PCI host controller in the system. This updates the case to cover such scenario. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- Changes in v2: None arch/sandbox/dts/test.dts | 28 ++++++++++++++++++++++++++-- test/dm/pci.c | 11 +++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts index 237266d..0bce6d0 100644 --- a/arch/sandbox/dts/test.dts +++ b/arch/sandbox/dts/test.dts @@ -14,7 +14,8 @@ i2c0 = "/i2c@0"; mmc0 = "/mmc0"; mmc1 = "/mmc1"; - pci0 = &pci; + pci0 = &pci0; + pci1 = &pci1; remoteproc1 = &rproc_1; remoteproc2 = &rproc_2; rtc0 = &rtc_0; @@ -295,7 +296,7 @@ compatible = "sandbox,mmc"; }; - pci: pci-controller { + pci0: pci-controller0 { compatible = "sandbox,pci"; device_type = "pci"; #address-cells = <3>; @@ -318,6 +319,29 @@ }; }; + pci1: pci-controller1 { + compatible = "sandbox,pci"; + device_type = "pci"; + #address-cells = <3>; + #size-cells = <2>; + ranges = <0x02000000 0 0x30000000 0x30000000 0 0x2000 + 0x01000000 0 0x40000000 0x40000000 0 0x2000>; + pci@8,0 { + compatible = "pci-generic"; + reg = <0x4000 0 0 0 0>; + emul@8,0 { + compatible = "sandbox,swap-case"; + }; + }; + pci@c,0 { + compatible = "pci-generic"; + reg = <0x6000 0 0 0 0>; + emul@c,0 { + compatible = "sandbox,swap-case"; + }; + }; + }; + probing { compatible = "simple-bus"; test1 { diff --git a/test/dm/pci.c b/test/dm/pci.c index f2bd52a..727ec34 100644 --- a/test/dm/pci.c +++ b/test/dm/pci.c @@ -26,6 +26,7 @@ static int dm_test_pci_busdev(struct unit_test_state *uts) struct udevice *bus; struct udevice *emul, *swap; + /* Test bus#0 and its devices */ ut_assertok(uclass_get_device_by_seq(UCLASS_PCI, 0, &bus)); ut_assertok(uclass_get_device(UCLASS_PCI_EMUL, 0, &emul)); @@ -35,6 +36,16 @@ static int dm_test_pci_busdev(struct unit_test_state *uts) ut_assertok(dm_pci_bus_find_bdf(PCI_BDF(0, 0x1f, 0), &swap)); ut_assert(device_active(swap)); + /* Test bus#1 and its devices */ + ut_assertok(uclass_get_device_by_seq(UCLASS_PCI, 1, &bus)); + + ut_assertok(uclass_get_device(UCLASS_PCI_EMUL, 2, &emul)); + ut_assertok(dm_pci_bus_find_bdf(PCI_BDF(1, 0x08, 0), &swap)); + ut_assert(device_active(swap)); + ut_assertok(uclass_get_device(UCLASS_PCI_EMUL, 3, &emul)); + ut_assertok(dm_pci_bus_find_bdf(PCI_BDF(1, 0x0c, 0), &swap)); + ut_assert(device_active(swap)); + return 0; } DM_TEST(dm_test_pci_busdev, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT); From patchwork Sun Jul 29 13:37:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 950620 X-Patchwork-Delegate: sjg@chromium.org 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=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="DnfvjiLd"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41dkKC1mBTz9s0w for ; Sun, 29 Jul 2018 23:37:35 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id C9A23C21F62; Sun, 29 Jul 2018 13:34:48 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id D5BDEC21F69; Sun, 29 Jul 2018 13:32:56 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 02E2AC21FB3; Sun, 29 Jul 2018 13:32:40 +0000 (UTC) Received: from mail-pg1-f193.google.com (mail-pg1-f193.google.com [209.85.215.193]) by lists.denx.de (Postfix) with ESMTPS id F3452C21F3E for ; Sun, 29 Jul 2018 13:32:33 +0000 (UTC) Received: by mail-pg1-f193.google.com with SMTP id s7-v6so5761414pgv.3 for ; Sun, 29 Jul 2018 06:32:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=JCPm4ZY5wM0qGe1A5N2zRtgfrtpw9vNpkODzGKKjzQw=; b=DnfvjiLdzr+lRUhdMDcAlwlzVsv2g/+vHvhbtF85cgO47gAhzllgVAJs4pPv+Dcdi6 BY8aVZk84YER7w7+L99aN7DaiJJSelyCbhadRHKD9+O3+oOv9hEcjjIs2qZ8kETA6hpB yT9udmDvelqfaPm9Ho0TDYQeGMqsHQsLadVj3LoGCbXIRI4RIdF0VkvKc1COU5j+I9QP CKyOYrknq53p+hTBHm6bn5PPtFr/Eap+v/bmTB8v7byKoHbjbDbFbp2d+tBx/eYAUCfI uqDWLVYAvXd1Y1AjPj1f37dj4l7KlvjqGnC2YWpZlTt42+JAQxeuVKinbhvyZ1PwaGFI 9m5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=JCPm4ZY5wM0qGe1A5N2zRtgfrtpw9vNpkODzGKKjzQw=; b=pqJHcOsF+O13nqwU4Hp7SULF0IiwwLEdisnTPupcS5KlfOsienQZGzWPVqphMF7kxp T8w+yMj0e0RUnhOZn3oZ1jFAMrWfbxdPS2hgnMQJex9P1EVzzpkCE7GKGM5iskS1B8Qa E1YMJC92Ciy41d7hU4l6vd5M5M2C0c9vmkw4wBP+rk4bHLgd5QWzYd8oWnLA9BR73yzP /jGt0MIsNw+onPvXCQK7UkF44Q+H6bStr7G74AXsCoiOE7hnPFGIbZ1XIbVczMBAClef 0XMkXbt/UctkjG0PzF8BHWXbu+qJHhYLxgO0av+c2/de29u0o5D4FqHKq25KnnrDtJCj gLKQ== X-Gm-Message-State: AOUpUlH4zTEzO+R1htyzqJ60Bh8vMueBY7L6bykzCP1Bt2cwldv+19+8 8IYQdIeVvTMnSBzXi/A0PL/WGPix X-Google-Smtp-Source: AAOMgpf/HhdTIL3CSGZ/bO0nVoefyCw9zHfJkV0LTpiabBsJ+0uoXjwEoOmVPb7BgxLh86uBe8EWPQ== X-Received: by 2002:a65:4c41:: with SMTP id l1-v6mr13007442pgr.310.1532871152764; Sun, 29 Jul 2018 06:32:32 -0700 (PDT) Received: from ala-d2121-lx1.wrs.com (unknown-156-139.windriver.com. [147.11.156.139]) by smtp.gmail.com with ESMTPSA id h132-v6sm13438674pfc.100.2018.07.29.06.32.31 (version=TLS1_1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 29 Jul 2018 06:32:31 -0700 (PDT) From: Bin Meng To: Simon Glass , U-Boot Mailing List Date: Sun, 29 Jul 2018 06:37:01 -0700 Message-Id: <1532871432-30703-11-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> References: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> Subject: [U-Boot] [PATCH v2 10/21] test: dm: pci: Add tests for configuration space access X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" So far we missed the testing for PCI configuration space access. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- Changes in v2: None test/dm/pci.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/test/dm/pci.c b/test/dm/pci.c index 727ec34..089b72e 100644 --- a/test/dm/pci.c +++ b/test/dm/pci.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include @@ -24,27 +25,32 @@ DM_TEST(dm_test_pci_base, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT); static int dm_test_pci_busdev(struct unit_test_state *uts) { struct udevice *bus; - struct udevice *emul, *swap; + struct udevice *swap; + u16 vendor, device; /* Test bus#0 and its devices */ ut_assertok(uclass_get_device_by_seq(UCLASS_PCI, 0, &bus)); - ut_assertok(uclass_get_device(UCLASS_PCI_EMUL, 0, &emul)); ut_assertok(dm_pci_bus_find_bdf(PCI_BDF(0, 0x00, 0), &swap)); - ut_assert(device_active(swap)); - ut_assertok(uclass_get_device(UCLASS_PCI_EMUL, 1, &emul)); + vendor = 0; + ut_assertok(dm_pci_read_config16(swap, PCI_VENDOR_ID, &vendor)); + ut_asserteq(SANDBOX_PCI_VENDOR_ID, vendor); ut_assertok(dm_pci_bus_find_bdf(PCI_BDF(0, 0x1f, 0), &swap)); - ut_assert(device_active(swap)); + device = 0; + ut_assertok(dm_pci_read_config16(swap, PCI_DEVICE_ID, &device)); + ut_asserteq(SANDBOX_PCI_DEVICE_ID, device); /* Test bus#1 and its devices */ ut_assertok(uclass_get_device_by_seq(UCLASS_PCI, 1, &bus)); - ut_assertok(uclass_get_device(UCLASS_PCI_EMUL, 2, &emul)); ut_assertok(dm_pci_bus_find_bdf(PCI_BDF(1, 0x08, 0), &swap)); - ut_assert(device_active(swap)); - ut_assertok(uclass_get_device(UCLASS_PCI_EMUL, 3, &emul)); + vendor = 0; + ut_assertok(dm_pci_read_config16(swap, PCI_VENDOR_ID, &vendor)); + ut_asserteq(SANDBOX_PCI_VENDOR_ID, vendor); ut_assertok(dm_pci_bus_find_bdf(PCI_BDF(1, 0x0c, 0), &swap)); - ut_assert(device_active(swap)); + device = 0; + ut_assertok(dm_pci_read_config16(swap, PCI_DEVICE_ID, &device)); + ut_asserteq(SANDBOX_PCI_DEVICE_ID, device); return 0; } From patchwork Sun Jul 29 13:37:02 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 950630 X-Patchwork-Delegate: sjg@chromium.org 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=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Xlo30rKS"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41dkT52qsSz9s1x for ; Sun, 29 Jul 2018 23:44:24 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id B0A88C21EE0; Sun, 29 Jul 2018 13:35:04 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id DFAA9C21FC2; Sun, 29 Jul 2018 13:32:57 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 86003C21F7F; Sun, 29 Jul 2018 13:32:40 +0000 (UTC) Received: from mail-pl0-f65.google.com (mail-pl0-f65.google.com [209.85.160.65]) by lists.denx.de (Postfix) with ESMTPS id 6ED21C21F9B for ; Sun, 29 Jul 2018 13:32:35 +0000 (UTC) Received: by mail-pl0-f65.google.com with SMTP id s17-v6so4294517plp.7 for ; Sun, 29 Jul 2018 06:32:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=pMCxRFvghC1fO4zmKT5n0DoiTSKe/YtzrXZDGflXUG4=; b=Xlo30rKSBXUdl+BNkF+Al7no6h+mVQG5H4UyANr9HJum7N6RzRCfhzyftgrdRVO+/B b8UxtUXjjGZ+A5UvtDgLGdyfqrQODc4JnVqiZMF9H/KkGOVXTVzZUKJ3gHdemkwu9ar9 w81N7Kk4q5sdMvF4Q0uRj6V0weaFVA8fG/3zzzCljd+lJauJr+Nd/p0FI44tTOD38ax9 c97B3xAz5ayqOAKVYzqPB90CmXaiEB+4v1e9TNnX8PFjmJK8LeBlDUhI0QYWsuCAakv+ 5OZOZ0AhxwjpMX+FrsuiOOiQqN8hTMAOHfatA/1Yz8ZM5kXRw73u4fO/UmcBhMLncVn/ eW5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=pMCxRFvghC1fO4zmKT5n0DoiTSKe/YtzrXZDGflXUG4=; b=mVlrhFYmnti3WFK47KbvTQwwzKjbJFUAj1IknGGAn0rPJrztB+Ap9xlvJTDjP0U6Gp uX9T6C+BfGcrsC9Bfnpn+u5dVjbwbB+doAm6HjbortQ6Q081KdcBKUQlMzy222sd3WCO HO2Jyg8DMARqNsp4+rXfNhy/xz6O3fXE3Bsmpcl2cfISD6ZBi1CtqlZ7QnPcd+8TgTVY xnEF+UysFEmcJQJqj36mtaPO0PiO4DTn5i3B8DROaT958/EuQGpK3TeRbcD+kf4vtPX9 WOpzgbguFQOCUHWi8P0Cpwx+oM+V+rwHWtEHLYn5OLIHMXXX4LaCc5Km/Pv3y897NXga DZkg== X-Gm-Message-State: AOUpUlGPFimfJ3H6l9XW4PzdqElJHzFx6mAznZImaV+6wjKTuStcNsCG esOgNNxYNpqu5oZxJJzjJS4= X-Google-Smtp-Source: AAOMgpfcHYmZN/l7RfhriRHqPC3k9WdQqUK5eSNjRK+hQUlqmtwmTnT45C/Gi2A1LmvrWMNDIK1T2g== X-Received: by 2002:a17:902:d710:: with SMTP id w16-v6mr12919706ply.93.1532871154173; Sun, 29 Jul 2018 06:32:34 -0700 (PDT) Received: from ala-d2121-lx1.wrs.com (unknown-156-139.windriver.com. [147.11.156.139]) by smtp.gmail.com with ESMTPSA id h132-v6sm13438674pfc.100.2018.07.29.06.32.32 (version=TLS1_1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 29 Jul 2018 06:32:33 -0700 (PDT) From: Bin Meng To: Simon Glass , U-Boot Mailing List Date: Sun, 29 Jul 2018 06:37:02 -0700 Message-Id: <1532871432-30703-12-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> References: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> Subject: [U-Boot] [PATCH v2 11/21] pci: sandbox: emul: Fix the call to pci_bus_find_devfn() X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" With the newly added test cases for PCI configuration access, we get: => ut dm pci_busdev Test: dm_test_pci_busdev: pci.c test/dm/pci.c:49, dm_test_pci_busdev(): SANDBOX_PCI_VENDOR_ID == vendor: Expected 4660, got 65535 Test: dm_test_pci_busdev: pci.c (flat tree) test/dm/pci.c:49, dm_test_pci_busdev(): SANDBOX_PCI_VENDOR_ID == vendor: Expected 4660, got 65535 Failures: 2 The bug only shows up when bus number is not equal to zero. This is caused by the plain find_devfn parameter is passed to function call pci_bus_find_devfn(), inside which find_devfn is compared to devfn in the device's pplat structure. However pplat->devfn does not carry the bus number. Fix this by passing find_devfn with bus number masked. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- Changes in v2: None drivers/pci/pci-emul-uclass.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/pci-emul-uclass.c b/drivers/pci/pci-emul-uclass.c index 79e2c14..8570a5d 100644 --- a/drivers/pci/pci-emul-uclass.c +++ b/drivers/pci/pci-emul-uclass.c @@ -21,7 +21,7 @@ int sandbox_pci_get_emul(struct udevice *bus, pci_dev_t find_devfn, struct udevice *dev; int ret; - ret = pci_bus_find_devfn(bus, find_devfn, &dev); + ret = pci_bus_find_devfn(bus, PCI_MASK_BUS(find_devfn), &dev); if (ret) { debug("%s: Could not find emulator for dev %x\n", __func__, find_devfn); From patchwork Sun Jul 29 13:37:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 950631 X-Patchwork-Delegate: sjg@chromium.org 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=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="ju1szNHZ"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41dkTR1dMCz9s0R for ; Sun, 29 Jul 2018 23:44:43 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id BF752C21EE0; Sun, 29 Jul 2018 13:35:22 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id D1527C21FB3; Sun, 29 Jul 2018 13:33:05 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 90C97C21F87; Sun, 29 Jul 2018 13:32:41 +0000 (UTC) Received: from mail-pl0-f68.google.com (mail-pl0-f68.google.com [209.85.160.68]) by lists.denx.de (Postfix) with ESMTPS id D0C65C21F93 for ; Sun, 29 Jul 2018 13:32:36 +0000 (UTC) Received: by mail-pl0-f68.google.com with SMTP id 31-v6so4296047plc.4 for ; Sun, 29 Jul 2018 06:32:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=svwsPc18nyCkrBfLuOBmg5m6U7TH5CtVSXxXYiS5OZo=; b=ju1szNHZ1q9qsdEJiRBiFJvB5jC3fvNXXJyhz7CVEQWJ6xdB2Suslc61pQ+I+9BfUr Q6X9oBDxVQPYEtAJu2sJdNa4vM9WVbRvmBzTu1cAREuN4xGqd/ysARg4B5Oe8X+BeyUo dcuJmk8Cnb8SU4prSXbWkK8Sv7feYWq1REtfdXZHtHT+ajY7prmZtZSKdouNgMihR5mX AWMPe7Tt2BtRMYNuzz+lSC7SH+vS+0Ld5YyH8PwWW9wxWt964pzdpcvG4RNJ5LtmhetO N4jqaURNaMzIEaQo4f2GpHnfNQbQWVjbMFQlRQ9dIJ2sfBHGOf4dSIXT3A/NWlgQAiR5 hf4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=svwsPc18nyCkrBfLuOBmg5m6U7TH5CtVSXxXYiS5OZo=; b=kfI5fGkcwjpFVoKMr9UeeX4keV68j7oVw+wysLRiFNX0rIhgNwlqp2joyzpca4jOJL AZZTbs8vo4zub/3Lu76WZ0KkWhDfjHnfW3Mqtld3hAsgmwwYZtg/ywgW6R+QDxpyXcNl 5zjfEjsbYi9PT5+TQmcgfYZKfAuJKaDz/FsgLhjH/oL04tYzVeVulcIozB7J4ari0jam Du9B/GXsqDHKkF6Lii/0iC93byW3EAIqzF1EYuSAwb6QZshZGUxc02UeuURnRXNu3n+W i8NtPZYOw3nnc1dCqO8/pvIbS4R4AQh6cPwl6GJwCAgxsqHhPxKcUvYb/GdqJiyAQR6P zG0g== X-Gm-Message-State: AOUpUlErQNfUmSD2KHQzQkrxUzQhbdcvJKC86qOvYlaTvkVuPTztQd0C EPvLNwNv3+cfl8zkVdhNks0= X-Google-Smtp-Source: AAOMgpedMNc8XIXxC2FmzfL7fqUDtiVC+I1IXuB4EXmhiOw1U+BuOVfQWu8gTUi5tGiWwK7/RsZVGw== X-Received: by 2002:a17:902:622:: with SMTP id 31-v6mr12900339plg.153.1532871155582; Sun, 29 Jul 2018 06:32:35 -0700 (PDT) Received: from ala-d2121-lx1.wrs.com (unknown-156-139.windriver.com. [147.11.156.139]) by smtp.gmail.com with ESMTPSA id h132-v6sm13438674pfc.100.2018.07.29.06.32.34 (version=TLS1_1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 29 Jul 2018 06:32:34 -0700 (PDT) From: Bin Meng To: Simon Glass , U-Boot Mailing List Date: Sun, 29 Jul 2018 06:37:03 -0700 Message-Id: <1532871432-30703-13-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> References: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> Subject: [U-Boot] [PATCH v2 12/21] dm: pci: Assign correct driver data when binding a driver X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" The correct driver data comes from the matching 'id' instead of 'find_id' in pci_find_and_bind_driver(). Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- Changes in v2: None drivers/pci/pci-uclass.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c index 28ea8c5..5eb6841 100644 --- a/drivers/pci/pci-uclass.c +++ b/drivers/pci/pci-uclass.c @@ -690,7 +690,7 @@ static int pci_find_and_bind_driver(struct udevice *parent, if (ret) goto error; debug("%s: Match found: %s\n", __func__, drv->name); - dev->driver_data = find_id->driver_data; + dev->driver_data = id->driver_data; *devp = dev; return 0; } From patchwork Sun Jul 29 13:37:04 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 950619 X-Patchwork-Delegate: sjg@chromium.org 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=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="fAWQdZII"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41dkJc0F3wz9s0w for ; Sun, 29 Jul 2018 23:37:03 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 98AD1C21F47; Sun, 29 Jul 2018 13:35:57 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 5CE5BC21F19; Sun, 29 Jul 2018 13:33:10 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 3D317C21FCE; Sun, 29 Jul 2018 13:32:42 +0000 (UTC) Received: from mail-pl0-f66.google.com (mail-pl0-f66.google.com [209.85.160.66]) by lists.denx.de (Postfix) with ESMTPS id 56408C21FB6 for ; Sun, 29 Jul 2018 13:32:38 +0000 (UTC) Received: by mail-pl0-f66.google.com with SMTP id e11-v6so4284955plb.3 for ; Sun, 29 Jul 2018 06:32:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=ntEY9WFo9zkDiZkEBlDYVs7q7cVDgQefzXlaEyIOy4k=; b=fAWQdZIItDOfoZZEUv/I6GS+IwMPJALK1YH1vd3P7w7xrSx8MUtNXcr+stE1CW/mLO 0WVzzjK+864juiOMtvd7tuBdFuLxoJGI315erJt+jROdcaPCX7ck3290ceZwv2tYSD5Y 4VesZNuKTPNEGXxic3TzVJBgUEI301k5OySUfto5Bqr01nPJYWnbY4yP4sS04g3mga8z UBZbdCp5FAKW3rdrR5lO0hNR5+2lXyAMeH7oOAY80GgbNrUgCMCODMl2VHoinPd5T8mp CBxuf5sm0vBs1v4ypJ4Ez7ujDJiu19b00Z+4T8EC8j3aeBOeOAxr+cgcHqDFTmub0QKF vefw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=ntEY9WFo9zkDiZkEBlDYVs7q7cVDgQefzXlaEyIOy4k=; b=LlbH5E8PxtMr9HJTokbgMnTLt+c/eDmjybcgX7AnciJMLwX8j0FC7lDa5c1UsNu+K1 yAtvQVFeY+wIOWLCDOo3ObieBFatvQiIZIpqM0CJuBUb0dBRMjbFq/DUBzofW5NjctQD nfNfKRBht1xmVxl8lMWnVrMmLSvo/6qUVL3kD35TQ8DhnC44iNtfEXQnvtk2IPpd0hdy jt3D/mrWZVHau8bvaCR5Xg+gQmLQ2lF+xZhDlr90hYB0FGvn2EXjVhcResyGfWZXDA3L xmgAxwqAZQjAiAbcVRXQvJt5k/yF9q0Qp1PWm0qrlU1SmWERBRrtQ2YzXXyvYzj4BaBr bdyg== X-Gm-Message-State: AOUpUlGb1u2cnlTm1vKk+8ZglqoTWk0L8TAmlVpaSklXD0FhdYrsSTtI LGV+X8Jjfo9Yf9QS9Rm4jq4= X-Google-Smtp-Source: AAOMgpdWwm6UVZGMzB/i6yaWTTwx61sgYqMqFx9QP9d/M3rbxY5dXraphPXvX2oLILAYCNSTxj/3sA== X-Received: by 2002:a17:902:4081:: with SMTP id c1-v6mr12878698pld.169.1532871157014; Sun, 29 Jul 2018 06:32:37 -0700 (PDT) Received: from ala-d2121-lx1.wrs.com (unknown-156-139.windriver.com. [147.11.156.139]) by smtp.gmail.com with ESMTPSA id h132-v6sm13438674pfc.100.2018.07.29.06.32.35 (version=TLS1_1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 29 Jul 2018 06:32:36 -0700 (PDT) From: Bin Meng To: Simon Glass , U-Boot Mailing List Date: Sun, 29 Jul 2018 06:37:04 -0700 Message-Id: <1532871432-30703-14-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> References: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> Subject: [U-Boot] [PATCH v2 13/21] pci: sandbox: Support dynamically binding device driver X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" At present all emulated sandbox pci devices must be present in the device tree in order to be used. The real world pci uclass driver supports pci device driver matching, and we should add such support on sandbox too. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- Changes in v2: None doc/driver-model/pci-info.txt | 23 +++++++++++++ drivers/pci/pci-emul-uclass.c | 14 +++++--- drivers/pci/pci_sandbox.c | 78 +++++++++++++++++++++++++++++++++++++++---- include/pci.h | 3 +- 4 files changed, 107 insertions(+), 11 deletions(-) diff --git a/doc/driver-model/pci-info.txt b/doc/driver-model/pci-info.txt index 52b4389..e67264b 100644 --- a/doc/driver-model/pci-info.txt +++ b/doc/driver-model/pci-info.txt @@ -133,3 +133,26 @@ When this bus is scanned we will end up with something like this: When accesses go to the pci@1f,0 device they are forwarded to its child, the emulator. + +The sandbox PCI drivers also support dynamic driver binding, allowing device +driver to declare the driver binding information via U_BOOT_PCI_DEVICE(), +eliminating the need to provide any device tree node under the host controller +node. It is required a "sandbox,dev-info" property must be provided in the +host controller node for this functionality to work. + + pci1: pci-controller1 { + compatible = "sandbox,pci"; + ... + sandbox,dev-info = <0x08 0x00 0x1234 0x5678 + 0x0c 0x00 0x1234 0x5678>; + }; + +When this bus is scanned we will end up with something like this: + + pci [ + ] pci_sandbo |-- pci-controller1 + pci_emul [ ] sandbox_sw | |-- sandbox_swap_case_emul + pci_emul [ ] sandbox_sw | `-- sandbox_swap_case_emul + +Note the difference from the statically declared device nodes is that the +device is directly attached to the host controller, instead of via a container +device like pci@1f,0. diff --git a/drivers/pci/pci-emul-uclass.c b/drivers/pci/pci-emul-uclass.c index 8570a5d..e9d2f49 100644 --- a/drivers/pci/pci-emul-uclass.c +++ b/drivers/pci/pci-emul-uclass.c @@ -16,21 +16,27 @@ struct sandbox_pci_priv { }; int sandbox_pci_get_emul(struct udevice *bus, pci_dev_t find_devfn, - struct udevice **emulp) + struct udevice **containerp, struct udevice **emulp) { struct udevice *dev; int ret; + *containerp = NULL; ret = pci_bus_find_devfn(bus, PCI_MASK_BUS(find_devfn), &dev); if (ret) { debug("%s: Could not find emulator for dev %x\n", __func__, find_devfn); return ret; } + *containerp = dev; - ret = device_find_first_child(dev, emulp); - if (ret) - return ret; + if (device_get_uclass_id(dev) == UCLASS_PCI_GENERIC) { + ret = device_find_first_child(dev, emulp); + if (ret) + return ret; + } else { + *emulp = dev; + } return *emulp ? 0 : -ENODEV; } diff --git a/drivers/pci/pci_sandbox.c b/drivers/pci/pci_sandbox.c index 67cd733..119a98d 100644 --- a/drivers/pci/pci_sandbox.c +++ b/drivers/pci/pci_sandbox.c @@ -10,15 +10,27 @@ #include #include +#define FDT_DEV_INFO_CELLS 4 +#define FDT_DEV_INFO_SIZE (FDT_DEV_INFO_CELLS * sizeof(u32)) + +#define SANDBOX_PCI_DEVFN(d, f) ((d << 3) | f) + +struct sandbox_pci_priv { + struct { + u16 vendor; + u16 device; + } vendev[256]; +}; + static int sandbox_pci_write_config(struct udevice *bus, pci_dev_t devfn, uint offset, ulong value, enum pci_size_t size) { struct dm_pci_emul_ops *ops; - struct udevice *emul; + struct udevice *container, *emul; int ret; - ret = sandbox_pci_get_emul(bus, devfn, &emul); + ret = sandbox_pci_get_emul(bus, devfn, &container, &emul); if (ret) return ret == -ENODEV ? 0 : ret; ops = pci_get_emul_ops(emul); @@ -33,14 +45,31 @@ static int sandbox_pci_read_config(struct udevice *bus, pci_dev_t devfn, enum pci_size_t size) { struct dm_pci_emul_ops *ops; - struct udevice *emul; + struct udevice *container, *emul; + struct sandbox_pci_priv *priv = dev_get_priv(bus); int ret; /* Prepare the default response */ *valuep = pci_get_ff(size); - ret = sandbox_pci_get_emul(bus, devfn, &emul); - if (ret) - return ret == -ENODEV ? 0 : ret; + ret = sandbox_pci_get_emul(bus, devfn, &container, &emul); + if (ret) { + if (!container) { + u16 vendor, device; + + devfn = SANDBOX_PCI_DEVFN(PCI_DEV(devfn), + PCI_FUNC(devfn)); + vendor = priv->vendev[devfn].vendor; + device = priv->vendev[devfn].device; + if (offset == PCI_VENDOR_ID && vendor) + *valuep = vendor; + else if (offset == PCI_DEVICE_ID && device) + *valuep = device; + + return 0; + } else { + return ret == -ENODEV ? 0 : ret; + } + } ops = pci_get_emul_ops(emul); if (!ops || !ops->read_config) return -ENOSYS; @@ -48,6 +77,41 @@ static int sandbox_pci_read_config(struct udevice *bus, pci_dev_t devfn, return ops->read_config(emul, offset, valuep, size); } +static int sandbox_pci_probe(struct udevice *dev) +{ + struct sandbox_pci_priv *priv = dev_get_priv(dev); + const fdt32_t *cell; + u8 pdev, pfn, devfn; + int len; + + cell = ofnode_get_property(dev_ofnode(dev), "sandbox,dev-info", &len); + if (!cell) + return 0; + + if ((len % FDT_DEV_INFO_SIZE) == 0) { + int num = len / FDT_DEV_INFO_SIZE; + int i; + + for (i = 0; i < num; i++) { + debug("dev info #%d: %02x %02x %04x %04x\n", i, + fdt32_to_cpu(cell[0]), fdt32_to_cpu(cell[1]), + fdt32_to_cpu(cell[2]), fdt32_to_cpu(cell[3])); + + pdev = fdt32_to_cpu(cell[0]); + pfn = fdt32_to_cpu(cell[1]); + if (pdev > 31 || pfn > 7) + continue; + devfn = SANDBOX_PCI_DEVFN(pdev, pfn); + priv->vendev[devfn].vendor = fdt32_to_cpu(cell[2]); + priv->vendev[devfn].device = fdt32_to_cpu(cell[3]); + + cell += FDT_DEV_INFO_CELLS; + } + } + + return 0; +} + static const struct dm_pci_ops sandbox_pci_ops = { .read_config = sandbox_pci_read_config, .write_config = sandbox_pci_write_config, @@ -63,6 +127,8 @@ U_BOOT_DRIVER(pci_sandbox) = { .id = UCLASS_PCI, .of_match = sandbox_pci_ids, .ops = &sandbox_pci_ops, + .probe = sandbox_pci_probe, + .priv_auto_alloc_size = sizeof(struct sandbox_pci_priv), /* Attach an emulator if we can */ .child_post_bind = dm_scan_fdt_dev, diff --git a/include/pci.h b/include/pci.h index 427094c..c0ae5d1 100644 --- a/include/pci.h +++ b/include/pci.h @@ -1441,11 +1441,12 @@ struct dm_pci_emul_ops { * * @bus: PCI bus to search * @find_devfn: PCI device and function address (PCI_DEVFN()) + * @containerp: Returns container device if found * @emulp: Returns emulated device if found * @return 0 if found, -ENODEV if not found */ int sandbox_pci_get_emul(struct udevice *bus, pci_dev_t find_devfn, - struct udevice **emulp); + struct udevice **containerp, struct udevice **emulp); #endif /* CONFIG_DM_PCI */ From patchwork Sun Jul 29 13:37:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 950632 X-Patchwork-Delegate: sjg@chromium.org 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=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="a+1da9rf"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41dkTS367zz9s1x for ; Sun, 29 Jul 2018 23:44:44 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 20EAFC21FC5; Sun, 29 Jul 2018 13:37:27 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 3C0F7C21FE4; Sun, 29 Jul 2018 13:33:32 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 9ACFCC21FDD; Sun, 29 Jul 2018 13:32:44 +0000 (UTC) Received: from mail-pl0-f67.google.com (mail-pl0-f67.google.com [209.85.160.67]) by lists.denx.de (Postfix) with ESMTPS id 93974C21F69 for ; Sun, 29 Jul 2018 13:32:39 +0000 (UTC) Received: by mail-pl0-f67.google.com with SMTP id f6-v6so4298754plo.1 for ; Sun, 29 Jul 2018 06:32:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=hNhg/boowDeZ6MYzWwZBsq52iUUcOAuotLkN5TNACZs=; b=a+1da9rfrtKbXacJ/VVoWmvQ7TssNBSdiuwrAPlP2VcGpMzlkffeUwN48hyb37OEEO /NUGvjLJdI31xcrwumngyG+HKFlk60qOIJSoNbv+P53qOdSElrs+XeaDF4PoclBVZmr3 zzkUtpmfp9z9OZxxu6FVoLcfdwPQCuwQjNrCfM8sToBCtHCVNMbIb5x2OKkJi+6kpNPv c8fPxbFtLdHaOkcOPHyVafjqECo2fO0P61QOKMBpu33HzKL0Ij/Y4n36FoZ3bI0zG3VS cd2PtR61TE/baFnCK5RtXdGLfHf2c4LssI3rJQ4tdKNs2Qbrb85D6sRq2IDv52TyCJuE ARyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=hNhg/boowDeZ6MYzWwZBsq52iUUcOAuotLkN5TNACZs=; b=a0rEtsGqRNx4JA0c8S21xdl4V02AZ5FIlhuAprMnSBecHJPZ+oMD7osF8QtuNNICID yvQueZBFa++N083bTOBGJQHyN0pv7qcZZ6KlFpMMkcyxV4lefcbpwiN8pMDep9J1QcBM 4OaxuX3MnQ4rzU8Scj6M+lSbYSE9/U99BvYHzgm+PMwvHFev93e4rrXPVxubish06esZ urQ8SHGzqgKmgv8WBDU4YFkTxa9m3XrjXlU+19h6I8C7j36ju68uDP0CcdzTA9jULX+8 IXU8y53+hpbig085h/CEiEaj4ZRCnIx3rZAEfHwbk45iCriHIxNNBf+4hbmwTeAH9vRD kgYg== X-Gm-Message-State: AOUpUlEK1hO7vhKapw8ojBnxwQfhJeH1xOMAl5J36VZm74U6g43PANHX qn8pIbf42OQBLYNHc4M9+X3Z28Hq X-Google-Smtp-Source: AAOMgpee40rjxAPUUcI8gnszmrpnspoFtadeYBOwWR91Q/upraKTcy/WTnfAE9YcF+Lm9nxjm59PTw== X-Received: by 2002:a17:902:2702:: with SMTP id c2-v6mr13113564plb.248.1532871158329; Sun, 29 Jul 2018 06:32:38 -0700 (PDT) Received: from ala-d2121-lx1.wrs.com (unknown-156-139.windriver.com. [147.11.156.139]) by smtp.gmail.com with ESMTPSA id h132-v6sm13438674pfc.100.2018.07.29.06.32.37 (version=TLS1_1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 29 Jul 2018 06:32:37 -0700 (PDT) From: Bin Meng To: Simon Glass , U-Boot Mailing List Date: Sun, 29 Jul 2018 06:37:05 -0700 Message-Id: <1532871432-30703-15-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> References: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> Subject: [U-Boot] [PATCH v2 14/21] pci: sandbox: swap_case: Declare dynamic driver matching X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" This adds a U_BOOT_PCI_DEVICE() declaration to the swap_case driver. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- Changes in v2: None arch/sandbox/include/asm/test.h | 4 ++++ drivers/misc/swap_case.c | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/arch/sandbox/include/asm/test.h b/arch/sandbox/include/asm/test.h index 08863bf..57aeca8 100644 --- a/arch/sandbox/include/asm/test.h +++ b/arch/sandbox/include/asm/test.h @@ -16,6 +16,10 @@ #define SANDBOX_PCI_CLASS_CODE PCI_CLASS_CODE_COMM #define SANDBOX_PCI_CLASS_SUB_CODE PCI_CLASS_SUB_CODE_COMM_SERIAL +/* Useful for PCI_VDEVICE() macro */ +#define PCI_VENDOR_ID_SANDBOX SANDBOX_PCI_VENDOR_ID +#define SWAP_CASE_DRV_DATA 0x55aa + #define SANDBOX_CLK_RATE 32768 /* System controller driver data */ diff --git a/drivers/misc/swap_case.c b/drivers/misc/swap_case.c index 80ccb9f..790bb0c 100644 --- a/drivers/misc/swap_case.c +++ b/drivers/misc/swap_case.c @@ -285,3 +285,10 @@ U_BOOT_DRIVER(sandbox_swap_case_emul) = { .priv_auto_alloc_size = sizeof(struct swap_case_priv), .platdata_auto_alloc_size = sizeof(struct swap_case_platdata), }; + +static struct pci_device_id sandbox_swap_case_supported[] = { + { PCI_VDEVICE(SANDBOX, SANDBOX_PCI_DEVICE_ID), SWAP_CASE_DRV_DATA }, + {}, +}; + +U_BOOT_PCI_DEVICE(sandbox_swap_case_emul, sandbox_swap_case_supported); From patchwork Sun Jul 29 13:37:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 950633 X-Patchwork-Delegate: sjg@chromium.org 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=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="j5ug74Ck"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41dkVK4pfXz9s0R for ; Sun, 29 Jul 2018 23:45:29 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 28DF8C21FCD; Sun, 29 Jul 2018 13:36:36 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 640B2C21F47; Sun, 29 Jul 2018 13:33:22 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 6E203C21FA3; Sun, 29 Jul 2018 13:32:44 +0000 (UTC) Received: from mail-pl0-f67.google.com (mail-pl0-f67.google.com [209.85.160.67]) by lists.denx.de (Postfix) with ESMTPS id D4720C21FB3 for ; Sun, 29 Jul 2018 13:32:40 +0000 (UTC) Received: by mail-pl0-f67.google.com with SMTP id t17-v6so4278261ply.13 for ; Sun, 29 Jul 2018 06:32:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=4yN+J/sXA4wgx8qa0ctEs85wk3q/9lhy8MOx3F38/Wc=; b=j5ug74CkYZNa+F/Tjo6qC1dTMGgUDYV0FEZkBA98D8XFTR/HPrXNcgsfn6p1VNKwPg JQeNIlEvJ0El3BHITMcRF1IDHXGQAvEwiWjSS+qyNyz4ztGiyAKobU6K1UFMiWra6zsE gOEKlAorOP2hhhMGyaHjFrR6kZQ8A0vSY2xU5/qmu8ow1/XXFLsY99CkgiqLO0cjS4BN 0Hoz80kQEq0dg8Pqmx2hx727mp5WUCM1fBm6ImxTMY94k4M5dE81lAP9Skovy9DjA6u9 OQ0oRc7Y85rNKqUa+0YoQwvSQakhm/7f7ISGZk5hI/iCHDGpq/8uYVKiesMgqcQFlu0x Bf1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=4yN+J/sXA4wgx8qa0ctEs85wk3q/9lhy8MOx3F38/Wc=; b=iFlcKBI93Dl/WEadlKAEMwLIr8uEW+t18WwwWvPGzkhByK8wPkcKTRDJ2swIRuwolY oalD+C92gIc2iZTyFEmntjS1GyPxvj3RBKJWlKNR2p1v1O1oMTlciJhLkG7lEKfZiL/i QbWlJ5KcZ21nuRE2Wqv7N9V5Iav8lg2Cacp7vD1UKiYvhlHc0sNgCg9HaLWIBAUpjN3F sBz9RxHp5ALHAu7wRrSuc6AHDhA93buOK5jbh9JUf4jfwIaxyfHPCc2puep9bIj+gBAE ICQcteyNP2/qi5KmPiLGTZJn9xW2tUBB8YBWdR+RmA2Q+mX82cxIcY3A2AWckx6Cq+3J Jxkw== X-Gm-Message-State: AOUpUlHdwtGmU7i3gyp+k+sPb3mwmEm1Nr8oNc9yHnZYXh69C0V/BrwP TeeaXD86MeiGqmBR69tUbH+vymyt X-Google-Smtp-Source: AAOMgpcNML8WvsHqlve7JSk0s3lQYSDAOo7+a6yo3HqsdgK1cAcSXqfNP5ZnUo03Gkez03dJTb61SA== X-Received: by 2002:a17:902:1d4a:: with SMTP id u10-v6mr13024000plu.267.1532871159629; Sun, 29 Jul 2018 06:32:39 -0700 (PDT) Received: from ala-d2121-lx1.wrs.com (unknown-156-139.windriver.com. [147.11.156.139]) by smtp.gmail.com with ESMTPSA id h132-v6sm13438674pfc.100.2018.07.29.06.32.38 (version=TLS1_1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 29 Jul 2018 06:32:38 -0700 (PDT) From: Bin Meng To: Simon Glass , U-Boot Mailing List Date: Sun, 29 Jul 2018 06:37:06 -0700 Message-Id: <1532871432-30703-16-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> References: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> Subject: [U-Boot] [PATCH v2 15/21] sandbox: Update test.dts for dynamic PCI device driver matching X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" Signed-off-by: Bin Meng --- Changes in v2: None arch/sandbox/dts/test.dts | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts index 0bce6d0..44d24f9 100644 --- a/arch/sandbox/dts/test.dts +++ b/arch/sandbox/dts/test.dts @@ -326,20 +326,8 @@ #size-cells = <2>; ranges = <0x02000000 0 0x30000000 0x30000000 0 0x2000 0x01000000 0 0x40000000 0x40000000 0 0x2000>; - pci@8,0 { - compatible = "pci-generic"; - reg = <0x4000 0 0 0 0>; - emul@8,0 { - compatible = "sandbox,swap-case"; - }; - }; - pci@c,0 { - compatible = "pci-generic"; - reg = <0x6000 0 0 0 0>; - emul@c,0 { - compatible = "sandbox,swap-case"; - }; - }; + sandbox,dev-info = <0x08 0x00 0x1234 0x5678 + 0x0c 0x00 0x1234 0x5678>; }; probing { From patchwork Sun Jul 29 13:37:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 950629 X-Patchwork-Delegate: sjg@chromium.org 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=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="gzCLcqxC"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41dkQS2V8Kz9s0R for ; Sun, 29 Jul 2018 23:42:08 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 0A3F6C21FA2; Sun, 29 Jul 2018 13:37:42 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 58A74C21EB4; Sun, 29 Jul 2018 13:33:53 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id D08C2C21C4A; Sun, 29 Jul 2018 13:32:46 +0000 (UTC) Received: from mail-pl0-f68.google.com (mail-pl0-f68.google.com [209.85.160.68]) by lists.denx.de (Postfix) with ESMTPS id 5281BC21FA1 for ; Sun, 29 Jul 2018 13:32:42 +0000 (UTC) Received: by mail-pl0-f68.google.com with SMTP id m1-v6so4287541plt.6 for ; Sun, 29 Jul 2018 06:32:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=Y7m+59zRbdmj6sW2Vdt/Kg1a+WPmxHeoAGkv9SSjXRo=; b=gzCLcqxCZVIm6SSmII7LQTe8ITagpTx+WmDvnRvHCjOzmQHTgM8LYGtkQqBgimVIIm wtObAE2UU9dv9NY1x1KKC4/FGRX9yM96t9PDGmpTcb2/smNWTQquX3CivhW7OEkyoWYb jWu/dLbF0gNcbI0jV/w2S2Gt9mW3KE+xJ6+eyThSjkpzcRG8fVs+74ye6DFDxCPNefX5 Ncs5IO8kr5jIN61nMAuZ0Nbo9Ae8q81R7Dg3xe8SBUhmusahktNYkg8oADYvOgof9i44 4Z1JXrQhvW7T68uruHYxF8cHUtDrYKtvBDb7ilCJldr3gd7H5GKosflYqaBTRxo0NnBT aTnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=Y7m+59zRbdmj6sW2Vdt/Kg1a+WPmxHeoAGkv9SSjXRo=; b=nb90SQukOk10AtAvvQK6HPdyGayfi8bJiufrVXSCE0HdCvfBS+kVjLGK/68njFpbi8 cYZ9Yzi4GviWJQWywaAPAZZUk30vzo5JknEmJ4dpfccvTRnpVIe0Q6ntpqxWZ3QWyuxr A+p+NrZEzBGj9BSXwi+ws4RizOwiJgomCRu/bvLHEfyYy2K0xksfPLGFy1onnemRkxbp qXkXuta/OcXqQs+GZJqqXHo0/ms6jaTW5swpvIqd4Mj2HP3kophNCu+gFH0dfo0XRDGb D0VuHYavNXUgFuqXOD+iE0Fn9cX7SmfztC0hLoFeYvpVupBez1bxqOCFLwRQZ1DmVdFJ gplg== X-Gm-Message-State: AOUpUlG2r69TSLE7Xga6RjU/HTMXY/w86y+ETrTUI/n7qzI6P3YABq0q G3kYAS8ZfaTTchzSqGqMEeA= X-Google-Smtp-Source: AAOMgpeczXS+Ql9KHXlYKA7CZrPcO4NJNYzuOGBtTfAVbDU9XdLVi0FEz52yXD25qgpUBozoTvdX5g== X-Received: by 2002:a17:902:7b96:: with SMTP id w22-v6mr12873894pll.24.1532871161084; Sun, 29 Jul 2018 06:32:41 -0700 (PDT) Received: from ala-d2121-lx1.wrs.com (unknown-156-139.windriver.com. [147.11.156.139]) by smtp.gmail.com with ESMTPSA id h132-v6sm13438674pfc.100.2018.07.29.06.32.39 (version=TLS1_1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 29 Jul 2018 06:32:40 -0700 (PDT) From: Bin Meng To: Simon Glass , U-Boot Mailing List Date: Sun, 29 Jul 2018 06:37:07 -0700 Message-Id: <1532871432-30703-17-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> References: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> Subject: [U-Boot] [PATCH v2 16/21] test: dm: pci: Test driver binding with driver data provided X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" With struct pci_device_id, it's possible to pass a driver data for bound driver to use. This adds a test case for this functionality. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- Changes in v2: None test/dm/pci.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/test/dm/pci.c b/test/dm/pci.c index 089b72e..53d2ca1 100644 --- a/test/dm/pci.c +++ b/test/dm/pci.c @@ -108,3 +108,20 @@ static int dm_test_pci_swapcase(struct unit_test_state *uts) return 0; } DM_TEST(dm_test_pci_swapcase, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT); + +/* Test that we can dynamically bind the device driver correctly */ +static int dm_test_pci_drvdata(struct unit_test_state *uts) +{ + struct udevice *bus, *swap; + + /* Check that asking for the device automatically fires up PCI */ + ut_assertok(uclass_get_device_by_seq(UCLASS_PCI, 1, &bus)); + + ut_assertok(dm_pci_bus_find_bdf(PCI_BDF(1, 0x08, 0), &swap)); + ut_asserteq(SWAP_CASE_DRV_DATA, swap->driver_data); + ut_assertok(dm_pci_bus_find_bdf(PCI_BDF(1, 0x0c, 0), &swap)); + ut_asserteq(SWAP_CASE_DRV_DATA, swap->driver_data); + + return 0; +} +DM_TEST(dm_test_pci_drvdata, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT); From patchwork Sun Jul 29 13:37:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 950636 X-Patchwork-Delegate: sjg@chromium.org 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=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="qV03xUsL"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41dkWj13XZz9s0R for ; Sun, 29 Jul 2018 23:46:41 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id C3284C21FCB; Sun, 29 Jul 2018 13:37:09 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 59ECEC21FCC; Sun, 29 Jul 2018 13:33:28 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 7B81FC21FD9; Sun, 29 Jul 2018 13:32:47 +0000 (UTC) Received: from mail-pl0-f68.google.com (mail-pl0-f68.google.com [209.85.160.68]) by lists.denx.de (Postfix) with ESMTPS id A61DFC21FB7 for ; Sun, 29 Jul 2018 13:32:43 +0000 (UTC) Received: by mail-pl0-f68.google.com with SMTP id m16-v6so4282060pls.11 for ; Sun, 29 Jul 2018 06:32:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=cF9sc7UBfmVIk8DKi2vTKvYMGglNHGAmZnTeELznr2g=; b=qV03xUsLowKD+mL1bhFJFtIGo7pcR2TejXEWieS/bMYzwpTonlM4komfusxgrS5kuj XEwmMBJWXPTNps6YviXOdjgQUbf7J0ZJwdSRu6fQKR4QnbsfwCehWY77O+yGnJ8+25JX qd0pdqEMD8dYkdgKLhGKMuCxOg5bdy5iQuvyi52rz9+3Gbk5a6HpV4/k2ARYNirF9GKp in/yxq930nsQmhkjhEgaWiS41fppx27FxH44JLMauWemgbVtI+8af20I310D9JWxCAvC 3vrVr/14pGQ1QmtHmTo01v7oSY1AOSCv+2URGzbVWYa992hIdrwgSFjxRt/AxexzWkJU 3Gcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=cF9sc7UBfmVIk8DKi2vTKvYMGglNHGAmZnTeELznr2g=; b=cw6dDei4mC3aHeBQeBELaRF0Z57GqP2xHkdbabONeDx89dXpSBvc95PZAnQf6IlKDS uU2F7bP3JGsQR2DrvxL5aKvz/jf1Xn+9ItbzZuz7vtGSGrI54wCxL9WbzBTAYOlU8k/t mAf+qInijQnMhhNfcsgBR7naevy3laFeYALqDbTMYDXDooyExw4rC539qz8anG/AW+Kq K/KbJpJiR7Gu4Yo8sT3HGd73kToXzYcdQMgr+6YTzB8Tw6vnXfZIIQV0vZsYuNYAC1Of NVDnxqMpR/ylMGXJqmJIdmccIA/o3TgOPkdZTO8K076tacO0QSJvVqeGbyTAFI5+rtTt UWWw== X-Gm-Message-State: AOUpUlE4oUK4jJABBTQ9xB2TX8PS7MKLgZKK0Nts0W6TNXz3E4C8pvBv Gf4mVnSyG7wyaLqzjwUvUGHKMV17 X-Google-Smtp-Source: AAOMgpfs2eFbwmDbHiEfuXdoA839XEcNcpxyvD6SsX5ce5av9eK+U7fyi9dOAfJMzYNpgpNdnUYjBQ== X-Received: by 2002:a17:902:7106:: with SMTP id a6-v6mr13177551pll.28.1532871162437; Sun, 29 Jul 2018 06:32:42 -0700 (PDT) Received: from ala-d2121-lx1.wrs.com (unknown-156-139.windriver.com. [147.11.156.139]) by smtp.gmail.com with ESMTPSA id h132-v6sm13438674pfc.100.2018.07.29.06.32.41 (version=TLS1_1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 29 Jul 2018 06:32:41 -0700 (PDT) From: Bin Meng To: Simon Glass , U-Boot Mailing List Date: Sun, 29 Jul 2018 06:37:08 -0700 Message-Id: <1532871432-30703-18-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> References: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> Subject: [U-Boot] [PATCH v2 17/21] pci: sandbox: emul: Rename priv structure X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" We have "struct sandbox_pci_priv" in pci_sandbox driver. To avoid confusion, rename the emul's priv to "struct sandbox_pci_emul_priv". Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- Changes in v2: None drivers/pci/pci-emul-uclass.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/pci/pci-emul-uclass.c b/drivers/pci/pci-emul-uclass.c index e9d2f49..3822758 100644 --- a/drivers/pci/pci-emul-uclass.c +++ b/drivers/pci/pci-emul-uclass.c @@ -11,7 +11,7 @@ #include #include -struct sandbox_pci_priv { +struct sandbox_pci_emul_priv { int dev_count; }; @@ -43,7 +43,7 @@ int sandbox_pci_get_emul(struct udevice *bus, pci_dev_t find_devfn, static int sandbox_pci_emul_post_probe(struct udevice *dev) { - struct sandbox_pci_priv *priv = dev->uclass->priv; + struct sandbox_pci_emul_priv *priv = dev->uclass->priv; priv->dev_count++; sandbox_set_enable_pci_map(true); @@ -53,7 +53,7 @@ static int sandbox_pci_emul_post_probe(struct udevice *dev) static int sandbox_pci_emul_pre_remove(struct udevice *dev) { - struct sandbox_pci_priv *priv = dev->uclass->priv; + struct sandbox_pci_emul_priv *priv = dev->uclass->priv; priv->dev_count--; sandbox_set_enable_pci_map(priv->dev_count > 0); @@ -66,5 +66,5 @@ UCLASS_DRIVER(pci_emul) = { .name = "pci_emul", .post_probe = sandbox_pci_emul_post_probe, .pre_remove = sandbox_pci_emul_pre_remove, - .priv_auto_alloc_size = sizeof(struct sandbox_pci_priv), + .priv_auto_alloc_size = sizeof(struct sandbox_pci_emul_priv), }; From patchwork Sun Jul 29 13:37:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 950634 X-Patchwork-Delegate: sjg@chromium.org 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=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="iye5vyfD"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41dkVN5KStz9s0R for ; Sun, 29 Jul 2018 23:45:32 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 4CBA6C21FC5; Sun, 29 Jul 2018 13:36:52 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 3A02BC21FAD; Sun, 29 Jul 2018 13:33:25 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id BC611C21FDF; Sun, 29 Jul 2018 13:32:48 +0000 (UTC) Received: from mail-pl0-f67.google.com (mail-pl0-f67.google.com [209.85.160.67]) by lists.denx.de (Postfix) with ESMTPS id 25AE3C21F69 for ; Sun, 29 Jul 2018 13:32:45 +0000 (UTC) Received: by mail-pl0-f67.google.com with SMTP id 6-v6so4287317plb.0 for ; Sun, 29 Jul 2018 06:32:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=i21WuNGd9ZgFDIbv/t/Au9mRVFYBFxtrrhzpb9O8r+c=; b=iye5vyfDKI39ot9l+PLiuoBXZfg0M1WLf2cbFQgBxc/lgv1pvcVI/YCqXEMQerjTIN f+9EdU5/ZyOdlBfnIhIGJgUyAifDFrdY7wbHMIuUwBT/MteqrYhrY6OKHzEHZxBjaZxr dkr9bUOUqxL8z5wT+lCNREDvSMMubgkPSI1AHmYxQkLiI6Lv8aMQAlkjqJJ6lDX/SgYt +HFYsm9ZpbeVNLEUPyDhl6vF/4KoG51U/2DBNzs9SrFTXsIBlV7Bnmj4lnlCgRTaQ4+0 1/9YhkT7gm+KD5Q3ikRqKJXobexkZIZwoowCeZ5DKb0w9WYxMgQ44AusbpmGUn9aCHXR uhog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=i21WuNGd9ZgFDIbv/t/Au9mRVFYBFxtrrhzpb9O8r+c=; b=A0vPsl2Hyx4a99f33BOjRAcaGYU/Ou3hxnj2mRHpOPFkY8mYX77KY/GRlEO4C0K1j3 iNaoF/QtndfX6dU+1fYk7Fusv10fsjbkH7HZQgDUkN0AklPJgLwKDxogkeZGQKV9n5s6 X/X6yMWAPF04oukDkWldRwLzw3keAhlyDl/baQmDm/A1xGUUuqqnXaREur7eqjtnJIch lc48702I094btdW0WSpChoyqD7w0Pv9KQcUSHkoJ/XRe2Hlkwla6weljFLkM/Rls85yA J1mi+2e0hK/pTO/Ta6ruTIXhrxvPt+56LEDtyy4wD+gFA2MVQgd6Jbk6XUUwdyyUyUEm z+9g== X-Gm-Message-State: AOUpUlHXxfDGMgA62tExiTX3BGVJIBw2f+O+mS2V3FFoljarzfSqvwu/ 0+/h8BAW+21ySbfvkEvVgoweRJxU X-Google-Smtp-Source: AAOMgpf/R/VGxuksXnAl+A2hZ0pT678dHGPuUucirG3TvUTsHJLHXnyHPJWbmjLzE0O/zeql6ZdIjw== X-Received: by 2002:a17:902:a613:: with SMTP id u19-v6mr12725257plq.234.1532871163873; Sun, 29 Jul 2018 06:32:43 -0700 (PDT) Received: from ala-d2121-lx1.wrs.com (unknown-156-139.windriver.com. [147.11.156.139]) by smtp.gmail.com with ESMTPSA id h132-v6sm13438674pfc.100.2018.07.29.06.32.42 (version=TLS1_1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 29 Jul 2018 06:32:42 -0700 (PDT) From: Bin Meng To: Simon Glass , U-Boot Mailing List Date: Sun, 29 Jul 2018 06:37:09 -0700 Message-Id: <1532871432-30703-19-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> References: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> Subject: [U-Boot] [PATCH v2 18/21] test: dm: pci: Add tests for mixed static and dynamic devices on the same bus X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" In the Sandbox test configuration, PCI bus#0 only has static devices while bus#1 only has dynamic devices. Create a bus#2 that has both types of devices and test such. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- Changes in v2: None arch/sandbox/dts/test.dts | 18 ++++++++++++++ test/dm/pci.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts index 44d24f9..7035646 100644 --- a/arch/sandbox/dts/test.dts +++ b/arch/sandbox/dts/test.dts @@ -16,6 +16,7 @@ mmc1 = "/mmc1"; pci0 = &pci0; pci1 = &pci1; + pci2 = &pci2; remoteproc1 = &rproc_1; remoteproc2 = &rproc_2; rtc0 = &rtc_0; @@ -330,6 +331,23 @@ 0x0c 0x00 0x1234 0x5678>; }; + pci2: pci-controller2 { + compatible = "sandbox,pci"; + device_type = "pci"; + #address-cells = <3>; + #size-cells = <2>; + ranges = <0x02000000 0 0x50000000 0x50000000 0 0x2000 + 0x01000000 0 0x60000000 0x60000000 0 0x2000>; + sandbox,dev-info = <0x08 0x00 0x1234 0x5678>; + pci@1f,0 { + compatible = "pci-generic"; + reg = <0xf800 0 0 0 0>; + emul@1f,0 { + compatible = "sandbox,swap-case"; + }; + }; + }; + probing { compatible = "simple-bus"; test1 { diff --git a/test/dm/pci.c b/test/dm/pci.c index 53d2ca1..e03f6ba 100644 --- a/test/dm/pci.c +++ b/test/dm/pci.c @@ -125,3 +125,66 @@ static int dm_test_pci_drvdata(struct unit_test_state *uts) return 0; } DM_TEST(dm_test_pci_drvdata, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT); + +/* Test that devices on PCI bus#2 can be accessed correctly */ +static int dm_test_pci_mixed(struct unit_test_state *uts) +{ + /* PCI bus#2 has both statically and dynamic declared devices */ + struct udevice *bus, *swap; + u16 vendor, device; + ulong io_addr, mem_addr; + char *ptr; + + ut_assertok(uclass_get_device_by_seq(UCLASS_PCI, 2, &bus)); + + /* Test the dynamic device */ + ut_assertok(dm_pci_bus_find_bdf(PCI_BDF(2, 0x08, 0), &swap)); + vendor = 0; + ut_assertok(dm_pci_read_config16(swap, PCI_VENDOR_ID, &vendor)); + ut_asserteq(SANDBOX_PCI_VENDOR_ID, vendor); + + /* First test I/O */ + io_addr = dm_pci_read_bar32(swap, 0); + outb(2, io_addr); + ut_asserteq(2, inb(io_addr)); + + /* + * Now test memory mapping - note we must unmap and remap to cause + * the swapcase emulation to see our data and response. + */ + mem_addr = dm_pci_read_bar32(swap, 1); + ptr = map_sysmem(mem_addr, 30); + strcpy(ptr, "This is a TesT oN dYNAMIc"); + unmap_sysmem(ptr); + + ptr = map_sysmem(mem_addr, 30); + ut_asserteq_str("tHIS IS A tESt On DynamiC", ptr); + unmap_sysmem(ptr); + + /* Test the static device */ + ut_assertok(dm_pci_bus_find_bdf(PCI_BDF(2, 0x1f, 0), &swap)); + device = 0; + ut_assertok(dm_pci_read_config16(swap, PCI_DEVICE_ID, &device)); + ut_asserteq(SANDBOX_PCI_DEVICE_ID, device); + + /* First test I/O */ + io_addr = dm_pci_read_bar32(swap, 0); + outb(2, io_addr); + ut_asserteq(2, inb(io_addr)); + + /* + * Now test memory mapping - note we must unmap and remap to cause + * the swapcase emulation to see our data and response. + */ + mem_addr = dm_pci_read_bar32(swap, 1); + ptr = map_sysmem(mem_addr, 30); + strcpy(ptr, "This is a TesT oN sTATIc"); + unmap_sysmem(ptr); + + ptr = map_sysmem(mem_addr, 30); + ut_asserteq_str("tHIS IS A tESt On StatiC", ptr); + unmap_sysmem(ptr); + + return 0; +} +DM_TEST(dm_test_pci_mixed, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT); From patchwork Sun Jul 29 13:37:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 950624 X-Patchwork-Delegate: sjg@chromium.org 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=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="dils/JpN"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41dkNJ1qZzz9s0w for ; Sun, 29 Jul 2018 23:40:16 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id DE147C21F38; Sun, 29 Jul 2018 13:38:31 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 70C8DC21FA8; Sun, 29 Jul 2018 13:34:33 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id E4965C21FA8; Sun, 29 Jul 2018 13:32:50 +0000 (UTC) Received: from mail-pg1-f177.google.com (mail-pg1-f177.google.com [209.85.215.177]) by lists.denx.de (Postfix) with ESMTPS id 90EB4C21FAC for ; Sun, 29 Jul 2018 13:32:46 +0000 (UTC) Received: by mail-pg1-f177.google.com with SMTP id y5-v6so5768513pgv.1 for ; Sun, 29 Jul 2018 06:32:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=6tl6jrvGn4YQm42e1fgXzWkJuB8cBuGCKNIaZPaWdp4=; b=dils/JpN0ekOfqP4vrAwtwUE3u8dxNLgWXkoxeH1CQl8Fu2uLTc5nZSAn0Dq7To2p1 UZ2y7WAnQJq6jmK/UfYhW/LGAv5drDPq2yKSdhgBCQUgfvtxNmK5paTDpBgj+lozs4ue pX1HsokYAFuSgl6OyVtwrb26MBW+wD3ZWdrbOBtxq67+u0CkM5u8cFj/BX9JgAsouqJk XcvDvCjBYxch9B/EHZ5ap5ZMUxYuP1dgLobODb+f/5D+Uqhto4aWkhKn5ahNR1CdphaW hYmEpm9JIquK/4tgUWU2Sf2h8la0s/PQ1CbxcVl8wXSGxyhtHvmZiYE5rOBSrEHyq7rR WnTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=6tl6jrvGn4YQm42e1fgXzWkJuB8cBuGCKNIaZPaWdp4=; b=tTiaIcliqHhWwUv9dUdtP24zbgkUwIXHPY26BYyHEmoa3a/ZaLTMlVceQ3SEdEgG76 abUSu5mwsrzpMhh3woFjYRiNRAlovHEFZ7ZcUMG88Md02kOJZWp/sDqBM2bCFOb40Kba YMDm6928qq/EiHSJLt3m1rGGBYbGMoqTMdqRtRI+PA9jNr1Noj9qsqsEYqHtdBQmfr41 DJenNGWt7Sy0LttsMhVQW8mgd9QJaki/LvgWKFn6TRaDEnH8Tj997CzENVXQ09Xk/GPx MC2nMw7+tCGaMWBvI1JSPRnHB1gPOMhzwjgJuKwERehvyE6Xb3Kq8k3R4cGyf4QIQgdk 5GKA== X-Gm-Message-State: AOUpUlE/kO1glkgz4V++JHgqch1n/BOoHFNf8ohQey+YMmechQg3bHhH /nXVTvQJC2vwEvKWWkTsRNWRBW4l X-Google-Smtp-Source: AAOMgpeJjkSM7aSbnEphScIE4PFzk8XY679vmD3vc0Gp73kQqO+weAAcYAsTin01VV3qQnJRpD7AEQ== X-Received: by 2002:a63:4e5f:: with SMTP id o31-v6mr13075955pgl.256.1532871165209; Sun, 29 Jul 2018 06:32:45 -0700 (PDT) Received: from ala-d2121-lx1.wrs.com (unknown-156-139.windriver.com. [147.11.156.139]) by smtp.gmail.com with ESMTPSA id h132-v6sm13438674pfc.100.2018.07.29.06.32.43 (version=TLS1_1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 29 Jul 2018 06:32:44 -0700 (PDT) From: Bin Meng To: Simon Glass , U-Boot Mailing List Date: Sun, 29 Jul 2018 06:37:10 -0700 Message-Id: <1532871432-30703-20-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> References: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> Subject: [U-Boot] [PATCH v2 19/21] pci: Add all known capability and extended capability ids X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" Currently we don't have a complete list of capability and extended capability ids. This adds them. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- Changes in v2: None include/pci.h | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/include/pci.h b/include/pci.h index c0ae5d1..83a40a5 100644 --- a/include/pci.h +++ b/include/pci.h @@ -318,7 +318,21 @@ #define PCI_CAP_ID_SLOTID 0x04 /* Slot Identification */ #define PCI_CAP_ID_MSI 0x05 /* Message Signalled Interrupts */ #define PCI_CAP_ID_CHSWP 0x06 /* CompactPCI HotSwap */ -#define PCI_CAP_ID_EXP 0x10 /* PCI Express */ +#define PCI_CAP_ID_PCIX 0x07 /* PCI-X */ +#define PCI_CAP_ID_HT 0x08 /* HyperTransport */ +#define PCI_CAP_ID_VNDR 0x09 /* Vendor-Specific */ +#define PCI_CAP_ID_DBG 0x0A /* Debug port */ +#define PCI_CAP_ID_CCRC 0x0B /* CompactPCI Central Resource Control */ +#define PCI_CAP_ID_SHPC 0x0C /* PCI Standard Hot-Plug Controller */ +#define PCI_CAP_ID_SSVID 0x0D /* Bridge subsystem vendor/device ID */ +#define PCI_CAP_ID_AGP3 0x0E /* AGP Target PCI-PCI bridge */ +#define PCI_CAP_ID_SECDEV 0x0F /* Secure Device */ +#define PCI_CAP_ID_EXP 0x10 /* PCI Express */ +#define PCI_CAP_ID_MSIX 0x11 /* MSI-X */ +#define PCI_CAP_ID_SATA 0x12 /* SATA Data/Index Conf. */ +#define PCI_CAP_ID_AF 0x13 /* PCI Advanced Features */ +#define PCI_CAP_ID_EA 0x14 /* PCI Enhanced Allocation */ +#define PCI_CAP_ID_MAX PCI_CAP_ID_EA #define PCI_CAP_LIST_NEXT 1 /* Next capability in the list */ #define PCI_CAP_FLAGS 2 /* Capability defined flags (16 bits) */ #define PCI_CAP_SIZEOF 4 @@ -434,6 +448,10 @@ #define PCI_EXT_CAP_ID_SECPCI 0x19 /* Secondary PCIe Capability */ #define PCI_EXT_CAP_ID_PMUX 0x1A /* Protocol Multiplexing */ #define PCI_EXT_CAP_ID_PASID 0x1B /* Process Address Space ID */ +#define PCI_EXT_CAP_ID_DPC 0x1D /* Downstream Port Containment */ +#define PCI_EXT_CAP_ID_L1SS 0x1E /* L1 PM Substates */ +#define PCI_EXT_CAP_ID_PTM 0x1F /* Precision Time Measurement */ +#define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_PTM /* Include the ID list */ From patchwork Sun Jul 29 13:37:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 950625 X-Patchwork-Delegate: sjg@chromium.org 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=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="C90Nxe8x"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41dkNP0Xgzz9s0w for ; Sun, 29 Jul 2018 23:40:20 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 8D88BC21F19; Sun, 29 Jul 2018 13:38:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 9103FC21F87; Sun, 29 Jul 2018 13:34:23 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id EEBEBC21FBD; Sun, 29 Jul 2018 13:32:51 +0000 (UTC) Received: from mail-pg1-f194.google.com (mail-pg1-f194.google.com [209.85.215.194]) by lists.denx.de (Postfix) with ESMTPS id C654CC21F2F for ; Sun, 29 Jul 2018 13:32:47 +0000 (UTC) Received: by mail-pg1-f194.google.com with SMTP id f1-v6so5753246pgq.12 for ; Sun, 29 Jul 2018 06:32:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=rDMax77hTuZ+C/bhHoNAsphQlKCtXM8hScTRSo0mrBI=; b=C90Nxe8xIyfQMRSnai/WNhQB9Ua44Ea6nQV1+MsfD893LCJrjzzQqkrD9dY0BtAcSJ 7eD10z21Gk1FUWa97wV6wWH7t9+DKWKGZv+oPl1P+XIXeCOyZLPiDrDpmYlXIKlalc4U hcSkv9+40/IA5njq3tQ3AyYaVWWoSz8/45haEpaMlCMiDZMBYxehJSTA9LjtyH3SU4p/ rHd1d1KAh44cuYMEc0ZrDd6AjhEYFfEYl4xF75No7SCFLgDXMwPPqVNAuCeAtRu3VxDV 8xprWgazrkm+2RrMayd4OBOpUqUSu6QYkTJKG0BXIa6JnynvPLMGocoQlBcnU75Z/WHp BrTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=rDMax77hTuZ+C/bhHoNAsphQlKCtXM8hScTRSo0mrBI=; b=r2lvcmfcsJtKTc0oyJmV4mMLNZEItjY3weIamVRXA5SBsUEf/j1aSEe+8KZx52Mxf0 57K2O2X+eHFOcKYjen/P1mj8KVZROwtin6zqUar34tBCRviEUlVjMu0Vrutw2m0+wTDb Vf8KjRp5fPQDmY01MDKH7eOaDAuAaTiEq8Gpw9kapknm7pgcYFMLLXog0d8i9G5zjTqY AX3iY0ppALlNQ9rN8hYTDylzKzbwAMYi6xhEtRqBqFIkyJ5uA0Bu+xmK6G8h5T2uYaB6 sFMKf9CwTMTfJS5q/BYHBoPaz5qpTeYZBx6RQoBS8aw44YUv+jB7jwLI47vjqw6hh1fm Y95g== X-Gm-Message-State: AOUpUlGCguOUh5lu5uxD+kcjQRMsb4+za++swLY3KIlH8pp4fciFBo7H EudcDnjXl4Xb2HGV+eVHx5g= X-Google-Smtp-Source: AAOMgpfJB3gtD3SgKYZZT9amZXfbHU+/vXXdmp+Q3UOY1A8efk7FtLDJRfWUXSVtpv5DPqLwnySNMw== X-Received: by 2002:a63:2e09:: with SMTP id u9-v6mr3295974pgu.294.1532871166527; Sun, 29 Jul 2018 06:32:46 -0700 (PDT) Received: from ala-d2121-lx1.wrs.com (unknown-156-139.windriver.com. [147.11.156.139]) by smtp.gmail.com with ESMTPSA id h132-v6sm13438674pfc.100.2018.07.29.06.32.45 (version=TLS1_1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 29 Jul 2018 06:32:45 -0700 (PDT) From: Bin Meng To: Simon Glass , U-Boot Mailing List Date: Sun, 29 Jul 2018 06:37:11 -0700 Message-Id: <1532871432-30703-21-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> References: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> Subject: [U-Boot] [PATCH v2 20/21] dm: pci: Add APIs to find capability and extended capability X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" This introduces two new APIs dm_pci_find_capability() and dm_pci_find_ext_capability() to get PCI capability address and PCI express extended capability address for a given PCI device. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- Changes in v2: - Mask header_type with 0x7f drivers/pci/pci-uclass.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++ include/pci.h | 46 ++++++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+) diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c index 5eb6841..e9671d9 100644 --- a/drivers/pci/pci-uclass.c +++ b/drivers/pci/pci-uclass.c @@ -1320,6 +1320,74 @@ void *dm_pci_map_bar(struct udevice *dev, int bar, int flags) return dm_pci_bus_to_virt(dev, pci_bus_addr, flags, 0, MAP_NOCACHE); } +int dm_pci_find_capability(struct udevice *dev, int cap) +{ + u16 status; + u8 header_type; + int ttl = PCI_FIND_CAP_TTL; + u8 id; + u16 ent; + u8 pos; + + dm_pci_read_config16(dev, PCI_STATUS, &status); + if (!(status & PCI_STATUS_CAP_LIST)) + return 0; + + dm_pci_read_config8(dev, PCI_HEADER_TYPE, &header_type); + if ((header_type & 0x7f) == PCI_HEADER_TYPE_CARDBUS) + pos = PCI_CB_CAPABILITY_LIST; + else + pos = PCI_CAPABILITY_LIST; + + dm_pci_read_config8(dev, pos, &pos); + while (ttl--) { + if (pos < PCI_STD_HEADER_SIZEOF) + break; + pos &= ~3; + dm_pci_read_config16(dev, pos, &ent); + + id = ent & 0xff; + if (id == 0xff) + break; + if (id == cap) + return pos; + pos = (ent >> 8); + } + + return 0; +} + +int dm_pci_find_ext_capability(struct udevice *dev, int cap) +{ + u32 header; + int ttl; + int pos = PCI_CFG_SPACE_SIZE; + + /* minimum 8 bytes per capability */ + ttl = (PCI_CFG_SPACE_EXP_SIZE - PCI_CFG_SPACE_SIZE) / 8; + + dm_pci_read_config32(dev, pos, &header); + /* + * If we have no capabilities, this is indicated by cap ID, + * cap version and next pointer all being 0. + */ + if (header == 0) + return 0; + + while (ttl--) { + if (PCI_EXT_CAP_ID(header) == cap) + return pos; + + pos = PCI_EXT_CAP_NEXT(header); + if (pos < PCI_CFG_SPACE_SIZE) + break; + + dm_pci_read_config32(dev, pos, &header); + } + + return 0; +} + UCLASS_DRIVER(pci) = { .id = UCLASS_PCI, .name = "pci", diff --git a/include/pci.h b/include/pci.h index 83a40a5..938a839 100644 --- a/include/pci.h +++ b/include/pci.h @@ -17,6 +17,7 @@ * Under PCI, each device has 256 bytes of configuration address space, * of which the first 64 bytes are standardized as follows: */ +#define PCI_STD_HEADER_SIZEOF 64 #define PCI_VENDOR_ID 0x00 /* 16 bits */ #define PCI_DEVICE_ID 0x02 /* 16 bits */ #define PCI_COMMAND 0x04 /* 16 bits */ @@ -1311,6 +1312,51 @@ pci_addr_t dm_pci_phys_to_bus(struct udevice *dev, phys_addr_t addr, */ void *dm_pci_map_bar(struct udevice *dev, int bar, int flags); +/** + * dm_pci_find_capability() - find a capability + * + * Tell if a device supports a given PCI capability. Returns the + * address of the requested capability structure within the device's + * PCI configuration space or 0 in case the device does not support it. + * + * Possible values for @cap: + * + * %PCI_CAP_ID_MSI Message Signalled Interrupts + * %PCI_CAP_ID_PCIX PCI-X + * %PCI_CAP_ID_EXP PCI Express + * %PCI_CAP_ID_MSIX MSI-X + * + * See PCI_CAP_ID_xxx for the complete capability ID codes. + * + * @dev: PCI device to query + * @cap: capability code + * @return: capability address or 0 if not supported + */ +int dm_pci_find_capability(struct udevice *dev, int cap); + +/** + * dm_pci_find_ext_capability() - find an extended capability + * + * Tell if a device supports a given PCI express extended capability. + * Returns the address of the requested extended capability structure + * within the device's PCI configuration space or 0 in case the device + * does not support it. + * + * Possible values for @cap: + * + * %PCI_EXT_CAP_ID_ERR Advanced Error Reporting + * %PCI_EXT_CAP_ID_VC Virtual Channel + * %PCI_EXT_CAP_ID_DSN Device Serial Number + * %PCI_EXT_CAP_ID_PWR Power Budgeting + * + * See PCI_EXT_CAP_ID_xxx for the complete extended capability ID codes. + * + * @dev: PCI device to query + * @cap: extended capability code + * @return: extended capability address or 0 if not supported + */ +int dm_pci_find_ext_capability(struct udevice *dev, int cap); + #define dm_pci_virt_to_bus(dev, addr, flags) \ dm_pci_phys_to_bus(dev, (virt_to_phys(addr)), (flags)) #define dm_pci_bus_to_virt(dev, addr, flags, len, map_flags) \ From patchwork Sun Jul 29 13:37:12 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bin Meng X-Patchwork-Id: 950635 X-Patchwork-Delegate: sjg@chromium.org 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=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="hGkJe97r"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 41dkVX6JLcz9s0R for ; Sun, 29 Jul 2018 23:45:40 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 77763C21FDC; Sun, 29 Jul 2018 13:37:57 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 8933FC21FAB; Sun, 29 Jul 2018 13:34:16 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id A0F88C21F3A; Sun, 29 Jul 2018 13:32:52 +0000 (UTC) Received: from mail-pf1-f196.google.com (mail-pf1-f196.google.com [209.85.210.196]) by lists.denx.de (Postfix) with ESMTPS id 25E95C21F63 for ; Sun, 29 Jul 2018 13:32:49 +0000 (UTC) Received: by mail-pf1-f196.google.com with SMTP id e13-v6so3359868pff.7 for ; Sun, 29 Jul 2018 06:32:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=CjgjEgwyezRwAYCeVhRjJ1bZIBMW2mS+/njh1G26lXE=; b=hGkJe97r0MMiCwYzOym8W+pkqrTkOaZJFME8XfTgG8ny61AembnG4nL1P6l03Vd3Ru VdhTe2nmYirRf0YjCYTX0pkidHrx1WZ7q23wvtFOhtfRkQNOnUYz0Rz27IlV/1km64kp omJEBparfxtPTnvbhlYl9jbC73hAKe+xic16V5+A1qbmqWpdvGjTRo2r4m8nUQs6+wXY srjZzsn7bhiaGR0h+EHP6yphzzM3G/Hd7f1JIqfewMP2AOB0glVfjRGCg0humtHbnTGX lFHglrEyouNQIDa/ka0PJCYEZVN8KviGjxO4X1+nxmSgbFbJ0X/FO+K1KLcaeJEmM8/A XlVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=CjgjEgwyezRwAYCeVhRjJ1bZIBMW2mS+/njh1G26lXE=; b=lycJu2vDIgmy7M6dhgSqsPxqW9FMWbZJOqyeNU3K573LRDtJeEsuxt0h9yox0E+5Cz LDmqJtMsWibr0w4AIXlckt/KHjxvJo/0M+BpVxuhjuTa9PQXVOkVCB8CP73cmpNTOnPi 6/fqcOJ4dtMZ/zUhtNUqPJxdAieohdD4GQ7ETkpMbTaQPaE+6oeRdVMjkB4LwlnLYBnt oryINjab3x8+eZcP2cLC9VfVQUsRK77WgaB7qDPvRafz5Z9owgklZ/z2bl9D9fUtpF4A 6HSNVW4iNFYrAAI0Y/7Kyi6YvVDH4u4ju65kE2ym5AEgYNIMKkc9Tj4BlIDgHv3PfyLJ Kwxw== X-Gm-Message-State: AOUpUlELu1zXLEkY5ds+jALBeOtfHVWyvpq4NUUar2zfuEXvEQ1FMd2z Lnb3UpA6r+u5Ijc5WCIcDqNDovse X-Google-Smtp-Source: AAOMgpdVpExe3xjY04mmNyEwSCE1G1/dDQaag2jAFdbYa7pIA0DKsEsYgc4pnx9/FgCHjHQO0DFRbQ== X-Received: by 2002:a63:1844:: with SMTP id 4-v6mr13067419pgy.313.1532871167855; Sun, 29 Jul 2018 06:32:47 -0700 (PDT) Received: from ala-d2121-lx1.wrs.com (unknown-156-139.windriver.com. [147.11.156.139]) by smtp.gmail.com with ESMTPSA id h132-v6sm13438674pfc.100.2018.07.29.06.32.46 (version=TLS1_1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 29 Jul 2018 06:32:46 -0700 (PDT) From: Bin Meng To: Simon Glass , U-Boot Mailing List Date: Sun, 29 Jul 2018 06:37:12 -0700 Message-Id: <1532871432-30703-22-git-send-email-bmeng.cn@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> References: <1532871432-30703-1-git-send-email-bmeng.cn@gmail.com> Subject: [U-Boot] [PATCH v2 21/21] test: dm: pci: Add cases for finding PCI capability APIs X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" Add several PCI capability and extended capability ID registers in the swap_case driver, so that we can add test case for dm_pci_find_capability() and dm_pci_find_ext_capability(). Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- Changes in v2: None arch/sandbox/include/asm/test.h | 8 ++++++++ drivers/misc/swap_case.c | 21 +++++++++++++++++++++ test/dm/pci.c | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+) diff --git a/arch/sandbox/include/asm/test.h b/arch/sandbox/include/asm/test.h index 57aeca8..c8ae52b 100644 --- a/arch/sandbox/include/asm/test.h +++ b/arch/sandbox/include/asm/test.h @@ -16,6 +16,14 @@ #define SANDBOX_PCI_CLASS_CODE PCI_CLASS_CODE_COMM #define SANDBOX_PCI_CLASS_SUB_CODE PCI_CLASS_SUB_CODE_COMM_SERIAL +#define PCI_CAP_ID_PM_OFFSET 0x50 +#define PCI_CAP_ID_EXP_OFFSET 0x60 +#define PCI_CAP_ID_MSIX_OFFSET 0x70 + +#define PCI_EXT_CAP_ID_ERR_OFFSET 0x100 +#define PCI_EXT_CAP_ID_VC_OFFSET 0x200 +#define PCI_EXT_CAP_ID_DSN_OFFSET 0x300 + /* Useful for PCI_VDEVICE() macro */ #define PCI_VENDOR_ID_SANDBOX SANDBOX_PCI_VENDOR_ID #define SWAP_CASE_DRV_DATA 0x55aa diff --git a/drivers/misc/swap_case.c b/drivers/misc/swap_case.c index 790bb0c..bffb809 100644 --- a/drivers/misc/swap_case.c +++ b/drivers/misc/swap_case.c @@ -118,6 +118,27 @@ static int sandbox_swap_case_read_config(struct udevice *emul, uint offset, *valuep = result; break; } + case PCI_CAPABILITY_LIST: + *valuep = PCI_CAP_ID_PM_OFFSET; + break; + case PCI_CAP_ID_PM_OFFSET: + *valuep = (PCI_CAP_ID_EXP_OFFSET << 8) | PCI_CAP_ID_PM; + break; + case PCI_CAP_ID_EXP_OFFSET: + *valuep = (PCI_CAP_ID_MSIX_OFFSET << 8) | PCI_CAP_ID_EXP; + break; + case PCI_CAP_ID_MSIX_OFFSET: + *valuep = PCI_CAP_ID_MSIX; + break; + case PCI_EXT_CAP_ID_ERR_OFFSET: + *valuep = (PCI_EXT_CAP_ID_VC_OFFSET << 20) | PCI_EXT_CAP_ID_ERR; + break; + case PCI_EXT_CAP_ID_VC_OFFSET: + *valuep = (PCI_EXT_CAP_ID_DSN_OFFSET << 20) | PCI_EXT_CAP_ID_VC; + break; + case PCI_EXT_CAP_ID_DSN_OFFSET: + *valuep = PCI_EXT_CAP_ID_DSN; + break; } return 0; diff --git a/test/dm/pci.c b/test/dm/pci.c index e03f6ba..8699700 100644 --- a/test/dm/pci.c +++ b/test/dm/pci.c @@ -188,3 +188,35 @@ static int dm_test_pci_mixed(struct unit_test_state *uts) return 0; } DM_TEST(dm_test_pci_mixed, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT); + +/* Test looking up PCI capability and extended capability */ +static int dm_test_pci_cap(struct unit_test_state *uts) +{ + struct udevice *bus, *swap; + int cap; + + ut_assertok(uclass_get_device_by_seq(UCLASS_PCI, 0, &bus)); + ut_assertok(dm_pci_bus_find_bdf(PCI_BDF(0, 0x1f, 0), &swap)); + + /* look up PCI_CAP_ID_EXP */ + cap = dm_pci_find_capability(swap, PCI_CAP_ID_EXP); + ut_asserteq(PCI_CAP_ID_EXP_OFFSET, cap); + + /* look up PCI_CAP_ID_PCIX */ + cap = dm_pci_find_capability(swap, PCI_CAP_ID_PCIX); + ut_asserteq(0, cap); + + ut_assertok(uclass_get_device_by_seq(UCLASS_PCI, 1, &bus)); + ut_assertok(dm_pci_bus_find_bdf(PCI_BDF(1, 0x08, 0), &swap)); + + /* look up PCI_EXT_CAP_ID_DSN */ + cap = dm_pci_find_ext_capability(swap, PCI_EXT_CAP_ID_DSN); + ut_asserteq(PCI_EXT_CAP_ID_DSN_OFFSET, cap); + + /* look up PCI_EXT_CAP_ID_SRIOV */ + cap = dm_pci_find_ext_capability(swap, PCI_EXT_CAP_ID_SRIOV); + ut_asserteq(0, cap); + + return 0; +} +DM_TEST(dm_test_pci_cap, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);