290 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			290 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html>
 | 
						|
<html lang="en">
 | 
						|
<head>
 | 
						|
<title>Asuro: PCI</title>
 | 
						|
<meta name="viewport" content="width=device-width, initial-scale=1">
 | 
						|
<meta name="generator" content="PasDoc 0.15.0">
 | 
						|
<meta http-equiv="content-type" content="text/html; charset=utf-8">
 | 
						|
<link rel="stylesheet" type="text/css" href="tipuesearch/tipuesearch.css">
 | 
						|
 | 
						|
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
 | 
						|
</head>
 | 
						|
<body>
 | 
						|
<table class="container"><tr><td class="navigation">
 | 
						|
<h2>Asuro</h2><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p><p><a href="GVUses.png" class="navigation">Unit dependency graph</a></p><form class="search-form" action="_tipue_results.html"><div class="search-input"><input type="text" name="q" id="tipue_search_input"></div><div class="search-button"><input type="button" id="tipue_search_button" onclick="this.form.submit();"></div></form>
 | 
						|
<div style="clear: both"></div>
 | 
						|
 | 
						|
<script type="text/javascript">
 | 
						|
$(document).ready(function() {
 | 
						|
    $('#tipue_search_input').tipuesearch({
 | 
						|
        /* 10 items to display seems standard */
 | 
						|
        'show': 10,
 | 
						|
        /* For PasDoc docs, showing urls is not very useful,
 | 
						|
           since the page title already shows the unit and identifier. */
 | 
						|
        'showURL': false
 | 
						|
    });
 | 
						|
});
 | 
						|
</script>
 | 
						|
</td><td class="content">
 | 
						|
<h1 class="unit">Unit PCI</h1>
 | 
						|
<div class="sections">
 | 
						|
<div class="one_section"><a class="section" href="#PasDoc-Description">Description</a></div><div class="one_section"><a class="section" href="#PasDoc-Uses">Uses</a></div><div class="one_section">Classes, Interfaces, Objects and Records</div><div class="one_section"><a class="section" href="#PasDoc-FuncsProcs">Functions and Procedures</a></div><div class="one_section"><a class="section" href="#PasDoc-Types">Types</a></div><div class="one_section"><a class="section" href="#PasDoc-Constants">Constants</a></div><div class="one_section"><a class="section" href="#PasDoc-Variables">Variables</a></div></div>
 | 
						|
<span id="PasDoc-Description"></span><h2 class="description">Description</h2>
 | 
						|
<p>
 | 
						|
Driver->Bus-><code>PCI</code> - Peripheral Component Interconnect Driver.
 | 
						|
 | 
						|
<p> </p>
 | 
						|
<span id="PasDoc-Uses"></span><h2 class="uses">Uses</h2>
 | 
						|
<ul class="useslist"><li><a  href="tracer.html">tracer</a></li><li><a  href="util.html">util</a></li><li><a  href="console.html">console</a></li><li><a  href="drivertypes.html">drivertypes</a></li><li><a  href="lmemorymanager.html">lmemorymanager</a></li><li><a  href="vmemorymanager.html">vmemorymanager</a></li><li><a  href="drivermanagement.html">drivermanagement</a></li></ul><h2 class="overview">Overview</h2>
 | 
						|
<span id="PasDoc-FuncsProcs"></span><h3 class="summary">Functions and Procedures</h3>
 | 
						|
<table class="summary wide_list">
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><code>procedure <b><a  href="PCI.html#init">init</a></b>();</code></td>
 | 
						|
</tr>
 | 
						|
<tr class="list2">
 | 
						|
<td class="itemcode"><code>procedure <b><a  href="PCI.html#scanBus">scanBus</a></b>(bus : <a  href="system.html#uInt8">uint8</a>);</code></td>
 | 
						|
</tr>
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><code>function <b><a  href="PCI.html#loadDeviceConfig">loadDeviceConfig</a></b>(bus : <a  href="system.html#uInt8">uint8</a>; slot : <a  href="system.html#uInt8">uint8</a>; func : <a  href="system.html#uInt8">uint8</a>) : boolean;</code></td>
 | 
						|
</tr>
 | 
						|
<tr class="list2">
 | 
						|
<td class="itemcode"><code>function <b><a  href="PCI.html#getDeviceInfo">getDeviceInfo</a></b>(class_code : <a  href="system.html#uInt8">uint8</a>; subclass_code : <a  href="system.html#uInt8">uint8</a>; prog_if : <a  href="system.html#uInt8">uint8</a>; var count : <a  href="system.html#uInt32">uint32</a>) : <a  href="drivertypes.html#TDeviceArray">TdeviceArray</a>;</code></td>
 | 
						|
