From patchwork Wed Oct 28 17:32:53 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 537504 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 2832C140D24 for ; Thu, 29 Oct 2015 04:37:19 +1100 (AEDT) Received: from localhost ([::1]:39759 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZrUey-0003lC-6i for incoming@patchwork.ozlabs.org; Wed, 28 Oct 2015 13:37:16 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55083) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZrUcb-0000Yn-2I for qemu-devel@nongnu.org; Wed, 28 Oct 2015 13:34:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZrUcX-0004rB-Px for qemu-devel@nongnu.org; Wed, 28 Oct 2015 13:34:48 -0400 Received: from mail-bn1on0086.outbound.protection.outlook.com ([157.56.110.86]:43712 helo=na01-bn1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZrUcX-0004r7-LK for qemu-devel@nongnu.org; Wed, 28 Oct 2015 13:34:45 -0400 Received: from BN1AFFO11FD026.protection.gbl (10.58.52.32) by BN1AFFO11HUB014.protection.gbl (10.58.52.124) with Microsoft SMTP Server (TLS) id 15.1.306.13; Wed, 28 Oct 2015 17:34:44 +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 BN1AFFO11FD026.mail.protection.outlook.com (10.58.52.86) with Microsoft SMTP Server (TLS) id 15.1.306.13 via Frontend Transport; Wed, 28 Oct 2015 17:34:44 +0000 Received: from 172-16-1-203.xilinx.com ([172.16.1.203]:33553 helo=xsj-tvapsmtp02.xilinx.com) by xsj-tvapsmtpgw01 with esmtp (Exim 4.63) (envelope-from ) id 1ZrUcV-0004Bm-7y; Wed, 28 Oct 2015 10:34:43 -0700 Received: from [127.0.0.1] (port=40276 helo=tsj-smtp-dlp1.xlnx.xilinx.com) by xsj-tvapsmtp02.xilinx.com with esmtp (Exim 4.63) (envelope-from ) id 1ZrUcV-00078y-4P; Wed, 28 Oct 2015 10:34:43 -0700 Received: from xsj-tvapsmtp02 (smtptest.xilinx.com [172.16.1.203]) by tsj-smtp-dlp1.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id t9SHTcih014973; Wed, 28 Oct 2015 10:29:38 -0700 Received: from [172.19.74.182] (port=50920 helo=xsjalistai50.xlnx.xilinx.com) by xsj-tvapsmtp02 with esmtp (Exim 4.63) (envelope-from ) id 1ZrUcU-00078v-EK; Wed, 28 Oct 2015 10:34:42 -0700 From: Alistair Francis To: , Date: Wed, 28 Oct 2015 10:32:53 -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--7.825-7.0-31-10 X-imss-scan-details: No--7.825-7.0-31-10 X-TMASE-MatchedRID: 8GzIiaPJVHzWv4yGaGcihcg6fo0rxLVrJnRXy0H5W63vSbc8qoHu0b6p xbTOjavy3DNIlV575ZoZCcIYrDOVgMP8cHqjv+XYR/j040fRFpIEa8g1x8eqF6MLUT/MIQivlLL 7sycqCUaq4xFUReVAU8oGdBYbwPEfi2GqrvgLkWpsIyeExXlNbmEF8bGZ0cKCbcPp/oilssitmH tlBrdfRula5tQsfZruTqcgx+NG01QGtTV246rrNKt9n66zJ4RIuoYFb0nRiqOJjH+SX3zmCGLpI IQT+xImo/xLDZvTILvnRlLHvGSm59Su/5O3GDgVv7SQ+++TWuVQCOsAlaxN7x6njTSt2k4Lpj95 Lq49UP4+fsS4fhCOk1+f0TcVm5u2dBfSkQin4OEqptFPEIjUdItKGQsT1elSFGz5OM43+w5j75+ mJUaY2gTQ09XqGa/yvlnZ1DvD9GMRXrSqR8jJuVaOpp/sV5nVoddeo3DnwAteEUQ0GM99tKPFjJ EFr+olwXCBO/GKkVqOhzOa6g8KrbtzratH5LAMCDhch7qEmgMMeA1Tm0OgCarQ+l2oGvyUY95Xn em2iNZDDKa3G4nrLQ== X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD026; 1:TgDheg2hSAMJdhFgKzJDjpaOPP1hxP54/sMf00sKANSC9A3+IiWx0djWK+FTf2eUU1moxWZzC2Pq4Pimc7Fn3DI6/udeoR2BUJc53yAZF0o+2LvNYLusQrORfu1VGVkMEGTbm5IKpxxJyFQQT7GIHDhFBTA4G5dqtT/JLJ/k2hfoTk+E41xro8JakijiG0JpAHchvz61OpK3M+31JlMEGIwS+dExGeraR4+yJcIs8ucwVior6R6OwDwcBSzDaxyMblHFqvzhnbZ4eS79mpdkLDSmaGHJn7aWy414v8BcvmgCJyV85Nh5Xg4XAd/uH023xnHLkx+vpC88qNXeswUFrCUnTLLaWkBfRjCLEoMhKoL53LQYnigRV9Hu4Eiit7YjK4Chy4GJ45wwqb8qxMg5SQ== X-Forefront-Antispam-Report: CIP:149.199.60.96; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(5001770100001)(118296001)(81156007)(5007970100001)(5001960100002)(5008740100001)(64026002)(189998001)(85426001)(77096005)(36756003)(11100500001)(19580395003)(6806005)(5003940100001)(2950100001)(19580405001)(105606002)(86362001)(106466001)(48376002)(5003600100002)(229853001)(50466002)(71366001)(87936001)(33646002)(92566002)(50226001)(47776003)(76176999)(50986999)(107986001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN1AFFO11HUB014; H:xsj-tvapsmtpgw01; FPR:; SPF:Fail; PTR:unknown-60-96.xilinx.com; A:1; MX:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11HUB014; 2:5auz2bdrEk5ZSXZdjmac7i15NSLPt2fmOG26tv2+PcMObyTxM8DurjpILNXQO0NcAUoWqVxEJ80bVTiIZAvEQbgRHoKHTz7v+N6CemeL3J0BxH2YRDT2Rqjf4Whdrm4ehLgkNo3wAor0wZKwLuYg5I5tyy5OZ8cYftVbamtdss4=; 3:U//fOGZKRyvYdhpHSBuOHJ4tdI3gHU8ZiUSt2GLnpp/7yChgl/IgAemk8mU45qIzM4AiGyiXRQ2azfg3evO22BQCzKMMkHZYv63WH5BUkT+JssrDY/yW7vwCmZ0hXU3x7ml/vfQne9CiD1PF7DHpsrUlCRCwCKxAcOYganrD4Mheq0JE9IlMJ1uhJh/Fua2o/Y5IQANzX1WgtVgEOPktqMOhw+8BPhJv/WOVQPXJZiA=; 25:MSySR3U2x+urnfwmy8PTumeIKv7sfMl5NCadqzt3zTVwmSPstiZfts6gdKpS/6BSclcbfCHWLgR/z4F7YDWdthhnOhWnw7Eix7tRplAgMmTFwNZtdTa9VeX42ne/pnZFznigySl+xctUFhpEY9qHRHp/VwcLNyhSAAuTHNTA3G6c5Pe6PjjTAmBBSgJmi7e0wYEh4lCviRxlu5mv5p0mdTHdETgx9r9UZtNHQF+a3c7qAhCAtT6DnLQ0ruwXIzkD X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN1AFFO11HUB014; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11HUB014; 20:lxKBtWc6j3LOD++R6JiGjsozVdzIFV54479w2avucs/9gy+sp+/+e3kwpQSwm5TpZo4RI2R4IVfik9K5TOjni8QuuqR834Ci2GGhtBo51YG3/dLNQhRjL8Paf8NHSsEHpZqngSjUziOtJI2/AqN9k4w/vaAnCsFA6Al5YrewX7MiXOUOUR23zVRPxgp43yQt10VY1iA0eBIsEUoqz7eLDisQ0XFAXqs7CHUIBDEakuOowArKi0YuR47VM2kh20/cvmVUfjViEqlvDvOpJipBSkUjN+WvipeZ8f/7xmRajlPspwKXQQtwQIy2odz+QdnvLTVsjYO98pGBtnxbPV3d5ot6oLgD/Xmy2U/s2t0SeZEt1DSKF0Az4fiUR8HqkjE2YkmTaX+SRyg3j11WXp4jcbJAgrSOI2f87yxJI0vaQRhIDVnfMI8o2hHfF8ehXRXT4l7RA6TvpLGRIYRMOzwmHIg7ypqc1XuwVyaqarhDvDn/yKryrenu4Huat/ZP50Z7; 4:KqD51W0HDJJBlT7YxaecJUgDZY2DGtIa1bPFiuwQAbvnLcnl0frukGO6m9VkPF5S3k4qVqP6o5YReWrVJjtJjTLC/os4scoXSAdGELLs/biwexar3vMitzBDQcjd+aEI6hIRgDYtyrB8NBprAd0/0NIJ+Cktfkz66vRGVwKex4GnVnCfZ9QJ5aDW1PvC+EXT6X1m3cVNAALCrMDEMRXMev0p3MoJZX0/DIKKISVjA2NAo0LmAJQnznBQ1OUcUXtut2ozUNZBXnvQeBdN+Nu8fPwEti1338NBlIiA9ZUfsG2a/FRqlFOmxXKPDhxbOlLCGBeqQQpkgN5KoYZmZhQrMNZQSWBnUGN0dwaOKBZO4s75ektXVJewckbA76hxAGBad8+FUOOiB9LJHpc5gVpABQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192813158149592); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(8121501046)(5005006)(520078)(3002001)(10201501046)(102215026); SRVR:BN1AFFO11HUB014; BCL:0; PCL:0; RULEID:; SRVR:BN1AFFO11HUB014; X-Forefront-PRVS: 0743E8D0A6 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1AFFO11HUB014; 23:PHwSXN4TUx5XGsddf04KpR/r81FBOxbhZq/BZSp?= =?us-ascii?Q?ykR8Dks5IvE4C8K8y6V29adJ2qYYl0t4doY08zdr4BaRbLsuGy445lv4IA5d?= =?us-ascii?Q?PTuZ2MJbFLegjQkRIfUhqfb3rFU/MH4WTE3mXZZldF5uIdl4RlPO9OEkLkGg?= =?us-ascii?Q?jms86jFKSQt7BPtFSHbmRCcsPrJLD2kzLge/JmSey3mjkfkRjzJlVBZi1Wts?= =?us-ascii?Q?lsbKAa0L50ujId8X6PDEHbRXtJKajWAJ7yDRjXEOF+YECZZIuHsrec7VE8iM?= =?us-ascii?Q?97v/eeo3Gq+wToWfhxc9D8/QIgwO0Z9eoWJWgDkVoTyhRDE8804PHIjtPCyM?= =?us-ascii?Q?J/zShPK67Qk6hdztCw/PT6qAqvFaS9XYh/K0Jrw0HkQs3SltEvT6n5ngCulG?= =?us-ascii?Q?gObzOdRBanP4w08HqPFw2lmSX49Cku+6eKaSk5HBUzT9tU8quI5WgESgqAai?= =?us-ascii?Q?aHb+kZdiJuzrMnOceq90qzW2Jq1aUXUKNNWbSMrjSLKXWe7YoLK15cRcOcLt?= =?us-ascii?Q?TAx10MQKQTAoYahkjiv7cskY8EQJWiq/S3lLEMj86pDvfzgy/OsDQ06I7d7M?= =?us-ascii?Q?wn4+d2eovCDcsUZKiV3SzKUJkngRy+WwOHX7rUqx3EA4e8ofP2byL6hoTb5q?= =?us-ascii?Q?hC0FVwCrHHSPqvmsE1XLSjDY4/q3ozQotBRDmQ7zoZBQLJ4gmxMyHQwgIgid?= =?us-ascii?Q?jtpd17Tc0n24A2Xg2GRt4Wq1axJWYElrKQTDg88XkIkygcVwAn+ZnwAn6cfP?= =?us-ascii?Q?IOB8seLDB9M5Gl0NbPL5jP7ZK6pCEYOP6lwCRLA29iFtWtmBTLWgvmSN3Ghf?= =?us-ascii?Q?HIbKVxztuyxcTN7a51qGU/GSEc1r4OLKmhgYuLluWJ4DmGB9nnJtz+Y7wiJX?= =?us-ascii?Q?tJbORIge12aC97OboOynM6lt1S7JPcPZsC/bPVkm+ZyhINLM2DC1vCN9Fo/J?= =?us-ascii?Q?5gi4Bgq62Ugl3+mvwA6g60MpjJs8IIh7+a00ZchfUm+oP3Ya1gBZuGCFmJ90?= =?us-ascii?Q?oU7tUq9izJfjzut4iw50TT0wco5K7ByqpCz5q/R4KhkEKl95u7ARkXc5O4tm?= =?us-ascii?Q?1WqKk9SFRr0lso5Wd9/rJ85T5CvXjq7KQlxWzMGyXcgoLIWSi2g=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11HUB014; 5:wejs6T/EQSwkTXhwg+P7nnxSCPhV5F2k8SWEg0hf+2kL+XQKnj9lo+atssZvHVrR/e/ynws1v7mIUOmz8BmkjefWuabKVdHMMtkTA+UXO5eVQDRSdtnTlVbkHmLtyIMbZZMKFeH71EeKBbEADUQt2Q==; 24:k2Xo+ZKotVAReYc6ZVxwYzETgDAbdFM2PsdZcl2YMqWdRvNDLwAr9CM0R8MY0rAP5nwQS3abFSZ3dkodsYW8/xNiaws1m45TGMXDYmQVnTs= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2015 17:34:44.0857 (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: BN1AFFO11HUB014 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 X-Received-From: 157.56.110.86 Cc: edgar.iglesias@xilinx.com, peter.maydell@linaro.org, edgar.iglesias@gmail.com, alistair.francis@xilinx.com Subject: [Qemu-devel] [PATCH v3 3/5] xilinx_spips: Seperate the state struct into a header 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 Seperate out the XilinxSPIPS struct into a seperate header file. Signed-off-by: Alistair Francis --- V2: - Only split out required #defines - Prefix XLNX_SPIPS_ hw/ssi/xilinx_spips.c | 54 ++++--------------------------- include/hw/ssi/xilinx_spips.h | 74 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 47 deletions(-) create mode 100644 include/hw/ssi/xilinx_spips.h diff --git a/hw/ssi/xilinx_spips.c b/hw/ssi/xilinx_spips.c index e9471ff..1b7b3fb 100644 --- a/hw/ssi/xilinx_spips.c +++ b/hw/ssi/xilinx_spips.c @@ -29,6 +29,7 @@ #include "qemu/fifo8.h" #include "hw/ssi/ssi.h" #include "qemu/bitops.h" +#include "hw/ssi/xilinx_spips.h" #ifndef XILINX_SPIPS_ERR_DEBUG #define XILINX_SPIPS_ERR_DEBUG 0 @@ -101,10 +102,6 @@ #define R_LQSPI_STS (0xA4 / 4) #define LQSPI_STS_WR_RECVD (1 << 1) -#define R_MOD_ID (0xFC / 4) - -#define R_MAX (R_MOD_ID+1) - /* size of TXRX FIFOs */ #define RXFF_A 32 #define TXFF_A 32 @@ -135,30 +132,6 @@ typedef enum { } FlashCMD; typedef struct { - SysBusDevice parent_obj; - - MemoryRegion iomem; - MemoryRegion mmlqspi; - - qemu_irq irq; - int irqline; - - uint8_t num_cs; - uint8_t num_busses; - - uint8_t snoop_state; - qemu_irq *cs_lines; - SSIBus **spi; - - Fifo8 rx_fifo; - Fifo8 tx_fifo; - - uint8_t num_txrx_bytes; - - uint32_t regs[R_MAX]; -} XilinxSPIPS; - -typedef struct { XilinxSPIPS parent_obj; uint8_t lqspi_buf[LQSPI_CACHE_SIZE]; @@ -174,19 +147,6 @@ typedef struct XilinxSPIPSClass { uint32_t tx_fifo_size; } XilinxSPIPSClass; -#define TYPE_XILINX_SPIPS "xlnx.ps7-spi" -#define TYPE_XILINX_QSPIPS "xlnx.ps7-qspi" - -#define XILINX_SPIPS(obj) \ - OBJECT_CHECK(XilinxSPIPS, (obj), TYPE_XILINX_SPIPS) -#define XILINX_SPIPS_CLASS(klass) \ - OBJECT_CLASS_CHECK(XilinxSPIPSClass, (klass), TYPE_XILINX_SPIPS) -#define XILINX_SPIPS_GET_CLASS(obj) \ - OBJECT_GET_CLASS(XilinxSPIPSClass, (obj), TYPE_XILINX_SPIPS) - -#define XILINX_QSPIPS(obj) \ - OBJECT_CHECK(XilinxQSPIPS, (obj), TYPE_XILINX_QSPIPS) - static inline int num_effective_busses(XilinxSPIPS *s) { return (s->regs[R_LQSPI_CFG] & LQSPI_CFG_SEP_BUS && @@ -257,7 +217,7 @@ static void xilinx_spips_reset(DeviceState *d) XilinxSPIPS *s = XILINX_SPIPS(d); int i; - for (i = 0; i < R_MAX; i++) { + for (i = 0; i < XLNX_SPIPS_R_MAX; i++) { s->regs[i] = 0; } @@ -269,7 +229,7 @@ static void xilinx_spips_reset(DeviceState *d) s->regs[R_TX_THRES] = 1; s->regs[R_RX_THRES] = 1; /* FIXME: move magic number definition somewhere sensible */ - s->regs[R_MOD_ID] = 0x01090106; + s->regs[XLNX_SPIPS_R_MOD_ID] = 0x01090106; s->regs[R_LQSPI_CFG] = R_LQSPI_CFG_RESET; s->snoop_state = SNOOP_CHECKING; xilinx_spips_update_ixr(s); @@ -427,7 +387,7 @@ static uint64_t xilinx_spips_read(void *opaque, hwaddr addr, case R_SLAVE_IDLE_COUNT: mask = 0xFF; break; - case R_MOD_ID: + case XLNX_SPIPS_R_MOD_ID: mask = 0x01FFFFFF; break; case R_INTR_EN: @@ -500,7 +460,7 @@ static void xilinx_spips_write(void *opaque, hwaddr addr, break; case R_RX_DATA: case R_INTR_MASK: - case R_MOD_ID: + case XLNX_SPIPS_R_MOD_ID: mask = 0; break; case R_TX_DATA: @@ -664,7 +624,7 @@ static void xilinx_spips_realize(DeviceState *dev, Error **errp) } memory_region_init_io(&s->iomem, OBJECT(s), xsc->reg_ops, s, - "spi", R_MAX*4); + "spi", XLNX_SPIPS_R_MAX*4); sysbus_init_mmio(sbd, &s->iomem); s->irqline = -1; @@ -708,7 +668,7 @@ static const VMStateDescription vmstate_xilinx_spips = { .fields = (VMStateField[]) { VMSTATE_FIFO8(tx_fifo, XilinxSPIPS), VMSTATE_FIFO8(rx_fifo, XilinxSPIPS), - VMSTATE_UINT32_ARRAY(regs, XilinxSPIPS, R_MAX), + VMSTATE_UINT32_ARRAY(regs, XilinxSPIPS, XLNX_SPIPS_R_MAX), VMSTATE_UINT8(snoop_state, XilinxSPIPS), VMSTATE_END_OF_LIST() } diff --git a/include/hw/ssi/xilinx_spips.h b/include/hw/ssi/xilinx_spips.h new file mode 100644 index 0000000..f01d276 --- /dev/null +++ b/include/hw/ssi/xilinx_spips.h @@ -0,0 +1,74 @@ +/* + * Header file for the Xilinx Zynq SPI controller + * + * Copyright (C) 2015 Xilinx Inc + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef XLNX_SPIPS_H +#define XLNX_SPIPS_H + +#include "hw/ssi/ssi.h" +#include "qemu/fifo8.h" + +typedef struct XilinxSPIPS XilinxSPIPS; + +#define XLNX_SPIPS_R_MOD_ID (0xFC / 4) + +#define XLNX_SPIPS_R_MAX (XLNX_SPIPS_R_MOD_ID + 1) + +struct XilinxSPIPS { + SysBusDevice parent_obj; + + MemoryRegion iomem; + MemoryRegion mmlqspi; + + qemu_irq irq; + int irqline; + + uint8_t num_cs; + uint8_t num_busses; + + uint8_t snoop_state; + qemu_irq *cs_lines; + SSIBus **spi; + + Fifo8 rx_fifo; + Fifo8 tx_fifo; + + uint8_t num_txrx_bytes; + + uint32_t regs[XLNX_SPIPS_R_MAX]; +}; + +#define TYPE_XILINX_SPIPS "xlnx.ps7-spi" +#define TYPE_XILINX_QSPIPS "xlnx.ps7-qspi" + +#define XILINX_SPIPS(obj) \ + OBJECT_CHECK(XilinxSPIPS, (obj), TYPE_XILINX_SPIPS) +#define XILINX_SPIPS_CLASS(klass) \ + OBJECT_CLASS_CHECK(XilinxSPIPSClass, (klass), TYPE_XILINX_SPIPS) +#define XILINX_SPIPS_GET_CLASS(obj) \ + OBJECT_GET_CLASS(XilinxSPIPSClass, (obj), TYPE_XILINX_SPIPS) + +#define XILINX_QSPIPS(obj) \ + OBJECT_CHECK(XilinxQSPIPS, (obj), TYPE_XILINX_QSPIPS) + +#endif /* XLNX_SPIPS_H */