From patchwork Wed Jul 29 20:24:58 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 501832 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 56EAD1402DE for ; Thu, 30 Jul 2015 06:32:48 +1000 (AEST) Received: from localhost ([::1]:36973 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZKY1u-0001Gq-Ip for incoming@patchwork.ozlabs.org; Wed, 29 Jul 2015 16:32:46 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55354) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZKXuW-0004qv-C5 for qemu-devel@nongnu.org; Wed, 29 Jul 2015 16:25:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZKXuR-0002it-8a for qemu-devel@nongnu.org; Wed, 29 Jul 2015 16:25:08 -0400 Received: from mail-bl2on0074.outbound.protection.outlook.com ([65.55.169.74]:49692 helo=na01-bl2-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZKXuR-0002io-56 for qemu-devel@nongnu.org; Wed, 29 Jul 2015 16:25:03 -0400 Received: from BL2FFO11FD016.protection.gbl (10.173.160.32) by BL2FFO11HUB035.protection.gbl (10.173.161.115) with Microsoft SMTP Server (TLS) id 15.1.231.11; Wed, 29 Jul 2015 20:25:01 +0000 Authentication-Results: spf=fail (sender IP is 149.199.60.96) smtp.mailfrom=xilinx.com; suse.de; dkim=none (message not signed) header.d=none; Received-SPF: Fail (protection.outlook.com: domain of xilinx.com does not designate 149.199.60.96 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.96; helo=xsj-tvapsmtpgw01; Received: from xsj-tvapsmtpgw01 (149.199.60.96) by BL2FFO11FD016.mail.protection.outlook.com (10.173.160.224) with Microsoft SMTP Server (TLS) id 15.1.231.11 via Frontend Transport; Wed, 29 Jul 2015 20:25:01 +0000 Received: from 172-16-1-203.xilinx.com ([172.16.1.203]:49701 helo=xsj-tvapsmtp02.xilinx.com) by xsj-tvapsmtpgw01 with esmtp (Exim 4.63) (envelope-from ) id 1ZKXuO-0003aF-Am; Wed, 29 Jul 2015 13:25:00 -0700 Received: from [127.0.0.1] (port=39116 helo=tsj-smtp-dlp1.xlnx.xilinx.com) by xsj-tvapsmtp02.xilinx.com with esmtp (Exim 4.63) (envelope-from ) id 1ZKXuO-0004Tx-4X; Wed, 29 Jul 2015 13:25:00 -0700 Received: from xsj-tvapsmtp02 (xsj-tvapsmtp02.xilinx.com [172.16.1.203]) by tsj-smtp-dlp1.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id t6TKKN8w010171; Wed, 29 Jul 2015 13:20:23 -0700 Received: from [172.19.5.153] (port=49430 helo=xsjrdevl46.xilinx.com) by xsj-tvapsmtp02 with esmtp (Exim 4.63) (envelope-from ) id 1ZKXuM-0004Tu-PM; Wed, 29 Jul 2015 13:24:58 -0700 From: Alistair Francis To: Date: Wed, 29 Jul 2015 13:24:58 -0700 Message-ID: X-Mailer: git-send-email 2.1.1 In-Reply-To: References: X-RCIS-Action: ALLOW X-TM-AS-MML: disable X-TM-AS-Product-Ver: IMSS-7.1.0.1679-8.0.0.1202-21710.005 X-TM-AS-Result: No--1.302-7.0-31-10 X-imss-scan-details: No--1.302-7.0-31-10 X-TMASE-MatchedRID: I4WY2Dgn0Ph37FC663+5pxAN/SFMteFxmoKXVHfiMM/JYIv7y0tu9uO/ ytE9sHcwTu39anhUL2LqPiG7FulJ0xLmJd2F/yFuyeVujmXuYYVoo6Z+9srk3psoi2XrUn/J8m+ hzBStant2CRFHw6Iz/ydET58jp62S1js+ujzFmqB+p6Dm1v/DeUhijJLvQ5up9j1EtHhT2ufgW2 CgXU1g3E0IRVfT2m3vGEcsynmNYltPLhWRY7t2tUN2g9ScsryLS7+RMq/2CK6rA4c7UV2fQpvi2 PQO/FFQiz2ujrPVx9yEIU1NtMkm0Q== X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD016; 1:ZQ2Hi1a4Ucc2K+cm7oVCINwt/Yinefi03fMii9yXqrB++IT32GjbkjuSv/DbQjDI6wKxZK7V7cAKPn5XtGKIPoP97WZpb/GoEa/TX73zch8DbaWUqPNam4M8SxaOufb8ruQAeUJC5JUwfPVNVEGlBi1/6hE4iIkP01hZKBixQDroLzkcSLdE1mmO11sl2zP6eVnNGcn9ejN/VRNOccVeh0sLlASICGHMbGdoGzyUcNpF9tVs2vd+e6f1PAiSvDEQw3lCodXDGcNOOCOiSHdbEfLyull0Eujjq/vUMbBzLhhdNsDy65CCN+7jDtpN5bav X-Forefront-Antispam-Report: CIP:149.199.60.96; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(2980300002)(339900001)(189002)(199003)(106466001)(77096005)(76176999)(6806004)(36756003)(50226001)(85426001)(19580395003)(47776003)(50986999)(19580405001)(5003940100001)(50466002)(33646002)(2351001)(5003600100002)(105606002)(86362001)(77156002)(2950100001)(62966003)(46102003)(71366001)(87936001)(189998001)(5001960100002)(48376002)(110136002)(64026002)(92566002)(118296001)(229853001)(107986001); DIR:OUT; SFP:1101; SCL:1; SRVR:BL2FFO11HUB035; H:xsj-tvapsmtpgw01; FPR:; SPF:Fail; MLV:nov; MX:1; A:1; PTR:unknown-60-96.xilinx.com; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11HUB035; 2:fCcVdbCQWzdhoxYNT+fVvKiHzcuZX5i3ubno8Xk2r62d6gbh4HC/L0Yz1JAYPKixuUoyo0nbOgkFWyNk54szXeHL2wwjESAFNB5BM3FOHLYwcZQhEjU7TBvTMqANm9Igy+7etxprQMqqLfNxFdl6cOgxTY5Hneqw7AlN2kmmKdY=; 3:tlgVBtRlNzycbj4WMrhqhIZP+NZGvo5SRzeACvnY+vk95kIg/W6+rWW2h4Jq5I8xsxgh2OE1J/fsi55DWKlCuY9Y6pLfYZrzUbtxqV0Jc8CBprD99j4UJXaLDwDrKBGNOG41JRj9C6Gurv4FXFGrJBFc2Hks3P21Q8Q8CjeJmzcVHVJexevFRdBqg6EOrUtgG3gkWR9qAggb+NhAKp7yA6n0nHgrvLAk6zESzRqd+4I=; 25:aZ8YR+OPRS+KsTdfmuIIEeRsdisYOQILQ8nakwemYdkaJV6IPvdNpoVHniM5OvzmYk0y4eyC/P8Un1OY76mX+eOjiHeWyMuehAJdkTNnfLG2TtNKHmzsEi2n3NOcWSoiZqb//lcUpADU99V6dDPkSWlWNuqXvZMVls8jiNyemUUep4g7XgOlwXbDOvUg/EYox3HcbtGLdRLy9FrqNL/IOEjr1mFdXJf+1OVclbmAlTa58ilNLl79/pk5LeZItgk6hDotyZcS2fkiLclJan5wbA== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BL2FFO11HUB035; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11HUB035; 20:G2+AHoZ5cng76iZBZwtz25A//bZPL95Vuq/7F6qclaD1ULSomt9PKHBnZrFm/3BbS0dtLFp43c+el4O2Q8BYlYXsA4gwvTKD9rIBmd0l46B/oI9gMV2jeESaBrctf4lCe+rCekyVa5vADgOf81Son6m+BK5Yeg0sNS1E5hZMhXMHwejJgMkkMhym3PpK2zcRpnEnZO0Jb6Q7WEWUAar9/Ht4RZRa5TL2tolOWXuomQlvUkotcClD4TwOGYT+HxGqlurxSN3QV893yTzmc+IMaKfjpHv7oaFSVjR/pji45484Ji41GQLRuhC6yzfOpFEfVWMnHzOeEYyv2bofXRwOawf9aSNaePC7TraEnj6QzEvLxDN88z3Bya4aKIjeNUqYFNzaSJsJQQR3huyuC2WsrA6cTzyaSC49JRkQbgmeT9HA71aWnTow/hjKH6HqqSGUFTHN7jZhNJIA8OVhdKOTIQ+3H8s1mrOGvDzeKHf1NmpqWgZ/pwpOjziW+3qWrL47; 4:g7CEhttU/q7ribGTJ5bBg+48IkWl3ZRVnkC9fZKL2eaDj0x3oPVsk64CkxlrwuaDqx1iE6ixb4gEDTN47S1QFiKtmnvCrZv1h49isR4LAzQVPg/mD/iWrHkSCFUgT6Eua868/Tygru1YChBNv155zlNKmajvvqjYjKIM+fRiF+n6uM6d/pfXT2u6CZ5YGYhL/6mSXVK7Lsklkjw6hxvafC+Bct5Zp9aptr/bS2qEOfEKjEoIYngcPOLFYV8UqQ4FLRmS3lGGapqoN0YVX86pBrgxQJEbaQirdXLwLMfcgWo= BL2FFO11HUB035: X-MS-Exchange-Organization-RulesExecuted X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:BL2FFO11HUB035; BCL:0; PCL:0; RULEID:; SRVR:BL2FFO11HUB035; X-Forefront-PRVS: 0652EA5565 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BL2FFO11HUB035; 23:FEPdZC7qwz8xA3vNJu6o290YQEXthq9ciuB05Q+A?= =?us-ascii?Q?InBRGsp9LQKxUXqFmnDCptNB/VtG8PoBoaVcHLTu+BoJOyCYV2QKqcMwYDE0?= =?us-ascii?Q?iWo8FUJVikYMS4iUxeKy/BYo89CxCw4peBu/xeDc3+fCkysgB3QjAjkZIZWq?= =?us-ascii?Q?P3YGWfzp8N5cs7Ar3WBqqltHHuKXGIvIDlqqtBS5q5LxUbJO1BQaBe/qbs/3?= =?us-ascii?Q?sgPQTRFYAQZdV9qzxxSESQxZWihDnsP0XUqArWBnCLtic/rLnI1Jv8iQEGE9?= =?us-ascii?Q?HUZBpM90u99+nNl/tCdiGlhF9erqNeZqSwxOAiZCTU+dpIybkeVxUjO6l479?= =?us-ascii?Q?Oh92y0IvUsqn+lvqP/75QdyIZU2JmRewT7o87ffxjcQBOJJCEbtGtuu7dKUC?= =?us-ascii?Q?bufelLPQ949jKewp27Y9p2tN4dcv6FXjq2zSGwrZkK6D/RoUGKZhivFmxx9+?= =?us-ascii?Q?1AqploKPYI5kRycTfWJT1WCdVetf7kos8J4g37abxKcCl3vp+qjRIlVzobfL?= =?us-ascii?Q?7wwyAQBHramqYziX+G0nOnyrvglicfxJMbRNga2NgVORiLs2hS6GzS4K6K0f?= =?us-ascii?Q?jKMrLuA6Z2AC7vLdhyrNq5RWTpgfOnPuPCPw4uCHoARORKoZn0NXyw/lgzAr?= =?us-ascii?Q?B57Lb4r9iNKJ17H6zKDPDUSjnHBdbp0ZUXTcpR7SBIZGlvLiMje1fNP0yYXt?= =?us-ascii?Q?Pw4jCjf0r0+8hK2hlVOIw/Ra71tFHQObLja50gdtamhFOF+eNyfSrjWeY0dy?= =?us-ascii?Q?cDSajZjJV5VqjdGnroKn/djJsFXKpRBM/YEnnAkqD0SzYlNhF68AgOXOf99n?= =?us-ascii?Q?kzZ5CxmsrvnquGQ9cNYTJbS9B77/m4aibJCl3i8KM+7LvYnc1K5zYi+Fghqz?= =?us-ascii?Q?ad+Bq9r9tEIHprxZ/yvjS3+6HuGBcT43WeU8DfYzk7LP+Wi7qjrpsIM4mxNY?= =?us-ascii?Q?chdwHHZ4Z69O3S6L8zDojO1ycOKAw/jHUkT+lxKDj5cYYxaxMqyO7qT/1CsY?= =?us-ascii?Q?/SYXlj2hJd/VIX0sh1CJs9+zByN6Iyl11B6hsaAMvv9oQw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11HUB035; 5:Esf/fOuRHWAk6PnV9Oeo7heTSo5DSfNEtjSWN+FmGGfaYzjKUDHT/dgLiNw8RNt1c5ayVKF5ANqwXwRwOaA3FDE7I/lQsNnU1qLD0oYenC1Qmbd0R67QcGShBTqNEl3pF5KnDkWsUiP4MNwWWlpa8w==; 24:VD6j/sm7jTfxnBqJCoHMs1u3yc27Ly66+pW0JWaOx0I8Bs7nHMA+ZGAj4K3/K0o7+96zQrZlvgwxx/DJGELG5PrYwHur0IZ+lOSRrWBd7/0= X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jul 2015 20:25:01.1952 (UTC) X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c; Ip=[149.199.60.96]; Helo=[xsj-tvapsmtpgw01] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2FFO11HUB035 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 X-Received-From: 65.55.169.74 Cc: edgar.iglesias@xilinx.com, peter.maydell@linaro.org, alistair.francis@xilinx.com, crosthwaitepeter@gmail.com, edgar.iglesias@gmail.com, afaerber@suse.de Subject: [Qemu-devel] [PATCH v1 10/15] qdev: Define qdev_get_gpio_out X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Peter Crosthwaite An API similar to the existing qdev_get_gpio_in() except gets outputs. Useful for: 1: Implementing lightweight devices that don't want to keep pointers to their own GPIOs. They can get their GPIO pointers at runtime from QOM using this API. 2: testing or debugging code which may wish to override the hardware generated value of of a GPIO with a user specified value (E.G. interrupt injection). Signed-off-by: Peter Crosthwaite --- hw/core/qdev.c | 12 ++++++++++++ include/hw/qdev-core.h | 2 ++ 2 files changed, 14 insertions(+), 0 deletions(-) diff --git a/hw/core/qdev.c b/hw/core/qdev.c index b2f404a..3594151 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -476,6 +476,18 @@ qemu_irq qdev_get_gpio_in(DeviceState *dev, int n) return qdev_get_gpio_in_named(dev, NULL, n); } +qemu_irq qdev_get_gpio_out_named(DeviceState *dev, const char *name, int n) +{ + char *propname = g_strdup_printf("%s[%d]", + name ? name : "unnamed-gpio-out", n); + return (qemu_irq)object_property_get_link(OBJECT(dev), propname, NULL); +} + +qemu_irq qdev_get_gpio_out(DeviceState *dev, int n) +{ + return qdev_get_gpio_out_named(dev, NULL, n); +} + void qdev_connect_gpio_out_named(DeviceState *dev, const char *name, int n, qemu_irq pin) { diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h index 038b54d..0a21d57 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -274,6 +274,8 @@ bool qdev_machine_modified(void); qemu_irq qdev_get_gpio_in(DeviceState *dev, int n); qemu_irq qdev_get_gpio_in_named(DeviceState *dev, const char *name, int n); +qemu_irq qdev_get_gpio_out(DeviceState *dev, int n); +qemu_irq qdev_get_gpio_out_named(DeviceState *dev, const char *name, int n); void qdev_connect_gpio_out(DeviceState *dev, int n, qemu_irq pin); void qdev_connect_gpio_out_named(DeviceState *dev, const char *name, int n,