</tr>
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><code>procedure <b><a  href="PCI.html#requestConfig">requestConfig</a></b>(bus : <a  href="system.html#uInt8">uint8</a>; slot : <a  href="system.html#uInt8">uint8</a>; func : <a  href="system.html#uInt8">uint8</a>; row : <a  href="system.html#uInt8">uint8</a>);</code></td>
 | 
						|
</tr>
 | 
						|
<tr class="list2">
 | 
						|
<td class="itemcode"><code>procedure <b><a  href="PCI.html#writeConfig">writeConfig</a></b>(bus: <a  href="system.html#uInt8">uint8</a>; slot : <a  href="system.html#uInt8">uint8</a>; func : <a  href="system.html#uInt8">uint8</a>; row : <a  href="system.html#uInt8">uint8</a>; val : <a  href="system.html#uInt32">uint32</a>);</code></td>
 | 
						|
</tr>
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><code>procedure <b><a  href="PCI.html#setBusMaster">setBusMaster</a></b>(bus : <a  href="system.html#uInt8">uint8</a>; slot : <a  href="system.html#uInt8">uint8</a>; func : <a  href="system.html#uInt8">uint8</a>; master : boolean);</code></td>
 | 
						|
</tr>
 | 
						|
</table>
 | 
						|
<span id="PasDoc-Types"></span><h3 class="summary">Types</h3>
 | 
						|
<table class="summary wide_list">
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><code><b><a  href="PCI.html#TPCI_Device_Bridge">TPCI_Device_Bridge</a></b> = bitpacked record
 | 
						|
        device_id          : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        vendor_id          : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        status             : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        command            : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        class_code         : <a  href="system.html#uInt8">uint8</a>; 
 | 
						|
        subclass_class     : <a  href="system.html#uInt8">uint8</a>; 
 | 
						|
        prog_if            : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        revision_id        : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        BIST               : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        header_type        : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        latency_timer      : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        cache_size         : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        address0           : <a  href="system.html#uInt32">uint32</a>;
 | 
						|
        address1           : <a  href="system.html#uInt32">uint32</a>;
 | 
						|
        latency_timer2     : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        subordinate_bus    : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        secondery_bus      : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        primary_bus        : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        secondery_status   : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        io_limit           : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        io_base            : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        memory_limit       : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        memory_base        : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        pref_memory_limit  : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        pref_memory_base   : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        pref_base_upper    : <a  href="system.html#uInt32">uint32</a>;
 | 
						|
        pref_limit_upper   : <a  href="system.html#uInt32">uint32</a>;
 | 
						|
        io_limit_upper     : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        io_base_upper      : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        reserved           : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        reserved0          : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        capability_pointer : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        epx_rom_addr       : <a  href="system.html#uInt32">uint32</a>;
 | 
						|
        bridge_control     : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        interrupt_pin      : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        interrupt_line     : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
    end;</code></td>
 | 
						|
</tr>
 | 
						|
</table>
 | 
						|
<span id="PasDoc-Constants"></span><h3 class="summary">Constants</h3>
 | 
						|
<table class="summary wide_list">
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><code><b><a  href="PCI.html#PCI_PORT_CONF_ADDR">PCI_PORT_CONF_ADDR</a></b> = $CF8;</code></td>
 | 
						|
</tr>
 | 
						|
<tr class="list2">
 | 
						|
<td class="itemcode"><code><b><a  href="PCI.html#PCI_PORT_CONF_DATA">PCI_PORT_CONF_DATA</a></b> = $CFC;</code></td>
 | 
						|
</tr>
 | 
						|
</table>
 | 
						|
<span id="PasDoc-Variables"></span><h3 class="summary">Variables</h3>
 | 
						|
<table class="summary wide_list">
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><code><b><a  href="PCI.html#devices">devices</a></b>: array[0..1024] of <a  href="drivertypes.html#TPCI_Device">TPCI_Device</a>;</code></td>
 | 
						|
</tr>
 | 
						|
<tr class="list2">
 | 
						|
<td class="itemcode"><code><b><a  href="PCI.html#busses">busses</a></b>: array[0..256] of <a  href="PCI.html#TPCI_Device_Bridge">TPCI_Device_Bridge</a>;</code></td>
 | 
						|
</tr>
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><code><b><a  href="PCI.html#device_count">device_count</a></b>: <a  href="system.html#uInt16">uint16</a>;</code></td>
 | 
						|
</tr>
 | 
						|
