From nobody Mon Feb 9 10:51:44 2026 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=1591706609; cv=none; d=zohomail.com; s=zohoarc; b=mj08cZXIBbDOR87BnjXWwVApBN3ejTPx9PU+pv4RhUmCBSF+eQXDe2tqcFwA6bD+lrXAZlw4fJN9MeQcudZIuK4b1eGiJXjoWW7l/m+Q3R3qwk3xZVPgVqq64zzkM9NYzGn+pwXgdOKF6/W8IC2GmZeHeG3oKpRuWvr884FrjTc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591706609; 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=0srfxT0e6nUZFR6Iq4rRmoV3V4fYm5JRcQS2tAU0vxw=; b=MfOzEH7VsITF/N9ypHyTcHZpNAw/C7eZaEeE7J4OfUT6zzWbcr+1nc4zotHr8eFHhvHpMTnfUZF8nstFdsbMuSstD2llKvOt4ftZCXLL+8aa54oN3hXOMsK+5bhH+L0CEYWfynCSwtDC9mDET7mekpalipFfyPFKcVCQTKf/2Eo= 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 1591706608933193.38271147669127; Tue, 9 Jun 2020 05:43:28 -0700 (PDT) Received: from localhost ([::1]:33100 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jidbD-00049j-Ll for importer@patchew.org; Tue, 09 Jun 2020 08:43:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42964) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jidSj-0000Im-4F; Tue, 09 Jun 2020 08:34:41 -0400 Received: from mail-wr1-x443.google.com ([2a00:1450:4864:20::443]:35981) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jidSY-00074L-Sc; Tue, 09 Jun 2020 08:34:40 -0400 Received: by mail-wr1-x443.google.com with SMTP id q11so21138761wrp.3; Tue, 09 Jun 2020 05:34:29 -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 c81sm2920931wmd.42.2020.06.09.05.34.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2020 05:34:27 -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=0srfxT0e6nUZFR6Iq4rRmoV3V4fYm5JRcQS2tAU0vxw=; b=hBijAd/46i+x7ednlZBvGseJgaQjQRWhOSbsj0oI54n58nUqF2S530xr6+XpaaxarS bSRcSx05lnubiKRWMMivA6eVzr33/6btMppdsbdwV9SPavLLyhXN71v5RWvJAcucMmKc 1JzVJPalhJpkCLJwOJiRDoBvdWFZvnQuakM4NMjR39SX/ElSpjiYe1IL4BEemcUwbLup y7iyJO+d+cyBOyRjPKKbyGnOxiEJMYBP9tfT+C1S6rGmDhL5u3V+s/MDnY5i49TzERzx J/bYy6WCr/rWVGTVD+tSLOjvb67sphqTZyHta0/KKfmVjktOPuJVSSOoycQ0RofsWmHP 0+cw== 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=0srfxT0e6nUZFR6Iq4rRmoV3V4fYm5JRcQS2tAU0vxw=; b=nfq7/2pFUQvEYUbopx331ppKuebGJiil9Sv1XmEUlKskwHzf/OrvXAkHmz1Ek2SFoh Z/EzFO/qU10gc5smHvEirnjEMAoPgiDtvABgA1wRTrbLfvpIk5+0Y6/IC41E/PIxCB2a xMFWO1ezsTs2oILB0phf/2BpSoQMGCbh1KF5k+/NMlHBkt4YXZ+UUV+PkHLgnidAzDzF ILVuuCTQVs28rE0EW7knrwF6nsUe1BGuK0DPBY/t5cEcBaiblJ0oIYCZaWw5st8r0chJ KGmq2zXkt+XzSMQVcyO97Wp1nMbQD2wcmLz8eFWp7moDaEspRnm9hifCQsRHL/8JNadK n4XQ== X-Gm-Message-State: AOAM531Cg7J98a9ZZ2dAeGcNeBj5+x/bSCiDfyQmBDZPNwWz/2EhS0GQ Dd4W14/2SSFpZAWbRo3IpPETW5Um X-Google-Smtp-Source: ABdhPJy2WD9lDZkba//FSINYDayYvNVeUe+164Bn2+TAEAIOvjAyUjhRfNiYc3sWKed+xofFa7t8kQ== X-Received: by 2002:a5d:4c87:: with SMTP id z7mr4167824wrs.100.1591706068136; Tue, 09 Jun 2020 05:34:28 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH 1/5] hw/misc: Add a LED device Date: Tue, 9 Jun 2020 14:34:21 +0200 Message-Id: <20200609123425.6921-2-f4bug@amsat.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200609123425.6921-1-f4bug@amsat.org> References: <20200609123425.6921-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::443; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x443.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: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.001, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=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 , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Joaquin de Andres , Michael Roth , Markus Armbruster , qemu-arm@nongnu.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , 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..dc61b11017 --- /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 "hw/qdev-properties.h" +#include "hw/misc/led.h" +#include "hw/irq.h" +#include "migration/vmstate.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); + + s->current_state =3D 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 6e7890ce82..f873f0b94a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1864,6 +1864,12 @@ S: Maintained F: include/hw/misc/unimp.h F: hw/misc/unimp.c =20 +LED +M: Philippe Mathieu-Daud=C3=A9 +S: Maintained +F: include/hw/misc/led.h +F: hw/misc/led.c + Standard VGA M: Gerd Hoffmann S: Maintained 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 60a9d80b74..aae07033f9 100644 --- a/hw/misc/Makefile.objs +++ b/hw/misc/Makefile.objs @@ -90,3 +90,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 a5862b2bed..55d7143f23 100644 --- a/hw/misc/trace-events +++ b/hw/misc/trace-events @@ -198,3 +198,6 @@ via1_rtc_cmd_pram_read(int addr, int value) "addr=3D%u = value=3D0x%02x" via1_rtc_cmd_pram_write(int addr, int value) "addr=3D%u value=3D0x%02x" via1_rtc_cmd_pram_sect_read(int sector, int offset, int addr, int value) "= sector=3D%u offset=3D%u addr=3D%d value=3D0x%02x" via1_rtc_cmd_pram_sect_write(int sector, int offset, int addr, int value) = "sector=3D%u offset=3D%u addr=3D%d value=3D0x%02x" + +# 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 Mon Feb 9 10:51:44 2026 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; dmarc=fail(p=none dis=none) header.from=amsat.org ARC-Seal: i=1; a=rsa-sha256; t=1591706813; cv=none; d=zohomail.com; s=zohoarc; b=lSk9DmCTQZ8sJoCaphRgWQz+Kr0O6FLTMU+sRYxJP4fDkW+S+UbLL5EA+/zD5KzrKVr96GdobUAQpW/e6s+//YY88xCGqTqssX//h4F6hZIOASbcM10vqtk/SYozWA7ppT/nSEa+G9QKz4xFEH1Jxl5awmL/cfQLtsg4uJEs0AQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591706813; 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=rU9HLs+zXLkedYHMwBLBpdL3JHM8xoCUj3TGxvPYxeY=; b=eujD1hpsH3Q0fb9NbZjle6vIOBbiAfsq4DaIwFEwNxrQ6zpPvBa+1cEL6nSqYHSMRiVd1Sh/7C/9nYrrXzrALN24/xSKzTPrtd+tliERdM8A4Dyr4oP4jMsF2svdnvDejNgyPJMA+MsECbl2KRHZo745d7AoHoTiA3xZKSrMQ8E= 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; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1591706813676238.6818424349433; Tue, 9 Jun 2020 05:46:53 -0700 (PDT) Received: from localhost ([::1]:45026 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jideW-0000im-Dq for importer@patchew.org; Tue, 09 Jun 2020 08:46:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42982) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jidSp-0000L7-A7; Tue, 09 Jun 2020 08:34:47 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]:51358) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jidSe-00074Q-Eu; Tue, 09 Jun 2020 08:34:43 -0400 Received: by mail-wm1-x32a.google.com with SMTP id u13so2681125wml.1; Tue, 09 Jun 2020 05:34:30 -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 c81sm2920931wmd.42.2020.06.09.05.34.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2020 05:34:28 -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=rU9HLs+zXLkedYHMwBLBpdL3JHM8xoCUj3TGxvPYxeY=; b=ajL9ik/U9YZSOAlRmrlwhxpXxQ8ivo/blxtiC5fH8rUlSHyKfOtLAoIkAMJkTYCCTW v+35E+Y9OKM3BI/A84acaxg15TsHxDtvg/xSOZ5Oj8A+yYsNa86KuEedqtVfDBss5myS o21TbkuwrmHqSQw5Vt/VY+5XLV68jiY1IAb7X5yFwOEi0alulJ+NG4KiqSIDvSvvCadF tEE1cf7Nc4ICXaIWGDLaVd/CvdYIHCjijgCAz8fn3SYbWlu9T34x9OMsTeaVSODqFhcI 6r8/G9j7IDluVSrNEvKs27YaIwzq3kxOZq1NP50bmCxtJMvaeIkW9KKs1Kdsu/hR+Ju1 IJMg== 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=rU9HLs+zXLkedYHMwBLBpdL3JHM8xoCUj3TGxvPYxeY=; b=LXYvwS+FPqoCdOCqYKTYCDcdIZs4mHO3doYeOaIl7PQYc1eTPmxtcvAFsotNxVK8t5 qFH8dCKpHjWEymjQQ2wQ62gjDLADd4R27NvfCmhOFooLWVAlcvegsLtWVzh+vqk0qlwo +uaTQuNamyQq/jkkAHpUHY7aai16uLaWRdfrYD4tmlFXQrcJZgdveaybiFST/uV4SWPs Cq6OUi2fstMy4Z5pgbfJdC2Kb6BMJfHIvnUrJULyVnZf5fXhQs9z3iRvcSAPzJYpXFET isgLzOLWBEywBnQVkKV7DceeKoKnlnrLmFq6oSUWNQFmZyHrzHGOTi3RB9g1Kap8RXaP Kv9A== X-Gm-Message-State: AOAM531+sQuvWnBY+FdErKFSOGK5BOcmlO8i7eejvgU1B9OZdeCyxzC/ pz+NdNX141npZb+/Z5th3jQDFP4t X-Google-Smtp-Source: ABdhPJwyFNfIA1BaqLFKvyBOElxlngjJS7o89XdbSemKmaZmdyNgP5WsfUKlAEq2G6QoqGT8EgHPSQ== X-Received: by 2002:a7b:cbce:: with SMTP id n14mr3978268wmi.66.1591706069364; Tue, 09 Jun 2020 05:34:29 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH 2/5] hw/misc/led: Add LED_STATUS_CHANGED QAPI event Date: Tue, 9 Jun 2020 14:34:22 +0200 Message-Id: <20200609123425.6921-3-f4bug@amsat.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200609123425.6921-1-f4bug@amsat.org> References: <20200609123425.6921-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::32a; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x32a.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: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.001, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=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 , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Joaquin de Andres , Michael Roth , Markus Armbruster , qemu-arm@nongnu.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , 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 --- qapi/led.json | 47 +++++++++++++++++++++++++++++++++++++++++++ qapi/qapi-schema.json | 1 + hw/misc/led.c | 4 ++++ MAINTAINERS | 1 + qapi/Makefile.objs | 2 +- 5 files changed, 54 insertions(+), 1 deletion(-) 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/hw/misc/led.c b/hw/misc/led.c index dc61b11017..233843f581 100644 --- a/hw/misc/led.c +++ b/hw/misc/led.c @@ -7,6 +7,7 @@ */ #include "qemu/osdep.h" #include "qapi/error.h" +#include "qapi/qapi-events-led.h" #include "hw/qdev-properties.h" #include "hw/misc/led.h" #include "hw/irq.h" @@ -19,6 +20,9 @@ static void led_set(void *opaque, int line, int new_state) =20 trace_led_set(s->name, s->current_state, new_state); =20 + /* FIXME QMP rate limite? */ + qapi_event_send_led_status_changed(s->name, new_state + ? LED_STATE_ON : LED_STATE= _OFF); s->current_state =3D new_state; } =20 diff --git a/MAINTAINERS b/MAINTAINERS index f873f0b94a..9ff84498fc 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1867,6 +1867,7 @@ F: hw/misc/unimp.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 Mon Feb 9 10:51:44 2026 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=1591706729; cv=none; d=zohomail.com; s=zohoarc; b=a/H6ZikQQrCiteNUUMqRIv7qV7VinTPkoOIGLhaREOMHJ8o5aK/4qSEGkie9Q8aklup3yKx+EJZcDEuYXu3smzcJ0WRMZHP1z+4cAuSi0hMxZW75gLsoSWKqEifePaUQpEIxN610iClArSD38S/DEOp2+nbR+3mXpXKCEVFT1zI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591706729; 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=l+sqnGxutMS7S4hG3iKjsUBAXpEh0W5dJMui9M/7l+Q=; b=kXv7nux19SysaFf+XVEK+sJfOTFaY8siiPtBsUiHYUlYj/lvtDBSwv07JnEgeTn9qvXUNhoQxqKjLzLut7zGXB8tAl0qrl4Q4WEOtJ4mP/WA+lCu1ZnsvIxwFAEjPjUMd96cY90r7qX09uDPRdsw++0svkEZoSMTm0/x6Ul2YiY= 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 1591706729102273.29950649413684; Tue, 9 Jun 2020 05:45:29 -0700 (PDT) Received: from localhost ([::1]:40456 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jidd7-0007BX-P8 for importer@patchew.org; Tue, 09 Jun 2020 08:45:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42984) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jidSp-0000M5-KE; Tue, 09 Jun 2020 08:34:47 -0400 Received: from mail-wr1-x441.google.com ([2a00:1450:4864:20::441]:39003) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jidSe-00074i-Hm; Tue, 09 Jun 2020 08:34:43 -0400 Received: by mail-wr1-x441.google.com with SMTP id t18so21115874wru.6; Tue, 09 Jun 2020 05:34:31 -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 c81sm2920931wmd.42.2020.06.09.05.34.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2020 05:34:29 -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=l+sqnGxutMS7S4hG3iKjsUBAXpEh0W5dJMui9M/7l+Q=; b=rNR3ApgveJWwvJDFhJ1IHBCPvRP2djQPNMMu/l2o5r+IK8aaHIOdsyVqZONAuAVG5n SSGV+hE3uNMDibES9uA7pDUmFkIQ3UYoA/4VyhHkCFoW/GnQ93fYz93FyIti9fcC6HtS OnuR2+f9+egw1CEK3SOwH9ftG6XhyWnbj3KfZVOlVjQdxyeUDhUbWrLnXTcf8IU55pSQ wsnvB0Iv3IChPzicuT8AJTmeW8IDi3kBXCS5lBiwVX0UBcSTaEFMBNxSMJp7oYwPoRb3 im/ibldYmAcg0K9qcwnkOQifHbVNNyZI13vvbV72JFYc2u6qv8mjS16Oy7saA9q2u4yt nI8Q== 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=l+sqnGxutMS7S4hG3iKjsUBAXpEh0W5dJMui9M/7l+Q=; b=fFkz4bdkNy25QLojLZUbgm8EYLpHQfivQjdK5ymUMRjkVOY8JbmejJYNnBXjcqHSwx +CtsI9qzMJXTcpxIFURXCta3KBIdzcSkFDRJ8z4c/jkqQEpPu9ZL647ZZKC5NJUUsOG/ 9sHtDRSryh/mtNXYYOKIZfBGKZh0F+5agRZ/zDZNqT7n/ZLeOfbcN7aKdmKTnW8xU0r7 HZOEZTq9PAkMpcozEYuajJmdC9iUmkjtcOTWHEXvYyW3JZuV2qK8CETnles5kQgRzGIf 4e/IIXuqCoDo6o3NKze8klgDNnMUZUr9k7tHBhSqXrSZNfcDkxKFixrNTIIYgdMjOOYU Ec/A== X-Gm-Message-State: AOAM532P3K4cIRHihJYTy5klrO1Lpku+5xrD8X1Ze92VRxXono0dfV7X 6MBG9+1FEoJJIfIP0vnJm0h7512h X-Google-Smtp-Source: ABdhPJxIkIw5hvZ5XCCJBD6CQvXERDw2Jdb6ATD6aCR/4WE7i65U1P0Uf2uRRIFXV3w1wsjCgdlCDg== X-Received: by 2002:adf:e887:: with SMTP id d7mr4148418wrm.62.1591706070498; Tue, 09 Jun 2020 05:34:30 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH 3/5] hw/misc/led: Add create_led_by_gpio_id() helper Date: Tue, 9 Jun 2020 14:34:23 +0200 Message-Id: <20200609123425.6921-4-f4bug@amsat.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200609123425.6921-1-f4bug@amsat.org> References: <20200609123425.6921-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::441; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x441.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: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.001, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=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 , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Joaquin de Andres , Michael Roth , Markus Armbruster , qemu-arm@nongnu.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , 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 427ca1418e..58393c16de 100644 --- a/include/hw/misc/led.h +++ b/include/hw/misc/led.h @@ -27,4 +27,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 233843f581..27882e2f9d 100644 --- a/hw/misc/led.c +++ b/hw/misc/led.c @@ -86,3 +86,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 Mon Feb 9 10:51:44 2026 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=1591706585; cv=none; d=zohomail.com; s=zohoarc; b=LFDItblxVMBgWzJCNL5NibhHmu0coKvkyhhWbi+oZnPj0Iwzml4CemQ6ouiTx+tDBuLN3Gc9Y5ob63IU/tJamJsDlHnyJACFF2yihKHutlZ2OmOHra9HDthkjfYZljB1M/uE/+4W/x5TpaQmSqDLe+rcINq3P6Wv90El71GwZG4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591706585; 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=I651MRROvVi6hAm37NKagb0Y/Fkvn+1d/qi1vK0HwcujF5rKhve1a70AgF9HiXpKS1myy1dPfNMq3RzEfZjatT7SyOo986UgejXLU2nxENFqgLiXTZ6+CPYDzvSfxD2GaWAuF7Jp6l8o8cNCzjjWZ91Vbr1RDYFrS6KGaU0oxpI= 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 1591706585587600.1959036905586; Tue, 9 Jun 2020 05:43:05 -0700 (PDT) Received: from localhost ([::1]:59102 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jidaq-0003H6-9O for importer@patchew.org; Tue, 09 Jun 2020 08:43:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42976) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jidSl-0000Ka-01; Tue, 09 Jun 2020 08:34:43 -0400 Received: from mail-wr1-x443.google.com ([2a00:1450:4864:20::443]:45091) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jidSe-00074m-Hs; Tue, 09 Jun 2020 08:34:42 -0400 Received: by mail-wr1-x443.google.com with SMTP id c3so21079926wru.12; Tue, 09 Jun 2020 05:34:32 -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 c81sm2920931wmd.42.2020.06.09.05.34.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2020 05:34:31 -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=A+IwQqfzZ+5v2HFoHECHAYAzj7L02eM8u7Jm0dSoZuC8n1JM027M8u4oe2bzsVT8jS gdLBfgknG6VLIfHQFO0J0L7XgVf+znqCjZzY8zDPUnoxLUhAwP/lhdv6xY9tg5UbYk7y 2wsN55zcYtRU7imbsMniZa8MZbJOmgF9pYRDkAMaek87rN2+HjqVWFeV+Ivsz24UkcC6 MNweAGONHAzAobpasUjAHo/seL653m2OAWXm34UKM35rFt3/hFYy++je8R1gz4vzwvlW UdDRUWTBdkGvQtqvGbAftWrCnH89nIlVHVUoT8vvVEPzYfKpsPKGUBi+zC4n2jhtuVln 64Bw== 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=DxCSGWKvHix0l7NVI0GMoCPW/ZS1502n9vYyUYmhKn43PhorlUbAr5y/8BHeJSojzP zvVFHE3x+JxSdz1/1reVgz58OMFdH3M7EZDLTdv7Uml2w0AGzib7d8SEZBVlTXa6Nqdt 8EW25/rJwkoVNtNfkmWhpRoarE+hrSdDP0Z4ZsqXrDGZJfLK4Ivu00eENFCyTWnRCSvC SXAYg32GUXjhY1cCL7jlkcoUNp9IGp5xf1LUXWamWuPBUbwwAwlkdhoFUetUYZPi91Ap eKmTOAHXfpw2AVxeXydrGPaCNJCw+gjPrOSUHkI4gvGeHZwX2XOgoQ3QAHcaLh2p8uvO zgiA== X-Gm-Message-State: AOAM5323Rw+pPMeratNWPohTx01ao8IfDWoiL3BopPplEeGZIh/hJ2Ew Z0d0Ro5HyMXju2qp6dqUYxN8FNo7 X-Google-Smtp-Source: ABdhPJydAGElYgsGBepEtI/dotiHGsoXnC+EmKwiZ0oUOgGMlOwVP5jrNx6jKdpeW4DUUeL9cwa0Mg== X-Received: by 2002:a5d:5270:: with SMTP id l16mr4225546wrc.80.1591706071648; Tue, 09 Jun 2020 05:34:31 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH 4/5] hw/arm/microbit: Add a fake LED to use as proof-of-concept with Zephyr Date: Tue, 9 Jun 2020 14:34:24 +0200 Message-Id: <20200609123425.6921-5-f4bug@amsat.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200609123425.6921-1-f4bug@amsat.org> References: <20200609123425.6921-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::443; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x443.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: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.001, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=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 , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Joaquin de Andres , Michael Roth , Markus Armbruster , qemu-arm@nongnu.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , 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 Mon Feb 9 10:51:44 2026 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=1591706645; cv=none; d=zohomail.com; s=zohoarc; b=G/sO8eNX6vetf1LoI4smYELJ9YrkHr7MP8xpHi+jiAJsZ4bn+6hqq9lBqMwtRNYD3bOdQTJivwb3v3s9k0VGGh6YEGhDCVl7IEbMvLXoVY9C5osf9Ik0IVwSvRaq8g8RYvjFuobFZdcin+Z31ckmXVz8cjLXplF33CBqicCMkvE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1591706645; 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=c5EccGcTJ5sFVti5t7LYzVDEFNZdq0gUwuAVuhknU3EVAH7XFzHr2IYC88tCZ/itVF4ZVQ8dnQhe6VHdH/lwdcPf+X6eeWddc1QnNsHI2LaSH8J3cHB6qESYuhVV+b+o+6Cm0dCZjRzsV1ih+vR2VUixdy3kbal5wDZ7IBxuUyU= 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 1591706645360575.547682331856; Tue, 9 Jun 2020 05:44:05 -0700 (PDT) Received: from localhost ([::1]:34888 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jidbn-0004u9-UU for importer@patchew.org; Tue, 09 Jun 2020 08:44:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42980) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jidSl-0000Kh-Cx; Tue, 09 Jun 2020 08:34:47 -0400 Received: from mail-wm1-x342.google.com ([2a00:1450:4864:20::342]:37768) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jidSe-00074q-JD; Tue, 09 Jun 2020 08:34:43 -0400 Received: by mail-wm1-x342.google.com with SMTP id y20so2978780wmi.2; Tue, 09 Jun 2020 05:34:34 -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 c81sm2920931wmd.42.2020.06.09.05.34.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2020 05:34:32 -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=rvbccWKE3d+cDt/172b58PZ+gdd6E5JYTEQHgPimsvA4PwpQO8r7Vn5HvhUgvBM3bQ 4ppf/EBX3LqRCPMX335r4gQGV2286aKt+eFZbris7I1K+cPLsAseuUVGyx/rWMtiicvn AaZ8gMHJgypjDvqEcVuOtVFWCKNAiXI6/n7z28Yro48n4bJ6bQ2vPjbMGMcL09QJhSEC pXF+N/TfnG7N9JWLku0mUUQnDtDAMWSO6I1RM/YRFi9mlDukxQdr5OAEdY+D51yDaske iiNeNp4ZP7vtNV8MXw2lvThYup9RqB3Tr87jMtT8KJRVokfYzHv/JBjB555AcGAQpOUg 6ltw== 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=OJWGL8wURDEJlpuhSXVys44gZ2069JTuSCdi/6TK0FGQ0VkXzuvCikKIe73LZ26lKf bDf7xshINlw9c+GXfcCILNSyvPKknyrVb2OCNZYIre3exjB8U1x/3dSObK1QyEh4tJbl B+6W2Xzb4jzYyQ0ccAvN0A7GanRJIKKhl6/B6m01ATzNSLGZJOlevJeCq+hW2UecS5gW ypWzTvyzwnW5mJyFPf2et1p1dhTTtUNp3si7JVYIiariu5OmokcG+GEl/fllJOlTW9QM 1Z0a5pjW45IgmJqMIMjX2ylXDYQo/zMhMY/RE8F+q29GsWtTaSa9M0TlHVgvgbAPuHPp t/MA== X-Gm-Message-State: AOAM533l1s08hpTzu6AI1adZ03ym4okRi+Xy41fOz4R9TfKjXiEOMycj CHoJHp0/NVCRp33D4dmyg8iguzU3 X-Google-Smtp-Source: ABdhPJzzwVjGOsXWe6jd7iSJe6Bqhpi5WsewuOtGikzvGcXBTE5aBzkGHFSoHWpK7L6kpgBWD9d2bw== X-Received: by 2002:a05:600c:287:: with SMTP id 7mr4013337wmk.91.1591706072771; Tue, 09 Jun 2020 05:34:32 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH 5/5] hw/arm/tosa: Use LED device for the Bluetooth led Date: Tue, 9 Jun 2020 14:34:25 +0200 Message-Id: <20200609123425.6921-6-f4bug@amsat.org> X-Mailer: git-send-email 2.21.3 In-Reply-To: <20200609123425.6921-1-f4bug@amsat.org> References: <20200609123425.6921-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: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.001, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=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 , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Joaquin de Andres , Michael Roth , Markus Armbruster , qemu-arm@nongnu.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , 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