From patchwork Mon Aug 6 02:16:20 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: 175244 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 C85362C0088 for ; Mon, 6 Aug 2012 12:45:46 +1000 (EST) Received: from localhost ([::1]:52926 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SyCtO-0008IS-Tu for incoming@patchwork.ozlabs.org; Sun, 05 Aug 2012 22:18:02 -0400 Received: from eggs.gnu.org ([208.118.235.92]:54793) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SyCtF-00086n-PU for qemu-devel@nongnu.org; Sun, 05 Aug 2012 22:17:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SyCtE-0001eF-Lz for qemu-devel@nongnu.org; Sun, 05 Aug 2012 22:17:53 -0400 Received: from mail-pb0-f45.google.com ([209.85.160.45]:49361) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SyCtE-0001ae-FZ for qemu-devel@nongnu.org; Sun, 05 Aug 2012 22:17:52 -0400 Received: by mail-pb0-f45.google.com with SMTP id ro12so4514247pbb.4 for ; Sun, 05 Aug 2012 19:17:52 -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=p2dinvpSKOM+rZ0aeaU4VMtX/XVP5bxazRzHzxa5tXA=; b=GToe0tUQcNbz0VlYYIzjGKtHybm1wfsNIeA+S0o7YNd7ojxK9xjN/Qthv4hDCwaJhv oHSwy8KVGI4OktVyaxIUS3UEUtrro3HCdeSQEZ28WpXrlNg2ORtDA5Dh4YT9wAvtO8sT OAYJtpej7O43FIYz5ThAUDBfgVW2TtnJOGMyINfTmr/NIXP3AEH1u+3ialsQ3Rh0Cih1 gqQXFfC1QL7tGM/eCNRRFlkPJ/Cx9VDdE8VOMomaHCtfxXgMVqzI4J4673G4+LcSzXkZ 3hV/kAEyo3e2nr6AO5GR27FdOCiL1KCy1U/AYKVmzDAOBk3gUJ0o82bcG1NxBFP7kx4h 1ABQ== Received: by 10.68.193.196 with SMTP id hq4mr10328014pbc.32.1344219472135; Sun, 05 Aug 2012 19:17:52 -0700 (PDT) Received: from localhost ([124.148.20.9]) by mx.google.com with ESMTPS id gj10sm7873725pbc.18.2012.08.05.19.17.48 (version=TLSv1/SSLv3 cipher=OTHER); Sun, 05 Aug 2012 19:17:51 -0700 (PDT) From: "Peter A. G. Crosthwaite" To: qemu-devel@nongnu.org, paul@codesourcery.com, edgar.iglesias@gmail.com, peter.maydell@linaro.org, stefanha@gmail.com Date: Mon, 6 Aug 2012 12:16:20 +1000 Message-Id: <533c29f951c67cf586c506de60fe2864e068030f.1344218410.git.peter.crosthwaite@petalogix.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: References: In-Reply-To: References: X-Gm-Message-State: ALoCoQlwC0QZhlOJzd8ydiEG+qCggCiMs+nsW9k4SM1KWXClUT5oTZKoM56q2AI8xOd19JAdXy9Z X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 209.85.160.45 Cc: peter.crosthwaite@petalogix.com, i.mitsyanko@samsung.com, john.williams@petalogix.com Subject: [Qemu-devel] [PATCH v5 06/15] 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 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 4d26857..ec55c0e 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. */