<tr class="list2">
 | 
						|
<td class="itemcode"><code><b><a  href="PCI.html#bus_count">bus_count</a></b>: <a  href="system.html#uInt8">uint8</a> = 1;</code></td>
 | 
						|
</tr>
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><code><b><a  href="PCI.html#get_device_count">get_device_count</a></b>: <a  href="system.html#uInt8">uint8</a>;</code></td>
 | 
						|
</tr>
 | 
						|
</table>
 | 
						|
<h2 class="description">Description</h2>
 | 
						|
<h3 class="detail">Functions and Procedures</h3>
 | 
						|
<table class="detail wide_list">
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><span id="init"></span><code>procedure <b>init</b>();</code></td>
 | 
						|
</tr>
 | 
						|
<tr><td colspan="1">
 | 
						|
 </td></tr>
 | 
						|
</table>
 | 
						|
<table class="detail wide_list">
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><span id="scanBus"></span><code>procedure <b>scanBus</b>(bus : <a  href="system.html#uInt8">uint8</a>);</code></td>
 | 
						|
</tr>
 | 
						|
<tr><td colspan="1">
 | 
						|
 </td></tr>
 | 
						|
</table>
 | 
						|
<table class="detail wide_list">
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><span id="loadDeviceConfig"></span><code>function <b>loadDeviceConfig</b>(bus : <a  href="system.html#uInt8">uint8</a>; slot : <a  href="system.html#uInt8">uint8</a>; func : <a  href="system.html#uInt8">uint8</a>) : boolean;</code></td>
 | 
						|
</tr>
 | 
						|
<tr><td colspan="1">
 | 
						|
 </td></tr>
 | 
						|
</table>
 | 
						|
<table class="detail wide_list">
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><span id="getDeviceInfo"></span><code>function <b>getDeviceInfo</b>(class_code : <a  href="system.html#uInt8">uint8</a>; subclass_code : <a  href="system.html#uInt8">uint8</a>; prog_if : <a  href="system.html#uInt8">uint8</a>; var count : <a  href="system.html#uInt32">uint32</a>) : <a  href="drivertypes.html#TDeviceArray">TdeviceArray</a>;</code></td>
 | 
						|
</tr>
 | 
						|
<tr><td colspan="1">
 | 
						|
 </td></tr>
 | 
						|
</table>
 | 
						|
<table class="detail wide_list">
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><span id="requestConfig"></span><code>procedure <b>requestConfig</b>(bus : <a  href="system.html#uInt8">uint8</a>; slot : <a  href="system.html#uInt8">uint8</a>; func : <a  href="system.html#uInt8">uint8</a>; row : <a  href="system.html#uInt8">uint8</a>);</code></td>
 | 
						|
</tr>
 | 
						|
<tr><td colspan="1">
 | 
						|
<p>
 | 
						|
(Will in future)returns TPCI_DEVICE.vendor_id := 0xFFFF if no device found.</p>
 | 
						|
</td></tr>
 | 
						|
</table>
 | 
						|
<table class="detail wide_list">
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><span id="writeConfig"></span><code>procedure <b>writeConfig</b>(bus: <a  href="system.html#uInt8">uint8</a>; slot : <a  href="system.html#uInt8">uint8</a>; func : <a  href="system.html#uInt8">uint8</a>; row : <a  href="system.html#uInt8">uint8</a>; val : <a  href="system.html#uInt32">uint32</a>);</code></td>
 | 
						|
</tr>
 | 
						|
<tr><td colspan="1">
 | 
						|
 </td></tr>
 | 
						|
</table>
 | 
						|
<table class="detail wide_list">
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><span id="setBusMaster"></span><code>procedure <b>setBusMaster</b>(bus : <a  href="system.html#uInt8">uint8</a>; slot : <a  href="system.html#uInt8">uint8</a>; func : <a  href="system.html#uInt8">uint8</a>; master : boolean);</code></td>
 | 
						|
</tr>
 | 
						|
<tr><td colspan="1">
 | 
						|
 </td></tr>
 | 
						|
</table>
 | 
						|
<h3 class="detail">Types</h3>
 | 
						|
