From patchwork Tue Jan 9 18:50:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 857676 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=xilinx.onmicrosoft.com header.i=@xilinx.onmicrosoft.com header.b="bjzFgjK+"; dkim-atps=neutral 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 3zGLvd2gsbz9sPk for ; Wed, 10 Jan 2018 05:56:13 +1100 (AEDT) Received: from localhost ([::1]:40827 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eYz4F-0005R6-Dm for incoming@patchwork.ozlabs.org; Tue, 09 Jan 2018 13:56:11 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46676) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eYz3Z-0005Pe-Cl for qemu-devel@nongnu.org; Tue, 09 Jan 2018 13:55:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eYz3V-0000kf-2K for qemu-devel@nongnu.org; Tue, 09 Jan 2018 13:55:29 -0500 Received: from mail-by2nam01on0061.outbound.protection.outlook.com ([104.47.34.61]:2493 helo=NAM01-BY2-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eYz3U-0000jO-KD for qemu-devel@nongnu.org; Tue, 09 Jan 2018 13:55:24 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector1-xilinx-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=3IRhj7USgJJzoZT4BiQdavW+yDoJm2xwyuzCy/CkdMA=; b=bjzFgjK+oCUZYfL4kSGhXH55weNAOrsEAsc2rdMR15Bi6539zIxsYFvR5w7afwsjzgv9hf2poQDCB4GfO4+zqxGmSPp98o8Q45jLDttEXBe69ou5KHL8cJjql1embC8qiwtb381iXtkHrMSDN3YgxAo21gpWgdcf2ubeuoE29/A= Received: from SN4PR0201CA0069.namprd02.prod.outlook.com (10.171.31.159) by CY1PR02MB1333.namprd02.prod.outlook.com (10.161.170.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Tue, 9 Jan 2018 18:55:21 +0000 Received: from BL2NAM02FT061.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e46::205) by SN4PR0201CA0069.outlook.office365.com (2603:10b6:803:20::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.386.5 via Frontend Transport; Tue, 9 Jan 2018 18:55:21 +0000 Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.60.100 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.100; helo=xsj-pvapsmtpgw02; Received: from xsj-pvapsmtpgw02 (149.199.60.100) by BL2NAM02FT061.mail.protection.outlook.com (10.152.77.7) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.345.12 via Frontend Transport; Tue, 9 Jan 2018 18:55:20 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66]:45571 helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw02 with esmtp (Exim 4.63) (envelope-from ) id 1eYz3P-00016u-Uf; Tue, 09 Jan 2018 10:55:19 -0800 Received: from [127.0.0.1] (helo=localhost) by xsj-pvapsmtp01 with smtp (Exim 4.63) (envelope-from ) id 1eYz3P-00054d-Ry; Tue, 09 Jan 2018 10:55:19 -0800 Received: from xsj-pvapsmtp01 (xsj-smtp.xilinx.com [149.199.38.66]) by xsj-smtp-dlp1.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id w09ItCLG017318; Tue, 9 Jan 2018 10:55:12 -0800 Received: from [172.19.2.220] (helo=xsjalistai50.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1eYz3I-00052s-Ip; Tue, 09 Jan 2018 10:55:12 -0800 From: Alistair Francis To: , Date: Tue, 9 Jan 2018 10:50:54 -0800 Message-ID: X-Mailer: git-send-email 2.14.1 In-Reply-To: References: X-RCIS-Action: ALLOW X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.2.0.1013-23584.005 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.100; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(346002)(39380400002)(396003)(39860400002)(376002)(2980300002)(438002)(189003)(199004)(50466002)(9786002)(16586007)(54906003)(305945005)(81156014)(106002)(110136005)(316002)(39060400002)(81166006)(118296001)(8676002)(230783001)(356003)(48376002)(4326008)(36386004)(77096006)(50226002)(8936002)(6666003)(106466001)(76176011)(36756003)(51416003)(478600001)(2906002)(7696005)(63266004)(59450400001)(2950100002)(5660300001)(47776003)(6346003)(107986001)(5001870100001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR02MB1333; H:xsj-pvapsmtpgw02; FPR:; SPF:Pass; PTR:unknown-60-100.xilinx.com,xapps1.xilinx.com; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2NAM02FT061; 1:nbzDrK/WhoeXDv5oA/LpkRp/3Pb82qdyYZ2Ua84Loou3UJKPVTS92cW4wepFulXkQQfF0SNQuQc7IhuSTxFaQNI8CyI3hcRxdDtVWEco1fN/zAitN9nHFbf1ictJfxje MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cf0d1e74-e131-4ae2-e237-08d557928874 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(4608076)(2017052603307)(7153060); SRVR:CY1PR02MB1333; X-Microsoft-Exchange-Diagnostics: 1; CY1PR02MB1333; 3:piSYY7ftGjngLobqMnY8s0gOr34mrBAn0CY9AZZcqCatJrqLcXAuNRimz4qJ88WC/yCNTuJHFtv3jmkOnp20qVgtHPjbXjYhOzsdBpiHchFuAuurjcJ8wGaJvJY+decqTpkCp205Uqroqb5ciDbG3FPsQA4pTKDERsS8ilLhxByd1905DFtUdG2xJCAtOa6QcUd23+lWJcg7406OvGce2Pc09uxXRmrw4mlsVkDvVvpDbO1+Cvtcxl8zl2DdLe0kN6lv5VGtsUmzKd3vLBbmzl5wbLDTHxWU0DcwcOpwghWz3uzzGI0LMOcjePdJ1EW//deoUn5uiDaN72xb2ORW8HH8oq7r2KzzcVpiNYRZ5BA=; 25:ubyI/O3eFt1TunzyCwy62260Cio47SblIv3L5/VX1xbcEQfjLSdPcY8KhTAr+5xGWmMqhftDoRV1Hz0fOgU8E1gTfnFZT2wurqqAMsBvRMd469jXMe30WbG1YxEP2o4pL1OSmJGAJN7QXhVzlgEwRBTMnyX3WAU1x4IDDG0A4Q5h6HG74Hm8l3HUQ1vfBD3pvUyshTauvWShnSMPsWluuEH8WU/njHMUjR5ii2IOaz2pU/Ijz8nkD97tSj3tXFu2IN8MZJRl6A52qsBoJ4SnOk7IKqKmImUjgdomw+qFynWi21bwWgMOfK7G916iQZaC2Qt7ltPz+YPRu0lm9l0JMQ== X-MS-TrafficTypeDiagnostic: CY1PR02MB1333: X-Microsoft-Exchange-Diagnostics: 1; CY1PR02MB1333; 31:A0IW3ByI+w+tl9ll7PFVCIlcw5a41KRHrSKD4dIMzAxkZHotBrlud3dortTL2dvAiM3hE/IVY27gD3w9horPkOgPE/EYxWWhjA/LzBbYeOAar2GNhP88szTBuH93lnP5z2WXolrtsuLQXQIPqrl3JJP+IY9YcMkQKnNl5Eyf4SJukGTGx8iCJ04ntqxj0KrWd8ctMhQ+lgcr9bhtmsAiraOwCCXWGi4ZSi7++k1yIZE=; 20:Hv/Oy4QTeC2iD+HU50COwtbWx1Ews9IPAayHNony63VceJs4xbUI0VGEQTvWvlcvg7BpyDA5DCd9iKc+RJDESkXjgcP9rn66wP9Z55ehb+At+YdbO4zNodQ4Gdg3k/6pj1woqYU+meQcKEIQqomvhOnEkNyr9E10TmeGJcrvroHSMNOJqdnGrnZhGtrvu7hkxsAScVImKEDkjKOkgLoLgaGA44DUTtwzoT5Tj5i8ft8DkZhMGcN3rMUJDoXi1E1AtzmbGXFpCffl7PajM4HH9OC0p0SfXUQAiBlo0b9SIavGwbEb3U+PpxKCnJ++/wcUwnpVNfP3ggAOE22DJOzujMItZbSFmAQ1VuS2rVuWjLXjEDOcND9cUiQoSSb+wpvE5DFuV5ka2D0kj6yfdFHu8IZt9fBj6PKMogwDnxf9mw7gCFwLJpU1LWaovfGREje8yjIQa0OIryub/MEF7sweb+x4sTy38H0vN0Z0yaxgw4IC6moLLcWGza+xYaOWSzKG X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192813158149592); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(3231023)(944501110)(3002001)(93006095)(93004095)(10201501046)(6055026)(6041268)(20161123564045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(6072148)(201708071742011); SRVR:CY1PR02MB1333; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:CY1PR02MB1333; X-Microsoft-Exchange-Diagnostics: 1; CY1PR02MB1333; 4:k8h7wQL3vCPAGJkW7hNi3wWAurS/ugw2/aMy43cAUqkUv+p4fjPRnkMSZ6C5h0SDa+31kzKrMHYwQj3X0Rggkpg4sLpXOguW1jgLv/unOVsq0YHuG7NEFGRnHDJOc3l8YhFhyYXKS10nJzN1AnldBZMRGKrTopg4mLgOozRHjE0sJNsBz2M0VMeWHt0/DDey+cC2227DGURHy2Lwy7h5fzAJByp/XpY2Yq9XmNbNegs68X27LaHngcRLmj2CztEG3bM27DIf/hZANb6O0XHULge6pwFEP5vQeL2BB2qsRaOlwtfh443qvSSkHZ1mGTns X-Forefront-PRVS: 0547116B72 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR02MB1333; 23:X2hWmzu1e7fscBXlydu4bOQE0Pp9dRAA0otkE2jBH?= aRd0/S5MbNDBLYJz1RVSwAEERfBUtvMxUVua8E4KcHZFRobb3mBVGIx41l2LL+V5MFvMQ5kalRBdYweTdN4W4Z2xSegya3sA59kreORyC+v4ssEGcaptyR8AkDC58zjbgW/Kh5epPi6BihXzIcIzYiKF7nJQQI3eTJJhFtQdq8MsOGnsxJWaBbx5LoBf5oq2jkdT5yuwwIT5TK6SYIjC+xPCArmehatt38zIK7EYRDO0hx2S3ue21b/Gz1EeXbSVjSE6xWbjnxOir8+yjJRTnJWepuN1M5R9lLOnOISyW8C+vDt9hbCNFUTN6VY2Q8mUVDcuCrWhC8Ve5PGXk0ShU0Hq4iOPWq5lRo4RcT4mxxubOdhUWjmkR4crXkOSO+LpKoWPcnGxw17XqQlc4PBllNdRuNb64IcJUGQuQ5YLokCQr5t3i2UBIWLMoga2wKnNwQN3TvuOJwaSWLDwUbL8gUblZq4qpdvgYmkin6wUtKys3XfS+NgJ6lGShb+1ttL04vLBoAqbm7siPUMkRts7heP1W2V7klkFO8eCjkonG3bJgqsv10pjTG9irNZ7M2a3dOjZtzAv0BNwifz+P4+f3rKwWE3d0aiC2ZXcHcL1/XciME57zd6Ph1lwqte02Ialhw0iSkgIGhXFOADNWRctJuIdJBFXdr8mE4uZh/q0eDAPB3qsPyrpa0WOD26kwaK7o7Xdme6P0/22BDljHu2+k4G1zwvtlulKfLkMUgTj9jyGvQH0Nd480w3T8OJu9Qs/aYp3cLd5jOIStcC2igP5RkaNMNxNaKH4LfFc2csxVCeljlJDRj+p0ahB45LDQUne/VGL4mcfzK4otwPLD9+qURVW/hxThW0OTYqhIbAGGyw4AHRKTA6tYREWfI/3+7bpoZHBKnIJyhPdxWndwxEQPgJRAAe02wgJeXouyYeQmMtF3v9I7n2WCla5/GOMGnl4pGyLjHDpn/Wht0x1tJuRw5xKZ45HYsrGPbNW1HMyLd4VJDFN8yMNnxBD4UlhuqpMCgORRo77Exyk9DZP+5RqEgstRYK4SglTQpCRjcVpu1hzA== X-Microsoft-Exchange-Diagnostics: 1; CY1PR02MB1333; 6:1tUHPxVgYPH/MBjUkUQ6n3qZb4WbF2wB69GsXUVy4HYLBl04qRhOfNidElewr4Whjd1La/MaE8Jq9g9ACOOjOsrs0MPdjG3PmrEjnj6Kvw+/K4Ow8X5DnOOMK7wEPZ0KFBxeyCHRn7C02VIMxZCdYd43dgu/KCFpQ37qHnr06hVI5pHx1lHcA44g7K+9NTH30V4Upo0A85FI44MGLwjMb3cz48srVm2F9q61QSGH09jbkXH/bvrvjS1JEUwsDRxAvZ+9HzpoUvaW6JvmOliV4/LnERCNkKwHTsjX+ZQ65+LLxh6g/A5nQ7ps1C6bl0Wy9PJZsX+eaSIEfxgH5unvIHC4blXDkqy1lTY7yYBY9po=; 5:ALpuFkNtl1HpjlLYZ/uZg9QhUCVGz//6S7RtlOWJgyEdpzSivVgB6Yv+v+puag+dDbSQXMiLwwSGHjqy/tsuIR9vHGH/Nyy815T7HGkhygTdoPGUuc9AhtNRP18TKzScs7j8T+bhAhw4CmfIJa37kgmbS1MpC9GI2/kZAjIEPGk=; 24:mN9LYpj/kQr9qkjdynedxFbkTrwifU6Rco04aUG9mstHnZG6zqNb6SXzIDs7KdhXTsbPl9NaobzKMPamsjoFYrKsBE1efRs/Z0WSzbrksjU=; 7:ncSRA4oOQ5gnLvUACpUTlApCFT7dHRKfKQfV2YQIdTm0exe9ghsOHHSkkWtnXaa1hMZWv597sGWXZZ3lWwn/ORJjUh1Yo7ahApn4HdUFjPAnNEWcumeGev1Yvv87NpdI9brxf1HBP+/S5Rq9h2KqPjd3x95OA5FQ27pO08stSSjTlIMRkrOz4EPo5fzdapEgSzMYUd9rjNIxZjbq3upAqXjd9T5loaUYTRN0pSODUPgLrWK9NYzifp74AW82fkFE SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2018 18:55:20.6340 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cf0d1e74-e131-4ae2-e237-08d557928874 X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c; Ip=[149.199.60.100]; Helo=[xsj-pvapsmtpgw02] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR02MB1333 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.34.61 Subject: [Qemu-devel] [PATCH v1 2/3] xlnx-zynqmp-rtc: Add basic time support 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: edgar.iglesias@xilinx.com, alistair23@gmail.com, edgar.iglesias@gmail.com, alistair.francis@xilinx.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Allow the guest to determine the time set from the QEMU command line. Signed-off-by: Alistair Francis --- hw/timer/xlnx-zynqmp-rtc.c | 24 ++++++++++++++++++++++++ include/hw/timer/xlnx-zynqmp-rtc.h | 2 ++ 2 files changed, 26 insertions(+) diff --git a/hw/timer/xlnx-zynqmp-rtc.c b/hw/timer/xlnx-zynqmp-rtc.c index 40533220fc..eed17805ac 100644 --- a/hw/timer/xlnx-zynqmp-rtc.c +++ b/hw/timer/xlnx-zynqmp-rtc.c @@ -29,6 +29,7 @@ #include "hw/register.h" #include "qemu/bitops.h" #include "qemu/log.h" +#include "hw/ptimer.h" #include "hw/timer/xlnx-zynqmp-rtc.h" #ifndef XLNX_ZYNQMP_RTC_ERR_DEBUG @@ -55,6 +56,13 @@ static void addr_error_int_update_irq(XlnxZynqMPRTC *s) qemu_set_irq(s->irq_addr_error_int, pending); } +static uint64_t current_time_postr(RegisterInfo *reg, uint64_t val64) +{ + XlnxZynqMPRTC *s = XLNX_ZYNQMP_RTC(reg->opaque); + + return mktime(&s->current_tm); +} + static void rtc_int_status_postw(RegisterInfo *reg, uint64_t val64) { XlnxZynqMPRTC *s = XLNX_ZYNQMP_RTC(reg->opaque); @@ -111,11 +119,13 @@ static const RegisterAccessInfo rtc_regs_info[] = { { .name = "SET_TIME_WRITE", .addr = A_SET_TIME_WRITE, },{ .name = "SET_TIME_READ", .addr = A_SET_TIME_READ, .ro = 0xffffffff, + .post_read = current_time_postr, },{ .name = "CALIB_WRITE", .addr = A_CALIB_WRITE, },{ .name = "CALIB_READ", .addr = A_CALIB_READ, .ro = 0x1fffff, },{ .name = "CURRENT_TIME", .addr = A_CURRENT_TIME, .ro = 0xffffffff, + .post_read = current_time_postr, },{ .name = "CURRENT_TICK", .addr = A_CURRENT_TICK, .ro = 0xffff, },{ .name = "ALARM", .addr = A_ALARM, @@ -155,6 +165,13 @@ static void rtc_reset(DeviceState *dev) register_reset(&s->regs_info[i]); } + qemu_get_timedate(&s->current_tm, 0); + + DB_PRINT("Get time from host: %d-%d-%d %2d:%02d:%02d\n", + s->current_tm.tm_year, s->current_tm.tm_mon, + s->current_tm.tm_mday, s->current_tm.tm_hour, + s->current_tm.tm_min, s->current_tm.tm_sec); + rtc_int_update_irq(s); addr_error_int_update_irq(s); } @@ -203,6 +220,13 @@ static const VMStateDescription vmstate_rtc = { .minimum_version_id = 1, .fields = (VMStateField[]) { VMSTATE_UINT32_ARRAY(regs, XlnxZynqMPRTC, XLNX_ZYNQMP_RTC_R_MAX), + VMSTATE_INT32(current_tm.tm_sec, XlnxZynqMPRTC), + VMSTATE_INT32(current_tm.tm_min, XlnxZynqMPRTC), + VMSTATE_INT32(current_tm.tm_hour, XlnxZynqMPRTC), + VMSTATE_INT32(current_tm.tm_wday, XlnxZynqMPRTC), + VMSTATE_INT32(current_tm.tm_mday, XlnxZynqMPRTC), + VMSTATE_INT32(current_tm.tm_mon, XlnxZynqMPRTC), + VMSTATE_INT32(current_tm.tm_year, XlnxZynqMPRTC), VMSTATE_END_OF_LIST(), } }; diff --git a/include/hw/timer/xlnx-zynqmp-rtc.h b/include/hw/timer/xlnx-zynqmp-rtc.h index 87649836cc..51a49094ad 100644 --- a/include/hw/timer/xlnx-zynqmp-rtc.h +++ b/include/hw/timer/xlnx-zynqmp-rtc.h @@ -79,6 +79,8 @@ typedef struct XlnxZynqMPRTC { qemu_irq irq_rtc_int; qemu_irq irq_addr_error_int; + struct tm current_tm; + uint32_t regs[XLNX_ZYNQMP_RTC_R_MAX]; RegisterInfo regs_info[XLNX_ZYNQMP_RTC_R_MAX]; } XlnxZynqMPRTC;