cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

xlnx_dp.h (3102B)


      1/*
      2 * xlnx_dp.h
      3 *
      4 *  Copyright (C) 2015 : GreenSocs Ltd
      5 *      http://www.greensocs.com/ , email: info@greensocs.com
      6 *
      7 *  Developed by :
      8 *  Frederic Konrad   <fred.konrad@greensocs.com>
      9 *
     10 * This program is free software; you can redistribute it and/or modify
     11 * it under the terms of the GNU General Public License as published by
     12 * the Free Software Foundation, either version 2 of the License, or
     13 * (at your option) any later version.
     14 *
     15 * This program is distributed in the hope that it will be useful,
     16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
     17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     18 * GNU General Public License for more details.
     19 *
     20 * You should have received a copy of the GNU General Public License along
     21 * with this program; if not, see <http://www.gnu.org/licenses/>.
     22 */
     23
     24#ifndef XLNX_DP_H
     25#define XLNX_DP_H
     26
     27#include "hw/sysbus.h"
     28#include "ui/console.h"
     29#include "hw/misc/auxbus.h"
     30#include "hw/i2c/i2c.h"
     31#include "hw/display/dpcd.h"
     32#include "hw/display/i2c-ddc.h"
     33#include "qemu/fifo8.h"
     34#include "qemu/units.h"
     35#include "hw/dma/xlnx_dpdma.h"
     36#include "audio/audio.h"
     37#include "qom/object.h"
     38
     39#define AUD_CHBUF_MAX_DEPTH                 (32 * KiB)
     40#define MAX_QEMU_BUFFER_SIZE                (4 * KiB)
     41
     42#define DP_CORE_REG_ARRAY_SIZE              (0x3AF >> 2)
     43#define DP_AVBUF_REG_ARRAY_SIZE             (0x238 >> 2)
     44#define DP_VBLEND_REG_ARRAY_SIZE            (0x1DF >> 2)
     45#define DP_AUDIO_REG_ARRAY_SIZE             (0x50 >> 2)
     46
     47struct PixmanPlane {
     48    pixman_format_code_t format;
     49    DisplaySurface *surface;
     50};
     51
     52struct XlnxDPState {
     53    /*< private >*/
     54    SysBusDevice parent_obj;
     55
     56    /* < public >*/
     57    MemoryRegion container;
     58
     59    uint32_t core_registers[DP_CORE_REG_ARRAY_SIZE];
     60    MemoryRegion core_iomem;
     61
     62    uint32_t avbufm_registers[DP_AVBUF_REG_ARRAY_SIZE];
     63    MemoryRegion avbufm_iomem;
     64
     65    uint32_t vblend_registers[DP_VBLEND_REG_ARRAY_SIZE];
     66    MemoryRegion vblend_iomem;
     67
     68    uint32_t audio_registers[DP_AUDIO_REG_ARRAY_SIZE];
     69    MemoryRegion audio_iomem;
     70
     71    QemuConsole *console;
     72
     73    /*
     74     * This is the planes used to display in console. When the blending is
     75     * enabled bout_plane is displayed in console else it's g_plane.
     76     */
     77    struct PixmanPlane g_plane;
     78    struct PixmanPlane v_plane;
     79    struct PixmanPlane bout_plane;
     80
     81    QEMUSoundCard aud_card;
     82    SWVoiceOut *amixer_output_stream;
     83    int16_t audio_buffer_0[AUD_CHBUF_MAX_DEPTH];
     84    int16_t audio_buffer_1[AUD_CHBUF_MAX_DEPTH];
     85    size_t audio_data_available[2];
     86    int64_t temp_buffer[AUD_CHBUF_MAX_DEPTH];
     87    int16_t out_buffer[AUD_CHBUF_MAX_DEPTH];
     88    size_t byte_left; /* byte available in out_buffer. */
     89    size_t data_ptr;  /* next byte to be sent to QEMU. */
     90
     91    /* Associated DPDMA controller. */
     92    XlnxDPDMAState *dpdma;
     93
     94    qemu_irq irq;
     95
     96    AUXBus *aux_bus;
     97    Fifo8 rx_fifo;
     98    Fifo8 tx_fifo;
     99
    100    /*
    101     * XXX: This should be in an other module.
    102     */
    103    DPCDState *dpcd;
    104    I2CDDCState *edid;
    105};
    106
    107#define TYPE_XLNX_DP "xlnx.v-dp"
    108OBJECT_DECLARE_SIMPLE_TYPE(XlnxDPState, XLNX_DP)
    109
    110#endif