From patchwork Wed Oct 28 17:32:56 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 537506 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 25EDA141351 for ; Thu, 29 Oct 2015 04:39:18 +1100 (AEDT) Received: from localhost ([::1]:39770 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZrUgu-0005tB-7U for incoming@patchwork.ozlabs.org; Wed, 28 Oct 2015 13:39:16 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55107) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZrUcd-0000co-K9 for qemu-devel@nongnu.org; Wed, 28 Oct 2015 13:34:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZrUca-0004rb-Di for qemu-devel@nongnu.org; Wed, 28 Oct 2015 13:34:51 -0400 Received: from mail-bl2on0059.outbound.protection.outlook.com ([65.55.169.59]:34336 helo=na01-bl2-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZrUca-0004rX-9W for qemu-devel@nongnu.org; Wed, 28 Oct 2015 13:34:48 -0400 Received: from BL2FFO11FD035.protection.gbl (10.173.160.31) by BL2FFO11HUB005.protection.gbl (10.173.160.225) with Microsoft SMTP Server (TLS) id 15.1.306.13; Wed, 28 Oct 2015 17:34:46 +0000 Authentication-Results: spf=fail (sender IP is 149.199.60.96) smtp.mailfrom=xilinx.com; gmail.com; dkim=none (message not signed) header.d=none; gmail.com; dmarc=none action=none header.from=xilinx.com; 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 BL2FFO11FD035.mail.protection.outlook.com (10.173.161.131) with Microsoft SMTP Server (TLS) id 15.1.306.13 via Frontend Transport; Wed, 28 Oct 2015 17:34:46 +0000 Received: from 172-16-1-203.xilinx.com ([172.16.1.203]:33559 helo=xsj-tvapsmtp02.xilinx.com) by xsj-tvapsmtpgw01 with esmtp (Exim 4.63) (envelope-from ) id 1ZrUcX-0004Bp-M8; Wed, 28 Oct 2015 10:34:45 -0700 Received: from [127.0.0.1] (port=40282 helo=tsj-smtp-dlp1.xlnx.xilinx.com) by xsj-tvapsmtp02.xilinx.com with esmtp (Exim 4.63) (envelope-from ) id 1ZrUcX-000795-HK; Wed, 28 Oct 2015 10:34:45 -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 t9SHTe5v014977; Wed, 28 Oct 2015 10:29:40 -0700 Received: from [172.19.74.182] (port=50922 helo=xsjalistai50.xlnx.xilinx.com) by xsj-tvapsmtp02 with esmtp (Exim 4.63) (envelope-from ) id 1ZrUcW-000792-R6; Wed, 28 Oct 2015 10:34:44 -0700 From: Alistair Francis To: , Date: Wed, 28 Oct 2015 10:32:56 -0700 Message-ID: X-Mailer: git-send-email 2.5.0 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-21906.005 X-TM-AS-Result: No--6.569-7.0-31-10 X-imss-scan-details: No--6.569-7.0-31-10 X-TMASE-MatchedRID: FWqvXJDrORYoyDzUYnXTtvGBihrnFyBPcEPsqUQh9u7uc7XfuTYENvlY oV6p/cSxhVmF9kz2wxKLf3UKtzfwxGe7ksA1eo3dsyw+ZJnFumR+tO36GYDlsoeUNQK7Qj5c3KI kXhjwDltL4tgsliQIx2cWySCv9iUUeqv65bNPmESeAiCmPx4NwBnUJ0Ek6yhjxEHRux+uk8h+IC quNi0WJF1jZfXQxdnX9z4ZG6W0hMk3q9r0sizHPqVygOjR+vJcftwZ3X11IV0= X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD035; 1:w3XGFBvTUBASAv90IpyjUbm/JqQ79oKWtNUV7I24lnKZpmnnD5JN4ytlzJScmX6yp1qCkExYHVT/4ACWnYL7Q4ZH37W1PeJw+V/xw1DqDSi+V/SuFmLMkV8DF5mSKudPI9lH/u4hmO0DXv8n8aJgwmFo3o+YERySF6QdiQZgd+WpKcZiBuM08MEv6+oFGFjXGEaeRX68Jy0rFuoJyfXjxwsISr67+WnsSRUVRJmrq8/Y0XAhM165AcQgKGNN2GbB/60djJ0xVZ7bt2LxU4fGk2RETrvj2yRNZd9aiezMu++I2U8vwaSGE+8eazJpcCyg9pXQQqPpRiIEMOdLcBtG0zjvFRqbb1uYe9G/5kQHly4tQnjOipgDjn8rphkNXhVvUMuTJPD6AtWoV6EUrGHjiw== X-Forefront-Antispam-Report: CIP:149.199.60.96; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(5007970100001)(48376002)(47776003)(71366001)(85426001)(87936001)(118296001)(50466002)(36756003)(50986999)(64026002)(6806005)(11100500001)(5003600100002)(19580405001)(33646002)(50226001)(5003940100001)(76176999)(81156007)(105606002)(229853001)(19580395003)(92566002)(5008740100001)(77096005)(2950100001)(5001960100002)(5001770100001)(86362001)(189998001)(106466001)(107986001); DIR:OUT; SFP:1101; SCL:1; SRVR:BL2FFO11HUB005; H:xsj-tvapsmtpgw01; FPR:; SPF:Fail; PTR:unknown-60-96.xilinx.com; MX:1; A:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11HUB005; 2:fQtAwPnenmY/77WCRNkjX7i1yc4Ivf2auRt1Aj3qDqKJxUPPvz8cGEaV7zDklazGTE/Fxv1YTRvUgcikltC/AD6lMkx2lKkWKa2h49+7UGAx0gx/wxehWQkWX64zq0JIfAykBBdXFrenyjm74Obp5WrQk6DRyExqSWFHdvEkOfM=; 3:e0lgA/9w8QLDwHbX6CEwY5oUwy2YUQwjTvwSG582TRm4Zg2Kh5zpIWgsq4ApOSaNSx9Kqv3470YwhcBjH+pSTXh0ucvkqiRCfhw6i48UcUPGIUKu3Zd7uPdbWIOCAXup9fjqDf5ekX/74zhZKWZOiDPIE3PmesgFS/ne5FZhHlq3Uen3M6CIaw2sr5/H3AAZdbQbw7TXBv8qXKb+KVEpQK4iC66PWzS55dYag44TD3o=; 25:6DXqMwd22wSNteNeFtUh0rEaGZYpnPJxjQWaqve96jyKdEm1zeuxxrqpMvZscFGhSzOpLBRcB3ziQI46ZsHGCyqKYkuMbKxytaSQzJfdRfiIPS712AUdMooUe6SPlLb1+3CQCAacbE1AMZ7fxNLJZS2w/uCW2Lphjglv5DOVBK4LG1kT/ygKeVNsf1N+nWDqTjr2FLcIcidlVUn0r1/KAf1kq7t8u+ssUq9ozYylcwTqtT+q9XSKup7ofLZO8cto X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BL2FFO11HUB005; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11HUB005; 20:uMtIOtdnjUh5VriYXIdLuzbBq3sM7nuOmUrnxVOdRz/Y3+pR5F8KLvT5jzxK037ajXCo800OAmWc5poSN2+3wSgLK6nCZtKFZcvTbTPdsOCG5H+6vTnpurgdu6V8tXGsAW5cRo9nrOmOYWwBIAVvoBpuhBUHIetJoYyssVtViGwCB554NnY/SkxCPnqp3lxLwtZeVs9BhS3c7RkAL+8AmeLpnWjL8VQ/5mb+CgSYYuOWmtKG99Je8/JVzJePvYrNUEMNw2Rnn6Z95a1ckrFZVm4ASZLlROND1U7jT1uS0gj63ivgT/2vhG8vIX4ylSkgCUGqp9PIOLj/cWXzmP8S2FON1sS/Efu9FWfFImLyLJa5F9XuiJhwKxJ5LOl9Jh76hEIUxu20dZF4nzUF3QLbH2Upz4fmLCyMpUaxWx8hJOdA78zs3Jg3pPZuR/xTLsQCqkVCIVk65O121kPsDyOIRHr1fnsiq5PiKWatPfryEJUQVMuJxbwCAXCdrcx8aqTc; 4:xIYa69Dvd2Y4neG6MVwjLSGx4GoSw73iksVdAwM2e6Eq2YH307sYRzvnBI9SDBwUcc7Nt1e2b5Zyhuw1Bhke88KHv/ZvZwkIi9mswt3LwNIqFASGy2zrtobwxgrLYO2eNuAC/chRkZYEGEDWWNHTxRz0fRQ7qN2GpIus36hQbC9EjME/80cd0pFY6lWvupoRyLmDRNKKEK+rtOXRxa//LBxkSNXb2eErcNwDC58CrUbWoPEEu2Lv3ycq9bYEa857pNLcXJmwthKvzyDL1fcw2iJt9xSsD4XJbiiS3i+0cZrrs0HN4QB268j/FkkX3Sh4ozlgG7E83wO7Rp1i8P5S4rZ83MVl8+0hPwR0bYsr63ep4GxSIaedBHkPbBgMY3wIyhPFIvxRCFCHSiCnF8WABQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192813158149592); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(8121501046)(520078)(3002001)(10201501046)(102215026); SRVR:BL2FFO11HUB005; BCL:0; PCL:0; RULEID:; SRVR:BL2FFO11HUB005; X-Forefront-PRVS: 0743E8D0A6 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BL2FFO11HUB005; 23:WqnjTchUIDLv8ABdDks3s/fuiZDQXrqO5Lj1nQYt?= =?us-ascii?Q?XY2vkAOf3ITCNqfFBhxfE77uOISYbnfB/9xQ8l+8icWLOvKbwBaY/+0ItOk1?= =?us-ascii?Q?A2ze2Jnmh3RONpWi8dSJlWmGSZs2KKuVj/85OvPDtbkoagKntJNVz4NWBJHE?= =?us-ascii?Q?c5gLqZ1IXgG4ZW+cfGv42p3Fj2xg9VEkKaBDiOIXzUGrwgkfJl+aX3OlbjDo?= =?us-ascii?Q?JFj2Qy6fq4LSfdVRtFMBttctezcN9xO3eRbgAaVFv/fxI9c8ccWkNh0s8Nqu?= =?us-ascii?Q?dQT2tf+1/wOAenw0J9Q8l4sAAAQSqt3OZYZZW7hi6tXkQIMuTkf8Z6c7hQe/?= =?us-ascii?Q?9PoNXBE9BjQscgB80iHQIaI0gcmwjN5ReWZ+cp2FZpIrfsOKPuGBdVbauwvS?= =?us-ascii?Q?hLjBxjUVjJMK+1m29ZHsp2IiabDVmcgxYPfjkYmloQtKxP5PU8lgx2NswZ4j?= =?us-ascii?Q?hq/X9gjsTyIdLb+UlWn/TI14E+GMnE077en2ZWMGVD7HhZKAM8jL38WwZQNX?= =?us-ascii?Q?iQ5cRpukZlGwB+0AmU7Gn3oOwrx4KI7+gpkQotLwFKGyEskCDImvY2b+IXmU?= =?us-ascii?Q?oHF4HiRJQ2LJ51veAfpcUuJ8cBOCBHHNnnFL4RNPkBP7ah+qfgRb8UuMTJMj?= =?us-ascii?Q?+sdnfgxAr3S60aQmKHe2Re9kWNzfjyoP/8Mp9mgm7YW5Sznpg5Kus1jDX55T?= =?us-ascii?Q?N6tgUUPgpsGTcaizCJ3XJh8y8Jw8edxz2Yfy/sH4wCqiYVRkVOf124APfMlD?= =?us-ascii?Q?7ronhozyjtMmjYLVWlGwOH8r1xIMuSV8cUYLp12f8hDPRteHpEslnKtBFOlO?= =?us-ascii?Q?KAQSLRYaVXPZ7rL/kRC3o00tIx45wGkajuFMI05p3Z+MWtjIC1nfob0ON7p9?= =?us-ascii?Q?RHpfC3dB5aQY3HzjmLYTRwPMFJ0RcSIIH8KHJA6sadxaG4/yHxq+HU+MlnTb?= =?us-ascii?Q?PyZfZABBY/Hv5xJuHuPj6cSOj0hp7Uu4cR7GWau5MntufPrRqL44WqydJQhM?= =?us-ascii?Q?2sAhXgEzEhC37derCtlAzJCJMulbBayBnLjB7uWzimQKKL7lfHVcELcZG0gb?= =?us-ascii?Q?cuK+Z/aKfc53yp4GuxapIrAIuGGp1Ik/bQQVjZ8EU7aEgtG1vg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11HUB005; 5:E95temCxLeDus7J25Mu0/wpLzFnlH3jXjrN53XsFaibna3eyflyDPXuGETPej6H4mx3ivKmCZeAr2qysBzOGK+/UBLpTFzA07ioifV5zd40GXBzzvq6cMGkh549C2CzNr9kYU02qVwJ2EC/C8n3n0g==; 24:EtCwZ4wiUJ+5Fq50gYDQGSbqtCV+J+42ynrxEb1EhDlMduE90zFiG+9ViEUEXsVRPa4EonWfEnSzEfDT7hcvGdXKY9igk+zqfOa9pCZzQEs= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2015 17:34:46.5008 (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: BL2FFO11HUB005 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (barebone) [generic] [fuzzy] X-Received-From: 65.55.169.59 Cc: edgar.iglesias@xilinx.com, peter.maydell@linaro.org, edgar.iglesias@gmail.com, alistair.francis@xilinx.com Subject: [Qemu-devel] [PATCH v3 4/5] xlnx-zynqmp: Connect the SPI devices 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 Connect the Xilinx SPI device to the ZynqMP model. Signed-off-by: Alistair Francis --- V3: - Expose the SPI Bus as part of the SoC device V2: - Don't connect the SPI flash to the SoC hw/arm/xlnx-zynqmp.c | 37 +++++++++++++++++++++++++++++++++++++ include/hw/arm/xlnx-zynqmp.h | 4 ++++ 2 files changed, 41 insertions(+) diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c index b36ca3d..5671d7a 100644 --- a/hw/arm/xlnx-zynqmp.c +++ b/hw/arm/xlnx-zynqmp.c @@ -48,6 +48,14 @@ static const int uart_intr[XLNX_ZYNQMP_NUM_UARTS] = { 21, 22, }; +static const uint64_t spi_addr[XLNX_ZYNQMP_NUM_SPIS] = { + 0xFF040000, 0xFF050000, +}; + +static const int spi_intr[XLNX_ZYNQMP_NUM_SPIS] = { + 19, 20, +}; + typedef struct XlnxZynqMPGICRegion { int region_index; uint32_t address; @@ -97,6 +105,12 @@ static void xlnx_zynqmp_init(Object *obj) object_initialize(&s->sata, sizeof(s->sata), TYPE_SYSBUS_AHCI); qdev_set_parent_bus(DEVICE(&s->sata), sysbus_get_default()); + + for (i = 0; i < XLNX_ZYNQMP_NUM_SPIS; i++) { + object_initialize(&s->spi[i], sizeof(s->spi[i]), + TYPE_XILINX_SPIPS); + qdev_set_parent_bus(DEVICE(&s->spi[i]), sysbus_get_default()); + } } static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) @@ -258,6 +272,29 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp) sysbus_mmio_map(SYS_BUS_DEVICE(&s->sata), 0, SATA_ADDR); sysbus_connect_irq(SYS_BUS_DEVICE(&s->sata), 0, gic_spi[SATA_INTR]); + + for (i = 0; i < XLNX_ZYNQMP_NUM_SPIS; i++) { + BusState *spi_bus; + char bus_name[6]; + + object_property_set_int(OBJECT(&s->spi[i]), XLNX_ZYNQMP_NUM_SPIS, + "num-busses", &error_abort); + object_property_set_bool(OBJECT(&s->spi[i]), true, "realized", &err); + if (err) { + error_propagate(errp, err); + return; + } + + sysbus_mmio_map(SYS_BUS_DEVICE(&s->spi[i]), 0, spi_addr[i]); + sysbus_connect_irq(SYS_BUS_DEVICE(&s->spi[i]), 0, + gic_spi[spi_intr[i]]); + + snprintf(bus_name, 6, "spi%d", i); + spi_bus = qdev_get_child_bus(DEVICE(&s->spi), bus_name); + + /* Add the SPI buses to the SoC child bus */ + QLIST_INSERT_HEAD(&dev->child_bus, spi_bus, sibling); + } } static Property xlnx_zynqmp_props[] = { diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h index 4005a99..6d1d2a9 100644 --- a/include/hw/arm/xlnx-zynqmp.h +++ b/include/hw/arm/xlnx-zynqmp.h @@ -24,6 +24,7 @@ #include "hw/char/cadence_uart.h" #include "hw/ide/pci.h" #include "hw/ide/ahci.h" +#include "hw/ssi/xilinx_spips.h" #define TYPE_XLNX_ZYNQMP "xlnx,zynqmp" #define XLNX_ZYNQMP(obj) OBJECT_CHECK(XlnxZynqMPState, (obj), \ @@ -33,6 +34,8 @@ #define XLNX_ZYNQMP_NUM_RPU_CPUS 2 #define XLNX_ZYNQMP_NUM_GEMS 4 #define XLNX_ZYNQMP_NUM_UARTS 2 +#define XLNX_ZYNQMP_NUM_SPIS 2 +#define XLNX_ZYNQMP_NUM_SPI_FLASHES 4 #define XLNX_ZYNQMP_NUM_OCM_BANKS 4 #define XLNX_ZYNQMP_OCM_RAM_0_ADDRESS 0xFFFC0000 @@ -63,6 +66,7 @@ typedef struct XlnxZynqMPState { CadenceGEMState gem[XLNX_ZYNQMP_NUM_GEMS]; CadenceUARTState uart[XLNX_ZYNQMP_NUM_UARTS]; SysbusAHCIState sata; + XilinxSPIPS spi[XLNX_ZYNQMP_NUM_SPIS]; char *boot_cpu; ARMCPU *boot_cpu_ptr;