{% extends "sega.html" %} {% block title %}Drivers{% endblock %} {% block body %}

Drivers

{{ generate_toc()|safe }}

Ring* systems makes use of a number of (mostly) bespoke drivers, listed below:

columna

Columba is a driver used to fetch DMI information about the current system.

Devices overview

Device Name \Device\columba
Symlink Name \DosDevices\columba
Userspace Name \\.\columba
Device GUID

IO control codes

IOCTL Code #define Bytes in Bytes out Meaning
0x9c406104 {{ ioctl("0x9c406104") }} Read the DMI at a given offset

mxcmos

mxcmos is unknown currently

mxhwreset

mxhwreset is

Devices overview

Device Name \Device\mxhwreset
Symlink Name \DosDevices\mxhwreset
Userspace Name \\.\mxhwreset
Device GUID

IO control codes

IOCTL Code #define Bytes in Bytes out Meaning
0x9c402000 {{ ioctl("0x9c402000") }}

Ports used

mxjvs

mxjvs is the driver used to communicate with the JVS IO board connected to the Ring* PC via the JVS USB port.

Devices overview

Device Name \Device\mxjvs
Symlink Name \DosDevices\mxjvs
Userspace Name \\.\mxjvs
Device GUID

IO control codes

IOCTL Code #define Bytes in Bytes out Meaning
0x9c402000 {{ ioctl("0x9c402000") }} variable variable Exchange JVS packets with the JVS IO board

Extra values used, currently unknown

mxparallel

mxparallel is a wrapper driver for the parallel port used to communicate with the keychip

Devices overview

Device Name \Device\mxparallel
Symlink Name \DosDevices\mxparallel
Userspace Name \\.\mxparallel
Device GUID

IO control codes

IOCTL Code #define Bytes in Bytes out Meaning
0x9c40a000 {{ ioctl("0x9c40a000") }} Write data
0x9c406004 {{ ioctl("0x9c406004") }} Read data
0x9c40a008 {{ ioctl("0x9c40a008") }} Write status
0x9c40600c {{ ioctl("0x9c40600c") }} Read status
0x9c40a010 {{ ioctl("0x9c40a010") }} Write control
0x9c406014 {{ ioctl("0x9c406014") }} Read control
0x9c40a018 {{ ioctl("0x9c40a018") }} Write flags
0x9c40601c {{ ioctl("0x9c40601c") }} Read flags

Ports used

mxsmbus

This driver communicates with the system message bus chip on the motherboard. This driver appears to be a slightly modified reference driver from Intel. The exact chipset used varies depending on the system:

RingWide Intel(R) 82801G(ICH7 Family)SMBus Controller
RingEdge Intel(R) ICH9 SMBus Controller
RingEdge 2 Intel(R) 5 Series/3400 Series Chipset Family SMBus Controller

Devices currently confirmed to be located on the system message bus:

Address Device
0x20 PCA9535; used for DIP switches
0x30
0x55
0x57 EEPROM

Devices overview

Device Name
Symlink Name
Userspace Name
Device GUID 5c49e1fe-3fec-4b8d-a4b5-76be7025d842

IO control codes

IOCTL Code #define Bytes in Bytes out Meaning
0x9c406000 {{ ioctl("0x9c406000") }} 0 4 Not totally understood, but appears to retrieve the port number
0x9c402004 {{ ioctl("0x9c402004") }} 25h 25h Exchange data over the smbus
0x9c406008 {{ ioctl("0x9c406008") }} 0 4 Retrieve the driver version
0x9c40200c {{ ioctl("0x9c40200c") }} 27h 27h Exchange data with an I2C device over the smbus

Ports used

Unsure

mxsram

The on-board SRAM. This device driver also supports reading and writing like a file.

Devices overview

Device Name \Device\mxsram
Symlink Name \DosDevices\mxsram
Userspace Name \\.\mxsram
Device GUID

IO control codes

IOCTL Code #define Bytes in Bytes out Meaning
0x70000 IOCTL_DISK_GET_DRIVE_GEOMETRY 0 18h
0x7405c IOCTL_DISK_GET_LENGTH_INFO 0 8
0x9c406000 {{ ioctl("0x9c406000") }} Ping
0x9c406004 {{ ioctl("0x9c406004") }} Get sector size
0x9c406008 {{ ioctl("0x9c406008") }} Get version

Ports used

mxsram_pci_isa_bridge

mxsram_pci_isa_bridge is unknown currently

mxsram_pcmcia

mxsram_pcmcia is unknown currently

mxsuperio

This driver communicates with some additional on-board devices. Notably EEPROM and the W83791D hardware monitor.

Devices overview

Device Name \Device\mxsuperio
Symlink Name \DosDevices\mxsuperio
Userspace Name \\.\mxsuperio
Device GUID

IO control codes

IOCTL Code #define Bytes in Bytes out Meaning
0x9c406000 {{ ioctl("0x9c406000") }} Ping
0x9c402004 {{ ioctl("0x9c402004") }} Read
0x9c40a008 {{ ioctl("0x9c40a008") }} Write
0x9c40200c {{ ioctl("0x9c40200c") }} Hardware monitor Read
0x9c40a010 {{ ioctl("0x9c40a010") }} Hardware monitor write

Ports used

mxusbdevice

mxsram_pcmcia is unknown currently

{% endblock %}