From patchwork Mon Feb 25 08:50:16 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Crosthwaite X-Patchwork-Id: 222866 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 57C832C0299 for ; Mon, 25 Feb 2013 19:52:17 +1100 (EST) Received: from localhost ([::1]:57158 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U9tnD-000296-Dd for incoming@patchwork.ozlabs.org; Mon, 25 Feb 2013 03:52:15 -0500 Received: from eggs.gnu.org ([208.118.235.92]:43891) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U9tmp-0001YC-Kn for qemu-devel@nongnu.org; Mon, 25 Feb 2013 03:52:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1U9tml-00039R-I2 for qemu-devel@nongnu.org; Mon, 25 Feb 2013 03:51:51 -0500 Received: from mail-pb0-f47.google.com ([209.85.160.47]:38638) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U9tml-00039H-93 for qemu-devel@nongnu.org; Mon, 25 Feb 2013 03:51:47 -0500 Received: by mail-pb0-f47.google.com with SMTP id rp2so1555168pbb.6 for ; Mon, 25 Feb 2013 00:51:46 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:sender:from:to:cc:subject:date:message-id:x-mailer :in-reply-to:references:in-reply-to:references:x-gm-message-state; bh=YrUBOra87Z3e2H7dY1ymU3r8uCeWLZM2DWfw8yrfABc=; b=T9jbAl8aZZEFtIM/z9gpqp37sai9HemGNLTdaUd2uvvDUPVUOfASvifIIQdkupc7PF HDnUPW5duyeILCYYVMJktjfr8Ym4GJDRUdR+uJEM5n7vkd0k8gTMyYHepUIrNK+0qFr5 nlxta8oRI0okwOoz3SRzHUJbGyK3InujGARZ9jsV4OcX+w0ElWFMgmwE40AcHhl003wX cO8KZolO4lcqshvT/oHO01TmoliJWU8ZoPEVKz5s4xBg1Zed0n4nUg+CZEKDTcRZ9z4r wZ4EzWuW0xQF7euefNmq+JdyCnSArbCH8pkK8aTxvvJeydxxWfjfG4kHQMYorFkDkxNo y/cg== X-Received: by 10.66.217.194 with SMTP id pa2mr17486453pac.108.1361782306352; Mon, 25 Feb 2013 00:51:46 -0800 (PST) Received: from localhost ([1.134.54.163]) by mx.google.com with ESMTPS id d8sm12999263pax.23.2013.02.25.00.51.39 (version=TLSv1.1 cipher=RC4-SHA bits=128/128); Mon, 25 Feb 2013 00:51:45 -0800 (PST) From: Peter Crosthwaite To: qemu-devel@nongnu.org Date: Mon, 25 Feb 2013 18:50:16 +1000 Message-Id: <9f6319cf1501490d9ab819b7780c7ffbe8157227.1361782087.git.peter.crosthwaite@xilinx.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: References: In-Reply-To: References: X-Gm-Message-State: ALoCoQlF8oRtPbTvseWbd32o8p7+JgTNGWLngUVWshcIRc7pN+fWApjanFUNTDId8CqFroMY6739 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 209.85.160.47 Cc: edgar.iglesias@gmail.com, Peter Crosthwaite , afaerber@suse.de, peter.maydell@linaro.org Subject: [Qemu-devel] [PATCH v2 8/8] xilinx_axienet: stub out second stream connection 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 Example patch adding a second proxy object for the second stream connection of axienet. This is a non-functional RFC, please see the cover letter for discussion. Signed-off-by: Peter Crosthwaite --- changed from v1: Rebased on series refactorings hw/xilinx_axienet.c | 35 +++++++++++++++++++++++++++++++++++ 1 files changed, 35 insertions(+), 0 deletions(-) diff --git a/hw/xilinx_axienet.c b/hw/xilinx_axienet.c index a4ec1d8..e5a99e8 100644 --- a/hw/xilinx_axienet.c +++ b/hw/xilinx_axienet.c @@ -33,6 +33,7 @@ #define TYPE_XILINX_AXI_ENET "xlnx.axi-ethernet" #define TYPE_XILINX_AXI_ENET_DATA_STREAM "xilinx-axienet-data-stream" +#define TYPE_XILINX_AXI_ENET_CONTROL_STREAM "xilinx-axienet-control-stream" #define XILINX_AXI_ENET(obj) \ OBJECT_CHECK(XilinxAXIEnet, (obj), TYPE_XILINX_AXI_ENET) @@ -41,6 +42,10 @@ OBJECT_CHECK(XilinxAXIEnetStreamSlave, (obj),\ TYPE_XILINX_AXI_ENET_DATA_STREAM) +#define XILINX_AXI_ENET_CONTROL_STREAM(obj) \ + OBJECT_CHECK(XilinxAXIEnetStreamSlave, (obj),\ + TYPE_XILINX_AXI_ENET_CONTROL_STREAM) + /* Advertisement control register. */ #define ADVERTISE_10HALF 0x0020 /* Try for 10mbps half-duplex */ #define ADVERTISE_10FULL 0x0040 /* Try for 10mbps full-duplex */ @@ -330,6 +335,7 @@ struct XilinxAXIEnet { qemu_irq irq; StreamSlave *tx_dev; XilinxAXIEnetStreamSlave rx_data_dev; + XilinxAXIEnetStreamSlave rx_control_dev; NICState *nic; NICConf conf; @@ -813,6 +819,13 @@ static void eth_cleanup(NetClientState *nc) } static void +axienet_control_stream_push(StreamSlave *obj, uint8_t *buf, size_t size, + uint32_t *hdr) +{ + /* ... */ +} + +static void axienet_data_stream_push(StreamSlave *obj, uint8_t *buf, size_t size, uint32_t *hdr) { @@ -869,14 +882,19 @@ static void xilinx_enet_realize(DeviceState *dev, Error **errp) { XilinxAXIEnet *s = XILINX_AXI_ENET(dev); XilinxAXIEnetStreamSlave *ds = XILINX_AXI_ENET_DATA_STREAM(&s->rx_data_dev); + XilinxAXIEnetStreamSlave *cs = XILINX_AXI_ENET_CONTROL_STREAM( + &s->rx_control_dev); Error *local_errp = NULL; object_property_add_link(OBJECT(ds), "enet", "xlnx.axi-ethernet", (Object **) &ds->enet, &local_errp); + object_property_add_link(OBJECT(cs), "enet", "xlnx.axi-ethernet", + (Object **) &ds->enet, &local_errp); if (local_errp) { goto xilinx_enet_realize_fail; } object_property_set_link(OBJECT(ds), OBJECT(s), "enet", &local_errp); + object_property_set_link(OBJECT(cs), OBJECT(s), "enet", &local_errp); if (local_errp) { goto xilinx_enet_realize_fail; } @@ -911,9 +929,13 @@ static void xilinx_enet_init(Object *obj) assert_no_error(errp); object_initialize(&s->rx_data_dev, TYPE_XILINX_AXI_ENET_DATA_STREAM); + object_initialize(&s->rx_control_dev, TYPE_XILINX_AXI_ENET_CONTROL_STREAM); object_property_add_child(OBJECT(s), "axistream-connected-target", (Object *)&s->rx_data_dev, &errp); assert_no_error(errp); + object_property_add_child(OBJECT(s), "axistream-control-connected-target", + (Object *)&s->rx_control_dev, &errp); + assert_no_error(errp); sysbus_init_irq(sbd, &s->irq); @@ -965,10 +987,23 @@ static const TypeInfo xilinx_enet_data_stream_info = { } }; +static const TypeInfo xilinx_enet_control_stream_info = { + .name = TYPE_XILINX_AXI_ENET_CONTROL_STREAM, + .parent = TYPE_OBJECT, + .instance_size = sizeof(struct XilinxAXIEnetStreamSlave), + .class_init = xilinx_enet_stream_class_init, + .class_data = axienet_control_stream_push, + .interfaces = (InterfaceInfo[]) { + { TYPE_STREAM_SLAVE }, + { } + } +}; + static void xilinx_enet_register_types(void) { type_register_static(&xilinx_enet_info); type_register_static(&xilinx_enet_data_stream_info); + type_register_static(&xilinx_enet_control_stream_info); } type_init(xilinx_enet_register_types)