<table class="detail wide_list">
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><span id="TPCI_Device_Bridge"></span><code><b>TPCI_Device_Bridge</b> = bitpacked record
 | 
						|
        device_id          : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        vendor_id          : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        status             : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        command            : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        class_code         : <a  href="system.html#uInt8">uint8</a>; 
 | 
						|
        subclass_class     : <a  href="system.html#uInt8">uint8</a>; 
 | 
						|
        prog_if            : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        revision_id        : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        BIST               : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        header_type        : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        latency_timer      : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        cache_size         : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        address0           : <a  href="system.html#uInt32">uint32</a>;
 | 
						|
        address1           : <a  href="system.html#uInt32">uint32</a>;
 | 
						|
        latency_timer2     : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        subordinate_bus    : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        secondery_bus      : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        primary_bus        : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        secondery_status   : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        io_limit           : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        io_base            : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        memory_limit       : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        memory_base        : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        pref_memory_limit  : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        pref_memory_base   : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        pref_base_upper    : <a  href="system.html#uInt32">uint32</a>;
 | 
						|
        pref_limit_upper   : <a  href="system.html#uInt32">uint32</a>;
 | 
						|
        io_limit_upper     : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        io_base_upper      : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        reserved           : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        reserved0          : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        capability_pointer : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        epx_rom_addr       : <a  href="system.html#uInt32">uint32</a>;
 | 
						|
        bridge_control     : <a  href="system.html#uInt16">uint16</a>;
 | 
						|
        interrupt_pin      : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
        interrupt_line     : <a  href="system.html#uInt8">uint8</a>;
 | 
						|
    end;</code></td>
 | 
						|
</tr>
 | 
						|
<tr><td colspan="1">
 | 
						|
 </td></tr>
 | 
						|
</table>
 | 
						|
<h3 class="detail">Constants</h3>
 | 
						|
<table class="detail wide_list">
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><span id="PCI_PORT_CONF_ADDR"></span><code><b>PCI_PORT_CONF_ADDR</b> = $CF8;</code></td>
 | 
						|
</tr>
 | 
						|
<tr><td colspan="1">
 | 
						|
 </td></tr>
 | 
						|
</table>
 | 
						|
<table class="detail wide_list">
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><span id="PCI_PORT_CONF_DATA"></span><code><b>PCI_PORT_CONF_DATA</b> = $CFC;</code></td>
 | 
						|
</tr>
 | 
						|
<tr><td colspan="1">
 | 
						|
 </td></tr>
 | 
						|
</table>
 | 
						|
<h3 class="detail">Variables</h3>
 | 
						|
<table class="detail wide_list">
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><span id="devices"></span><code><b>devices</b>: array[0..1024] of <a  href="drivertypes.html#TPCI_Device">TPCI_Device</a>;</code></td>
 | 
						|
</tr>
 | 
						|
<tr><td colspan="1">
 | 
						|
 </td></tr>
 | 
						|
</table>
 | 
						|
<table class="detail wide_list">
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><span id="busses"></span><code><b>busses</b>: array[0..256] of <a  href="PCI.html#TPCI_Device_Bridge">TPCI_Device_Bridge</a>;</code></td>
 | 
						|
</tr>
 | 
						|
<tr><td colspan="1">
 | 
						|
 </td></tr>
 | 
						|
</table>
 | 
						|
<table class="detail wide_list">
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><span id="device_count"></span><code><b>device_count</b>: <a  href="system.html#uInt16">uint16</a>;</code></td>
 | 
						|
</tr>
 | 
						|
<tr><td colspan="1">
 | 
						|
 </td></tr>
 | 
						|
</table>
 | 
						|
<table class="detail wide_list">
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><span id="bus_count"></span><code><b>bus_count</b>: <a  href="system.html#uInt8">uint8</a> = 1;</code></td>
 | 
						|
</tr>
 | 
						|
<tr><td colspan="1">
 | 
						|
 </td></tr>
 | 
						|
</table>
 | 
						|
<table class="detail wide_list">
 | 
						|
<tr class="list">
 | 
						|
<td class="itemcode"><span id="get_device_count"></span><code><b>get_device_count</b>: <a  href="system.html#uInt8">uint8</a>;</code></td>
 | 
						|
</tr>
 | 
						|
<tr><td colspan="1">
 | 
						|
 </td></tr>
 | 
						|
</table>
 | 
						|
<h2 class="authors">Authors</h2>
 | 
						|
<ul class="authors">
 | 
						|
<li>Aaron Hance <<a  href="mailto:ah@aaronhance.me">ah@aaronhance.me</a>></li>
 | 
						|
<li>Kieron Morris <<a  href="mailto:kjm@kieronmorris.me">kjm@kieronmorris.me</a>></li>
 | 
						|
</ul>
 | 
						|
<hr><span class="appinfo"><em>Generated by <a  href="https://github.com/pasdoc/pasdoc/wiki">PasDoc 0.15.0</a>. </em>
 | 
						|
</span>
 | 
						|
</td></tr></table></body></html>
 |