From nobody Sun May 19 09:23:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1591984579; cv=none; d=zohomail.com; s=zohoarc; b=dPoBrWKjuwfp/2uMtqYvk5s18XL7l2MSeXqbp/oJ3SeO3It5RY33EDbliyzRgfnGOZvIQphrrm0RK7SbuJWAhxd0p4i71NKdF1dxhZyGAMAOfepGiboX3d8iHFIo78/kgIxZlebOqkM92bc/8kJj3A3C1eDK7cM4BsU/iXNkKF4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591984579; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=oF2pu4eIH0IdOMRtI6qyxe6R9jMEe4XzBzxqgQ2GpXQ=; b=GbS8c+UJt/kxVLQnMRNdxN/SQAXhnHZDpLaLv3Ek2YZ0lgX1hxE9WrdzsjKBjbXOpCkUSRBZP5Wa4jnII0GhBKiCZ1hT7kPRJ+kfr4lu4HgAgf49k+k1D1sa4nCW3hXLUPkntwJazaBu4JUvbjuZy8VNMOtjfi1Z/aGafE/0R3I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 159198457899322.99722188473993; Fri, 12 Jun 2020 10:56:18 -0700 (PDT) Received: from localhost ([::1]:43402 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jjnub-0008Ow-BV for importer@patchew.org; Fri, 12 Jun 2020 13:56:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55456) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jjntN-0006h7-3z; Fri, 12 Jun 2020 13:55:01 -0400 Received: from mail-wm1-x343.google.com ([2a00:1450:4864:20::343]:39151) by eggs.gnu.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jjntL-0004Bk-Hp; Fri, 12 Jun 2020 13:55:00 -0400 Received: by mail-wm1-x343.google.com with SMTP id k26so9060426wmi.4; Fri, 12 Jun 2020 10:54:46 -0700 (PDT) Received: from localhost.localdomain (181.red-88-10-103.dynamicip.rima-tde.net. [88.10.103.181]) by smtp.gmail.com with ESMTPSA id e12sm11288658wro.52.2020.06.12.10.54.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Jun 2020 10:54:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=oF2pu4eIH0IdOMRtI6qyxe6R9jMEe4XzBzxqgQ2GpXQ=; b=C4SyiRbDbUubGZQbBGqIEn4bvaoqakz+H2dDx5mCh8lvpTXyUUbi/OKWzn4YyMjmvt F5zXCsHm4PxcDWv0deNtOjqZsHvpwQJea+h4tlMqaZQFE58toUwuqQsZM2SWOKhgs9es jRxnlzW2kOOXAFJh3oZXt2gWa0Y3XL7PtLRg/ku8n/2yYC4b+c3EthAkcNs9OzXczAs5 S2pzL4zivZWDkaKeOGiACyhMEQs570/qtQWCmz3XhkTvlR+yvg8FMiBtG2CtQ5sSFGNX wnolCQZSeNm0HvziM8fiE3EOGlpxaRuyyuK3b8CIintz+YQ2hAkSgnDUJmDwTPbIR7hx SKEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=oF2pu4eIH0IdOMRtI6qyxe6R9jMEe4XzBzxqgQ2GpXQ=; b=iZt7pp+bTM8HFPLim9jxF3RwkVZQJX6gXzhkfCjEkOIwoMtUw26RRBMA3v/oNCcEyh 6byTl6d2rmH4lx5GujcYKkaR5bCMBd7X4vQlwFXSX2U+dZ9gPXRmq1KA6vJyLAkiTY9B zoUPt29mG+P3A5LIuf1IZWFToN9hKmmSThLMDXq9ukzhauqquL3OmWaRJUF4dYZH0PdB /oggWoIe9RQfJZCAXu99xPSHDP/807oqy5vjXk/JLP8yY2TH7AnPY53pAGIrcvhfDzJ1 gyuoV33kX7o02yvPSJzv4cS6c3I2WxodgX8AUBUAbZyG3doFYiXfmmSmWqowlLmE1gNb cYvQ== X-Gm-Message-State: AOAM532V+dHBhWXilriuTz97K3JerRl1Tws1mOWSsCTM/ptV949sZ/4v G5vlB9IUm5ONgkA11ZgH2V9pqdmA X-Google-Smtp-Source: ABdhPJwPlH/MLWtaHzN5PbDEHuPBCmwgv4dNVVAUNogj1wBY14iOP4zw94RrPKmi8EQmov0loGYrUQ== X-Received: by 2002:a1c:63c2:: with SMTP id x185mr124234wmb.68.1591984485123; Fri, 12 Jun 2020 10:54:45 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH v2 1/5] hw/misc: Add a LED device Date: Fri, 12 Jun 2020 19:54:36 +0200 Message-Id: <20200612175440.9901-2-f4bug@amsat.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200612175440.9901-1-f4bug@amsat.org> References: <20200612175440.9901-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::343; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x343.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: 0 X-Spam_score: 0.0 X-Spam_bar: / X-Spam_report: (0.0 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=1, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Michael Roth , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Dr . David Alan Gilbert" , Markus Armbruster , Esteban Bosse , qemu-arm@nongnu.org, Gerd Hoffmann , Joel Stanley Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) A LED device can be connected to a GPIO output. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/misc/led.h | 30 ++++++++++++++++ hw/misc/led.c | 84 +++++++++++++++++++++++++++++++++++++++++++ MAINTAINERS | 6 ++++ hw/misc/Kconfig | 3 ++ hw/misc/Makefile.objs | 1 + hw/misc/trace-events | 3 ++ 6 files changed, 127 insertions(+) create mode 100644 include/hw/misc/led.h create mode 100644 hw/misc/led.c diff --git a/include/hw/misc/led.h b/include/hw/misc/led.h new file mode 100644 index 0000000000..427ca1418e --- /dev/null +++ b/include/hw/misc/led.h @@ -0,0 +1,30 @@ +/* + * QEMU single LED device + * + * Copyright (C) 2020 Philippe Mathieu-Daud=C3=A9 + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#ifndef HW_MISC_LED_H +#define HW_MISC_LED_H + +#include "hw/qdev-core.h" +#include "hw/sysbus.h" /* FIXME remove */ + +#define TYPE_LED "led" +#define LED(obj) OBJECT_CHECK(LEDState, (obj), TYPE_LED) + +typedef struct LEDState { + /* Private */ + SysBusDevice parent_obj; /* FIXME DeviceState */ + /* Public */ + + qemu_irq irq; + uint8_t current_state; + + /* Properties */ + char *name; + uint8_t reset_state; /* TODO [GPIO_ACTIVE_LOW, GPIO_ACTIVE_HIGH] */ +} LEDState; + +#endif /* HW_MISC_LED_H */ diff --git a/hw/misc/led.c b/hw/misc/led.c new file mode 100644 index 0000000000..1bae1a34c0 --- /dev/null +++ b/hw/misc/led.c @@ -0,0 +1,84 @@ +/* + * QEMU single LED device + * + * Copyright (C) 2020 Philippe Mathieu-Daud=C3=A9 + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "migration/vmstate.h" +#include "hw/qdev-properties.h" +#include "hw/misc/led.h" +#include "hw/irq.h" +#include "trace.h" + +static void led_set(void *opaque, int line, int new_state) +{ + LEDState *s =3D LED(opaque); + + trace_led_set(s->name, s->current_state, new_state); + + s->current_state =3D new_state; +} + +static void led_reset(DeviceState *dev) +{ + LEDState *s =3D LED(dev); + + led_set(dev, 0, s->reset_state); +} + +static const VMStateDescription vmstate_led =3D { + .name =3D TYPE_LED, + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (VMStateField[]) { + VMSTATE_UINT8(reset_state, LEDState), + VMSTATE_END_OF_LIST() + } +}; + +static void led_realize(DeviceState *dev, Error **errp) +{ + LEDState *s =3D LED(dev); + + if (s->name =3D=3D NULL) { + error_setg(errp, "property 'name' not specified"); + return; + } + + qdev_init_gpio_in(DEVICE(s), led_set, 1); +} + +static Property led_properties[] =3D { + DEFINE_PROP_STRING("name", LEDState, name), + DEFINE_PROP_UINT8("reset_state", LEDState, reset_state, 0), + DEFINE_PROP_END_OF_LIST(), +}; + +static void led_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + + dc->desc =3D "LED"; + dc->vmsd =3D &vmstate_led; + dc->reset =3D led_reset; + dc->realize =3D led_realize; + set_bit(DEVICE_CATEGORY_DISPLAY, dc->categories); + device_class_set_props(dc, led_properties); +} + +static const TypeInfo led_info =3D { + .name =3D TYPE_LED, + .parent =3D TYPE_SYS_BUS_DEVICE, /* FIXME TYPE_DEVICE */ + .instance_size =3D sizeof(LEDState), + .class_init =3D led_class_init +}; + +static void led_register_types(void) +{ + type_register_static(&led_info); +} + +type_init(led_register_types) diff --git a/MAINTAINERS b/MAINTAINERS index 3abe3faa4e..10593863dc 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1857,6 +1857,12 @@ F: docs/specs/vmgenid.txt F: tests/qtest/vmgenid-test.c F: stubs/vmgenid.c =20 +LED +M: Philippe Mathieu-Daud=C3=A9 +S: Maintained +F: include/hw/misc/led.h +F: hw/misc/led.c + Unimplemented device M: Peter Maydell R: Philippe Mathieu-Daud=C3=A9 diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig index bdd77d8020..f60dce694d 100644 --- a/hw/misc/Kconfig +++ b/hw/misc/Kconfig @@ -126,6 +126,9 @@ config AUX config UNIMP bool =20 +config LED + bool + config MAC_VIA bool select MOS6522 diff --git a/hw/misc/Makefile.objs b/hw/misc/Makefile.objs index 5aaca8a039..9efa3c941c 100644 --- a/hw/misc/Makefile.objs +++ b/hw/misc/Makefile.objs @@ -91,3 +91,4 @@ common-obj-$(CONFIG_NRF51_SOC) +=3D nrf51_rng.o obj-$(CONFIG_MAC_VIA) +=3D mac_via.o =20 common-obj-$(CONFIG_GRLIB) +=3D grlib_ahb_apb_pnp.o +common-obj-$(CONFIG_LED) +=3D led.o diff --git a/hw/misc/trace-events b/hw/misc/trace-events index 5561746866..e15b7f7c81 100644 --- a/hw/misc/trace-events +++ b/hw/misc/trace-events @@ -206,3 +206,6 @@ via1_rtc_cmd_pram_sect_write(int sector, int offset, in= t addr, int value) "secto # grlib_ahb_apb_pnp.c grlib_ahb_pnp_read(uint64_t addr, uint32_t value) "AHB PnP read addr:0x%03= "PRIx64" data:0x%08x" grlib_apb_pnp_read(uint64_t addr, uint32_t value) "APB PnP read addr:0x%03= "PRIx64" data:0x%08x" + +# led.c +led_set(const char *name, uint8_t old_state, uint8_t new_state) "led name:= '%s' state %d -> %d" --=20 2.21.3 From nobody Sun May 19 09:23:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1591984588; cv=none; d=zohomail.com; s=zohoarc; b=gEIySBopjNlaZh1187ragXFgoRAlWbvMVByiy+WH9MLW6NTgW+wunpgON1lx5PO0lCyIGEfDN1CpwwqVt4/ObLWImeNlMK/T42H24QDhvgbaL8du7MymMlEmbgeKbHeNRkk89xDjSiIQTelZX0btSyPHZkCcT7Gjj4IxQ0MGVxg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591984588; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Ey2amTDcFUvfaVpFJgzUUluWwZDBNbei1L7614Xfeag=; b=NkbytrWN99Y57FxrN7PUynYci67N1KVRTMks7Fp2/bOUdco4CWY2BxR7GwB5I5IN33HGNabbCK1+KuBPheNhO7RvdETtzGfw2c6yd7TgWizPzVc5iUrEMGJHS90aAETfxZIq2ctNepLFP3CEy1aPMiwKhVvpZKPtdo7kwnn62Rs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1591984588095200.47447109187465; Fri, 12 Jun 2020 10:56:28 -0700 (PDT) Received: from localhost ([::1]:43714 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jjnuj-00005s-Oo for importer@patchew.org; Fri, 12 Jun 2020 13:56:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55528) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jjntQ-0006me-Fu; Fri, 12 Jun 2020 13:55:04 -0400 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]:52449) by eggs.gnu.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jjntO-0004C3-NI; Fri, 12 Jun 2020 13:55:04 -0400 Received: by mail-wm1-x336.google.com with SMTP id r9so8941287wmh.2; Fri, 12 Jun 2020 10:54:49 -0700 (PDT) Received: from localhost.localdomain (181.red-88-10-103.dynamicip.rima-tde.net. [88.10.103.181]) by smtp.gmail.com with ESMTPSA id e12sm11288658wro.52.2020.06.12.10.54.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Jun 2020 10:54:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Ey2amTDcFUvfaVpFJgzUUluWwZDBNbei1L7614Xfeag=; b=AvcJkqw+xe1c3RaNU1zow2SUxhLuWV8oxlbUpf8LIr/BpzwNuewMP8jjo7Vf/oUkqM ktOjcZ8VTMXVdvyPi+Ob7Ped0A0mwaZacLZqVjenTjln0jfqccMG0auH4w0JVuo9AevI 62+IatMleSI2J4n7wlST+uSdyUFg4CPVHCGt7vU1G9bNALByyepPDGaY6HcbyrNlWFnS Pexmd6mEO7GjWorJxoeHB6rvlQNE4xx9uXXEpXgTx4Je6pJbh4gMCd7y0Y5dg+SlaFRl 7OjUbbJDZH8vtBPRDS1kbcnKiEe91J66TBZxLdf5As7y819j8KJCIbWhBOdKO/Ne2glw NXBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=Ey2amTDcFUvfaVpFJgzUUluWwZDBNbei1L7614Xfeag=; b=WpH7A2T5TD80xkXs030KOvea9X3uTVkAkDLbRhckGfTIT1dQxdZt2TFStO0X4paAKE 4wFnpq6KN+UrJe07gx4Hyh6JPWn2sftC6B7HDYz0G7zoPNnLPCrPkP984I93SSumS6GF lEzChyx4tqs/liqP4063Se3P6Ws5oZfkmwvqWz4wZ4GbO26T0ffDaSmc+bQHaI2coaKG wFJ26z5RV3ldnnOQecQ8/4+3uIK/puv1zrr1cc/rpzj3Es59nPXMEgmcCaIGPvcAS2Zx +RwE/izBjRaAtusucpfFcjzpsbDrHeXFypMCDzgOznuPFf5Tos09GvETj/nG0uOm5Edb G2sQ== X-Gm-Message-State: AOAM532p7cXz8zh7ljJ/wYI88+gwJUDF9vIlQ6LEpuc/M28iXChuKyof eHHopfdsV5tEYfnTo4leHjy7WDQx X-Google-Smtp-Source: ABdhPJyZxyNMXvCE7ViTgYhk2fmyFCzUG6NfUcOFt/lFVQog4azbCqLDileXQ0wqM9TeJ9qbhzDmUA== X-Received: by 2002:a1c:cc0d:: with SMTP id h13mr112560wmb.168.1591984486585; Fri, 12 Jun 2020 10:54:46 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH v2 2/5] hw/misc/led: Add LED_STATUS_CHANGED QAPI event Date: Fri, 12 Jun 2020 19:54:37 +0200 Message-Id: <20200612175440.9901-3-f4bug@amsat.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200612175440.9901-1-f4bug@amsat.org> References: <20200612175440.9901-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::336; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x336.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: 0 X-Spam_score: 0.0 X-Spam_bar: / X-Spam_report: (0.0 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=1, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Michael Roth , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Dr . David Alan Gilbert" , Markus Armbruster , Esteban Bosse , qemu-arm@nongnu.org, Gerd Hoffmann , Joel Stanley Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Allow LED devices to emit STATUS_CHANGED events on a QMP chardev. QMP event examples: { "timestamp": { "seconds": 1591704274, "microseconds": 520850 }, "event": "LED_STATUS_CHANGED", "data": { "name": "Green LED #0", "status": "on" } } { "timestamp": { "seconds": 1591704275, "microseconds": 530912 }, "event": "LED_STATUS_CHANGED", "data": { "name": "Green LED #0", "status": "off" } } Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- Since v1: rate limit 4/sec (eblake) --- qapi/led.json | 47 +++++++++++++++++++++++++++++++++++++++++++ qapi/qapi-schema.json | 1 + include/hw/misc/led.h | 1 + hw/misc/led.c | 24 +++++++++++++++++++++- MAINTAINERS | 1 + qapi/Makefile.objs | 2 +- 6 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 qapi/led.json diff --git a/qapi/led.json b/qapi/led.json new file mode 100644 index 0000000000..b6cef8a5dd --- /dev/null +++ b/qapi/led.json @@ -0,0 +1,47 @@ +# -*- Mode: Python -*- +# + +## +# =3D LED device +## + +## +# @LedState: +# +# Status of a LED +# +# @on: device is emitting +# +# @off: device is off +# +# Since: 5.1 +## +{ 'enum': 'LedState', 'data': [ 'on', 'off' ] } + +## +# @LED_STATUS_CHANGED: +# +# Emitted when LED status changed +# +# @name: LED description +# +# @status: New status +# +# Since: 5.1 +# +# Example: +# +# <- {"timestamp": {"seconds": 1541579657, "microseconds": 986760}, +# "event": "LED_STATUS_CHANGED", +# "data": +# {"name": "Blue LED #3", +# "status": "on" +# } +# } +# +## +{ 'event': 'LED_STATUS_CHANGED', + 'data': { 'name' : 'str', + 'status' : 'LedState' + } +} diff --git a/qapi/qapi-schema.json b/qapi/qapi-schema.json index 43b0ba0dea..6f3ffc0ae1 100644 --- a/qapi/qapi-schema.json +++ b/qapi/qapi-schema.json @@ -84,3 +84,4 @@ { 'include': 'misc.json' } { 'include': 'misc-target.json' } { 'include': 'audio.json' } +{ 'include': 'led.json' } diff --git a/include/hw/misc/led.h b/include/hw/misc/led.h index 427ca1418e..9300d4db6c 100644 --- a/include/hw/misc/led.h +++ b/include/hw/misc/led.h @@ -21,6 +21,7 @@ typedef struct LEDState { =20 qemu_irq irq; uint8_t current_state; + int64_t last_event_ms; =20 /* Properties */ char *name; diff --git a/hw/misc/led.c b/hw/misc/led.c index 1bae1a34c0..11c7e8bb89 100644 --- a/hw/misc/led.c +++ b/hw/misc/led.c @@ -7,18 +7,40 @@ */ #include "qemu/osdep.h" #include "qapi/error.h" +#include "qapi/qapi-events-led.h" +#include "qemu/timer.h" #include "migration/vmstate.h" #include "hw/qdev-properties.h" #include "hw/misc/led.h" #include "hw/irq.h" #include "trace.h" =20 +#define MAX_QMP_LED_EVENTS_PER_SEC 4 /* TODO shared between LED children?= */ + +static void emit_led_status_changed_event(LEDState *s, int state) +{ + static const int64_t delay_min_ms =3D NANOSECONDS_PER_SECOND / SCALE_MS + / MAX_QMP_LED_EVENTS_PER_SEC; + int64_t now =3D qemu_clock_get_ms(QEMU_CLOCK_REALTIME); + + if (now - s->last_event_ms > delay_min_ms) { + qapi_event_send_led_status_changed(s->name, state + ? LED_STATE_ON + : LED_STATE_OFF); + } else { + /* TODO count skipped events? */ + } + s->last_event_ms =3D now; +} + static void led_set(void *opaque, int line, int new_state) { LEDState *s =3D LED(opaque); =20 trace_led_set(s->name, s->current_state, new_state); - + if (new_state !=3D s->current_state) { + emit_led_status_changed_event(s, new_state); + } s->current_state =3D new_state; } =20 diff --git a/MAINTAINERS b/MAINTAINERS index 10593863dc..266b07c4b4 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1860,6 +1860,7 @@ F: stubs/vmgenid.c LED M: Philippe Mathieu-Daud=C3=A9 S: Maintained +F: qapi/led.json F: include/hw/misc/led.h F: hw/misc/led.c =20 diff --git a/qapi/Makefile.objs b/qapi/Makefile.objs index 4673ab7490..e9f6570c32 100644 --- a/qapi/Makefile.objs +++ b/qapi/Makefile.objs @@ -6,7 +6,7 @@ util-obj-y +=3D qmp-event.o util-obj-y +=3D qapi-util.o =20 QAPI_COMMON_MODULES =3D audio authz block-core block char common control c= rypto -QAPI_COMMON_MODULES +=3D dump error introspect job machine migration misc +QAPI_COMMON_MODULES +=3D dump error introspect job led machine migration m= isc QAPI_COMMON_MODULES +=3D net pragma qdev qom rdma rocker run-state sockets= tpm QAPI_COMMON_MODULES +=3D trace transaction ui QAPI_TARGET_MODULES =3D machine-target misc-target --=20 2.21.3 From nobody Sun May 19 09:23:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1591984587; cv=none; d=zohomail.com; s=zohoarc; b=JSD8bM0S63xZS+ecepjafNeeFzp5tf4MohjENeEMcMrwjBNm5qJCKU1AExv+JjXkGayqklj34PSs4c2H847CKrCuTis0ZGnRWINxEh5ciw/Lawr+6jA2dcj4g40ywzjZ6Bae/XWv6f5EICN7GY9b8CN3wsfsnE6z++ISJF5QKzA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591984587; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=VXyjbLpDTuE00ge+DHFSib5N0fJzn7CQXE4wINPUlB8=; b=FUmKjP0f/SOuD0sCoGJUNnwNwChdHHe5ulGY0xshYDAgyYIq99ADSfI6PgD9B8dVSpCfJ9sSDD/NFrXQhrdkQbobQPizXEvjwF26MnCibTXY4gwRY7P/iKc6MqnUa5SfGZjPOa8QvNEH5GhN3lSfvYOz0gecwgXL2XkrjeHsQ+o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1591984587162701.1322671588257; Fri, 12 Jun 2020 10:56:27 -0700 (PDT) Received: from localhost ([::1]:43628 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jjnuj-0008VV-IS for importer@patchew.org; Fri, 12 Jun 2020 13:56:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55524) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jjntQ-0006m1-5P; Fri, 12 Jun 2020 13:55:04 -0400 Received: from mail-wm1-x341.google.com ([2a00:1450:4864:20::341]:38188) by eggs.gnu.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jjntO-0004C0-JE; Fri, 12 Jun 2020 13:55:03 -0400 Received: by mail-wm1-x341.google.com with SMTP id f185so9061581wmf.3; Fri, 12 Jun 2020 10:54:49 -0700 (PDT) Received: from localhost.localdomain (181.red-88-10-103.dynamicip.rima-tde.net. [88.10.103.181]) by smtp.gmail.com with ESMTPSA id e12sm11288658wro.52.2020.06.12.10.54.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Jun 2020 10:54:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=VXyjbLpDTuE00ge+DHFSib5N0fJzn7CQXE4wINPUlB8=; b=WgeaN6EDTCdw9MxoftZstnYi8CHZ3U1JYCFxBleSkd7EbSpdzQmfOjx5OS1JVxjWt5 OYtwtqf7Xzcbef/HRl8EIqd/ICQxRSZcEAqLboLb1mOlae4VdM/9Fj5FfCI1KlRHz95h ucagw2uSH6/nTXs6mSywTuO0iPgPfgpQagg89vt8dx/25k8i6MSIdkyT4HB2C4BhViK6 RvyfkIUqpVh5Lh9q+lGn+3phwsqqRmLs5XD0Gz+xGvkdM00F5z0WoXl+aSXUMkO5BEzF QTbTBb7ZTnxcV3WRG5EejgH7NixXpk5/W1p0QLqM2YFzcH5ml1yF7GrVNBZTvO1wOhOW ZwRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=VXyjbLpDTuE00ge+DHFSib5N0fJzn7CQXE4wINPUlB8=; b=dMXU3jLF1st/3MTHuZQpOP3oWSkO/En54GwOWvXA58KdOiUeiEt/wohebUUtFYCTv7 MQqVc4ObCc9EeuAvd6urLmvA93ecLl8Qp95SpO4TFKbnsmSs+tIfj++rwRyrQal/iPhu wq2sqcYuxX8FX2OuU3HoqNdvnIL3yxDbdM3Sc22Zx+Yj6O1coFe02ALAs8Hv2Tkb4onF cMZ1SS1RvAKt782dSnqPKNNVcB11Qplv0kF+Mg4R7Dh1xrOdD/YNS41YR1ib4jv/G4Lj NIQfzSTIlkHHvZ9vqIaPXQoSabRHpmdYvUFodcAV4VKTKfAG5+f3LEBwuwgm3AjVAt8W JBtw== X-Gm-Message-State: AOAM530O4i2/7HVLH7UkDsgSoROqEhou/iR3KnR+K4y5nFBG3J89oDZg L4i467WRnghe2P0FX6ne7bHUbelZ X-Google-Smtp-Source: ABdhPJxWMG2ljyxvNa2EyKGahX5TRjZxbLcDOCIUo6Yfrw4SMEvBrQydD7CstuwSKqq/8jUUmN/aFw== X-Received: by 2002:a1c:6389:: with SMTP id x131mr115342wmb.90.1591984488319; Fri, 12 Jun 2020 10:54:48 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH v2 3/5] hw/misc/led: Add create_led_by_gpio_id() helper Date: Fri, 12 Jun 2020 19:54:38 +0200 Message-Id: <20200612175440.9901-4-f4bug@amsat.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200612175440.9901-1-f4bug@amsat.org> References: <20200612175440.9901-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::341; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x341.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: 0 X-Spam_score: 0.0 X-Spam_bar: / X-Spam_report: (0.0 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=1, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Michael Roth , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Dr . David Alan Gilbert" , Markus Armbruster , Esteban Bosse , qemu-arm@nongnu.org, Gerd Hoffmann , Joel Stanley Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Add create_led_by_gpio_id() to easily connect a LED to a GPIO output. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/misc/led.h | 14 ++++++++++++++ hw/misc/led.c | 20 ++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/include/hw/misc/led.h b/include/hw/misc/led.h index 9300d4db6c..1b2bb96712 100644 --- a/include/hw/misc/led.h +++ b/include/hw/misc/led.h @@ -28,4 +28,18 @@ typedef struct LEDState { uint8_t reset_state; /* TODO [GPIO_ACTIVE_LOW, GPIO_ACTIVE_HIGH] */ } LEDState; =20 +/** + * create_led_by_gpio_id: create and LED device + * @parent: the parent object + * @gpio_dev: device exporting GPIOs + * @gpio_id: GPIO ID of this LED + * @name: name of the LED + * + * This utility function creates a LED and connects it to a + * GPIO exported by another device. + */ +DeviceState *create_led_by_gpio_id(Object *parentobj, + DeviceState *gpio_dev, unsigned gpio_id, + const char *led_name); + #endif /* HW_MISC_LED_H */ diff --git a/hw/misc/led.c b/hw/misc/led.c index 11c7e8bb89..36de80dd67 100644 --- a/hw/misc/led.c +++ b/hw/misc/led.c @@ -104,3 +104,23 @@ static void led_register_types(void) } =20 type_init(led_register_types) + +DeviceState *create_led_by_gpio_id(Object *parentobj, + DeviceState *gpio_dev, unsigned gpio_id, + const char *led_name) +{ + DeviceState *dev; + char *name; + + dev =3D qdev_create(NULL, TYPE_LED); + /* TODO set "reset_state" */ + qdev_prop_set_string(dev, "name", led_name); + name =3D g_ascii_strdown(led_name, -1); + name =3D g_strdelimit(name, " #", '-'); + object_property_add_child(parentobj, name, OBJECT(dev)); + g_free(name); + qdev_init_nofail(dev); + qdev_connect_gpio_out(gpio_dev, gpio_id, qdev_get_gpio_in(dev, 0)); + + return dev; +} --=20 2.21.3 From nobody Sun May 19 09:23:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1591984676; cv=none; d=zohomail.com; s=zohoarc; b=kx9uwX2a4Un8jilnfRPaUQ8XkanNWDmRPvejemRGribWnwuXm2Xx7K9D/ZPP6dMAInGYHAll4CF80LHd3zes104BHCQ2LPqLgRgKypOiyuwMtqgysvZMfqXp1eHD48ihw6F6at0u6o7ihMPYOi93MIKhQthbBWBuFD/oW6vWStQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591984676; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Jpf6+q8OiuFmDbu8SbMqWnakxmwLS2sZMacUeOa9SzM=; b=fd9nuzGntkhEw5itESsTySqJK0bBCFuAAm5FJe7p00Istf5yeHwhBtWZMHZy19U3OvA62P/xG4FTrXh4GC4dLVOU9k5DknPoYL2R+12fi9L9iPBlkpfqmn5q7O+hANXMFQaMa0cej1rvEm0TrF7Djy042OFoQvEF6nEUzE0KB7g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1591984676143819.819629744056; Fri, 12 Jun 2020 10:57:56 -0700 (PDT) Received: from localhost ([::1]:50996 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jjnw9-00031u-Kd for importer@patchew.org; Fri, 12 Jun 2020 13:57:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55552) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jjntR-0006q8-Ux; Fri, 12 Jun 2020 13:55:05 -0400 Received: from mail-wm1-x342.google.com ([2a00:1450:4864:20::342]:33848) by eggs.gnu.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jjntQ-0004CM-Bl; Fri, 12 Jun 2020 13:55:05 -0400 Received: by mail-wm1-x342.google.com with SMTP id u26so9659118wmn.1; Fri, 12 Jun 2020 10:54:51 -0700 (PDT) Received: from localhost.localdomain (181.red-88-10-103.dynamicip.rima-tde.net. [88.10.103.181]) by smtp.gmail.com with ESMTPSA id e12sm11288658wro.52.2020.06.12.10.54.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Jun 2020 10:54:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Jpf6+q8OiuFmDbu8SbMqWnakxmwLS2sZMacUeOa9SzM=; b=Y2hCBfiuLlI1O5dzMiGWrA7Ky6pBN+vlWi54JY52Grf0MVMZp7NjqAPRG+dpSOQuqE j+qJWuEu3V8/iUn+RrlV30ACQgpsib6rVrB1cjSqMwr5t5zkJegBoaF47zJQJVy6KtvH sXKUw2L3DZ957/3HOM9b5/kOXqyunK53SpuI+lKnP4GPl1TPrTR/naEwEkIzzqdK/C2k zd4x8WJYp/tYDhGSTQW3jEC3D+mXRsyINheOeZhE8JcHm+LLa5VxtqHZ49eg+4MOE9ST fWC9HD2JIPjLaL4obaYHr2Oi9h+I/lmHzLjiXNFKi+bzOglDF9lKD7X6CSKfIXwXBDMi tIPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=Jpf6+q8OiuFmDbu8SbMqWnakxmwLS2sZMacUeOa9SzM=; b=VOEKHVSR8l5IF6HIWrixsPpTjA9E4TiWufKjK+FdUWYKN+4tra9LNyDGpCREnmEhTY ymIFcuSuor9acGRYHQLnWYR/x5LEbnHp3aXUSliv6aSLiTfeTPr/XmxyI2Zih1gJaued XhpU4fJXCUS/N36kYXC+1vBd4Bk5WUOIFy+AB1W0RNX0mYBjgEjr2rteZPNMVvEo74cR kurlPXAzvS9oZloRiG8U3QS5wIbtdnS0I2vslIMoMzsb/oUfp4YiSrEKKUsmtdKRzBZp RRO0Y4AR2FSQQk2DNMozfAgTeQqTKCyP60ow4u2KeHj5ty9VXzv2w4obSpeIP5kYdfjK 1OFA== X-Gm-Message-State: AOAM5331T47OTdaF28EcfBmzqHgsLNRLYbRpui63L8iNAZxZ9vv40eqf FLZZ9oOuypBqdb3hmqQ4UaGzV/Qd X-Google-Smtp-Source: ABdhPJzrsK/rxzKCjxJeJS4BOW2pTnN5aaDIk+0JPYcEazNmQxthIpyBjKP5cafrnim6sJgmXDHQag== X-Received: by 2002:a1c:de55:: with SMTP id v82mr108082wmg.148.1591984490344; Fri, 12 Jun 2020 10:54:50 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH v2 4/5] hw/arm/microbit: Add a fake LED to use as proof-of-concept with Zephyr Date: Fri, 12 Jun 2020 19:54:39 +0200 Message-Id: <20200612175440.9901-5-f4bug@amsat.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200612175440.9901-1-f4bug@amsat.org> References: <20200612175440.9901-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::342; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x342.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: 0 X-Spam_score: 0.0 X-Spam_bar: / X-Spam_report: (0.0 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=1, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Michael Roth , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Dr . David Alan Gilbert" , Markus Armbruster , Esteban Bosse , qemu-arm@nongnu.org, Gerd Hoffmann , Joel Stanley Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) We were using an AVR based Arduino to use this device, but since the port is not merged, the microbit is the easiest board to use with Zephyr. Note the microbit doesn't have a such LED, this is simply a proof of concept. How to test: - Apply this patch on zephyr-v2.3.0 diff --git a/boards/arm/qemu_cortex_m0/qemu_cortex_m0.dts b/boards/arm/qe= mu_cortex_m0/qemu_cortex_m0.dts index a1b3044275..61b39506b1 100644 --- a/boards/arm/qemu_cortex_m0/qemu_cortex_m0.dts +++ b/boards/arm/qemu_cortex_m0/qemu_cortex_m0.dts @@ -21,6 +21,18 @@ zephyr,flash =3D &flash0; zephyr,code-partition =3D &slot0_partition; }; + + leds { + compatible =3D "gpio-leds"; + led0: led_0 { + gpios =3D <&gpio0 21 GPIO_ACTIVE_LOW>; + label =3D "Green LED 0"; + }; + }; + + aliases { + led0 =3D &led0; + }; }; &gpiote { - Build Zephyr blinky: $ west build -b qemu_cortex_m0 samples/basic/blinky - Run QEMU $ qemu-system-arm -M microbit -trace led\* \ -kernel ~/zephyrproject/zephyr/build/zephyr/zephyr.elf -trace led\* 2953@1591704866.319665:led_set led name:'Green LED #0' state 0 -> 0 2953@1591704867.329143:led_set led name:'Green LED #0' state 0 -> 1 2953@1591704868.332590:led_set led name:'Green LED #0' state 1 -> 0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/arm/microbit.c | 3 +++ hw/arm/Kconfig | 1 + 2 files changed, 4 insertions(+) diff --git a/hw/arm/microbit.c b/hw/arm/microbit.c index ef213695bd..102661b66a 100644 --- a/hw/arm/microbit.c +++ b/hw/arm/microbit.c @@ -18,6 +18,7 @@ #include "hw/arm/nrf51_soc.h" #include "hw/i2c/microbit_i2c.h" #include "hw/qdev-properties.h" +#include "hw/misc/led.h" =20 typedef struct { MachineState parent; @@ -58,6 +59,8 @@ static void microbit_init(MachineState *machine) memory_region_add_subregion_overlap(&s->nrf51.container, NRF51_TWI_BAS= E, mr, -1); =20 + create_led_by_gpio_id(OBJECT(machine), DEVICE(soc), 21, "Green LED #0"= ); + armv7m_load_kernel(ARM_CPU(first_cpu), machine->kernel_filename, NRF51_SOC(soc)->flash_size); } diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 9afa6eee79..2afaa7c8e9 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -436,6 +436,7 @@ config FSL_IMX6UL config MICROBIT bool select NRF51_SOC + select LED =20 config NRF51_SOC bool --=20 2.21.3 From nobody Sun May 19 09:23:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1591984695; cv=none; d=zohomail.com; s=zohoarc; b=f1XFmxobO9/6AZSyoaB8kZNrV40AXu3ZPfZu5e+rvz2lpNDXd6/Hna0RA/yjCnFXhzsDRlBNIJyFmRmwmPIu0YEC3jxJvSh42Hl+PtmBCmNVu/zKZM4rznqIb0ntOUGGZaIONgyXuAbbhHglFCGbg61fXeYxcz2KYhZMkpF+g3Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591984695; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=oEq0TkRWvRrnUcFx8Wkpo5gILqhLeSIEML9csKX17G0=; b=Al1IlIZknkqiohcZNK7fXg3tgqayWf0XbHFuhBJxWdDNTSuCRMEmBBwqs/9HTuL0YbAkHXG4nLrMKszUNfaly1LKtBTzKbyPATJ9u2q86pThEDDE2mgFPevBXp+daUy4efEuif5c7hZ322yMVi6jgf4Tj4zF/MXOamyaMLOBinY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1591984695917628.7184936691033; Fri, 12 Jun 2020 10:58:15 -0700 (PDT) Received: from localhost ([::1]:52098 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jjnwU-0003So-O5 for importer@patchew.org; Fri, 12 Jun 2020 13:58:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55576) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jjntT-0006u2-AN; Fri, 12 Jun 2020 13:55:07 -0400 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]:35311) by eggs.gnu.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jjntR-0004Cg-PU; Fri, 12 Jun 2020 13:55:06 -0400 Received: by mail-wm1-x344.google.com with SMTP id q25so9089779wmj.0; Fri, 12 Jun 2020 10:54:53 -0700 (PDT) Received: from localhost.localdomain (181.red-88-10-103.dynamicip.rima-tde.net. [88.10.103.181]) by smtp.gmail.com with ESMTPSA id e12sm11288658wro.52.2020.06.12.10.54.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Jun 2020 10:54:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=oEq0TkRWvRrnUcFx8Wkpo5gILqhLeSIEML9csKX17G0=; b=tSls7Xr5NRKPwqv8Uq1rteK3FiLDw0JpmsDJBUlOqLAVB07fOIo/2FW1zhQyLP9mCP N9RAN6zh4XnwRZ4hBy+MV/pL74wlStmb8tVZnBcrEjXQSZc8Xjv4UqiMht8d3/3axt7t 2dAVOnns/s6fVtGpzUkpCEXp2QxHpiD1KobI6g/31cA77cne5VgR+GYJgYrYaccNRUFW jpuVrWm8neM9sUCQZ86zJLmg6cx1UX+Xtwc1RVcBzHLMxS1HsAL9iB/gAPE+zwJET6as SW8s9eIBz/CW8QK0IC8vF9EYs5SiJA1y5A+9JoJztSeIFO3ZPgNUC8Kf3MnTQJ5Qaay+ 2/lA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=oEq0TkRWvRrnUcFx8Wkpo5gILqhLeSIEML9csKX17G0=; b=WchU8aXLnAX7gddi5DWMZpnaxgv0L935OAm98n8B3q9EA7IyB4U313C4ftyScqPufh OKkrWoQ70viq5wt3i9dF38WWb83w77SNx0o5apvsXvtPOP3UztvXaZEbzwVEVPAupwm6 hBJRCKxHAt65RvqJjIba/Xc2ZTvXQnc5wYHVVFWx9lezSwSMUR3nFqVKSIxwnuw/7ZW9 BOlolduzty94+woE9YxZsg8zwZaO2KlKpvTPPoqgwExiourTxtie2Q30eY9eAAPww1Y/ me1jvBNAmSKRHP+3FqzrEMAi1ST6yHWtAAeIEmOKthNsmUC424ewPIgIJPmVbjl31cmd BlAw== X-Gm-Message-State: AOAM5330zlyC6Qgl+T6umrt4q+PXFT6Uw8dQiRqJpwFOs5br7g6U5ECC cHZjf2ORj9LLMJX8wTj6P58+TrBC X-Google-Smtp-Source: ABdhPJz49odJZuQjyI2HnB6Qn/Vvh6TN/jwHkmxFCwKpxG+DFP6i/o7nOBue1IJbVBHXLnyFDdQtDw== X-Received: by 2002:a1c:ddc1:: with SMTP id u184mr74492wmg.115.1591984491897; Fri, 12 Jun 2020 10:54:51 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH v2 5/5] hw/arm/tosa: Use LED device for the Bluetooth led Date: Fri, 12 Jun 2020 19:54:40 +0200 Message-Id: <20200612175440.9901-6-f4bug@amsat.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200612175440.9901-1-f4bug@amsat.org> References: <20200612175440.9901-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::344; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x344.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: 0 X-Spam_score: 0.0 X-Spam_bar: / X-Spam_report: (0.0 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=1, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Michael Roth , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Dr . David Alan Gilbert" , Markus Armbruster , Esteban Bosse , qemu-arm@nongnu.org, Gerd Hoffmann , Joel Stanley Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/arm/tosa.c | 7 +++---- hw/arm/Kconfig | 1 + 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/arm/tosa.c b/hw/arm/tosa.c index 5dee2d76c6..86d7e0283a 100644 --- a/hw/arm/tosa.c +++ b/hw/arm/tosa.c @@ -24,6 +24,7 @@ #include "hw/irq.h" #include "hw/ssi/ssi.h" #include "hw/sysbus.h" +#include "hw/misc/led.h" #include "exec/address-spaces.h" =20 #define TOSA_RAM 0x04000000 @@ -68,9 +69,6 @@ static void tosa_microdrive_attach(PXA2xxState *cpu) static void tosa_out_switch(void *opaque, int line, int level) { switch (line) { - case 0: - fprintf(stderr, "blue LED %s.\n", level ? "on" : "off"); - break; case 1: fprintf(stderr, "green LED %s.\n", level ? "on" : "off"); break; @@ -119,7 +117,6 @@ static void tosa_gpio_setup(PXA2xxState *cpu, qdev_get_gpio_in(cpu->gpio, TOSA_GPIO_JC_CF_IRQ), NULL); =20 - qdev_connect_gpio_out(scp1, TOSA_GPIO_BT_LED, outsignals[0]); qdev_connect_gpio_out(scp1, TOSA_GPIO_NOTE_LED, outsignals[1]); qdev_connect_gpio_out(scp1, TOSA_GPIO_CHRG_ERR_LED, outsignals[2]); qdev_connect_gpio_out(scp1, TOSA_GPIO_WLAN_LED, outsignals[3]); @@ -234,6 +231,8 @@ static void tosa_init(MachineState *machine) =20 scp0 =3D sysbus_create_simple("scoop", 0x08800000, NULL); scp1 =3D sysbus_create_simple("scoop", 0x14800040, NULL); + create_led_by_gpio_id(OBJECT(machine), DEVICE(scp1), + TOSA_GPIO_BT_LED, "blue LED"); =20 tosa_gpio_setup(mpu, scp0, scp1, tmio); =20 diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 2afaa7c8e9..009336cac8 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -150,6 +150,7 @@ config TOSA select ZAURUS # scoop select MICRODRIVE select PXA2XX + select LED =20 config SPITZ bool --=20 2.21.3