From nobody Wed Apr 2 01:57:56 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1569519816; cv=none; d=zoho.com; s=zohoarc; b=TIsRpAgdswunEkdIY989qGNX04VZGP7Xz4NoNrxwdTFPnnDqhRtD5Rvto3FVflKoc2J8IKdoc2gjx3hG5O6jJiE9sEyW4wdpIjDtlaV6y16T2kJQtvUHw4XjdeS2StW3B6ebbvquP6LGncTXaUVIhVGUxtilyT+i3FO4X2t5T8Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1569519816; h=Content-Type: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:ARC-Authentication-Results; bh=0nYrEyIE8Ksn++8Q6sjUUjo6us9YPYxfJ0rmZNlZ6VA=; b=avZ5LDlv+FTDGccBPurgCz2Vnzf7afC+QtpP+eXsuoVQ3uNyWXdCABW+h3FzrlLc6M4ZiPF/uHvg6+PFBLWuhGzXFt70o5tunhAF9OV5SJi34DAtfFYtTEwLEFSZcuNkSra1D3lRWpnuWWMkL4eZrZzAhlle6b58cpOaYiLaofM= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1569519816391645.9185476966362; Thu, 26 Sep 2019 10:43:36 -0700 (PDT) Received: from localhost ([::1]:41810 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDXni-00020O-Ui for importer@patchew.org; Thu, 26 Sep 2019 13:43:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58837) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iDXgC-0004Nm-Q5 for qemu-devel@nongnu.org; Thu, 26 Sep 2019 13:35:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iDXgB-0002qt-5M for qemu-devel@nongnu.org; Thu, 26 Sep 2019 13:35:48 -0400 Received: from mail-wr1-f66.google.com ([209.85.221.66]:33788) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iDXgA-0002qV-Tm; Thu, 26 Sep 2019 13:35:47 -0400 Received: by mail-wr1-f66.google.com with SMTP id b9so3740463wrs.0; Thu, 26 Sep 2019 10:35:46 -0700 (PDT) Received: from x1w.redhat.com (240.red-88-21-68.staticip.rima-tde.net. [88.21.68.240]) by smtp.gmail.com with ESMTPSA id b186sm9918980wmd.16.2019.09.26.10.34.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Sep 2019 10:34:45 -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=0nYrEyIE8Ksn++8Q6sjUUjo6us9YPYxfJ0rmZNlZ6VA=; b=Zf4hUEytuT66Vk8Q/kLrnqWhVUdYRPo5txTb0r2vrCAptQk/xn1csbclZAYGxstLYP YLwqU5rG0W+Ww2cBreX8g5mYQjnOaSpCCMiwtoJIYVawHVI+XX/ntBfjt/790Uvli0Zp dHaYgYYhqWCS31UiNzTAVDH0N0x+UdopVoNa6cX6xvwAVJv2BUB2gZu4tK2q0e7IJ+Q4 lFdEv6Kzyu4Os4ttvuqEcwoXhg4PWE81f4pvhng0sLcYzH77Djdom9qF8rsFhv/1BpCp hFA5ky1wXzqvxG+ozWVBGkpoaXRjL/eUQiL6OLfQXFjPk/zEKgl0DP2biBge+tbxb3g4 WqQQ== 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=0nYrEyIE8Ksn++8Q6sjUUjo6us9YPYxfJ0rmZNlZ6VA=; b=lbWvouvlMx8sAJOGrcJOdKcVhK112fBEsBZEF7s/m4UotAMxEKEoiHOY9SdbkwMHF5 X6YfgWi8a16RXxg+bNebh1zzqlWGbdhBt/VKjKSdygtlOWnWHMmyYAVLd6acQZ+CSmMp V/s2x8YZj5S23i6oKVwpURAXygifcD/FeKmTR1VT0iWcwPqcZg5LAVhZA+/L36bG5BMq xxTLi3zJ1di+daB3Xodwo9+Q+K1sw4WgN5vzg8EeHdpuYfTyXGdT8go203wgeAu1MCac L103OX9cH9waR9VPd3fpd5bjSWE/B5jqugTvQtot8dQG89IEBu0E/rYFDPNvXSBrHS+L jDWA== X-Gm-Message-State: APjAAAVQL1BSqSShk7Ls30UAnn18SZdscYMK7IE0s6VJSTHXgpvqDlL4 2ak+Tsm83LjhdaE7/8o0+nZFTaP1ioo= X-Google-Smtp-Source: APXvYqxxaLT1w5lIln4IJ9CMskeEmmTd7HqbS80bDrPUp0A3ZHMbm7PhjTcOw2DxraJwYG8kbIwETA== X-Received: by 2002:a5d:5642:: with SMTP id j2mr3980873wrw.345.1569519285785; Thu, 26 Sep 2019 10:34:45 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH 06/19] hw/char/bcm2835_aux: Add trace events Date: Thu, 26 Sep 2019 19:34:14 +0200 Message-Id: <20190926173428.10713-7-f4bug@amsat.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190926173428.10713-1-f4bug@amsat.org> References: <20190926173428.10713-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-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.85.221.66 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: , Cc: Peter Maydell , =?UTF-8?q?Zolt=C3=A1n=20Baldaszti?= , Laurent Bonnans , Esteban Bosse , Alistair Francis , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Andrew Baumann , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , qemu-arm@nongnu.org, Clement Deschamps , Cleber Rosa , Paolo Bonzini , Cheng Xiang , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pekka Enberg , Guenter Roeck , Eduardo Habkost Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) The BCM2835 AUX UART is compatible with the 16650 model, when the registers belong the the 16650 block, use its trace events, else use bcm2835_aux_read/write. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alex Benn=C3=A9e --- hw/char/bcm2835_aux.c | 55 +++++++++++++++++++++++++++++++------------ hw/char/trace-events | 4 ++++ 2 files changed, 44 insertions(+), 15 deletions(-) diff --git a/hw/char/bcm2835_aux.c b/hw/char/bcm2835_aux.c index a6fc1bf152..b26a255630 100644 --- a/hw/char/bcm2835_aux.c +++ b/hw/char/bcm2835_aux.c @@ -27,6 +27,7 @@ #include "migration/vmstate.h" #include "qemu/log.h" #include "qemu/module.h" +#include "trace.h" =20 #define AUX_IRQ 0x0 #define AUX_ENABLES 0x4 @@ -62,17 +63,24 @@ static void bcm2835_aux_update(BCM2835AuxState *s) qemu_set_irq(s->irq, s->iir !=3D 0); } =20 +static bool is_16650(hwaddr offset) +{ + return offset >=3D AUX_MU_IO_REG && offset < AUX_MU_CNTL_REG; +} + static uint64_t bcm2835_aux_read(void *opaque, hwaddr offset, unsigned siz= e) { BCM2835AuxState *s =3D opaque; - uint32_t c, res; + uint32_t c, res =3D 0; =20 switch (offset) { case AUX_IRQ: - return s->iir !=3D 0; + res =3D s->iir !=3D 0; + break; =20 case AUX_ENABLES: - return 1; /* mini UART permanently enabled */ + res =3D 1; /* mini UART permanently enabled */ + break; =20 case AUX_MU_IO_REG: /* "DLAB bit set means access baudrate register" is NYI */ @@ -85,11 +93,13 @@ static uint64_t bcm2835_aux_read(void *opaque, hwaddr o= ffset, unsigned size) } qemu_chr_fe_accept_input(&s->chr); bcm2835_aux_update(s); - return c; + res =3D c; + break; =20 case AUX_MU_IER_REG: /* "DLAB bit set means access baudrate register" is NYI */ - return 0xc0 | s->ier; /* FIFO enables always read 1 */ + res =3D 0xc0 | s->ier; /* FIFO enables always read 1 */ + break; =20 case AUX_MU_IIR_REG: res =3D 0xc0; /* FIFO enables */ @@ -105,33 +115,34 @@ static uint64_t bcm2835_aux_read(void *opaque, hwaddr= offset, unsigned size) if (s->iir =3D=3D 0) { res |=3D 0x1; } - return res; + break; =20 case AUX_MU_LCR_REG: qemu_log_mask(LOG_UNIMP, "%s: AUX_MU_LCR_REG unsupported\n", __fun= c__); - return 0; + break; =20 case AUX_MU_MCR_REG: qemu_log_mask(LOG_UNIMP, "%s: AUX_MU_MCR_REG unsupported\n", __fun= c__); - return 0; + break; =20 case AUX_MU_LSR_REG: res =3D 0x60; /* tx idle, empty */ if (s->read_count !=3D 0) { res |=3D 0x1; } - return res; + break; =20 case AUX_MU_MSR_REG: qemu_log_mask(LOG_UNIMP, "%s: AUX_MU_MSR_REG unsupported\n", __fun= c__); - return 0; + break; =20 case AUX_MU_SCRATCH: qemu_log_mask(LOG_UNIMP, "%s: AUX_MU_SCRATCH unsupported\n", __fun= c__); - return 0; + break; =20 case AUX_MU_CNTL_REG: - return 0x3; /* tx, rx enabled */ + res =3D 0x3; /* tx, rx enabled */ + break; =20 case AUX_MU_STAT_REG: res =3D 0x30e; /* space in the output buffer, empty tx fifo, idle = tx/rx */ @@ -140,17 +151,25 @@ static uint64_t bcm2835_aux_read(void *opaque, hwaddr= offset, unsigned size) assert(s->read_count < BCM2835_AUX_RX_FIFO_LEN); res |=3D ((uint32_t)s->read_count) << 16; /* rx fifo fill leve= l */ } - return res; + break; =20 case AUX_MU_BAUD_REG: qemu_log_mask(LOG_UNIMP, "%s: AUX_MU_BAUD_REG unsupported\n", __fu= nc__); - return 0; + break; =20 default: qemu_log_mask(LOG_GUEST_ERROR, "%s: Bad offset %"HWADDR_PRIx"\n", __func__, offset); - return 0; + break; } + + if (is_16650(offset)) { + trace_serial_ioport_read((offset & 0x1f) >> 2, res); + } else { + trace_bcm2835_aux_read(offset, res); + } + + return res; } =20 static void bcm2835_aux_write(void *opaque, hwaddr offset, uint64_t value, @@ -159,6 +178,12 @@ static void bcm2835_aux_write(void *opaque, hwaddr off= set, uint64_t value, BCM2835AuxState *s =3D opaque; unsigned char ch; =20 + if (is_16650(offset)) { + trace_serial_ioport_write((offset & 0x1f) >> 2, value); + } else { + trace_bcm2835_aux_write(offset, value); + } + switch (offset) { case AUX_ENABLES: if (value !=3D 1) { diff --git a/hw/char/trace-events b/hw/char/trace-events index 2ce7f2f998..a7d477ab1e 100644 --- a/hw/char/trace-events +++ b/hw/char/trace-events @@ -1,5 +1,9 @@ # See docs/devel/tracing.txt for syntax documentation. =20 +# bcm2835_aux.c +bcm2835_aux_read(uint64_t addr, uint32_t value) "read addr 0x%"PRIx64" val= ue 0x%x" +bcm2835_aux_write(uint64_t addr, uint32_t value) "read addr 0x%"PRIx64" va= lue 0x%x" + # parallel.c parallel_ioport_read(const char *desc, uint16_t addr, uint8_t value) "read= [%s] addr 0x%02x val 0x%02x" parallel_ioport_write(const char *desc, uint16_t addr, uint8_t value) "wri= te [%s] addr 0x%02x val 0x%02x" --=20 2.20.1