symbian-qemu-0.9.1-12/qemu-symbian-svp/plugins/syborg_graphicsdevice.py
author Jani Hyvonen<jani.hyvonen@nokia.com>
Fri, 03 Sep 2010 13:37:52 +0300
branchgraphics-phase-3
changeset 99 542d4bc8b7ca
parent 77 b3dcdc7f8f12
permissions -rw-r--r--
bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
99
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
     1
#
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
     2
# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
     3
# All rights reserved.
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
     4
# This component and the accompanying materials are made available
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
     5
# under the terms of "Eclipse Public License v1.0"
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
     6
# which accompanies this distribution, and is available
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
     8
#
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
     9
# Initial Contributors:
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    10
# Nokia Corporation - initial contribution.
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    11
#
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    12
# Contributors:
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    13
#
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    14
# Description: syborg_graphicsdevice.py
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    15
#
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    16
# Represents a graphics device register interface for quest OS in QEMU Syborg environment.
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    17
#
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    18
#
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    19
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    20
import ctypes
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    21
import qemu
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    22
import sys
99
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    23
import platform
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    24
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    25
class syborg_graphicsdevice(qemu.devclass):
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    26
    # Graphics device registers derived from VirtualVideoInterfaceConstants.h
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    27
    VVI_R_ID                                = 0x0000
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    28
    VVI_R_IRQ_ENABLE                        = 0x0004
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    29
    VVI_R_IRQ_STATUS                        = 0x0008
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    30
    VVI_R_COMMAND                           = 0x000c
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    31
    VVI_R_PARAMETER_LOAD                    = 0x0010
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    32
    VVI_R_ERROR                             = 0x0014
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    33
    VVI_R_INPUT_BUFFER_TAIL                 = 0x0018
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    34
    VVI_R_INPUT_BUFFER_HEAD                 = 0x001c
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    35
    VVI_R_INPUT_BUFFER_READ_COUNT           = 0x0020
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    36
    VVI_R_INPUT_BUFFER_WRITE_COUNT          = 0x0024
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    37
    VVI_R_INPUT_BUFFER_MAX_TAIL             = 0x0028
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    38
    VVI_R_REQUEST_ID                        = 0x002c
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    39
    VVI_R_SHARED_CMD_MEMORY_BASE            = 0x0030
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    40
    VVI_R_SHARED_FRAMEBUFFER_MEMORY_BASE    = 0x0034
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    41
    VVI_R_LASTREG                           = 0x0038  # not a register, address of last register
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    42
    
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    43
    VVI_EXECUTE                             = 0
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    44
    shared_cmd_memory_base                  = 0
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    45
    shared_framebuffer_memory_base          = 0
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    46
    m_request_id_reg = 0
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    47
99
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    48
    host_os                             = platform.system()
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    49
    # List of operating systems for this device
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    50
    OS_WINDOWS                          = "Windows"
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    51
    OS_LINUX                            = "Linux"
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    52
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    53
    def create(self):
99
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    54
        print "syborg_graphicsdevice: running on ", self.host_os
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    55
        
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    56
        # Add the supported and validated operating systems to the condition below
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    57
        if( (self.host_os != self.OS_WINDOWS) ):
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    58
            error_msg = "syborg_graphicsdevice: os support not validated: ", self.host_os
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    59
            sys.exit( error_msg )
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    60
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    61
        # Try open the syborg graphicswrapper library
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    62
        try:
99
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    63
            if( self.host_os == self.OS_WINDOWS ):
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    64
                libname = "syborg-graphicswrapper.dll"
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    65
            elif( self.host_os == self.OS_LINUX ):
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    66
                libname = "syborg-graphicswrapper.so"
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    67
            else:
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    68
                # We should never end up here since the operating system check is done above
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    69
                sys.exit( "syborg_graphicsdevice: library loading failed. Os not supported!" )
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    70
            self.library = ctypes.CDLL(libname)
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    71
        except Exception, e:
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    72
            print repr(e)
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    73
            error_msg = "syborg_graphicsdevice: " + libname + " load failed";
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    74
            sys.exit( error_msg )
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    75
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    76
        # Create an instance of syborg graphics wrapper
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    77
        self.obj = self.library.create_SyborgGraphicsWrapper()
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    78
            
99
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    79
        self.library.initialize_SyborgGraphicsWrapper( self.obj )
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    80
        self.initialize_graphics_callback()
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    81
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    82
        self.irqenable = 0
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    83
        self.irqstatus = 0
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    84
        self.command = 0
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    85
        self.parameterload = 0
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    86
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    87
    def updateIrq(self,new_value):
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    88
        self.set_irq_level(0, new_value)
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    89
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    90
    def graphics_request_callback(self, request_id):
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    91
        #print "graphics_request_callback: " , request_id
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    92
        self.m_request_id_reg = request_id
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    93
        self.updateIrq(1)
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    94
        return 0
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    95
        
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    96
    def initialize_graphics_callback(self):
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    97
        self.CALLBACKFUNC = ctypes.CFUNCTYPE(ctypes.c_int, ctypes.c_int)
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
    98
        self.graphics_callback = self.CALLBACKFUNC(self.graphics_request_callback)
