From patchwork Mon Oct 14 16:03:41 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 176330 Delivered-To: patch@linaro.org Received: by 2002:a92:7e96:0:0:0:0:0 with SMTP id q22csp4779603ill; Mon, 14 Oct 2019 10:11:42 -0700 (PDT) X-Google-Smtp-Source: APXvYqye8255r9XpC+eVowPoWzmNxOFo7VRUtwQOAdeygxeYQSbKw7yj0JcpkhyZmJpiq2msFtez X-Received: by 2002:ac8:3f64:: with SMTP id w33mr33054219qtk.191.1571073102349; Mon, 14 Oct 2019 10:11:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1571073102; cv=none; d=google.com; s=arc-20160816; b=DpED1ehGIO1aicjjSTyrOBCtmVkEHJQzZiSiMuQhVhFwGICc7XW9wvL/fHziXXiaHX msZz1uqi6myCQQ9Vhtt2tVzVNwqSlS3fNahooPwcy5qTQ5XcRyS8V9i1L2EYvwKtt8R1 rdUTDDcCFoi1Ry93hta2wWS2R8eAtglWea2hbvW8XW8hQcE+2D7SwIW8scpi4MvT7320 49+vooEZfGe/XAGSlhbUspldm/B1edPXC13CpLyMms+2QwQ+KdTiMwv3YxjedIuq/OJ/ zg74sQ1SQR2rJG3BXq2vXtR69npoNvjmuCUTPGYd/9ZRXpXN/ZSEAOd/HQyV+IU0dm9x jGiA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=MkJTDzl7sqFJssCYKDYW4CGvMgjxfSmS7ViVzWLm0o8=; b=UfHMozCdaaR6aYNo5F9FQRVLpOaXBVDygOxDeZUknVJacrkzG/zj0pbL0AJWbJdL5W nBKyCiDs+9jhvbFurCYjbmROdTNtavHFVuQ+R04hUHts5SUh5qDW6N/Hnojv/qAuq+Ih uUS+0rGJi2Fa+up1BW5Yh5VldcJra9Sb18gvoKfj68+nNTBmkVwqTZdJ2L8pp4pQ98Uj 9p+89/ebRvhmaz945f+Y2JACLpsUGSGQT5R0NnPjutnpoCoLUM01tE1j8fIkfNGxMarV i1S2dWLBBUNLRPiMeenqPZtqqfu7kP2D2gp0LNG9mRgdNhHIpfj4TXZ3ZCP0I5E7v2SS WR1w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="JUNgnE/b"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id f15si17566524qkg.158.2019.10.14.10.11.41 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 14 Oct 2019 10:11:42 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="JUNgnE/b"; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:54154 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iK3sj-0005sJ-1E for patch@linaro.org; Mon, 14 Oct 2019 13:11:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37291) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iK2qZ-0004xc-Cr for qemu-devel@nongnu.org; Mon, 14 Oct 2019 12:05:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iK2qY-000825-2A for qemu-devel@nongnu.org; Mon, 14 Oct 2019 12:05:23 -0400 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]:36561) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iK2qX-00081K-SB for qemu-devel@nongnu.org; Mon, 14 Oct 2019 12:05:22 -0400 Received: by mail-wm1-x32b.google.com with SMTP id m18so17318442wmc.1 for ; Mon, 14 Oct 2019 09:05:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=MkJTDzl7sqFJssCYKDYW4CGvMgjxfSmS7ViVzWLm0o8=; b=JUNgnE/bqju8rqO8SpOZ7cUgrdZ3cqzY2xfCy7XmcFjjqTszr3qFN6S8Ly8aXTMbj7 TQlFyy8PQqB/ne4QHhtCELg4vCe+ngGZ3Wpz1FRPwNMhdXlXrjEYvhIWbaDks1G2HIwl AiRTLvRjRRh3ReGlApKGko+ZGsSBebWgRUg6OEnkA9npqb7cDRkP7Dw6PFAs6rnsrYpZ 8xGT8q7DU7OyRNj9ErffUjcPRHkBzkQlkNW3RVQZdVB+itGdbriDdJaWQdqpI89iOBV9 FySPLRvJOkklg9QXGNRl+2Ro9+wUBh8j5inq5cwQvPkWFxQBuodCWDd+e6toTc5g0tXo 8/zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=MkJTDzl7sqFJssCYKDYW4CGvMgjxfSmS7ViVzWLm0o8=; b=NuK737meFxHGm/YZrO8/+wG9cxFS8zmME/Wqh/IbhiWPo2BEh3pZuuVCSxa8nR+UNT 5ydgpG2M7eLEA1HAmOsvEusLLLGE9dpEXF/25er7VK8sevTDZdyvi4n4y7tw+rC+Pn46 wR21/vyOG0SAtG0Wz6zo66SVDuTOFoePvlo7MFKo/JNc2jesJslshT6DK3t8UGTAOYQ3 7NHcNm5SFdzpG/8Lf1+8/JsQ+IXDvbbbUtYK8CaVSXRpQ0uzX6NQVHxLb93ObztFw3UK PzivwmcP4MLOyJlPkxGqBprbHL/zO6Y4OnbugqahCMMqjgPiP3kcB/le+IB3xwyHJ4en PRqg== X-Gm-Message-State: APjAAAUXOXx2yr32BeDeDNNmkbul+5gYcrHA68DffoFWG9gf7IiP/QTT EAWS+oeGMdxo25Mg1s2EksoZAPuXpE0bQQ== X-Received: by 2002:a1c:4386:: with SMTP id q128mr16484533wma.39.1571069120530; Mon, 14 Oct 2019 09:05:20 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id 5sm18029779wrk.86.2019.10.14.09.05.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Oct 2019 09:05:19 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 45/68] aspeed/timer: Add AST2600 support Date: Mon, 14 Oct 2019 17:03:41 +0100 Message-Id: <20191014160404.19553-46-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191014160404.19553-1-peter.maydell@linaro.org> References: <20191014160404.19553-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::32b X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Cédric Le Goater The AST2600 timer has a third control register that is used to implement a set-to-clear feature for the main control register. On the AST2600, it is not configurable via 0x38 (control register 3) as it is on the AST2500. Based on previous work from Joel Stanley. Signed-off-by: Cédric Le Goater Reviewed-by: Joel Stanley Message-id: 20190925143248.10000-7-clg@kaod.org Signed-off-by: Peter Maydell --- include/hw/timer/aspeed_timer.h | 1 + hw/timer/aspeed_timer.c | 51 +++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) -- 2.20.1 diff --git a/include/hw/timer/aspeed_timer.h b/include/hw/timer/aspeed_timer.h index 1e0288ebc49..69b1377af01 100644 --- a/include/hw/timer/aspeed_timer.h +++ b/include/hw/timer/aspeed_timer.h @@ -30,6 +30,7 @@ #define TYPE_ASPEED_TIMER "aspeed.timer" #define TYPE_ASPEED_2400_TIMER TYPE_ASPEED_TIMER "-ast2400" #define TYPE_ASPEED_2500_TIMER TYPE_ASPEED_TIMER "-ast2500" +#define TYPE_ASPEED_2600_TIMER TYPE_ASPEED_TIMER "-ast2600" #define ASPEED_TIMER_NR_TIMERS 8 diff --git a/hw/timer/aspeed_timer.c b/hw/timer/aspeed_timer.c index d70e78a0293..7f73d0c7533 100644 --- a/hw/timer/aspeed_timer.c +++ b/hw/timer/aspeed_timer.c @@ -538,6 +538,40 @@ static void aspeed_2500_timer_write(AspeedTimerCtrlState *s, hwaddr offset, } } +static uint64_t aspeed_2600_timer_read(AspeedTimerCtrlState *s, hwaddr offset) +{ + uint64_t value; + + switch (offset) { + case 0x38: + case 0x3C: + default: + qemu_log_mask(LOG_GUEST_ERROR, "%s: Bad offset 0x%" HWADDR_PRIx "\n", + __func__, offset); + value = 0; + break; + } + return value; +} + +static void aspeed_2600_timer_write(AspeedTimerCtrlState *s, hwaddr offset, + uint64_t value) +{ + const uint32_t tv = (uint32_t)(value & 0xFFFFFFFF); + + switch (offset) { + case 0x3C: + aspeed_timer_set_ctrl(s, s->ctrl & ~tv); + break; + + case 0x38: + default: + qemu_log_mask(LOG_GUEST_ERROR, "%s: Bad offset 0x%" HWADDR_PRIx "\n", + __func__, offset); + break; + } +} + static void aspeed_init_one_timer(AspeedTimerCtrlState *s, uint8_t id) { AspeedTimer *t = &s->timers[id]; @@ -674,11 +708,28 @@ static const TypeInfo aspeed_2500_timer_info = { .class_init = aspeed_2500_timer_class_init, }; +static void aspeed_2600_timer_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + AspeedTimerClass *awc = ASPEED_TIMER_CLASS(klass); + + dc->desc = "ASPEED 2600 Timer"; + awc->read = aspeed_2600_timer_read; + awc->write = aspeed_2600_timer_write; +} + +static const TypeInfo aspeed_2600_timer_info = { + .name = TYPE_ASPEED_2600_TIMER, + .parent = TYPE_ASPEED_TIMER, + .class_init = aspeed_2600_timer_class_init, +}; + static void aspeed_timer_register_types(void) { type_register_static(&aspeed_timer_info); type_register_static(&aspeed_2400_timer_info); type_register_static(&aspeed_2500_timer_info); + type_register_static(&aspeed_2600_timer_info); } type_init(aspeed_timer_register_types)