From patchwork Wed Oct 3 07:48:33 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Peter A. G. Crosthwaite" X-Patchwork-Id: 188723 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 82B3F2C00E4 for ; Wed, 3 Oct 2012 18:03:51 +1000 (EST) Received: from localhost ([::1]:44851 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TJJiJ-00020O-BM for incoming@patchwork.ozlabs.org; Wed, 03 Oct 2012 03:49:51 -0400 Received: from eggs.gnu.org ([208.118.235.92]:50205) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TJJhw-0001Fg-Cv for qemu-devel@nongnu.org; Wed, 03 Oct 2012 03:49:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TJJhu-0005IV-Ru for qemu-devel@nongnu.org; Wed, 03 Oct 2012 03:49:28 -0400 Received: from mail-da0-f45.google.com ([209.85.210.45]:44761) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TJJhu-0004uD-MG for qemu-devel@nongnu.org; Wed, 03 Oct 2012 03:49:26 -0400 Received: by mail-da0-f45.google.com with SMTP id n15so2309233dad.4 for ; Wed, 03 Oct 2012 00:49:26 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references :in-reply-to:references:x-gm-message-state; bh=xW3Y3Bv4x1LWQBP2Drrwmz8KB8t6Ud9OIGkdAFaccA8=; b=hPx/alc+RsMieLfmNLvky0zXQAz8oSblCw7ajY2FsOonQ54mGDdzw6f12UPVK2oXVL w7POszIFDMX/s8/uPDdz1Ma9xbQCqyxNc+B56IyzPwg4mEgEsTH511QGGM6uG84YRKqU mYbZT00fcw1xwPo0TevMTgrwjrVEycScAFKTGJwHr/lN08lWmDmPjDRBP31QG3YUtCHH GfU1W9f2fyYi3UM1gtxOgfb+1AmMmiIMjY7izU6KvIS1PCZUmxgJzo4xq2MN4ymeUSYZ chHMKp6M7VFvWH7yhhUYln+O7XqNQ7XxGtR7bWDGuB2g1TH+JvzOBSxCWe2Bk+3zbbwP V2mg== Received: by 10.66.76.165 with SMTP id l5mr2983410paw.79.1349250566231; Wed, 03 Oct 2012 00:49:26 -0700 (PDT) Received: from localhost ([124.148.20.9]) by mx.google.com with ESMTPS id my10sm2231308pbc.11.2012.10.03.00.49.22 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 03 Oct 2012 00:49:25 -0700 (PDT) From: Peter Crosthwaite To: qemu-devel@nongnu.org, paul@codesourcery.com, edgar.iglesias@gmail.com, peter.maydell@linaro.org, stefanha@gmail.com Date: Wed, 3 Oct 2012 17:48:33 +1000 Message-Id: <347a705cc4762361ae046b2c7e4bddeb92f64788.1349249771.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: ALoCoQl7Bs7ctr0oKgBrblzLaH/h5fyE9dKZ1RqyEV3+1BNn0LlU4ENN9nQ07eXkEk2LHuGp/Dui X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 209.85.210.45 Cc: blauwirbel@gmail.com, "Peter A. G. Crosthwaite" , i.mitsyanko@samsung.com Subject: [Qemu-devel] [PATCH v8 05/14] hw/stellaris: Removed gpio_out init array. 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 A. G. Crosthwaite stellaris_init() defines arrays of qemu_irq to decides what each of the GPIO pins are connected to. This is ok for inputs (as an input can only have one source) but is flawed for outputs as an output can connect to any number of sinks. Removed the gpio_out array completely and just replaced its setters with direct calls to qdev_connect_gpio_out(). Signed-off-by: Peter A. G. Crosthwaite --- hw/stellaris.c | 26 ++++++++++++-------------- 1 files changed, 12 insertions(+), 14 deletions(-) diff --git a/hw/stellaris.c b/hw/stellaris.c index 01050d1..a7b68f4 100644 --- a/hw/stellaris.c +++ b/hw/stellaris.c @@ -1244,7 +1244,6 @@ static void stellaris_init(const char *kernel_filename, const char *cpu_model, qemu_irq *pic; DeviceState *gpio_dev[7]; qemu_irq gpio_in[7][8]; - qemu_irq gpio_out[7][8]; qemu_irq adc; int sram_size; int flash_size; @@ -1284,8 +1283,9 @@ static void stellaris_init(const char *kernel_filename, const char *cpu_model, pic[gpio_irq[i]]); for (j = 0; j < 8; j++) { gpio_in[i][j] = qdev_get_gpio_in(gpio_dev[i], j); - gpio_out[i][j] = NULL; } + } else { + gpio_dev[i] = NULL; } } @@ -1308,20 +1308,27 @@ static void stellaris_init(const char *kernel_filename, const char *cpu_model, if (board->peripherals & BP_OLED_SSI) { DeviceState *mux; void *bus; + qemu_irq select_pin; bus = qdev_get_child_bus(dev, "ssi"); mux = ssi_create_slave(bus, "evb6965-ssi"); - gpio_out[GPIO_D][0] = qdev_get_gpio_in(mux, 0); + select_pin = qdev_get_gpio_in(mux, 0); + if (gpio_dev[GPIO_D]) { + qdev_connect_gpio_out(gpio_dev[GPIO_D], 0, select_pin); + } bus = qdev_get_child_bus(mux, "ssi0"); ssi_create_slave(bus, "ssi-sd"); bus = qdev_get_child_bus(mux, "ssi1"); dev = ssi_create_slave(bus, "ssd0323"); - gpio_out[GPIO_C][7] = qdev_get_gpio_in(dev, 0); + if (gpio_dev[GPIO_C]) { + qdev_connect_gpio_out(gpio_dev[GPIO_C], 7, + qdev_get_gpio_in(dev, 0)); + } /* Make sure the select pin is high. */ - qemu_irq_raise(gpio_out[GPIO_D][0]); + qemu_irq_raise(select_pin); } } if (board->dc4 & (1 << 28)) { @@ -1347,15 +1354,6 @@ static void stellaris_init(const char *kernel_filename, const char *cpu_model, stellaris_gamepad_init(5, gpad_irq, gpad_keycode); } - for (i = 0; i < 7; i++) { - if (board->dc4 & (1 << i)) { - for (j = 0; j < 8; j++) { - if (gpio_out[i][j]) { - qdev_connect_gpio_out(gpio_dev[i], j, gpio_out[i][j]); - } - } - } - } } /* FIXME: Figure out how to generate these from stellaris_boards. */