99
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
    99
        self.library.set_GraphicsCallBack( self.obj, self.graphics_callback )
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   100
            
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   101
    def read_reg(self, offset):
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   102
        offset >>= 2
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   103
        if offset == self.VVI_R_ID:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   104
            return 0xDEADBEEF
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   105
        elif offset == self.VVI_R_IRQ_ENABLE:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   106
            return self.irqenable
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   107
        elif offset == self.VVI_R_IRQ_STATUS:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   108
            return self.irqstatus
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   109
        elif offset == self.VVI_R_COMMAND:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   110
            return self.command
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   111
        elif offset == self.VVI_R_PARAMETER_LOAD:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   112
            return self.parameterload
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   113
        elif offset == self.VVI_R_ERROR:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   114
            self.lasterror = 0
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   115
            return self.lasterror
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   116
        elif offset == self.VVI_R_INPUT_BUFFER_TAIL:
99
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
   117
            return self.library.get_InputBufferTail( self.obj )
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   118
        elif offset == self.VVI_R_INPUT_BUFFER_HEAD:
99
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
   119
            return self.library.get_InputBufferHead( self.obj )
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   120
        elif offset == self.VVI_R_INPUT_BUFFER_READ_COUNT:
99
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
   121
            return self.library.get_InputBufferReadCount( self.obj )
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   122
        elif offset == self.VVI_R_INPUT_BUFFER_WRITE_COUNT:
99
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
   123
            return self.library.get_InputBufferWriteCount( self.obj )
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   124
        elif offset == self.VVI_R_INPUT_BUFFER_MAX_TAIL:
99
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
   125
            return self.library.get_InputMaxTailIndex( self.obj )
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   126
        elif offset == self.VVI_R_REQUEST_ID:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   127
            return self.m_request_id_reg
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   128
        elif offset == self.VVI_R_SHARED_CMD_MEMORY_BASE:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   129
            return self.shared_cmd_memory_base
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   130
        elif offset == self.VVI_R_SHARED_FRAMEBUFFER_MEMORY_BASE:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   131
            return self.shared_framebuffer_memory_base
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   132
        else:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   133
            reg_read_error = "syborg_graphicsdevice: Illegal register read at: ", offset 
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   134
            sys.exit( reg_read_error )
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   135
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   136
    def write_reg(self, offset, value):
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   137
        offset >>= 2
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   138
        if offset == self.VVI_R_IRQ_STATUS:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   139
            self.updateIrq(0);
99
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
   140
            self.library.signal_outputbuffer_semafore( self.obj )
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
   141
            self.library.execute_command( self.obj );
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   142
        elif offset == self.VVI_R_COMMAND:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   143
            if value == self.VVI_EXECUTE:
99
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
   144
                self.library.execute_command( self.obj );
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   145
            else:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   146
                sys.exit("syborg_graphicsdevice: Unknown command issued!")
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   147
        elif offset == self.VVI_R_INPUT_BUFFER_TAIL:
99
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
   148
            self.library.set_InputBufferTail(  self.obj, value );
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   149
        elif offset == self.VVI_R_INPUT_BUFFER_HEAD:
99
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
   150
            self.library.set_InputBufferHead( self.obj, value );
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   151
        elif offset == self.VVI_R_INPUT_BUFFER_READ_COUNT:
99
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
   152
            self.library.set_InputBufferReadCount( self.obj, value );
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   153
        elif offset == self.VVI_R_INPUT_BUFFER_WRITE_COUNT:
99
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
   154
            self.library.set_InputBufferWriteCount( self.obj, value );
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   155
        elif offset == self.VVI_R_INPUT_BUFFER_MAX_TAIL:
99
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
   156
            self.library.set_InputMaxTailIndex( self.obj, value );
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   157
        elif offset == self.VVI_R_SHARED_CMD_MEMORY_BASE:
99
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
   158
            gmemsize = self.library.get_cmd_memsize()
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   159
            self.cmd_memregion = qemu.memregion( value, gmemsize )
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   160
            self.memregion_cmd_base = self.cmd_memregion.region_host_addr()
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   161
        elif offset == self.VVI_R_SHARED_FRAMEBUFFER_MEMORY_BASE:
99
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
   162
            gmemsize = self.library.get_framebuffer_memsize()
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   163
            self.framebuffer_memregion = qemu.memregion( value, gmemsize )
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   164
            self.memregion_framebuffer_base = self.framebuffer_memregion.region_host_addr()
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   165
            # Ready to finalise graphics initialization
99
542d4bc8b7ca bug235_bringup_0 - simplified syborg graphicsdevice and updated towards better linux support
Jani Hyvonen<jani.hyvonen@nokia.com>
parents: 77
diff changeset
   166
            if( self.library.reset_SyborgGraphicsWrapper( self.obj, self.memregion_framebuffer_base, self.memregion_cmd_base ) != 0 ):
77
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   167
                sys.exit("syborg_graphicsdevice: Syborg graphicsutils library not initialized correctly!")
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   168
        else:
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   169
            reg_write_error = "syborg_graphicsdevice: Illegal register write to: ", offset 
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   170
            sys.exit( reg_write_error )
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   171
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   172
    # Device class properties
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   173
    regions = [qemu.ioregion(0x1000, readl=read_reg, writel=write_reg)]
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   174
    irqs = 1
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   175
    name = "syborg,graphicsdevice"
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   176
    properties = {}
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   177
b3dcdc7f8f12 start graphics-phase-3
jahyvone@4FIL49437
parents:
diff changeset
   178
qemu.register_device(syborg_graphicsdevice)