From patchwork Tue Nov 29 16:07:36 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?C=C3=A9dric_Le_Goater?= X-Patchwork-Id: 700681 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3tSsn1699cz9t1C for ; Wed, 30 Nov 2016 05:40:37 +1100 (AEDT) Received: from localhost ([::1]:38744 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cBnKU-0005dT-Ux for incoming@patchwork.ozlabs.org; Tue, 29 Nov 2016 13:40:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38565) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cBnIp-0004kQ-6W for qemu-devel@nongnu.org; Tue, 29 Nov 2016 13:38:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cBnIl-0008Ri-U5 for qemu-devel@nongnu.org; Tue, 29 Nov 2016 13:38:51 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:44417 helo=mx0a-001b2d01.pphosted.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cBnIl-0008RY-Nt for qemu-devel@nongnu.org; Tue, 29 Nov 2016 13:38:47 -0500 Received: from pps.filterd (m0098421.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.17/8.16.0.17) with SMTP id uATIclmE067453 for ; Tue, 29 Nov 2016 13:38:47 -0500 Received: from e06smtp10.uk.ibm.com (e06smtp10.uk.ibm.com [195.75.94.106]) by mx0a-001b2d01.pphosted.com with ESMTP id 271ah52ptf-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Tue, 29 Nov 2016 13:38:45 -0500 Received: from localhost by e06smtp10.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 29 Nov 2016 18:38:37 -0000 Received: from d06dlp03.portsmouth.uk.ibm.com (9.149.20.15) by e06smtp10.uk.ibm.com (192.168.101.140) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Tue, 29 Nov 2016 18:38:34 -0000 Received: from b06cxnps3074.portsmouth.uk.ibm.com (d06relay09.portsmouth.uk.ibm.com [9.149.109.194]) by d06dlp03.portsmouth.uk.ibm.com (Postfix) with ESMTP id 7C42F1B08A97; Tue, 29 Nov 2016 16:34:45 +0000 (GMT) Received: from d06av23.portsmouth.uk.ibm.com (d06av23.portsmouth.uk.ibm.com [9.149.105.59]) by b06cxnps3074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id uATGWNMX15335804; Tue, 29 Nov 2016 16:32:23 GMT Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3ADEDA4091; Tue, 29 Nov 2016 15:30:36 +0000 (GMT) Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0F9E6A4078; Tue, 29 Nov 2016 15:30:36 +0000 (GMT) Received: from smtp.lab.toulouse-stg.fr.ibm.com (unknown [9.101.4.1]) by d06av23.portsmouth.uk.ibm.com (Postfix) with ESMTP; Tue, 29 Nov 2016 15:30:19 +0000 (GMT) Received: from hermes.lab.toulouse-stg.fr.ibm.com (hermes.lab.toulouse-stg.fr.ibm.com [9.101.4.42]) by smtp.lab.toulouse-stg.fr.ibm.com (Postfix) with ESMTP id 1564D22067C; Tue, 29 Nov 2016 17:07:39 +0100 (CET) From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= To: qemu-devel@nongnu.org Date: Tue, 29 Nov 2016 17:07:36 +0100 X-Mailer: git-send-email 2.7.4 In-Reply-To: <1480435656-28497-1-git-send-email-clg@kaod.org> References: <1480434248-27138-1-git-send-email-clg@kaod.org> <1480435656-28497-1-git-send-email-clg@kaod.org> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16112918-0040-0000-0000-0000026BDD61 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 16112918-0041-0000-0000-000022C22509 Message-Id: <1480435656-28497-2-git-send-email-clg@kaod.org> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2016-11-29_05:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=1 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1609300000 definitions=main-1611290309 X-MIME-Autoconverted: from 8bit to quoted-printable by mx0a-001b2d01.pphosted.com id uATIclmE067453 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.158.5 Subject: [Qemu-devel] [PATCH for-2.9 30/30] wdt: aspeed: use scu to get clock freq X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Peter Crosthwaite , Andrew Jeffery , Marcin Krzeminski , qemu-arm@nongnu.org, =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Add a link to the object model and a helper routine to retrieve the value instead of using a constant value. Signed-off-by: Cédric Le Goater Reviewed-by: Joel Stanley --- hw/arm/aspeed_soc.c | 2 ++ hw/watchdog/wdt_aspeed.c | 19 +++++++++++++++---- include/hw/watchdog/wdt_aspeed.h | 2 ++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/hw/arm/aspeed_soc.c b/hw/arm/aspeed_soc.c index 6df76382f007..712ae9d6c54d 100644 --- a/hw/arm/aspeed_soc.c +++ b/hw/arm/aspeed_soc.c @@ -175,6 +175,8 @@ static void aspeed_soc_init(Object *obj) object_initialize(&s->wdt, sizeof(s->wdt), TYPE_ASPEED_WDT); object_property_add_child(obj, "wdt", OBJECT(&s->wdt), NULL); qdev_set_parent_bus(DEVICE(&s->wdt), sysbus_get_default()); + object_property_add_const_link(OBJECT(&s->wdt), "scu", OBJECT(&s->scu), + NULL); } static void aspeed_soc_realize(DeviceState *dev, Error **errp) diff --git a/hw/watchdog/wdt_aspeed.c b/hw/watchdog/wdt_aspeed.c index cdba3983b7af..01266fb1b76b 100644 --- a/hw/watchdog/wdt_aspeed.c +++ b/hw/watchdog/wdt_aspeed.c @@ -7,10 +7,12 @@ #include "qemu/osdep.h" #include "qemu/log.h" +#include "qapi/error.h" #include "sysemu/watchdog.h" #include "hw/sysbus.h" #include "qemu/timer.h" #include "hw/watchdog/wdt_aspeed.h" +#include "hw/misc/aspeed_scu.h" #define WDT_IO_REGION_SIZE 0x20 @@ -56,8 +58,6 @@ static uint64_t aspeed_wdt_read(void *opaque, hwaddr offset, unsigned size) } -#define PCLK_HZ 24000000 - static void aspeed_wdt_write(void *opaque, hwaddr offset, uint64_t data, unsigned size) { @@ -82,7 +82,7 @@ static void aspeed_wdt_write(void *opaque, hwaddr offset, uint64_t data, if (pclk) { reload = muldiv64(s->reg_reload_value, NANOSECONDS_PER_SECOND, - PCLK_HZ) ; + s->pclk_freq); } else { reload = s->reg_reload_value * 1000; } @@ -99,7 +99,7 @@ static void aspeed_wdt_write(void *opaque, hwaddr offset, uint64_t data, if (pclk) { reload = muldiv64(s->reg_reload_value, NANOSECONDS_PER_SECOND, - PCLK_HZ); + s->pclk_freq); } else { reload = s->reg_reload_value * 1000; } @@ -177,10 +177,21 @@ static void aspeed_wdt_realize(DeviceState *dev, Error **errp) { SysBusDevice *sbd = SYS_BUS_DEVICE(dev); AspeedWDTState *s = ASPEED_WDT(dev); + Object *obj; + Error *err = NULL; s->timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, aspeed_wdt_timer_expired, dev); + obj = object_property_get_link(OBJECT(dev), "scu", &err); + if (!obj) { + error_setg(errp, "%s: required link 'scu' not found: %s", + __func__, error_get_pretty(err)); + return; + } + + s->pclk_freq = aspeed_scu_get_clk(ASPEED_SCU(obj)); + memory_region_init_io(&s->iomem, OBJECT(s), &aspeed_wdt_ops, s, TYPE_ASPEED_WDT, WDT_IO_REGION_SIZE); sysbus_init_mmio(sbd, &s->iomem); diff --git a/include/hw/watchdog/wdt_aspeed.h b/include/hw/watchdog/wdt_aspeed.h index dbf45ae968db..0483335ecee5 100644 --- a/include/hw/watchdog/wdt_aspeed.h +++ b/include/hw/watchdog/wdt_aspeed.h @@ -36,6 +36,8 @@ typedef struct AspeedWDTState { uint32_t reg_reload_value; uint32_t reg_restart; uint32_t reg_ctrl; + + uint32_t pclk_freq; } AspeedWDTState; #endif /* ASPEED_WDT_H */