From nobody Tue Feb 10 23:32:59 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=bytedance.com ARC-Seal: i=1; a=rsa-sha256; t=1663608772; cv=none; d=zohomail.com; s=zohoarc; b=PyO0RehCnyKA7AklM9b3pPzniuL1CKDy0kiLdA72tMEGyeM9YkENGIvf3b9COx0Pz1c9pM+6oCd5GNSc9ljg4gYGTcxu53/WsYdfhRVROaMRFrG10k5oyaArvgev4w5FgpSV7bs6Empl2fOazS45135+pDxubniX15Tk0qlA2Uc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1663608772; h=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=9UzldcR0b1o/X+kC4vXAaVIzBakXO1OmfFUhrcDp5d4=; b=Rli8eKirEo5YXAzvaUjO0RRBMv8OFaC0cmQrN5Uc5Fd0sQtVfiDNoCU6G19+jnUEac9YnniUbbpHNtp03GWZjFjrmwRyaqQOgzdgSpt9BaswQL/ijtRb1lw+2QWalPAej6oB5sqQGmoXtFG1W867eSlbYPqHQ28D3reK5SAgDAw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1663608772678960.6999678850857; Mon, 19 Sep 2022 10:32:52 -0700 (PDT) Received: from localhost ([::1]:43526 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oaKdX-0008Au-KJ for importer@patchew.org; Mon, 19 Sep 2022 13:32:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42016) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oaKSp-0005ad-Kh for qemu-devel@nongnu.org; Mon, 19 Sep 2022 13:21:47 -0400 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]:40860) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oaKSn-0000Ps-VT for qemu-devel@nongnu.org; Mon, 19 Sep 2022 13:21:47 -0400 Received: by mail-pg1-x529.google.com with SMTP id 207so18939162pgc.7 for ; Mon, 19 Sep 2022 10:21:45 -0700 (PDT) Received: from localhost ([49.7.199.210]) by smtp.gmail.com with ESMTPSA id q6-20020aa79826000000b0053e99f2bf16sm20580111pfl.78.2022.09.19.10.21.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Sep 2022 10:21:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=9UzldcR0b1o/X+kC4vXAaVIzBakXO1OmfFUhrcDp5d4=; b=CnyLZpYXR/q+z6MF4m8Z1wUhwPQNur+hHNqN3Pij/IGwYIIklbcIf6k+IG2IVo0BWd FMmcvI1qfP+Zgb3zBC6nBuNtRUaVFmIQXYC786TT0SJ7u5T/8sDoIhrpws+yUL5N/G1d jiYcrwVZ1GwZCJjwzLDoG1BFrPQGCyVC97eV+DLLcAV3k7IoXT6XCY/yp7UEe4nOU/KC I297iSt54KeV5m+sRFilXjdlXEjk4sw9WUdTQ8ywivhKLWSscrzNBp6xI7p5zYHa7RGe wjuRWdmVw3BSh/bekb+gHPeI/9XdqxD6KXwij6y9VDMi2GEGq9VZ0irEFYpK+7hXHOKA pKtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=9UzldcR0b1o/X+kC4vXAaVIzBakXO1OmfFUhrcDp5d4=; b=nglIceR+G1tbfy85PitsLPrOI2Ci4xcTtqUV4lGLBXznJkWRtPypFjSJME3FJDmlNI h7yx3VSywLEaWAKp3mWxtBGHfunjM3UomUmE8TdaaVd0M4WKkBK5BkecT7Hla87NuW6D p3LttQNXPguzmoJZm3BsgjPBJv4uLB6oZMfpiMyaEPRKR3MzeKMxr6BBGlAW3M8dspRE jxgXCzyVdHPwf07jyUWGXSEAf4I+aLU9NUGRpWbYOXAEWs9xXfJ2fl9nr1XhIk5C0jcy JEfW+3EmrGWTAJZaQen9izZZW9Uh+0Bl4+yB1Kvbij2xpzAZQBfTNawZw6t9iBcKFFdS TPzQ== X-Gm-Message-State: ACrzQf1gKj/jvokiDxFz/OZArJ7KmeMpI2HgQ9biToHWpBuRkRDva9KN U2/ui8mYRJJ4kKghbw8jmV5OIg== X-Google-Smtp-Source: AMsMyM5iBcOiE+rMVVDaXQQsHLYMNzeqIe+p3fDCq4JkFe67+HmbaQRhr97KEpXOj64h5PIquvAgdw== X-Received: by 2002:a65:6e9a:0:b0:435:6009:4b62 with SMTP id bm26-20020a656e9a000000b0043560094b62mr16662675pgb.596.1663608104658; Mon, 19 Sep 2022 10:21:44 -0700 (PDT) From: Jian Zhang To: peter.maydell@linaro.org, clg@kaod.org, andrew@aj.id.au, joel@jms.id.au, qemu-devel@nongnu.org, qemu-arm@nongnu.org Cc: yulei.sh@bytedance.com, tangyiwei.2022@bytedance.com, chentingting.2150@bytedance.com, yuhao.17@bytedance.com, wangxiaohua.1217@bytedance.com, xiening.xll@bytedance.com, Jian Zhang Subject: [PATCH 1/3] hw/gpio/aspeed_gpio: Add gpios in/out init Date: Tue, 20 Sep 2022 01:21:10 +0800 Message-Id: <20220919172112.2706026-2-zhangjian.3032@bytedance.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220919172112.2706026-1-zhangjian.3032@bytedance.com> References: <20220919172112.2706026-1-zhangjian.3032@bytedance.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::529; envelope-from=zhangjian.3032@bytedance.com; helo=mail-pg1-x529.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Mon, 19 Sep 2022 13:29:46 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @bytedance-com.20210112.gappssmtp.com) X-ZM-MESSAGEID: 1663608775570100002 Content-Type: text/plain; charset="utf-8" Add gpios in/out init for aspeed gpio to add the ability to connect to other gpio devices. Based the qdev-core.h comments, If you want to connect a GPIO to other devices, you need to call qdev_init_gpio_in() or qdev_init_gpio_out(). ``` For input gpios: * * Outbound GPIO lines can be connected to any qemu_irq, but the common * case is connecting them to another device's inbound GPIO line, using * the qemu_irq returned by qdev_get_gpio_in() or qdev_get_gpio_in_named(). For output gpios: * This function is intended to be used by board code or SoC "container" * device models to wire up the GPIO lines; usually the return value * will be passed to qdev_connect_gpio_out() or a similar function to * connect another device's output GPIO line to this input. ``` Signed-off-by: Jian Zhang --- hw/gpio/aspeed_gpio.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/hw/gpio/aspeed_gpio.c b/hw/gpio/aspeed_gpio.c index e99c4c6329..616ec8db52 100644 --- a/hw/gpio/aspeed_gpio.c +++ b/hw/gpio/aspeed_gpio.c @@ -1018,6 +1018,17 @@ static void aspeed_gpio_reset(DeviceState *dev) memset(s->sets, 0, sizeof(s->sets)); } =20 +static void aspeed_gpio_set(void *opaque, int line, int new_state) +{ + AspeedGPIOState *s =3D ASPEED_GPIO(opaque); + uint32_t set_idx, pin; + + set_idx =3D line / ASPEED_GPIOS_PER_SET; + pin =3D line % ASPEED_GPIOS_PER_SET; + + aspeed_gpio_set_pin_level(s, set_idx, pin, new_state); +} + static void aspeed_gpio_realize(DeviceState *dev, Error **errp) { AspeedGPIOState *s =3D ASPEED_GPIO(dev); @@ -1042,6 +1053,12 @@ static void aspeed_gpio_realize(DeviceState *dev, Er= ror **errp) memory_region_init_io(&s->iomem, OBJECT(s), &aspeed_gpio_ops, s, TYPE_ASPEED_GPIO, 0x800); =20 + /* TODO: Maybe could in named, not anonymous is better */ + qdev_init_gpio_out(dev, &s->gpios[0][0], + ASPEED_GPIO_MAX_NR_SETS * ASPEED_GPIOS_PER_SET); + qdev_init_gpio_in(dev, aspeed_gpio_set, + ASPEED_GPIO_MAX_NR_SETS * ASPEED_GPIOS_PER_SET); + sysbus_init_mmio(sbd, &s->iomem); } =20 --=20 2.25.1 From nobody Tue Feb 10 23:32:59 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=bytedance.com ARC-Seal: i=1; a=rsa-sha256; t=1663608853; cv=none; d=zohomail.com; s=zohoarc; b=EsHonM6XGT3Y/srSNfP8lhaAj9SFotXktL+fvao59+KKi/kNOwbXBqIhgOnUNVGKaANeD6uFEFEXizLTkuQXCcLRqXhh4a+7nkkh80M0Pff9ucE197PgEJPtqmaZClj8ouErBLQtfifO7hhX9phmZk8bpO+TTmanDXVRqrnsy6s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1663608853; h=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=n8+XgzHYrArgCn4U9y3QEq0TqqXR5edeovdfx2xO/z0=; b=Tk699P+23K25y5IyF10XNnFsCIDVHmnPDGbkPiNkNrRgu4W4kvi+qv7bIF44WfeAaNoScHZP76sCWG5r2CdOEgUvvDVnFuxCGymtxnK8HIRinQcreT0VEZKJRU38+hXarJhrdBygi4HEnCvwNyUuMwb8ysBDwQXgqrHB1G9NCaU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1663608853822741.5936067729679; Mon, 19 Sep 2022 10:34:13 -0700 (PDT) Received: from localhost ([::1]:60194 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oaKeq-00016v-O8 for importer@patchew.org; Mon, 19 Sep 2022 13:34:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34290) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oaKT4-00065C-Ig for qemu-devel@nongnu.org; Mon, 19 Sep 2022 13:22:02 -0400 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]:43631) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oaKSw-0000Qt-Rj for qemu-devel@nongnu.org; Mon, 19 Sep 2022 13:22:02 -0400 Received: by mail-pf1-x431.google.com with SMTP id d82so233328pfd.10 for ; Mon, 19 Sep 2022 10:21:54 -0700 (PDT) Received: from localhost ([49.7.199.102]) by smtp.gmail.com with ESMTPSA id q6-20020aa79826000000b0053e99f2bf16sm20580236pfl.78.2022.09.19.10.21.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Sep 2022 10:21:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=n8+XgzHYrArgCn4U9y3QEq0TqqXR5edeovdfx2xO/z0=; b=axR/v0kNVxD6fIrlxoHyGs86ELdse0K5NR9DOjXFGmw5XimYuv4bovaEGYAJUtYA0h 1JGAl0rc8UXC+qSOIsJVK7xj1A7vUeJrEj6/MYiSyh9O1p71aULZM5R3nS6PXYSaVyc4 d/mA9arcSuibuQ/8cMMKdcv7oRQTMpTsWL8SeTiHpWGcur3H65/HLOpfLoLcMtIpfKFT UDJMoYvHZaeV9ay6OLU83pF5aY2A2QyM2mgysBJaQGahsw9gpRq+1yVCakc8Z6ESMHh/ u4DU0NCFoZGK/GXoaiNDJzT1XlrdZRxWRnSrOCOK2eoCS5KXP7Mng9UEs4FODWVQKsks ccJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=n8+XgzHYrArgCn4U9y3QEq0TqqXR5edeovdfx2xO/z0=; b=EWAjDAeAWS2ZLli8YCF+6WxBhfZjfi8KhI5bsqmmCPEq5GREv56IREprDj9EsSdY0L UATe5yBJ/kd2Jf4peYHx0GN97CxcSJJgPmgN8jsB0pcF/hoZR+2JYXviwRXMnvaHmimk IAcryYwDo8kedFuqt8hZwomt3so7iCh7xr/aEISOCgy1zqXF4OR1fmYAg7xmkRYmoZW3 FcKgTzUpPzYnFeHpXLuyrxkMVA9HJie1c+5vhJCavycEgoE/6cQlYWsScKp6x3CKaWze JxKvBJ8IMCxN5KOzupTl/LXrAgYkWuPOacvamNQccku2dfxGz5z479A1yDpfWN/oPqh4 mA1Q== X-Gm-Message-State: ACrzQf0nAhxqYXrzFDf7Cq+gXkapPtADqPFXRw3JT4ezPARBXlxGED+j O1dI99Ds1hG+UlNFtH+m1Ps2ew== X-Google-Smtp-Source: AMsMyM5ZkCsaEM0n8YBK0D59+lwtTCDcj4A7htNlAqQetXJ2FNWeEwm07VcDtfCeQvQSPeUazcbXdQ== X-Received: by 2002:a05:6a00:1a8d:b0:547:c564:1614 with SMTP id e13-20020a056a001a8d00b00547c5641614mr19244038pfv.71.1663608113591; Mon, 19 Sep 2022 10:21:53 -0700 (PDT) From: Jian Zhang To: peter.maydell@linaro.org, clg@kaod.org, andrew@aj.id.au, joel@jms.id.au, qemu-devel@nongnu.org, qemu-arm@nongnu.org Cc: yulei.sh@bytedance.com, tangyiwei.2022@bytedance.com, chentingting.2150@bytedance.com, yuhao.17@bytedance.com, wangxiaohua.1217@bytedance.com, xiening.xll@bytedance.com, Jian Zhang Subject: [PATCH 2/3] hw/misc/host_power: Add a simple host power device Date: Tue, 20 Sep 2022 01:21:11 +0800 Message-Id: <20220919172112.2706026-3-zhangjian.3032@bytedance.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220919172112.2706026-1-zhangjian.3032@bytedance.com> References: <20220919172112.2706026-1-zhangjian.3032@bytedance.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::431; envelope-from=zhangjian.3032@bytedance.com; helo=mail-pf1-x431.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Mon, 19 Sep 2022 13:29:46 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @bytedance-com.20210112.gappssmtp.com) X-ZM-MESSAGEID: 1663608855184100001 Content-Type: text/plain; charset="utf-8" This Host Power device privide a simple power control logic for a host, like use a bmc to control the power of a host. This device has 2 gpio, one is input named "button", another gpio is output named "power-good", when button have a falling edge, invert the "power-good" gpio. Signed-off-by: Jian Zhang --- MAINTAINERS | 2 + hw/arm/Kconfig | 1 + hw/misc/Kconfig | 3 + hw/misc/host_power.c | 105 +++++++++++++++++++++++++++++++++++ hw/misc/meson.build | 1 + include/hw/misc/host_power.h | 41 ++++++++++++++ 6 files changed, 153 insertions(+) create mode 100644 hw/misc/host_power.c create mode 100644 include/hw/misc/host_power.h diff --git a/MAINTAINERS b/MAINTAINERS index 472fbf4f42..5a27a78985 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1068,6 +1068,8 @@ F: tests/qtest/*aspeed* F: hw/arm/fby35.c F: hw/misc/fby35_sb_cpld.c F: hw/misc/intel_me.c +F: include/hw/misc/host_power.h +F: hw/misc/host_power.c =20 NRF51 M: Joel Stanley diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 23330cca52..f6fa364ab7 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -455,6 +455,7 @@ config ASPEED_SOC select EMC141X select UNIMP select LED + select HOST_POWER select PMBUS select MAX31785 =20 diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig index d0e691990a..e0b168ec1d 100644 --- a/hw/misc/Kconfig +++ b/hw/misc/Kconfig @@ -147,6 +147,9 @@ config UNIMP config LED bool =20 +config HOST_POWER + bool + config MAC_VIA bool select MOS6522 diff --git a/hw/misc/host_power.c b/hw/misc/host_power.c new file mode 100644 index 0000000000..18d2573d5e --- /dev/null +++ b/hw/misc/host_power.c @@ -0,0 +1,105 @@ +/* + * QEMU single Host Power device + * + * Copyright (C) 2022 Jian Zhang + * + * 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/irq.h" +#include "hw/misc/host_power.h" +#include "trace.h" + +static void power_control(HostPowerState *s, bool on) +{ + if (on) { + qemu_set_irq(s->power_good, 1); + } else { + qemu_set_irq(s->power_good, 0); + } + s->power_status =3D on; +} + +static void power_button_handler(void *opaque, int line, int new_state) +{ + HostPowerState *s =3D HOST_POWER(opaque); + + assert(line =3D=3D 0); + + if (new_state =3D=3D 0) { + /* falling edge, reverse the power status */ + if (s->power_status =3D=3D 0) { + power_control(s, true); + } else { + power_control(s, false); + } + } +} + +static void host_power_reset(DeviceState *dev) +{ + HostPowerState *s =3D HOST_POWER(dev); + s->power_status =3D false; +} + +static const VMStateDescription vmstate_host_power =3D { + .name =3D TYPE_HOST_POWER, + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (VMStateField[]) { + VMSTATE_END_OF_LIST() + } +}; + +static void host_power_realize(DeviceState *dev, Error **errp) +{ + HostPowerState *s =3D HOST_POWER(dev); + s->power_status =3D false; + + /* init a power button gpio as input pin */ + qdev_init_gpio_in_named(dev, power_button_handler, "power-button", 1); + + /* init a power good gpio as output pin */ + qdev_init_gpio_out_named(dev, &(s->power_good), "power-good", 1); +} + +static void host_power_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + + dc->desc =3D "Host Power"; + dc->vmsd =3D &vmstate_host_power; + dc->reset =3D host_power_reset; + dc->realize =3D host_power_realize; + set_bit(DEVICE_CATEGORY_DISPLAY, dc->categories); +} + +static const TypeInfo host_power_info =3D { + .name =3D TYPE_HOST_POWER, + .parent =3D TYPE_DEVICE, + .instance_size =3D sizeof(HostPowerState), + .class_init =3D host_power_class_init +}; + +static void host_power_register_types(void) +{ + type_register_static(&host_power_info); +} + +type_init(host_power_register_types) + +HostPowerState *host_power_create_simple(Object *parentobj) +{ + static const char *name =3D "host-power"; + DeviceState *dev; + + dev =3D qdev_new(TYPE_HOST_POWER); + + object_property_add_child(parentobj, name, OBJECT(dev)); + qdev_realize_and_unref(dev, NULL, &error_fatal); + + return HOST_POWER(dev); +} diff --git a/hw/misc/meson.build b/hw/misc/meson.build index 87d65c16a6..be14c1399a 100644 --- a/hw/misc/meson.build +++ b/hw/misc/meson.build @@ -9,6 +9,7 @@ softmmu_ss.add(when: 'CONFIG_SGA', if_true: files('sga.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')) +softmmu_ss.add(when: 'CONFIG_HOST_POWER', if_true: files('host_power.c')) softmmu_ss.add(when: 'CONFIG_PVPANIC_COMMON', if_true: files('pvpanic.c')) =20 # ARM devices diff --git a/include/hw/misc/host_power.h b/include/hw/misc/host_power.h new file mode 100644 index 0000000000..a2d12ded27 --- /dev/null +++ b/include/hw/misc/host_power.h @@ -0,0 +1,41 @@ +/* + * QEMU Host Power device + * + * Copyright (C) Jian Zhang + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#ifndef HW_MISC_HOST_POWER_H +#define HW_MISC_HOST_POWER_H + +#include "qom/object.h" +#include "hw/qdev-core.h" + +#define TYPE_HOST_POWER "host-power" + +struct HostPowerState { + /* Private */ + DeviceState parent_obj; + /* Public */ + + qemu_irq power_button; + qemu_irq power_good; + + /* Properties */ + bool power_status; + char *description; +}; +typedef struct HostPowerState HostPowerState; +DECLARE_INSTANCE_CHECKER(HostPowerState, HOST_POWER, TYPE_HOST_POWER) + +/** + * host_power_create_simple: Create and realize a device + * @parentobj: the parent object + * + * Create the device state structure, initialize it, and + * drop the reference to it (the device is realized). + * + */ +HostPowerState *host_power_create_simple(Object *parentobj); + +#endif /* HW_MISC_HOST_POWER_H */ --=20 2.25.1 From nobody Tue Feb 10 23:32:59 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=bytedance.com ARC-Seal: i=1; a=rsa-sha256; t=1663609181; cv=none; d=zohomail.com; s=zohoarc; b=dzFlcVamsWKbZ5s7B0HUZd9XIMQQrwjZVQx/4SrPowYklmK1nlSK5HTv5f0h+gbY7yIxMoGZitETd2ZJVysF81SrijcMDZIDuLgxT3I2JIF40iCZnHAp/MepqqNUBi+6K/7M9VVKSu6GhXccI1DxZYloV8b5t5XHTPVxl1QnKpM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1663609181; h=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=MKmFcMrw4Ulwq9cX8g5pa2zrdMnwEk2YgEPM3gKsVrk=; b=m4RYAjNdptWyeP1B2FCrpThtacAyukmqTWjJARU1RZTBddat+dRTpkOdyrL1FfkEgwE90cM0OwzxFRfQecqSAu1YOXf0wv5Sy71d0LcYhwLi+pMyXiQHm2KEXbRcWMUhYKcxeTV8aSKLsLI6JKAfOkDC5nD3loIWh6WX23zizI4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1663609181506464.14731563771943; Mon, 19 Sep 2022 10:39:41 -0700 (PDT) Received: from localhost ([::1]:38072 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oaKk8-0006mf-Dw for importer@patchew.org; Mon, 19 Sep 2022 13:39:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34292) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oaKT6-000678-5A for qemu-devel@nongnu.org; Mon, 19 Sep 2022 13:22:04 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]:34708) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oaKT4-0000SY-6a for qemu-devel@nongnu.org; Mon, 19 Sep 2022 13:22:03 -0400 Received: by mail-pf1-x436.google.com with SMTP id e68so279783pfe.1 for ; Mon, 19 Sep 2022 10:22:01 -0700 (PDT) Received: from localhost ([49.7.199.22]) by smtp.gmail.com with ESMTPSA id x1-20020aa79a41000000b00536b2483aedsm18849161pfj.199.2022.09.19.10.21.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Sep 2022 10:22:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=MKmFcMrw4Ulwq9cX8g5pa2zrdMnwEk2YgEPM3gKsVrk=; b=HjTdgNPCZXM7/6uZ0EmISXGtj9hxf1BHyFx1d7UwNdvRY716bWI1z+DMFaqYhwNLpO UXHvuABvNUrleednyx+BKWH5MzT7k6nEA45p5XBaJEL22l4PH0kErqwS+rILXnRPcKjq YiFlRf1hValSa03QIeFQr96wp97OZUasrmfPiH2eWaNe0VnJA6kVaVP9Xi+tsyyVNhVy oz4Ylqg5hHCHVlrzIE42IjKPHAXA1yJcF3skmD0+W3wKHzgqNNxTOdlMo9Yvq5qGGrxF JiPydpQ4YmouurWslf9C8Uwv3wF5JdJeIjOf9UaFFsiTFv6AjNOLc8KpAN1qLe8eGuxS niNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=MKmFcMrw4Ulwq9cX8g5pa2zrdMnwEk2YgEPM3gKsVrk=; b=Ms4Too77SONIQPfgTpxckLelayJWqBWu/7xDJYBSW4zj+Bwq/QGKQtVknSLE945DGU Yiov325JEKVwTPcsHIqusQfHj23MVEY30AzZCJJ2GUA1fl3BiHy8URPqXj4Tv8Oyj8JO KXSVc78R5ucc/3mE+UXLriXewjN+78NkrW76GZZJXgffaEFL2VwLSEJnh8T49WEFpEwn ixZPxBE6TqWK826iK8CkTgLHNd0eSMDRWz/W85W5XpaLXzmUpC0DAV0bpvhUSIAllVcQ owCJJEvYws4VJryoeZCb0B+R6kh3p+TNlpjfuQl3PDGogZIk694vqHmyfrjE2Z3/YsPB mzhQ== X-Gm-Message-State: ACrzQf1PMc5d9bm2vOurSKE6z4Vso4RkV3Qx6x8hGdDPZky3dUmFSYh8 hq4cu1rYiT8oG/k1OItJG3dThQ== X-Google-Smtp-Source: AMsMyM4ipJpI15LcyguA/KFzeiSJDxpw1El9Zh4rMYlAvx8Zi6kIB1hugKHKG9MfVHJ79NBQRuwnDg== X-Received: by 2002:a05:6a00:180d:b0:540:ec09:293 with SMTP id y13-20020a056a00180d00b00540ec090293mr19611543pfa.3.1663608120887; Mon, 19 Sep 2022 10:22:00 -0700 (PDT) From: Jian Zhang To: peter.maydell@linaro.org, clg@kaod.org, andrew@aj.id.au, joel@jms.id.au, qemu-devel@nongnu.org, qemu-arm@nongnu.org Cc: yulei.sh@bytedance.com, tangyiwei.2022@bytedance.com, chentingting.2150@bytedance.com, yuhao.17@bytedance.com, wangxiaohua.1217@bytedance.com, xiening.xll@bytedance.com, Jian Zhang Subject: [PATCH 3/3] hw/arm/aspeed: g220a: Add host-power device Date: Tue, 20 Sep 2022 01:21:12 +0800 Message-Id: <20220919172112.2706026-4-zhangjian.3032@bytedance.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220919172112.2706026-1-zhangjian.3032@bytedance.com> References: <20220919172112.2706026-1-zhangjian.3032@bytedance.com> MIME-Version: 1.0 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=2607:f8b0:4864:20::436; envelope-from=zhangjian.3032@bytedance.com; helo=mail-pf1-x436.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Mon, 19 Sep 2022 13:29:46 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @bytedance-com.20210112.gappssmtp.com) X-ZM-MESSAGEID: 1663609184280100001 Content-Type: text/plain; charset="utf-8" Add power-button/power-good gpio connect between g220a BMC machind(soc gpio) and host. Tested: In qemu, use g220a image ~# ipmitool power status Chassis Power is off ~# ipmitool power on Chassis Power Control: Up/On ~# ipmitool power status Chassis Power is on ~# ipmitool power off Chassis Power Control: Down/Off ~# ipmitool power status Chassis Power is off Signed-off-by: Jian Zhang --- hw/arm/aspeed.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index 952fa11ca2..80a98b8d74 100644 --- a/hw/arm/aspeed.c +++ b/hw/arm/aspeed.c @@ -28,6 +28,7 @@ #include "hw/qdev-clock.h" #include "sysemu/sysemu.h" #include "hw/arm/fby35.h" +#include "hw/misc/host_power.h" =20 static struct arm_boot_info aspeed_board_binfo =3D { .board_id =3D -1, /* device-tree-only board */ @@ -723,6 +724,24 @@ static void g220a_bmc_i2c_init(AspeedMachineState *bmc) }; smbus_eeprom_init_one(aspeed_i2c_get_bus(&soc->i2c, 4), 0x57, eeprom_buf); + + /* Add a host-power device */ + HostPowerState *power =3D host_power_create_simple(OBJECT(bmc)); + + /* + * connect the power button(in) to soc(out) + * the power button in g220a is 215 + */ + qdev_connect_gpio_out(DEVICE(&bmc->soc.gpio), 215, + qdev_get_gpio_in_named(DEVICE(power), + "power-button", 0)); + + /* + * connect the power good signal(out) to soc(in) + * the power good in g220a is 209 + */ + qdev_connect_gpio_out_named(DEVICE(power), "power-good", 0, + qdev_get_gpio_in(DEVICE(&bmc->soc.gpio), 2= 09)); } =20 static void aspeed_eeprom_init(I2CBus *bus, uint8_t addr, uint32_t rsize) --=20 2.25.1