From nobody Thu May 2 07:02:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.128.66 as permitted sender) client-ip=209.85.128.66; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-f66.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.66 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1599771275; cv=none; d=zohomail.com; s=zohoarc; b=UxM+6/9Up+Ibo20soqy3mYMhFRjICacd+AwbLyzXB1t2V0dRoVqPMbcPmKZww2lLiv9gmchIHGwN+ghcdywtHWivp/AJtm1yfvJZ06vl1VhmtXAqj9oS995y9agHoY4AeNjyBqZ3XmBiOeLnvBVU7CMXuYZJu47M8UWiJ6MbRbE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1599771275; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=XbPWkZDQFZTFzxM3NgUg96m1QQb5/GeK1JAiZFw/yJE=; b=gvoeDyG90l+JX9jn53jCm+WimZqCVKWyXEBfIp2nfBZfRhqC2JFhyZqB8Va4K3kMGMkx2YydiV8NQygaIq6Dk9oIpZcI85WH+4Wv9E/NZoNSh/A7LV+rt2cOijFRyPla6CJFlPT0zJEmAzfNeBfv7AWHn1H1wVUYuXzmD1pm5/E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.66 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by mx.zohomail.com with SMTPS id 1599771275088220.65316649566864; Thu, 10 Sep 2020 13:54:35 -0700 (PDT) Received: by mail-wm1-f66.google.com with SMTP id s13so1840437wmh.4 for ; Thu, 10 Sep 2020 13:54:34 -0700 (PDT) Return-Path: Return-Path: Received: from x1w.redhat.com (65.red-83-57-170.dynamicip.rima-tde.net. [83.57.170.65]) by smtp.gmail.com with ESMTPSA id t1sm5089317wmi.16.2020.09.10.13.54.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2020 13:54: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=XbPWkZDQFZTFzxM3NgUg96m1QQb5/GeK1JAiZFw/yJE=; b=PwCbOOwgLA3bV5IsJZ6O7Bbz2TLSuo5WGgS7qZrn1RBl4HaBFSGWnv3BLfFHi+SNYU uyc0x5n+B8BVc462mBkmUkJ+d9v2fJpeG0S7fty1Ku8Wy0tWZ+6unrULo85aCxBs7fe4 yO05iORfsLEOx56MNQLyao2J2rLMIcsSJhLWlYkSkXk9gQLhTYoCyGJDDRWzGPNcQfx7 HxilxwnpN8Yf5BWz4xeVW5VkFP23Cryr5pU/HK14iFZcv9hfyo5a7U/IPcatuyU0nVXy S7IVc70wleIf/zAMxUQ3IxdpByUssbLWTbS8oAraRTWGglCmygL20QToRKgVnAeQvZoB aq5A== 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=XbPWkZDQFZTFzxM3NgUg96m1QQb5/GeK1JAiZFw/yJE=; b=ipATELCvu0s5t6H0wldd1ZupF6ZTDvcuiw8CstVi3EEnhypRvk7qHwYJGvlT71HKiG P/skmlW76zXaMtnybB0Uk1M3Aun6y9hAQx2aF47pqywujmj5OfI6VJuVdGNFTjCSQ0un xhCpsePtW4EW82reUnl3YlSjXQKJbUeX7yHHhFR7QGkSsTfLTYWDHi/1uwkJXIdCkMfp CTjxt4/Qx3JYcuoO2OYHITNgmFWxhu0FDyTMC8N8E1eXnqSmq04xi3X2enPISXelARf3 OBgBK9hPJvXtG0hFhVD1+xmA6tSmg/nbSUDbyJ7AsWEB6c8feZPNwQ3LHqfNesxUTfWQ MZlA== X-Gm-Message-State: AOAM533IZnP5B88emYicNuv5bdKznkeMANgqVqAx0Asr6xeUb/9QNHU/ gBZm9SFM+Le39ZdozGMQxjQ= X-Google-Smtp-Source: ABdhPJwtpnyML1BeKNfWoP/xSX1u7osToDbLggSFDwAfOOMm7se4BpobqA0e7Isq8AHfLJPKWXkLNQ== X-Received: by 2002:a1c:dec2:: with SMTP id v185mr1838030wmg.1.1599771272927; Thu, 10 Sep 2020 13:54:32 -0700 (PDT) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Paolo Bonzini , Luc Michel , Andrzej Zaborowski , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Joel Stanley , Peter Maydell , Eduardo Habkost , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Andrew Jeffery , qemu-arm@nongnu.org Subject: [PATCH v5 1/7] hw/misc/led: Add a LED device Date: Thu, 10 Sep 2020 22:54:23 +0200 Message-Id: <20200910205429.727766-2-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200910205429.727766-1-f4bug@amsat.org> References: <20200910205429.727766-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 X-ZohoMail-DKIM: pass (identity @gmail.com) Add a LED device which can be connected to a GPIO output. They can also be dimmed with PWM devices. For now we do not implement the dimmed mode, but in preparation of a future implementation, we start using the LED intensity. LEDs are limited to a fixed set of colors. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Luc Michel Reviewed-by: Richard Henderson --- include/hw/misc/led.h | 84 +++++++++++++++++++++++++ hw/misc/led.c | 142 ++++++++++++++++++++++++++++++++++++++++++ MAINTAINERS | 6 ++ hw/misc/Kconfig | 3 + hw/misc/meson.build | 1 + hw/misc/trace-events | 3 + 6 files changed, 239 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 00000000000..f5afaa34bfb --- /dev/null +++ b/include/hw/misc/led.h @@ -0,0 +1,84 @@ +/* + * 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" + +#define TYPE_LED "led" +#define LED(obj) OBJECT_CHECK(LEDState, (obj), TYPE_LED) + +/** + * LEDColor: Color of a LED + * + * This set is restricted to physically available LED colors. + * + * LED colors from 'Table 1. Product performance of LUXEON Rebel Color + * Line' of the 'DS68 LUXEON Rebel Color Line' datasheet available at: + * https://www.lumileds.com/products/color-leds/luxeon-rebel-color/ + */ +typedef enum { /* Coarse wavelength range */ + LED_COLOR_VIOLET, /* 425 nm */ + LED_COLOR_BLUE, /* 475 nm */ + LED_COLOR_CYAN, /* 500 nm */ + LED_COLOR_GREEN, /* 535 nm */ + LED_COLOR_AMBER, /* 590 nm */ + LED_COLOR_ORANGE, /* 615 nm */ + LED_COLOR_RED, /* 630 nm */ +} LEDColor; + +typedef struct LEDState { + /* Private */ + DeviceState parent_obj; + /* Public */ + + uint8_t intensity_percent; + + /* Properties */ + char *description; + char *color; +} LEDState; + +/** + * led_set_intensity: Set the intensity of a LED device + * @s: the LED object + * @intensity_percent: intensity as percentage in range 0 to 100. + */ +void led_set_intensity(LEDState *s, unsigned intensity_percent); + +/** + * led_get_intensity: + * @s: the LED object + * + * Returns: The LED intensity as percentage in range 0 to 100. + */ +unsigned led_get_intensity(LEDState *s); + +/** + * led_set_state: Set the state of a LED device + * @s: the LED object + * @is_emitting: boolean indicating whether the LED is emitting + * + * This utility is meant for LED connected to GPIO. + */ +void led_set_state(LEDState *s, bool is_emitting); + +/** + * led_create_simple: Create and realize a LED device + * @parentobj: the parent object + * @color: color of the LED + * @description: description of the LED (optional) + * + * Create the device state structure, initialize it, and + * drop the reference to it (the device is realized). + */ +LEDState *led_create_simple(Object *parentobj, + LEDColor color, + const char *description); + +#endif /* HW_MISC_LED_H */ diff --git a/hw/misc/led.c b/hw/misc/led.c new file mode 100644 index 00000000000..89acd9acbb7 --- /dev/null +++ b/hw/misc/led.c @@ -0,0 +1,142 @@ +/* + * 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 "trace.h" + +#define LED_INTENSITY_PERCENT_MAX 100 + +static const char *led_color_name[] =3D { + [LED_COLOR_VIOLET] =3D "violet", + [LED_COLOR_BLUE] =3D "blue", + [LED_COLOR_CYAN] =3D "cyan", + [LED_COLOR_GREEN] =3D "green", + [LED_COLOR_AMBER] =3D "amber", + [LED_COLOR_ORANGE] =3D "orange", + [LED_COLOR_RED] =3D "red", +}; + +static bool led_color_name_is_valid(const char *color_name) +{ + for (size_t i =3D 0; i < ARRAY_SIZE(led_color_name); i++) { + if (strcmp(color_name, led_color_name[i]) =3D=3D 0) { + return true; + } + } + return false; +} + +void led_set_intensity(LEDState *s, unsigned intensity_percent) +{ + if (intensity_percent > LED_INTENSITY_PERCENT_MAX) { + intensity_percent =3D LED_INTENSITY_PERCENT_MAX; + } + trace_led_set_intensity(s->description, s->color, intensity_percent); + s->intensity_percent =3D intensity_percent; +} + +unsigned led_get_intensity(LEDState *s) +{ + return s->intensity_percent; +} + +void led_set_state(LEDState *s, bool is_emitting) +{ + led_set_intensity(s, is_emitting ? LED_INTENSITY_PERCENT_MAX : 0); +} + +static void led_reset(DeviceState *dev) +{ + LEDState *s =3D LED(dev); + + led_set_state(s, false); +} + +static const VMStateDescription vmstate_led =3D { + .name =3D TYPE_LED, + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (VMStateField[]) { + VMSTATE_UINT8(intensity_percent, LEDState), + VMSTATE_END_OF_LIST() + } +}; + +static void led_realize(DeviceState *dev, Error **errp) +{ + LEDState *s =3D LED(dev); + + if (s->color =3D=3D NULL) { + error_setg(errp, "property 'color' not specified"); + return; + } else if (!led_color_name_is_valid(s->color)) { + error_setg(errp, "property 'color' invalid or not supported"); + return; + } + if (s->description =3D=3D NULL) { + s->description =3D g_strdup("n/a"); + } +} + +static Property led_properties[] =3D { + DEFINE_PROP_STRING("color", LEDState, color), + DEFINE_PROP_STRING("description", LEDState, description), + 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_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) + +LEDState *led_create_simple(Object *parentobj, + LEDColor color, + const char *description) +{ + g_autofree char *name =3D NULL; + DeviceState *dev; + + dev =3D qdev_new(TYPE_LED); + qdev_prop_set_string(dev, "color", led_color_name[color]); + if (!description) { + static unsigned undescribed_led_id; + name =3D g_strdup_printf("undescribed-led-#%u", undescribed_led_id= ++); + } else { + qdev_prop_set_string(dev, "description", description); + name =3D g_ascii_strdown(description, -1); + name =3D g_strdelimit(name, " #", '-'); + } + object_property_add_child(parentobj, name, OBJECT(dev)); + qdev_realize_and_unref(dev, NULL, &error_fatal); + + return LED(dev); +} diff --git a/MAINTAINERS b/MAINTAINERS index 7d0a5e91e4f..ca7f47aa936 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1951,6 +1951,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 92c397ca07a..5c151fa3a83 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/meson.build b/hw/misc/meson.build index e1576b81cf9..26f6dd037dc 100644 --- a/hw/misc/meson.build +++ b/hw/misc/meson.build @@ -11,6 +11,7 @@ softmmu_ss.add(when: 'CONFIG_TMP105', if_true: files('tmp= 105.c')) softmmu_ss.add(when: 'CONFIG_TMP421', if_true: files('tmp421.c')) softmmu_ss.add(when: 'CONFIG_UNIMP', if_true: files('unimp.c')) softmmu_ss.add(when: 'CONFIG_EMPTY_SLOT', if_true: files('empty_slot.c')) +softmmu_ss.add(when: 'CONFIG_LED', if_true: files('led.c')) =20 # ARM devices softmmu_ss.add(when: 'CONFIG_PL310', if_true: files('arm_l2x0.c')) diff --git a/hw/misc/trace-events b/hw/misc/trace-events index 066752aa900..76c9ddb54fe 100644 --- a/hw/misc/trace-events +++ b/hw/misc/trace-events @@ -214,6 +214,9 @@ via1_adb_poll(uint8_t data, const char *vadbint, int st= atus, int index, int size 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" =20 +# led.c +led_set_intensity(const char *color, const char *desc, uint8_t intensity_p= ercent) "LED desc:'%s' color:%s intensity: %u%%" + # pca9552.c pca955x_gpio_status(const char *description, const char *buf) "%s GPIOs 0-= 15 [%s]" pca955x_gpio_change(const char *description, unsigned id, unsigned prev_st= ate, unsigned current_state) "%s GPIO id:%u status: %u -> %u" --=20 2.26.2 From nobody Thu May 2 07:02:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.221.66 as permitted sender) client-ip=209.85.221.66; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-f66.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.66 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1599771276; cv=none; d=zohomail.com; s=zohoarc; b=UW27zRX0rHsu8NPLOwgDULssWkRssd1Y/nS5E8qolwJdtwEiQvuY7hOBkHX+jIUQfVNzMASi+rR2RQPFh5lSIsCt+XdOdTqLNFDWHun7w2pvtNQX9ogVr7gskwUXfBC3pWTU1QG41K3lxSOKVCLAK6EYh3a/K98t+CcqXtRIERU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1599771276; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Q0lfFRL4xWLEBHVRUO7uZKpVUCkRWQqd0DscmUXOlik=; b=Qv2XZPEo78mCHzFLC1d7axVN7navTKYWKR+H3VYc3wK537aGg82tDs7hd8cRJw4m0Yud0VPL/7PN0jAhTyvdU1zFX7ENkoujfkRe9ScY8xPq7djEBL5E8D+DHno8FvCS0rVD42wMNPXa5Vx5vWOrfI/nNMGPbbsR3QVaqHGrYMY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.66 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by mx.zohomail.com with SMTPS id 1599771276287319.15688120169057; Thu, 10 Sep 2020 13:54:36 -0700 (PDT) Received: by mail-wr1-f66.google.com with SMTP id w5so8630911wrp.8 for ; Thu, 10 Sep 2020 13:54:35 -0700 (PDT) Return-Path: Return-Path: Received: from x1w.redhat.com (65.red-83-57-170.dynamicip.rima-tde.net. [83.57.170.65]) by smtp.gmail.com with ESMTPSA id t1sm5089317wmi.16.2020.09.10.13.54.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2020 13:54:33 -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=Q0lfFRL4xWLEBHVRUO7uZKpVUCkRWQqd0DscmUXOlik=; b=n4t4oGP65oBHUYzE2xK0F74MlbEbRT5IAFeK833QZzdZ8LCW8GBjoZwleGAZqgbieN jYNDKs+Td7Q1MghsoZu4BAjSCI21ev9quK6FkVmPetufVnsdhALR0eoh47mVbJi/kcK+ po5rSGPA/Gz8wZggnqAzc58xrNK8K+HWSwBMqmU+zcxVG3wSZ7DTaAUbwApTouEwsIy8 ZQ0rp85u5rNbSl6uUOYjQRF3VpShEJsypvMRfodgbq3rx48a8+Y7zHEdMibFEDlggc5k jstX7Km6cbPCq7lETo7Ypkth4c3DxGK7WAaST/V9Lv2p03Bs/3XbtA4i/c7N0PQ60gvy n/hg== 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=Q0lfFRL4xWLEBHVRUO7uZKpVUCkRWQqd0DscmUXOlik=; b=jfbJVFXgurnOlvAodNwJmjy+ZZBz+BZtVeMjGtMLfOBOqvLJPzmCD1VaTvAF5ssgaE LghNSLC4T5+VF5jQTalV8lH59mIPR61e0+X0sSsTRHQHzP3aZIecbGkrXGvj+/m5G4OA j3AagzjAT3/qvUCl7kNzfCe8uopagkvtI1N74Mn30nO2hXAR/VAB00uLL7mlL+pPxtTN SRKBFaijlsPWIjOwMOpuy51Ftb21k2Mkz/ZyHpC9dW8EC8+2rzHvxkaPHSZTVCyyu6GQ 1ul9+pBWHySPofVdVhYKjazHMhVf1ywYQw/VJeDF3URQLJZGvserDe6LbGvozXPwm+L4 oBng== X-Gm-Message-State: AOAM530a5/1aWDDMv0xOuPWLo7tcV43ud5GPmbqA/7KxPs27BTWX/9eB +4NvY6mJsGOGSFuT/SDJmzE= X-Google-Smtp-Source: ABdhPJx1/klY/b7lHzVg/lHiWf4QfI1RfKvlSI3b28vXALBDwk6fyH5xFOOT+TW2AjASN0LbLXh2LQ== X-Received: by 2002:adf:dd0e:: with SMTP id a14mr10840273wrm.151.1599771274236; Thu, 10 Sep 2020 13:54:34 -0700 (PDT) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Paolo Bonzini , Luc Michel , Andrzej Zaborowski , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Joel Stanley , Peter Maydell , Eduardo Habkost , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Andrew Jeffery , qemu-arm@nongnu.org Subject: [PATCH v5 2/7] hw/misc/led: Allow connecting from GPIO output Date: Thu, 10 Sep 2020 22:54:24 +0200 Message-Id: <20200910205429.727766-3-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200910205429.727766-1-f4bug@amsat.org> References: <20200910205429.727766-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 X-ZohoMail-DKIM: pass (identity @gmail.com) Some devices expose GPIO lines. Add a GPIO qdev input to our LED device, so we can connect a GPIO output using qdev_connect_gpio_out(). When used with GPIOs, the intensity can only be either minium or maximum. This depends of the polarity of the GPIO (which can be inverted). Declare the GpioPolarity type to model the polarity. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Luc Michel --- include/hw/misc/led.h | 8 ++++++++ include/hw/qdev-core.h | 8 ++++++++ hw/misc/led.c | 17 ++++++++++++++++- 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/include/hw/misc/led.h b/include/hw/misc/led.h index f5afaa34bfb..71c9b8c59bf 100644 --- a/include/hw/misc/led.h +++ b/include/hw/misc/led.h @@ -38,10 +38,16 @@ typedef struct LEDState { /* Public */ =20 uint8_t intensity_percent; + qemu_irq irq; =20 /* Properties */ char *description; char *color; + /* + * When used with GPIO, the intensity at reset is related + * to the GPIO polarity. + */ + bool inverted_polarity; } LEDState; =20 /** @@ -71,6 +77,7 @@ void led_set_state(LEDState *s, bool is_emitting); /** * led_create_simple: Create and realize a LED device * @parentobj: the parent object + * @gpio_polarity: GPIO polarity * @color: color of the LED * @description: description of the LED (optional) * @@ -78,6 +85,7 @@ void led_set_state(LEDState *s, bool is_emitting); * drop the reference to it (the device is realized). */ LEDState *led_create_simple(Object *parentobj, + GpioPolarity gpio_polarity, LEDColor color, const char *description); =20 diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h index ea3f73a282d..846354736a5 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -424,6 +424,14 @@ void qdev_simple_device_unplug_cb(HotplugHandler *hotp= lug_dev, void qdev_machine_creation_done(void); bool qdev_machine_modified(void); =20 +/** + * GpioPolarity: Polarity of a GPIO line + */ +typedef enum { + GPIO_POLARITY_ACTIVE_LOW, + GPIO_POLARITY_ACTIVE_HIGH +} GpioPolarity; + /** * qdev_get_gpio_in: Get one of a device's anonymous input GPIO lines * @dev: Device whose GPIO we want diff --git a/hw/misc/led.c b/hw/misc/led.c index 89acd9acbb7..3ef4f5e0469 100644 --- a/hw/misc/led.c +++ b/hw/misc/led.c @@ -10,6 +10,7 @@ #include "migration/vmstate.h" #include "hw/qdev-properties.h" #include "hw/misc/led.h" +#include "hw/irq.h" #include "trace.h" =20 #define LED_INTENSITY_PERCENT_MAX 100 @@ -53,11 +54,19 @@ void led_set_state(LEDState *s, bool is_emitting) led_set_intensity(s, is_emitting ? LED_INTENSITY_PERCENT_MAX : 0); } =20 +static void led_set_state_gpio_handler(void *opaque, int line, int new_sta= te) +{ + LEDState *s =3D LED(opaque); + + assert(line =3D=3D 0); + led_set_state(s, !!new_state !=3D s->inverted_polarity); +} + static void led_reset(DeviceState *dev) { LEDState *s =3D LED(dev); =20 - led_set_state(s, false); + led_set_state(s, s->inverted_polarity); } =20 static const VMStateDescription vmstate_led =3D { @@ -84,11 +93,14 @@ static void led_realize(DeviceState *dev, Error **errp) if (s->description =3D=3D NULL) { s->description =3D g_strdup("n/a"); } + + qdev_init_gpio_in(DEVICE(s), led_set_state_gpio_handler, 1); } =20 static Property led_properties[] =3D { DEFINE_PROP_STRING("color", LEDState, color), DEFINE_PROP_STRING("description", LEDState, description), + DEFINE_PROP_BOOL("polarity-inverted", LEDState, inverted_polarity, fal= se), DEFINE_PROP_END_OF_LIST(), }; =20 @@ -119,6 +131,7 @@ static void led_register_types(void) type_init(led_register_types) =20 LEDState *led_create_simple(Object *parentobj, + GpioPolarity gpio_polarity, LEDColor color, const char *description) { @@ -126,6 +139,8 @@ LEDState *led_create_simple(Object *parentobj, DeviceState *dev; =20 dev =3D qdev_new(TYPE_LED); + qdev_prop_set_bit(dev, "polarity-inverted", + gpio_polarity =3D=3D GPIO_POLARITY_ACTIVE_LOW); qdev_prop_set_string(dev, "color", led_color_name[color]); if (!description) { static unsigned undescribed_led_id; --=20 2.26.2 From nobody Thu May 2 07:02:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.221.47 as permitted sender) client-ip=209.85.221.47; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-f47.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.47 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1599771277; cv=none; d=zohomail.com; s=zohoarc; b=RpCucLv8opgz7nyT5+D3YkBdij2RK95H79po/WSk4qkmdgwFNtiVL6t6JIv1gKVa1NV4MMhew85aNcJZ6t+klgIfqc9pEIPFBg4fRzGM2VGpn93k5CT+9qzu3sG4aKPMi8oIdIZ04Szldwdrrhosm+MdWvagsIngwN2tgRZJbQo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1599771277; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Pg2UbiPnEyj3JIOQp/7lnXV/UdSauRuubalG7cq91s0=; b=TTn/TWuLfAzVpHUZu58pFteM3ohW55AqZc30+BRDU15Rj45xmtIBy1/3oz6KVgHJKf1+LNmjiTS9FsqFiWwJh9Iskz658U3XPjw5m7G6L2FR8fa/Sq/VXHBqTQZ1IE4jk/ZcWyJyKyOklWe96Zwz7ET5H9vqEuOpfBa9xlNQPhY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.47 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) by mx.zohomail.com with SMTPS id 1599771277512996.6736061471785; Thu, 10 Sep 2020 13:54:37 -0700 (PDT) Received: by mail-wr1-f47.google.com with SMTP id g4so8652139wrs.5 for ; Thu, 10 Sep 2020 13:54:36 -0700 (PDT) Return-Path: Return-Path: Received: from x1w.redhat.com (65.red-83-57-170.dynamicip.rima-tde.net. [83.57.170.65]) by smtp.gmail.com with ESMTPSA id t1sm5089317wmi.16.2020.09.10.13.54.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2020 13:54:34 -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=Pg2UbiPnEyj3JIOQp/7lnXV/UdSauRuubalG7cq91s0=; b=upX18BBU9qj81TIw224hWd7f9RodAdsuGcLJF8YW8hkxK/1nX1QocqrHGG08utTLXb c+ahbIOqRY6ci46wv5yx10szetuUy9cwJEZIQCyd2gD/sc/esJCRqzl1Q0zbi/pfatX2 rYyP+zidhMPc3gJyCXj9x4B7j20w/CwTWi2l/gk7+ZAmBf38gTAYyjl+pgclpuNDpE4F iHY/ReqDZDTJkh8GirSxLq3nGpSFW7WoVluLlAuC8ezn57ClopgsL+iGZTYnd2Zd+/YW qPabM5r8vhZWGpdyH5kNZWhaqnHDqrGMZZM6LCIZrR4pN8wKvbgF5ki8+0uuJIny7p58 96Yw== 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=Pg2UbiPnEyj3JIOQp/7lnXV/UdSauRuubalG7cq91s0=; b=XzvPDUYo605A29V8hT+SH3vzgOfB5sgxAjjWqq3lQF7PV2vXeb1dYhllinQK5WjkwF CKqw5JgcBs7lJrFh71htSnuci+EKcfJ/xxKa7zJJdzlCB8xP4ZYE+mdDOEkAqFCiRn/7 AJ3yKcKMSTP0LI4mg0Ngtim9RBo3v6l+CTolV09fEISxoOmr0zWBPMEsni75kvjpdgBT /Wsbd3WZ4OE/ERc6+cBb3+L1A4K70VC66X2eUcyoSuCHC8rl5MzCJ0gt5+HiakQ4V1Ky 7WuO9wsd2QGddr0zWcJ6+wXBMXG2+ZvfOpoz3sqfOnOSCgRTZRLpaCRXgHxKzOnThHBF SVAQ== X-Gm-Message-State: AOAM533zTXkokFzdJGgfIU0VGT+r81Mq6ERSlqPvbgjU6N0jUVybkEl/ t30gHF4X5gG8h/IMDPbHbfU= X-Google-Smtp-Source: ABdhPJxtI5kY0fz0HXzHsDqTwqgijyyUagdhcuYMVPv8h6iRNy4t+RQq+G/25ecdRgBI419gf+JiKQ== X-Received: by 2002:a5d:62c2:: with SMTP id o2mr10657829wrv.418.1599771275494; Thu, 10 Sep 2020 13:54:35 -0700 (PDT) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Paolo Bonzini , Luc Michel , Andrzej Zaborowski , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Joel Stanley , Peter Maydell , Eduardo Habkost , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Andrew Jeffery , qemu-arm@nongnu.org, Richard Henderson Subject: [PATCH v5 3/7] hw/misc/led: Emit a trace event when LED intensity has changed Date: Thu, 10 Sep 2020 22:54:25 +0200 Message-Id: <20200910205429.727766-4-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200910205429.727766-1-f4bug@amsat.org> References: <20200910205429.727766-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 X-ZohoMail-DKIM: pass (identity @gmail.com) Track the LED intensity, and emit a trace event when it changes. Reviewed-by: Richard Henderson Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Luc Michel --- hw/misc/led.c | 4 ++++ hw/misc/trace-events | 1 + 2 files changed, 5 insertions(+) diff --git a/hw/misc/led.c b/hw/misc/led.c index 3ef4f5e0469..ebe1fa45b1e 100644 --- a/hw/misc/led.c +++ b/hw/misc/led.c @@ -41,6 +41,10 @@ void led_set_intensity(LEDState *s, unsigned intensity_p= ercent) intensity_percent =3D LED_INTENSITY_PERCENT_MAX; } trace_led_set_intensity(s->description, s->color, intensity_percent); + if (intensity_percent !=3D s->intensity_percent) { + trace_led_change_intensity(s->description, s->color, + s->intensity_percent, intensity_percent= ); + } s->intensity_percent =3D intensity_percent; } =20 diff --git a/hw/misc/trace-events b/hw/misc/trace-events index 76c9ddb54fe..89d15f05f9a 100644 --- a/hw/misc/trace-events +++ b/hw/misc/trace-events @@ -216,6 +216,7 @@ grlib_apb_pnp_read(uint64_t addr, uint32_t value) "APB = PnP read addr:0x%03"PRIx6 =20 # led.c led_set_intensity(const char *color, const char *desc, uint8_t intensity_p= ercent) "LED desc:'%s' color:%s intensity: %u%%" +led_change_intensity(const char *color, const char *desc, uint8_t old_inte= nsity_percent, uint8_t new_intensity_percent) "LED desc:'%s' color:%s inten= sity %u%% -> %u%%" =20 # pca9552.c pca955x_gpio_status(const char *description, const char *buf) "%s GPIOs 0-= 15 [%s]" --=20 2.26.2 From nobody Thu May 2 07:02:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.221.68 as permitted sender) client-ip=209.85.221.68; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-f68.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.68 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1599771278; cv=none; d=zohomail.com; s=zohoarc; b=dMwRJWvfijP8fHYUjGd4pDob1WYhfssk1I5vnAdOewwcWMYG1XZC2djIgmwoI8DSf+1lRyIWNrFRNB+I46bnueLblEmyhkWjmaKSdWu7JswT78CdlGpjBueWnTchOp4WY5pfVzpPPwNI3cAKPcpIr2ckJmIfCA4e1NUPrW0ob/g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1599771278; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=pr3IdxupnoTag8g+l9d/z4aY7eG0d/P7ZaZKT2cQb14=; b=Xe+rY/gAd8Rqr0+itBf9n3UoYBrL9x0pegJNln/HzD856WNpciAet/nZrPUlFqjjop5Sp5WVDuh3o6IRmTx6dgE/ZRPm2oFV5RUb9jhA/ea/CZ6kVgSYlF2K9h581X7xRyJQbMt9gpcLxsv4H1Gw9KqNn38bFpqGhnpbX0tFCOQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.68 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by mx.zohomail.com with SMTPS id 1599771278748459.04997347319147; Thu, 10 Sep 2020 13:54:38 -0700 (PDT) Received: by mail-wr1-f68.google.com with SMTP id o5so8593295wrn.13 for ; Thu, 10 Sep 2020 13:54:38 -0700 (PDT) Return-Path: Return-Path: Received: from x1w.redhat.com (65.red-83-57-170.dynamicip.rima-tde.net. [83.57.170.65]) by smtp.gmail.com with ESMTPSA id t1sm5089317wmi.16.2020.09.10.13.54.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2020 13:54:36 -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=pr3IdxupnoTag8g+l9d/z4aY7eG0d/P7ZaZKT2cQb14=; b=XMJ8XoJvNLl+l/3ThwTUrJhBW/ats7GMT8TS3AGtudRW2cEklhfmlxFBeAgDr3Pzh9 X0RV2MTmz5xq1c6r195QWwKzW334K3xv2WtBCkGn0RbzJ4D4pWirWo/rV9aORCpZtOWI a9cSmkR8QNpZdfBz3pMDdY5sewQe2X+Xhnceqmcy+lE4wtx7X4h2VZQY7KUteac7hGdJ Skhxzq5CdUvVBJVP6uPjF4bzG6KlWXv50HNLeWsPcF89rH3viTwSI2sXhp/77fpnJCdj GOk8qX1qBsJxDwv/mAGQ1fLTUTgBcLGz67ePVf+L7z/3gxow7lr+g7YKhLrFZyKm8oJl xUGA== 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=pr3IdxupnoTag8g+l9d/z4aY7eG0d/P7ZaZKT2cQb14=; b=lrVclHmK7NkirDcd3+pCdGKlDIzdavfoMMpA/rgEov67cadnEnKPrXPJjuZjWwUqtA BqBsyef0iSXzZ7K/tK26sKCoHp21MbJRTOIhjyosJkKjo5RxxWuaLtfNxEjkiNFF6uk3 QcZqiMDudOM3xKKuCM92t5rNzgcgAAg7wPfW7ckF6mHpPl6f5/Bj7gfoqo6SoAJ1tm4b gIp8tYT4yP5mdgtDo3dXUTLPNChM2+/qF0Im8Ku4g/eE7dt0l/xdtm/ZQD/7jcVHARNj mZtusPUMXH5oO+S1DxuimwMsUxzm+OwqaT2whCs715LQMJiRHYe+duTs81+eLQwHoz1F DfcA== X-Gm-Message-State: AOAM533NgUID0tAQdLWpqf42P25kiWT7LNZXl1jQ5maHtqPHQq06ELOk wypnqOaWpKPW18JNqjBv8m4= X-Google-Smtp-Source: ABdhPJyYEhLk0L+LnTwtisIRLRf3X/QyUVGGGaYFyN+gRx0E9MwrlbIDeDtZpAWA5R0JrOolmp4QGg== X-Received: by 2002:adf:8b48:: with SMTP id v8mr10930209wra.21.1599771276760; Thu, 10 Sep 2020 13:54:36 -0700 (PDT) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Paolo Bonzini , Luc Michel , Andrzej Zaborowski , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Joel Stanley , Peter Maydell , Eduardo Habkost , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Andrew Jeffery , qemu-arm@nongnu.org, Richard Henderson Subject: [PATCH v5 4/7] hw/arm/aspeed: Add the 3 front LEDs drived by the PCA9552 #1 Date: Thu, 10 Sep 2020 22:54:26 +0200 Message-Id: <20200910205429.727766-5-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200910205429.727766-1-f4bug@amsat.org> References: <20200910205429.727766-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 X-ZohoMail-DKIM: pass (identity @gmail.com) The Witherspoon has 3 LEDs connected to a PCA9552. Add them. The names and reset values are taken from: https://github.com/open-power/witherspoon-xml/blob/master/witherspoon.xml Example booting obmc-phosphor-image: $ qemu-system-arm -M witherspoon-bmc -trace led_change_intensity 1592693373.997015:led_change_intensity LED desc:'front-fault-4' color:gre= en intensity 0% -> 100% 1592693373.997632:led_change_intensity LED desc:'front-power-3' color:gre= en intensity 0% -> 100% 1592693373.998239:led_change_intensity LED desc:'front-id-5' color:green = intensity 0% -> 100% 1592693500.291805:led_change_intensity LED desc:'front-power-3' color:gre= en intensity 100% -> 0% 1592693500.312041:led_change_intensity LED desc:'front-power-3' color:gre= en intensity 0% -> 100% 1592693500.821254:led_change_intensity LED desc:'front-power-3' color:gre= en intensity 100% -> 0% 1592693501.331517:led_change_intensity LED desc:'front-power-3' color:gre= en intensity 0% -> 100% 1592693501.841367:led_change_intensity LED desc:'front-power-3' color:gre= en intensity 100% -> 0% 1592693502.350839:led_change_intensity LED desc:'front-power-3' color:gre= en intensity 0% -> 100% 1592693502.861134:led_change_intensity LED desc:'front-power-3' color:gre= en intensity 100% -> 0% 1592693503.371090:led_change_intensity LED desc:'front-power-3' color:gre= en intensity 0% -> 100% We notice the front-power LED starts to blink at a ~2Hz rate. Reviewed-by: Richard Henderson Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Luc Michel --- hw/arm/aspeed.c | 20 ++++++++++++++++++++ hw/arm/Kconfig | 1 + 2 files changed, 21 insertions(+) diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index 8bfb1c79ddc..83e322ea983 100644 --- a/hw/arm/aspeed.c +++ b/hw/arm/aspeed.c @@ -20,6 +20,7 @@ #include "hw/i2c/smbus_eeprom.h" #include "hw/misc/pca9552.h" #include "hw/misc/tmp105.h" +#include "hw/misc/led.h" #include "hw/qdev-properties.h" #include "qemu/log.h" #include "sysemu/block-backend.h" @@ -521,9 +522,20 @@ static void sonorapass_bmc_i2c_init(AspeedMachineState= *bmc) =20 static void witherspoon_bmc_i2c_init(AspeedMachineState *bmc) { + static const struct { + unsigned gpio_id; + LEDColor color; + const char *description; + bool gpio_polarity; + } pca1_leds[] =3D { + {13, LED_COLOR_GREEN, "front-fault-4", GPIO_POLARITY_ACTIVE_LOW}, + {14, LED_COLOR_GREEN, "front-power-3", GPIO_POLARITY_ACTIVE_LOW}, + {15, LED_COLOR_GREEN, "front-id-5", GPIO_POLARITY_ACTIVE_LOW}, + }; AspeedSoCState *soc =3D &bmc->soc; uint8_t *eeprom_buf =3D g_malloc0(8 * 1024); DeviceState *dev; + LEDState *led; =20 /* Bus 3: TODO bmp280@77 */ /* Bus 3: TODO max31785@52 */ @@ -534,6 +546,14 @@ static void witherspoon_bmc_i2c_init(AspeedMachineStat= e *bmc) aspeed_i2c_get_bus(&soc->i2c, 3), &error_fatal); =20 + for (size_t i =3D 0; i < ARRAY_SIZE(pca1_leds); i++) { + led =3D led_create_simple(OBJECT(bmc), + pca1_leds[i].gpio_polarity, + pca1_leds[i].color, + pca1_leds[i].description); + qdev_connect_gpio_out(dev, pca1_leds[i].gpio_id, + qdev_get_gpio_in(DEVICE(led), 0)); + } i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 4), "tmp423", 0x= 4c); i2c_slave_create_simple(aspeed_i2c_get_bus(&soc->i2c, 5), "tmp423", 0x= 4c); =20 diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index bc3a423940b..06ba1c355b1 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -394,6 +394,7 @@ config ASPEED_SOC select TMP105 select TMP421 select UNIMP + select LED =20 config MPS2 bool --=20 2.26.2 From nobody Thu May 2 07:02:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.221.44 as permitted sender) client-ip=209.85.221.44; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-f44.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.44 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com; dmarc=fail(p=none dis=none) header.from=amsat.org ARC-Seal: i=1; a=rsa-sha256; t=1599771280; cv=none; d=zohomail.com; s=zohoarc; b=R0uuP+y3w/DFeSpofEXmLaDTeoGjRAgZ9H3ReS4Ia2MRC51vBrxQKj3psoyFdU50zvyZCZ35pY8Nwecr7WnsYsdcGljA6vzx8ZoVgLrQIthEooBcYo3sxeObFNSFAobFTJerAr0cAs/A/KWKKjkjmoSLONmsnFWcAhWrDKVVr7I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1599771280; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=vnMbp0E6IauzdwSblFJxUFoyT1SAl8asRcn4brlYdgU=; b=KrEbRx993A8qlBylbU/Pp4CYKU/zOPZf5n9gIqOjOHyTX+Oqe7psbLly3a8Uet1/fe3Sbz386GbbLpfRhBchDyg3UJgfV+38ILlRlSz3Q33ZDjj9yrlrnHVK1zyeLrexKo7mMX2PA5zfTG74FJWqKoKBP69rjo1Wv+scegsI0og= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.44 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com; dmarc=fail header.from= (p=none dis=none) header.from= Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) by mx.zohomail.com with SMTPS id 1599771280005425.4197405221897; Thu, 10 Sep 2020 13:54:40 -0700 (PDT) Received: by mail-wr1-f44.google.com with SMTP id g4so8652380wrs.5 for ; Thu, 10 Sep 2020 13:54:39 -0700 (PDT) Return-Path: Return-Path: Received: from x1w.redhat.com (65.red-83-57-170.dynamicip.rima-tde.net. [83.57.170.65]) by smtp.gmail.com with ESMTPSA id t1sm5089317wmi.16.2020.09.10.13.54.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2020 13:54:37 -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=vnMbp0E6IauzdwSblFJxUFoyT1SAl8asRcn4brlYdgU=; b=XV/kzY7Rl5zm+9oYL6HBoDbfOFK8NMcdGh4lEQSoNJ2nc/om3QgskwbeKSCivkQ5V/ GlbhDfh3bm4wDe2y/0L+bxwg1UXcTW6zuzOMnsMRKkqPEy2f8b5pkymq4BMlGXeGTEUO MhftaWIPF9kfezdWA5biVEyHUOw2demUTgXQWxzWR1d3SH6a6UMCnUozVt8K6vzwE+ec 2eENy/AkaNNpxvuWoLN+Cpk2sWBh0L12vRFryRh0OHxCH7pCGQb9Dg/BY3UxVF2Rz+Y9 ZzNP1GXUiNWbnjh9g8IwhvBlvarlEXGn9/lzvlGIU5ds3fZgix6JnSMukccCPakV/34T LvCQ== 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=vnMbp0E6IauzdwSblFJxUFoyT1SAl8asRcn4brlYdgU=; b=EeuEh0LbeNOCWxacHZHNbbw6YoF7d6sBLJWirQ3DwHXnQ2facyZcwU1giLxYQVQbqZ /a7onuYOOwaJQZXSiS412yf5Wa728MjPfrY3Dtp+Nw4HJsEt1Qkv73ZbRTpoj0xOtqU8 0mFb7Zxch5oRxXUq2BE3ikgmUg/0URPkZbjXW+p5EPwdas0S37677z9+D5RwnmBsKP9v j7G1QCedwpw8MQV+lBLqNrIsz4Jsu+jQv4/BCi4CYjz372g3aOQ/7n0wUQzPKJFz1hEa 7UW7Gsk4MtmySQuwWnCcbA/HD21zS9WLYXMLmowZ/UggfW69sNJrLlyYllYI8JSFLRhg V65g== X-Gm-Message-State: AOAM532KxOE4egTFMnshU0ygMyeg9/k8/X+JMIMqt3oBSJnDFjDG+uhw huAaRIKdBDIzax1k6oR+IIs= X-Google-Smtp-Source: ABdhPJyIXE/lNORdgK9VDBE4yzTW77L8ihNEThRs6429JUOKxxEr6ywM216QfBQjM8MrgEYGDuxOVg== X-Received: by 2002:adf:f58b:: with SMTP id f11mr10910155wro.250.1599771278004; Thu, 10 Sep 2020 13:54:38 -0700 (PDT) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Paolo Bonzini , Luc Michel , Andrzej Zaborowski , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Joel Stanley , Peter Maydell , Eduardo Habkost , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Andrew Jeffery , qemu-arm@nongnu.org Subject: [PATCH v5 5/7] hw/misc/mps2-fpgaio: Use the LED device Date: Thu, 10 Sep 2020 22:54:27 +0200 Message-Id: <20200910205429.727766-6-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200910205429.727766-1-f4bug@amsat.org> References: <20200910205429.727766-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 X-ZohoMail-DKIM: pass (identity @gmail.com) Per the 'ARM MPS2 and MPS2+ FPGA Prototyping Boards Technical Reference Manual' (100112_0200_07_en): 2.1 Overview of the MPS2 and MPS2+ hardware The MPS2 and MPS2+ FPGA Prototyping Boards contain the following components and interfaces: * User switches and user LEDs: - Two green LEDs and two push buttons that connect to the FPGA. - Eight green LEDs and one 8-way dip switch that connect to the MCC. Add the 2 LEDs connected to the FPGA. This remplaces the 'mps2_fpgaio_leds' trace events by the generic 'led_set_intensity' event. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson --- include/hw/misc/mps2-fpgaio.h | 2 ++ hw/misc/mps2-fpgaio.c | 19 ++++++++++++++----- hw/misc/Kconfig | 1 + hw/misc/trace-events | 1 - 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/include/hw/misc/mps2-fpgaio.h b/include/hw/misc/mps2-fpgaio.h index 69e265cd4b2..901880cc3a7 100644 --- a/include/hw/misc/mps2-fpgaio.h +++ b/include/hw/misc/mps2-fpgaio.h @@ -22,6 +22,7 @@ #define MPS2_FPGAIO_H =20 #include "hw/sysbus.h" +#include "hw/misc/led.h" =20 #define TYPE_MPS2_FPGAIO "mps2-fpgaio" #define MPS2_FPGAIO(obj) OBJECT_CHECK(MPS2FPGAIO, (obj), TYPE_MPS2_FPGAIO) @@ -32,6 +33,7 @@ typedef struct { =20 /*< public >*/ MemoryRegion iomem; + LEDState *led[2]; =20 uint32_t led0; uint32_t prescale; diff --git a/hw/misc/mps2-fpgaio.c b/hw/misc/mps2-fpgaio.c index 2f3fbeef348..86ca78eb235 100644 --- a/hw/misc/mps2-fpgaio.c +++ b/hw/misc/mps2-fpgaio.c @@ -24,6 +24,7 @@ #include "migration/vmstate.h" #include "hw/registerfields.h" #include "hw/misc/mps2-fpgaio.h" +#include "hw/misc/led.h" #include "hw/qdev-properties.h" #include "qemu/timer.h" =20 @@ -176,12 +177,9 @@ static void mps2_fpgaio_write(void *opaque, hwaddr off= set, uint64_t value, =20 switch (offset) { case A_LED0: - /* LED bits [1:0] control board LEDs. We don't currently have - * a mechanism for displaying this graphically, so use a trace eve= nt. - */ - trace_mps2_fpgaio_leds(value & 0x02 ? '*' : '.', - value & 0x01 ? '*' : '.'); s->led0 =3D value & 0x3; + led_set_state(s->led[0], value & 0x01); + led_set_state(s->led[1], value & 0x02); break; case A_PRESCALE: resync_counter(s); @@ -251,6 +249,16 @@ static void mps2_fpgaio_init(Object *obj) sysbus_init_mmio(sbd, &s->iomem); } =20 +static void mps2_fpgaio_realize(DeviceState *dev, Error **errp) +{ + MPS2FPGAIO *s =3D MPS2_FPGAIO(dev); + + s->led[0] =3D led_create_simple(OBJECT(dev), GPIO_POLARITY_ACTIVE_HIGH, + LED_COLOR_GREEN, "USERLED0"); + s->led[1] =3D led_create_simple(OBJECT(dev), GPIO_POLARITY_ACTIVE_HIGH, + LED_COLOR_GREEN, "USERLED1"); +} + static bool mps2_fpgaio_counters_needed(void *opaque) { /* Currently vmstate.c insists all subsections have a 'needed' functio= n */ @@ -299,6 +307,7 @@ static void mps2_fpgaio_class_init(ObjectClass *klass, = void *data) DeviceClass *dc =3D DEVICE_CLASS(klass); =20 dc->vmsd =3D &mps2_fpgaio_vmstate; + dc->realize =3D mps2_fpgaio_realize; dc->reset =3D mps2_fpgaio_reset; device_class_set_props(dc, mps2_fpgaio_properties); } diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig index 5c151fa3a83..0cecad45aad 100644 --- a/hw/misc/Kconfig +++ b/hw/misc/Kconfig @@ -93,6 +93,7 @@ config MIPS_ITU =20 config MPS2_FPGAIO bool + select LED =20 config MPS2_SCC bool diff --git a/hw/misc/trace-events b/hw/misc/trace-events index 89d15f05f9a..43b9e0cf250 100644 --- a/hw/misc/trace-events +++ b/hw/misc/trace-events @@ -93,7 +93,6 @@ mps2_scc_cfg_read(unsigned function, unsigned device, uin= t32_t value) "MPS2 SCC mps2_fpgaio_read(uint64_t offset, uint64_t data, unsigned size) "MPS2 FPGA= IO read: offset 0x%" PRIx64 " data 0x%" PRIx64 " size %u" mps2_fpgaio_write(uint64_t offset, uint64_t data, unsigned size) "MPS2 FPG= AIO write: offset 0x%" PRIx64 " data 0x%" PRIx64 " size %u" mps2_fpgaio_reset(void) "MPS2 FPGAIO: reset" -mps2_fpgaio_leds(char led1, char led0) "MPS2 FPGAIO LEDs: %c%c" =20 # msf2-sysreg.c msf2_sysreg_write(uint64_t offset, uint32_t val, uint32_t prev) "msf2-sysr= eg write: addr 0x%08" PRIx64 " data 0x%" PRIx32 " prev 0x%" PRIx32 --=20 2.26.2 From nobody Thu May 2 07:02:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.221.52 as permitted sender) client-ip=209.85.221.52; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-f52.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.52 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com; dmarc=fail(p=none dis=none) header.from=amsat.org ARC-Seal: i=1; a=rsa-sha256; t=1599771281; cv=none; d=zohomail.com; s=zohoarc; b=TBp2l1o3DB0UJBgnJnXIUOhIDeVeo3Uz7V1wjnKmfAqf8X+dE6+r0j3jJ9OPj/iZhvWfgXzrPHOgAFE4ejmfNYDeIvsfj+JxtICnwZnZn5AJtjlrLW/57XzyZWa44Tm21bUclcRt/sq1ddRa/OIGLSz5QSt7ZMTDrK85bqzmKU0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1599771281; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=jBgL1iKIvz4jH+dRa8U6fT1B6oJw6/SF3dkJ8j+0tYI=; b=mDsJjfwDc5ANTA+sdDtP4cCj4Oqi3o4WJyR1+H6vhKhawO85QEPcoFTycnblru3hb+v8uHWYU86Y8t3OaObgJ6nTVi8mWx5DlEjQrQkfat0XKod8DWsMItmxZz2rIGEvbEUR2ENqmLhQICZW05d3YuJcidKz/eNhgNoJGIx9Za0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.52 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com; dmarc=fail header.from= (p=none dis=none) header.from= Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) by mx.zohomail.com with SMTPS id 1599771281267523.0453102421835; Thu, 10 Sep 2020 13:54:41 -0700 (PDT) Received: by mail-wr1-f52.google.com with SMTP id w5so8631368wrp.8 for ; Thu, 10 Sep 2020 13:54:40 -0700 (PDT) Return-Path: Return-Path: Received: from x1w.redhat.com (65.red-83-57-170.dynamicip.rima-tde.net. [83.57.170.65]) by smtp.gmail.com with ESMTPSA id t1sm5089317wmi.16.2020.09.10.13.54.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2020 13:54:38 -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=jBgL1iKIvz4jH+dRa8U6fT1B6oJw6/SF3dkJ8j+0tYI=; b=svLfx+sk71ilf1v7mWwgPQgvz9Qd0vt5/dpJ0UrIuGsT7baiAv6AaII2q9v/Bc2ziN ra9Rv1ExUCMKzbvSHQMisdWXjYNITHFwZ4meCebEaOiJwlwBtiGz06jhiCeVSPxzgLut LRKcwSuUbWkl0M1ETT+5a+pFx1HojMoVC7CbJV6zQt/4Wmbb78TlfvZ/cB9tZEeh6EWH M8CXjS2qoeIZ6hX1RMyz2eFWNpGe7yIG4jdH/R3+4we0+OlQCveaA1SxZdAcY527artu JK4wcVb71UXyAslT946KDkUGKDxiDMa/3ubCiXkPB3THJ6znEgJQpj6cBQsBr4djMiNw qt4g== 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=jBgL1iKIvz4jH+dRa8U6fT1B6oJw6/SF3dkJ8j+0tYI=; b=F74tblKF11IJdYKDtmLLNHCwmN9MBVdJG4MwRb/ecmTFHw0PyA6RJvZrfwOPysbHzG KsA5SOo8d+e3QW0DmhCDYs9nutdrXYTqB3WdUjx95yTNOhBa3j7n3PstV9EmkGVa26uk f5eTdnfwBz6B2WzOcBLkxsmI7TPcg6DktkFG1MbUdOITjvIhEMROOqTaMBcZLDfs/QFT qLtKp1uxvJQ+Kth/EZLs7PgoKymaQWkZ+xIHcrsmzySI+PFnJph3eYZYarHJa/JHJ2Pi /Ub0zSf6HmCanDpMx4uRhVf+fGn6uaZzV75THhLw0wmzLocNdAk10B0fuCIQfjFOJibi n44g== X-Gm-Message-State: AOAM531FU+/rkKXA7DrDuikH+HpoIojX641T414E86lG36h/o7wj8zoG 4a8yQDxexycvTPBtkeOoMYU= X-Google-Smtp-Source: ABdhPJwv4fKzCEYQmsDnkP5x2gyr6A31QscgE8a8Jy+2REJYvQuVfT6rfomLk2OBmZECRyJgl/YIUQ== X-Received: by 2002:a5d:5042:: with SMTP id h2mr10980380wrt.409.1599771279223; Thu, 10 Sep 2020 13:54:39 -0700 (PDT) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Paolo Bonzini , Luc Michel , Andrzej Zaborowski , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Joel Stanley , Peter Maydell , Eduardo Habkost , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Andrew Jeffery , qemu-arm@nongnu.org Subject: [PATCH v5 6/7] hw/misc/mps2-scc: Use the LED device Date: Thu, 10 Sep 2020 22:54:28 +0200 Message-Id: <20200910205429.727766-7-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200910205429.727766-1-f4bug@amsat.org> References: <20200910205429.727766-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 X-ZohoMail-DKIM: pass (identity @gmail.com) Per the 'ARM MPS2 and MPS2+ FPGA Prototyping Boards Technical Reference Manual' (100112_0200_07_en): 2.1 Overview of the MPS2 and MPS2+ hardware The MPS2 and MPS2+ FPGA Prototyping Boards contain the following components and interfaces: * User switches and user LEDs: - Two green LEDs and two push buttons that connect to the FPGA. - Eight green LEDs and one 8-way dip switch that connect to the MCC. Add the 8 LEDs connected to the MCC. This remplaces the 'mps2_scc_leds' trace events by the generic 'led_set_intensity' event. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson --- https://youtu.be/l9kD70uPchk?t=3D288 --- include/hw/misc/mps2-scc.h | 2 ++ hw/misc/mps2-scc.c | 25 ++++++++++++++----------- hw/misc/Kconfig | 1 + hw/misc/trace-events | 1 - 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/include/hw/misc/mps2-scc.h b/include/hw/misc/mps2-scc.h index 7045473788b..8542f384227 100644 --- a/include/hw/misc/mps2-scc.h +++ b/include/hw/misc/mps2-scc.h @@ -13,6 +13,7 @@ #define MPS2_SCC_H =20 #include "hw/sysbus.h" +#include "hw/misc/led.h" =20 #define TYPE_MPS2_SCC "mps2-scc" #define MPS2_SCC(obj) OBJECT_CHECK(MPS2SCC, (obj), TYPE_MPS2_SCC) @@ -25,6 +26,7 @@ typedef struct { =20 /*< public >*/ MemoryRegion iomem; + LEDState *led[8]; =20 uint32_t cfg0; uint32_t cfg1; diff --git a/hw/misc/mps2-scc.c b/hw/misc/mps2-scc.c index 9d0909e7b35..745505b849d 100644 --- a/hw/misc/mps2-scc.c +++ b/hw/misc/mps2-scc.c @@ -20,11 +20,13 @@ #include "qemu/osdep.h" #include "qemu/log.h" #include "qemu/module.h" +#include "qemu/bitops.h" #include "trace.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "hw/registerfields.h" #include "hw/misc/mps2-scc.h" +#include "hw/misc/led.h" #include "hw/qdev-properties.h" =20 REG32(CFG0, 0) @@ -152,18 +154,10 @@ static void mps2_scc_write(void *opaque, hwaddr offse= t, uint64_t value, s->cfg0 =3D value; break; case A_CFG1: - /* CFG1 bits [7:0] control the board LEDs. We don't currently have - * a mechanism for displaying this graphically, so use a trace eve= nt. - */ - trace_mps2_scc_leds(value & 0x80 ? '*' : '.', - value & 0x40 ? '*' : '.', - value & 0x20 ? '*' : '.', - value & 0x10 ? '*' : '.', - value & 0x08 ? '*' : '.', - value & 0x04 ? '*' : '.', - value & 0x02 ? '*' : '.', - value & 0x01 ? '*' : '.'); s->cfg1 =3D value; + for (size_t i =3D 0; i < ARRAY_SIZE(s->led); i++) { + led_set_state(s->led[i], extract32(value, i, 1)); + } break; case A_CFGDATA_OUT: s->cfgdata_out =3D value; @@ -245,10 +239,19 @@ static void mps2_scc_init(Object *obj) =20 memory_region_init_io(&s->iomem, obj, &mps2_scc_ops, s, "mps2-scc", 0x= 1000); sysbus_init_mmio(sbd, &s->iomem); + } =20 static void mps2_scc_realize(DeviceState *dev, Error **errp) { + MPS2SCC *s =3D MPS2_SCC(dev); + + for (size_t i =3D 0; i < ARRAY_SIZE(s->led); i++) { + char *name =3D g_strdup_printf("SCC LED%zu", i); + s->led[i] =3D led_create_simple(OBJECT(dev), GPIO_POLARITY_ACTIVE_= HIGH, + LED_COLOR_GREEN, name); + g_free(name); + } } =20 static const VMStateDescription mps2_scc_vmstate =3D { diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig index 0cecad45aad..7557a3e7b46 100644 --- a/hw/misc/Kconfig +++ b/hw/misc/Kconfig @@ -97,6 +97,7 @@ config MPS2_FPGAIO =20 config MPS2_SCC bool + select LED =20 config TZ_MPC bool diff --git a/hw/misc/trace-events b/hw/misc/trace-events index 43b9e0cf250..a620a358feb 100644 --- a/hw/misc/trace-events +++ b/hw/misc/trace-events @@ -85,7 +85,6 @@ aspeed_scu_write(uint64_t offset, unsigned size, uint32_t= data) "To 0x%" PRIx64 mps2_scc_read(uint64_t offset, uint64_t data, unsigned size) "MPS2 SCC rea= d: offset 0x%" PRIx64 " data 0x%" PRIx64 " size %u" mps2_scc_write(uint64_t offset, uint64_t data, unsigned size) "MPS2 SCC wr= ite: offset 0x%" PRIx64 " data 0x%" PRIx64 " size %u" mps2_scc_reset(void) "MPS2 SCC: reset" -mps2_scc_leds(char led7, char led6, char led5, char led4, char led3, char = led2, char led1, char led0) "MPS2 SCC LEDs: %c%c%c%c%c%c%c%c" mps2_scc_cfg_write(unsigned function, unsigned device, uint32_t value) "MP= S2 SCC config write: function %d device %d data 0x%" PRIx32 mps2_scc_cfg_read(unsigned function, unsigned device, uint32_t value) "MPS= 2 SCC config read: function %d device %d data 0x%" PRIx32 =20 --=20 2.26.2 From nobody Thu May 2 07:02:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.221.68 as permitted sender) client-ip=209.85.221.68; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-f68.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.68 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1599771282; cv=none; d=zohomail.com; s=zohoarc; b=TKPQniU58vBWhENIFrSOS2xAtm4FmuklXL/pxBoCqUht4cekNBIAytWvCitWxqAUaqYd10Wc8t0OHjrafrI9R8oFmXdv58zAd0UWepK8tjCS5bQimeIsLOmG3qyir77KkGoDWzOwnYnz8JLbDlTffQWQEnLyxuyWbCK8xltPoWA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1599771282; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=jeiRRdPErRrtK9Gj9+R/jotAsL7dELgR1Q5VvxS+mnE=; b=jHn/1i6yJR7sO+dWSrkHWJuIJ8NvE+BAt9esf/XKZ6TO1cCbz7uVQ9Xl2YPGl0vla+I2TuygjutJDbaI8AQd0wsFHvyskz3TdswmZP6ciF+lFyg6xKzKevTPyfv2YYxOJDPwFnhtkMvlOSbpfaAXizprhfxeSV9XrE9SF+ASj8I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.68 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by mx.zohomail.com with SMTPS id 1599771282494190.14252305001548; Thu, 10 Sep 2020 13:54:42 -0700 (PDT) Received: by mail-wr1-f68.google.com with SMTP id z1so8655643wrt.3 for ; Thu, 10 Sep 2020 13:54:41 -0700 (PDT) Return-Path: Return-Path: Received: from x1w.redhat.com (65.red-83-57-170.dynamicip.rima-tde.net. [83.57.170.65]) by smtp.gmail.com with ESMTPSA id t1sm5089317wmi.16.2020.09.10.13.54.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2020 13:54:39 -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=jeiRRdPErRrtK9Gj9+R/jotAsL7dELgR1Q5VvxS+mnE=; b=MwT0F4ZkItt59sl5P0p/1brApND5TzyvcuJOxWoG1vHwonqaKFLSRKqs6voVhxcasF 6mIWcvE8h8AIy2oPhmXI6JIkFeuC1ws0l38c05VmustMPfA282GXWDXPD2nOO1HMAidd UASReW9SSRUMGP0J/PbRcElHSi8pQ9vEKgt50rN/qTepWT8NAxIwLHHMFNnaglrl+E/g YLC9gFZea+zzrOd8qvr5EBN/QPS97wq9oMKqX3gufJOEwZcsP4n5rhmRacmz04dcMXbz z80xviK3eGRe2J93G9HQmbudw+S3R+eau7gmxiwGZY8f3NQ26CqEdohj8Ri1gNC9xUxh imdw== 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=jeiRRdPErRrtK9Gj9+R/jotAsL7dELgR1Q5VvxS+mnE=; b=kVQNDZgJXS9MYvYqTtCg5H9hVaPGW/ckRusSmKur7CkC/6SPV0+yGk69RRjnUtQGvw I/ozxqTkAfe8hWHeLscTLKNhzNTG/P/zTyCXhdPEVFVnAELjO/hH90nkkiN+PawqXjY2 KwPZ6a4srPgwJBR7za5mar6aZWoEFzVxLLXKsHJJ07JN0MxUStA15VClTJEq1qD8/jxu nTeMK2c8mPfDzWfMIXJ4Bx/9PUssZTM27rzPD0KrhqAx+Lc+YsSO7YPk4ru4NkoqlWbF UuoG83oBl//xqlnrqj6Sy83m43tAwY+NyXAokREb4TzE85vX4EeS6UB0Cpi9tuB63rY2 MNmw== X-Gm-Message-State: AOAM533fdoPnofItti4aLq5fOEgCssUEic+IB3bDcGGyHs69riS/uaTR JJTtVx/EJV5EpFP41tqiu1E= X-Google-Smtp-Source: ABdhPJz43sqO8iE6A8rNnWADbMBL/Ns5liM0btki4oJoBmddWIVTjYjFWVrjrMcAnTkBp7mqadFOEA== X-Received: by 2002:adf:bb44:: with SMTP id x4mr10814862wrg.76.1599771280425; Thu, 10 Sep 2020 13:54:40 -0700 (PDT) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Paolo Bonzini , Luc Michel , Andrzej Zaborowski , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Joel Stanley , Peter Maydell , Eduardo Habkost , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Andrew Jeffery , qemu-arm@nongnu.org Subject: [PATCH v5 7/7] hw/arm/tosa: Replace fprintf() calls by LED devices Date: Thu, 10 Sep 2020 22:54:29 +0200 Message-Id: <20200910205429.727766-8-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200910205429.727766-1-f4bug@amsat.org> References: <20200910205429.727766-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 X-ZohoMail-DKIM: pass (identity @gmail.com) The recently added LED device reports LED status changes with the 'led_set_intensity' trace event. It is less invasive than the fprintf() calls. We need however to have a binary built with tracing support. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Luc Michel Reviewed-by: Richard Henderson --- hw/arm/tosa.c | 40 +++++++++++++++------------------------- hw/arm/Kconfig | 1 + 2 files changed, 16 insertions(+), 25 deletions(-) diff --git a/hw/arm/tosa.c b/hw/arm/tosa.c index 90eef1f14dd..f23651fd775 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 @@ -81,26 +82,6 @@ typedef struct TosaMiscGPIOState { SysBusDevice parent_obj; } TosaMiscGPIOState; =20 -static void tosa_gpio_leds(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; - case 2: - fprintf(stderr, "amber LED %s.\n", level ? "on" : "off"); - break; - case 3: - fprintf(stderr, "wlan LED %s.\n", level ? "on" : "off"); - break; - default: - g_assert_not_reached(); - } -} - static void tosa_reset(void *opaque, int line, int level) { if (level) { @@ -112,7 +93,6 @@ static void tosa_misc_gpio_init(Object *obj) { DeviceState *dev =3D DEVICE(obj); =20 - qdev_init_gpio_in_named(dev, tosa_gpio_leds, "leds", 4); qdev_init_gpio_in_named(dev, tosa_reset, "reset", 1); } =20 @@ -122,6 +102,7 @@ static void tosa_gpio_setup(PXA2xxState *cpu, TC6393xbState *tmio) { DeviceState *misc_gpio; + LEDState *led[4]; =20 misc_gpio =3D sysbus_create_simple(TYPE_TOSA_MISC_GPIO, -1, NULL); =20 @@ -143,14 +124,23 @@ static void tosa_gpio_setup(PXA2xxState *cpu, qdev_get_gpio_in(cpu->gpio, TOSA_GPIO_JC_CF_IRQ), NULL); =20 + led[0] =3D led_create_simple(OBJECT(misc_gpio), GPIO_POLARITY_ACTIVE_H= IGH, + LED_COLOR_BLUE, "bluetooth"); + led[1] =3D led_create_simple(OBJECT(misc_gpio), GPIO_POLARITY_ACTIVE_H= IGH, + LED_COLOR_GREEN, "note"); + led[2] =3D led_create_simple(OBJECT(misc_gpio), GPIO_POLARITY_ACTIVE_H= IGH, + LED_COLOR_AMBER, "charger-error"); + led[3] =3D led_create_simple(OBJECT(misc_gpio), GPIO_POLARITY_ACTIVE_H= IGH, + LED_COLOR_GREEN, "wlan"); + qdev_connect_gpio_out(scp1, TOSA_GPIO_BT_LED, - qdev_get_gpio_in_named(misc_gpio, "leds", 0)); + qdev_get_gpio_in(DEVICE(led[0]), 0)); qdev_connect_gpio_out(scp1, TOSA_GPIO_NOTE_LED, - qdev_get_gpio_in_named(misc_gpio, "leds", 1)); + qdev_get_gpio_in(DEVICE(led[1]), 0)); qdev_connect_gpio_out(scp1, TOSA_GPIO_CHRG_ERR_LED, - qdev_get_gpio_in_named(misc_gpio, "leds", 2)); + qdev_get_gpio_in(DEVICE(led[2]), 0)); qdev_connect_gpio_out(scp1, TOSA_GPIO_WLAN_LED, - qdev_get_gpio_in_named(misc_gpio, "leds", 3)); + qdev_get_gpio_in(DEVICE(led[3]), 0)); =20 qdev_connect_gpio_out(scp1, TOSA_GPIO_TC6393XB_L3V_ON, tc6393xb_l3v_ge= t(tmio)); =20 diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 06ba1c355b1..bbcfa098ae2 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.26.2