
* Update to QEMU v9.0.0 --------- Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Fabiano Rosas <farosas@suse.de> Signed-off-by: Peter Xu <peterx@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Cédric Le Goater <clg@redhat.com> Signed-off-by: Zheyu Ma <zheyuma97@gmail.com> Signed-off-by: Ido Plat <ido.plat@ibm.com> Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> Signed-off-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Signed-off-by: David Hildenbrand <david@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com> Signed-off-by: Fiona Ebner <f.ebner@proxmox.com> Signed-off-by: Gregory Price <gregory.price@memverge.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Lorenz Brun <lorenz@brun.one> Signed-off-by: Yao Xingtao <yaoxt.fnst@fujitsu.com> Signed-off-by: Arnaud Minier <arnaud.minier@telecom-paris.fr> Signed-off-by: Inès Varhol <ines.varhol@telecom-paris.fr> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> Signed-off-by: Igor Mammedov <imammedo@redhat.com> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Sven Schnelle <svens@stackframe.org> Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com> Signed-off-by: Jason Wang <jasowang@redhat.com> Signed-off-by: Helge Deller <deller@gmx.de> Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Benjamin Gray <bgray@linux.ibm.com> Signed-off-by: Avihai Horon <avihaih@nvidia.com> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru> Signed-off-by: Joonas Kankaala <joonas.a.kankaala@gmail.com> Signed-off-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org> Signed-off-by: Stefan Weil <sw@weilnetz.de> Signed-off-by: Zhao Liu <zhao1.liu@intel.com> Signed-off-by: Glenn Miles <milesg@linux.ibm.com> Signed-off-by: Oleg Sviridov <oleg.sviridov@red-soft.ru> Signed-off-by: Artem Chernyshev <artem.chernyshev@red-soft.ru> Signed-off-by: Yajun Wu <yajunw@nvidia.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Signed-off-by: Pierre-Clément Tosi <ptosi@google.com> Signed-off-by: Lei Wang <lei4.wang@intel.com> Signed-off-by: Wei Wang <wei.w.wang@intel.com> Signed-off-by: Martin Hundebøll <martin@geanix.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org> Signed-off-by: Wafer <wafer@jaguarmicro.com> Signed-off-by: Yuxue Liu <yuxue.liu@jaguarmicro.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Nguyen Dinh Phi <phind.uet@gmail.com> Signed-off-by: Zack Buhman <zack@buhman.org> Signed-off-by: Keith Packard <keithp@keithp.com> Signed-off-by: Yuquan Wang wangyuquan1236@phytium.com.cn Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com> Signed-off-by: Cindy Lu <lulu@redhat.com> Co-authored-by: Peter Maydell <peter.maydell@linaro.org> Co-authored-by: Fabiano Rosas <farosas@suse.de> Co-authored-by: Peter Xu <peterx@redhat.com> Co-authored-by: Thomas Huth <thuth@redhat.com> Co-authored-by: Cédric Le Goater <clg@redhat.com> Co-authored-by: Zheyu Ma <zheyuma97@gmail.com> Co-authored-by: Ido Plat <ido.plat@ibm.com> Co-authored-by: Ilya Leoshkevich <iii@linux.ibm.com> Co-authored-by: Markus Armbruster <armbru@redhat.com> Co-authored-by: Marc-André Lureau <marcandre.lureau@redhat.com> Co-authored-by: Paolo Bonzini <pbonzini@redhat.com> Co-authored-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Co-authored-by: David Hildenbrand <david@redhat.com> Co-authored-by: Kevin Wolf <kwolf@redhat.com> Co-authored-by: Stefan Reiter <s.reiter@proxmox.com> Co-authored-by: Fiona Ebner <f.ebner@proxmox.com> Co-authored-by: Gregory Price <gregory.price@memverge.com> Co-authored-by: Lorenz Brun <lorenz@brun.one> Co-authored-by: Yao Xingtao <yaoxt.fnst@fujitsu.com> Co-authored-by: Philippe Mathieu-Daudé <philmd@linaro.org> Co-authored-by: Arnaud Minier <arnaud.minier@telecom-paris.fr> Co-authored-by: BALATON Zoltan <balaton@eik.bme.hu> Co-authored-by: Igor Mammedov <imammedo@redhat.com> Co-authored-by: Akihiko Odaki <akihiko.odaki@daynix.com> Co-authored-by: Richard Henderson <richard.henderson@linaro.org> Co-authored-by: Sven Schnelle <svens@stackframe.org> Co-authored-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Co-authored-by: Helge Deller <deller@kernel.org> Co-authored-by: Harsh Prateek Bora <harshpb@linux.ibm.com> Co-authored-by: Benjamin Gray <bgray@linux.ibm.com> Co-authored-by: Nicholas Piggin <npiggin@gmail.com> Co-authored-by: Avihai Horon <avihaih@nvidia.com> Co-authored-by: Michael Tokarev <mjt@tls.msk.ru> Co-authored-by: Joonas Kankaala <joonas.a.kankaala@gmail.com> Co-authored-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org> Co-authored-by: Stefan Weil <sw@weilnetz.de> Co-authored-by: Dayu Liu <liu.dayu@zte.com.cn> Co-authored-by: Zhao Liu <zhao1.liu@intel.com> Co-authored-by: Glenn Miles <milesg@linux.vnet.ibm.com> Co-authored-by: Artem Chernyshev <artem.chernyshev@red-soft.ru> Co-authored-by: Yajun Wu <yajunw@nvidia.com> Co-authored-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Co-authored-by: Pierre-Clément Tosi <ptosi@google.com> Co-authored-by: Wei Wang <wei.w.wang@intel.com> Co-authored-by: Martin Hundebøll <martin@geanix.com> Co-authored-by: Michael S. Tsirkin <mst@redhat.com> Co-authored-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org> Co-authored-by: Wafer <wafer@jaguarmicro.com> Co-authored-by: lyx634449800 <yuxue.liu@jaguarmicro.com> Co-authored-by: Gerd Hoffmann <kraxel@redhat.com> Co-authored-by: Nguyen Dinh Phi <phind.uet@gmail.com> Co-authored-by: Zack Buhman <zack@buhman.org> Co-authored-by: Keith Packard <keithp@keithp.com> Co-authored-by: Yuquan Wang <wangyuquan1236@phytium.com.cn> Co-authored-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com> Co-authored-by: Cindy Lu <lulu@redhat.com>
129 lines
4.5 KiB
C
129 lines
4.5 KiB
C
/*
|
|
* Device model for i.MX UART
|
|
*
|
|
* Copyright (c) 2008 OKL
|
|
* Originally Written by Hans Jiang
|
|
* Copyright (c) 2011 NICTA Pty Ltd.
|
|
* Updated by Jean-Christophe Dubois <jcd@tribudubois.net>
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version
|
|
* 2 of the License, or (at your option) any later version.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef IMX_SERIAL_H
|
|
#define IMX_SERIAL_H
|
|
|
|
#include "hw/sysbus.h"
|
|
#include "chardev/char-fe.h"
|
|
#include "qom/object.h"
|
|
#include "qemu/fifo32.h"
|
|
|
|
#define TYPE_IMX_SERIAL "imx.serial"
|
|
OBJECT_DECLARE_SIMPLE_TYPE(IMXSerialState, IMX_SERIAL)
|
|
|
|
#define FIFO_SIZE 32
|
|
|
|
#define URXD_CHARRDY (1<<15) /* character read is valid */
|
|
#define URXD_ERR (1<<14) /* Character has error */
|
|
#define URXD_OVRRUN (1<<13) /* 32nd character in RX FIFO */
|
|
#define URXD_FRMERR (1<<12) /* Character has frame error */
|
|
#define URXD_BRK (1<<11) /* Break received */
|
|
|
|
#define USR1_PARTYER (1<<15) /* Parity Error */
|
|
#define USR1_RTSS (1<<14) /* RTS pin status */
|
|
#define USR1_TRDY (1<<13) /* Tx ready */
|
|
#define USR1_RTSD (1<<12) /* RTS delta: pin changed state */
|
|
#define USR1_ESCF (1<<11) /* Escape sequence interrupt */
|
|
#define USR1_FRAMERR (1<<10) /* Framing error */
|
|
#define USR1_RRDY (1<<9) /* receiver ready */
|
|
#define USR1_AGTIM (1<<8) /* Aging timer interrupt */
|
|
#define USR1_DTRD (1<<7) /* DTR changed */
|
|
#define USR1_RXDS (1<<6) /* Receiver is idle */
|
|
#define USR1_AIRINT (1<<5) /* Aysnch IR interrupt */
|
|
#define USR1_AWAKE (1<<4) /* Falling edge detected on RXd pin */
|
|
|
|
#define USR2_ADET (1<<15) /* Autobaud complete */
|
|
#define USR2_TXFE (1<<14) /* Transmit FIFO empty */
|
|
#define USR2_DTRF (1<<13) /* DTR/DSR transition */
|
|
#define USR2_IDLE (1<<12) /* UART has been idle for too long */
|
|
#define USR2_ACST (1<<11) /* Autobaud counter stopped */
|
|
#define USR2_RIDELT (1<<10) /* Ring Indicator delta */
|
|
#define USR2_RIIN (1<<9) /* Ring Indicator Input */
|
|
#define USR2_IRINT (1<<8) /* Serial Infrared Interrupt */
|
|
#define USR2_WAKE (1<<7) /* Start bit detected */
|
|
#define USR2_DCDDELT (1<<6) /* Data Carrier Detect delta */
|
|
#define USR2_DCDIN (1<<5) /* Data Carrier Detect Input */
|
|
#define USR2_RTSF (1<<4) /* RTS transition */
|
|
#define USR2_TXDC (1<<3) /* Transmission complete */
|
|
#define USR2_BRCD (1<<2) /* Break condition detected */
|
|
#define USR2_ORE (1<<1) /* Overrun error */
|
|
#define USR2_RDR (1<<0) /* Receive data ready */
|
|
|
|
#define UCR1_TRDYEN (1<<13) /* Tx Ready Interrupt Enable */
|
|
#define UCR1_RRDYEN (1<<9) /* Rx Ready Interrupt Enable */
|
|
#define UCR1_TXMPTYEN (1<<6) /* Tx Empty Interrupt Enable */
|
|
#define UCR1_UARTEN (1<<0) /* UART Enable */
|
|
|
|
#define UCR2_ATEN (1<<3) /* Ageing Timer Enable */
|
|
#define UCR2_TXEN (1<<2) /* Transmitter enable */
|
|
#define UCR2_RXEN (1<<1) /* Receiver enable */
|
|
#define UCR2_SRST (1<<0) /* Reset complete */
|
|
|
|
#define UCR4_DREN BIT(0) /* Receive Data Ready interrupt enable */
|
|
#define UCR4_OREN BIT(1) /* Overrun interrupt enable */
|
|
#define UCR4_TCEN BIT(3) /* TX complete interrupt enable */
|
|
#define UCR4_WKEN BIT(7) /* WAKE interrupt enable */
|
|
|
|
#define UTS1_TXEMPTY (1<<6)
|
|
#define UTS1_RXEMPTY (1<<5)
|
|
#define UTS1_TXFULL (1<<4)
|
|
#define UTS1_RXFULL (1<<3)
|
|
|
|
#define TL_MASK 0x3f
|
|
|
|
/* Bit time in nanoseconds assuming maximum baud rate of 115200 */
|
|
#define BIT_TIME_NS 8681
|
|
|
|
/* Assume 8 bits per character */
|
|
#define NUM_BITS 8
|
|
|
|
/* Ageing timer triggers after 8 characters */
|
|
#define AGE_DURATION_NS (8 * NUM_BITS * BIT_TIME_NS)
|
|
|
|
struct IMXSerialState {
|
|
/*< private >*/
|
|
SysBusDevice parent_obj;
|
|
|
|
/*< public >*/
|
|
MemoryRegion iomem;
|
|
QEMUTimer ageing_timer;
|
|
Fifo32 rx_fifo;
|
|
|
|
uint32_t usr1;
|
|
uint32_t usr2;
|
|
uint32_t ucr1;
|
|
uint32_t ucr2;
|
|
uint32_t uts1;
|
|
|
|
/*
|
|
* The registers below are implemented just so that the
|
|
* guest OS sees what it has written
|
|
*/
|
|
uint32_t onems;
|
|
uint32_t ufcr;
|
|
uint32_t ubmr;
|
|
uint32_t ubrc;
|
|
uint32_t ucr3;
|
|
uint32_t ucr4;
|
|
|
|
qemu_irq irq;
|
|
CharBackend chr;
|
|
};
|
|
|
|
#endif
|