Generic hardware access library
|
00001 #include "hal/VMEConfigurationSpaceAddressReader.hh" 00002 00007 HAL::VMEConfigurationSpaceAddressReader::VMEConfigurationSpaceAddressReader() { 00008 /****************************************************************************************************/ 00009 /* key width address r w description */ 00010 /****************************************************************************************************/ 00011 createItem( "romStart", 1, 0x000000, 1, 0, "technical helper item: pointers refer to this startaddress"); 00012 createItem( "configSpaceEnd", 1, 0xffffff, 1, 1, "technical helper item:in order to access all slots with offsets"); 00013 createItem( "checksum", 1, 0x000003, 1, 0, "checksum of configuration ROM"); 00014 00015 createItem( "romLength", 3, 0x000007, 1, 0, "length of the Configuration ROM"); 00016 createItem( "CRWidth", 1, 0x000013, 1, 0, "Configuration ROM (CR) access width"); 00017 createItem( "CSRWidth", 1, 0x000017, 1, 0, "Configuration Status Reg (CSR) access width"); 00018 createItem( "specificationId", 1, 0x00001b, 1, 0, "CR/CSR specification ID"); 00019 createItem( "CR", 2, 0x00001f, 1, 0, "to identify valid CR"); 00020 00021 createItem( "manufacturerId", 3, 0x000027, 1, 0, "Manufacturer Id"); 00022 createItem( "boardId", 4, 0x000033, 1, 0, "Board Id (from manufacturer)"); 00023 createItem( "revisionId", 4, 0x000043, 1, 0, "Board-Revision Id (from manufacturer)"); 00024 createItem( "descriptionPtr", 3, 0x000053, 1, 0, "Pointer to Null terminated string"); 00025 createItem( "programId", 1, 0x00007f, 1, 0, "Program Id (if available)"); 00026 createItem( "userCRStart", 3, 0x000083, 1, 0, "0 or Pointer to start of User CR"); 00027 createItem( "userCREnd", 3, 0x00008f, 1, 0, "0 or Pointer to end of User CR"); 00028 createItem( "CRAMStart", 3, 0x00009b, 1, 0, "0 or Pointer to start of CRAM"); 00029 createItem( "CRAMEnd", 3, 0x0000a7, 1, 0, "0 or Pointer to end of CRAM"); 00030 createItem( "userCSRStart", 3, 0x0000b3, 1, 0, "0 or Pointer to start of User CSR"); 00031 createItem( "userCSREnd", 3, 0x0000bf, 1, 0, "0 or Pointer to end of User CSR"); 00032 createItem( "serialNumberStart", 3, 0x0000cb, 1, 0, "0 or Pointer to start of Serialnumber"); 00033 createItem( "serialNumberEnd", 3, 0x0000d7, 1, 0, "0 or Pointer to end of Serialnumber"); 00034 00035 00036 createItem( "slaveCharacts", 1, 0x0000e3, 1, 0, "characteristics of slave interface" ); 00037 createItem( "userSlaveCharacts", 1, 0x0000e7, 1, 0, "user defined characteristics of slave interface"); 00038 createItem( "masterCharcts", 1, 0x0000eb, 1, 0, "characteristics of master interface" ); 00039 createItem( "userMasterCharacts", 1, 0x0000ef, 1, 0, "user defined characteristics of master interface" ); 00040 createItem( "irqHandlerCap", 1, 0x0000f3, 1, 0, "interrupt handler capabilities" ); 00041 createItem( "interrupterCap", 1, 0x0000f7, 1, 0, "interrupter capabilities" ); 00042 createItem( "CRAMWidth", 1, 0x0000FF, 1, 0, "Configuration RAM (CRAM) access width"); 00043 00044 createItem( "dataAccessWidth-F0", 1, 0x000103, 1, 0, "Data access width for function 0"); 00045 createItem( "dataAccessWidth-F1", 1, 0x000107, 1, 0, "Data access width for function 1"); 00046 createItem( "dataAccessWidth-F2", 1, 0x00010b, 1, 0, "Data access width for function 2"); 00047 createItem( "dataAccessWidth-F3", 1, 0x00010f, 1, 0, "Data access width for function 3"); 00048 createItem( "dataAccessWidth-F4", 1, 0x000113, 1, 0, "Data access width for function 4"); 00049 createItem( "dataAccessWidth-F5", 1, 0x000117, 1, 0, "Data access width for function 5"); 00050 createItem( "dataAccessWidth-F6", 1, 0x00011b, 1, 0, "Data access width for function 6"); 00051 createItem( "dataAccessWidth-F7", 1, 0x00011f, 1, 0, "Data access width for function 7"); 00052 00053 createItem( "AMCAP-F0-1", 4, 0x000123, 1, 0, "AM-capability for function 0: byte 7"); 00054 createItem( "AMCAP-F0-0", 4, 0x000133, 1, 0, "AM-capability for function 0: byte 3"); 00055 createItem( "AMCAP-F1-1", 4, 0x000143, 1, 0, "AM-capability for function 1: byte 7"); 00056 createItem( "AMCAP-F1-0", 4, 0x000153, 1, 0, "AM-capability for function 1: byte 3"); 00057 createItem( "AMCAP-F2-1", 4, 0x000163, 1, 0, "AM-capability for function 2: byte 7"); 00058 createItem( "AMCAP-F2-0", 4, 0x000173, 1, 0, "AM-capability for function 2: byte 3"); 00059 createItem( "AMCAP-F3-1", 4, 0x000183, 1, 0, "AM-capability for function 3: byte 7"); 00060 createItem( "AMCAP-F3-0", 4, 0x000293, 1, 0, "AM-capability for function 3: byte 3"); 00061 createItem( "AMCAP-F4-1", 4, 0x0001a3, 1, 0, "AM-capability for function 4: byte 7"); 00062 createItem( "AMCAP-F4-0", 4, 0x0001b3, 1, 0, "AM-capability for function 4: byte 3"); 00063 createItem( "AMCAP-F5-1", 4, 0x0001c3, 1, 0, "AM-capability for function 5: byte 7"); 00064 createItem( "AMCAP-F5-0", 4, 0x0001d3, 1, 0, "AM-capability for function 5: byte 3"); 00065 createItem( "AMCAP-F6-1", 4, 0x0001e3, 1, 0, "AM-capability for function 6: byte 7"); 00066 createItem( "AMCAP-F6-0", 4, 0x0001f3, 1, 0, "AM-capability for function 6: byte 3"); 00067 createItem( "AMCAP-F7-1", 4, 0x000203, 1, 0, "AM-capability for function 7: byte 7"); 00068 createItem( "AMCAP-F7-0", 4, 0x000213, 1, 0, "AM-capability for function 7: byte 3"); 00069 00070 createItem( "XAMCAP-F0-7", 4, 0x000223, 1, 0, "XAM-capability for function 0: word 7"); 00071 createItem( "XAMCAP-F1-7", 4, 0x0002a3, 1, 0, "XAM-capability for function 1: word 7"); 00072 createItem( "XAMCAP-F2-7", 4, 0x000323, 1, 0, "XAM-capability for function 2: word 7"); 00073 createItem( "XAMCAP-F3-7", 4, 0x0003a3, 1, 0, "XAM-capability for function 3: word 7"); 00074 createItem( "XAMCAP-F4-7", 4, 0x000423, 1, 0, "XAM-capability for function 4: word 7"); 00075 createItem( "XAMCAP-F5-7", 4, 0x0004a3, 1, 0, "XAM-capability for function 5: word 7"); 00076 createItem( "XAMCAP-F6-7", 4, 0x000523, 1, 0, "XAM-capability for function 6: word 7"); 00077 createItem( "XAMCAP-F7-7", 4, 0x0005a3, 1, 0, "XAM-capability for function 7: word 7"); 00078 00079 createItem( "XAMCAP-F0-6", 4, 0x000233, 1, 0, "XAM-capability for function 0: word 6"); 00080 createItem( "XAMCAP-F1-6", 4, 0x0002b3, 1, 0, "XAM-capability for function 1: word 6"); 00081 createItem( "XAMCAP-F2-6", 4, 0x000333, 1, 0, "XAM-capability for function 2: word 6"); 00082 createItem( "XAMCAP-F3-6", 4, 0x0003b3, 1, 0, "XAM-capability for function 3: word 6"); 00083 createItem( "XAMCAP-F4-6", 4, 0x000433, 1, 0, "XAM-capability for function 4: word 6"); 00084 createItem( "XAMCAP-F5-6", 4, 0x0004b3, 1, 0, "XAM-capability for function 5: word 6"); 00085 createItem( "XAMCAP-F6-6", 4, 0x000533, 1, 0, "XAM-capability for function 6: word 6"); 00086 createItem( "XAMCAP-F7-6", 4, 0x0005b3, 1, 0, "XAM-capability for function 7: word 6"); 00087 00088 createItem( "XAMCAP-F0-5", 4, 0x000243, 1, 0, "XAM-capability for function 0: word 5"); 00089 createItem( "XAMCAP-F1-5", 4, 0x0002c3, 1, 0, "XAM-capability for function 1: word 5"); 00090 createItem( "XAMCAP-F2-5", 4, 0x000343, 1, 0, "XAM-capability for function 2: word 5"); 00091 createItem( "XAMCAP-F3-5", 4, 0x0003c3, 1, 0, "XAM-capability for function 3: word 5"); 00092 createItem( "XAMCAP-F4-5", 4, 0x000443, 1, 0, "XAM-capability for function 4: word 5"); 00093 createItem( "XAMCAP-F5-5", 4, 0x0004c3, 1, 0, "XAM-capability for function 5: word 5"); 00094 createItem( "XAMCAP-F6-5", 4, 0x000543, 1, 0, "XAM-capability for function 6: word 5"); 00095 createItem( "XAMCAP-F7-5", 4, 0x0005c3, 1, 0, "XAM-capability for function 7: word 5"); 00096 00097 createItem( "XAMCAP-F0-4", 4, 0x000253, 1, 0, "XAM-capability for function 0: word 4"); 00098 createItem( "XAMCAP-F1-4", 4, 0x0002d3, 1, 0, "XAM-capability for function 1: word 4"); 00099 createItem( "XAMCAP-F2-4", 4, 0x000353, 1, 0, "XAM-capability for function 2: word 4"); 00100 createItem( "XAMCAP-F3-4", 4, 0x0003d3, 1, 0, "XAM-capability for function 3: word 4"); 00101 createItem( "XAMCAP-F4-4", 4, 0x000453, 1, 0, "XAM-capability for function 4: word 4"); 00102 createItem( "XAMCAP-F5-4", 4, 0x0004d3, 1, 0, "XAM-capability for function 5: word 4"); 00103 createItem( "XAMCAP-F6-4", 4, 0x000553, 1, 0, "XAM-capability for function 6: word 4"); 00104 createItem( "XAMCAP-F7-4", 4, 0x0005d3, 1, 0, "XAM-capability for function 7: word 4"); 00105 00106 createItem( "XAMCAP-F0-3", 4, 0x000263, 1, 0, "XAM-capability for function 0: word 3"); 00107 createItem( "XAMCAP-F1-3", 4, 0x0002e3, 1, 0, "XAM-capability for function 1: word 3"); 00108 createItem( "XAMCAP-F2-3", 4, 0x000363, 1, 0, "XAM-capability for function 2: word 3"); 00109 createItem( "XAMCAP-F3-3", 4, 0x0003e3, 1, 0, "XAM-capability for function 3: word 3"); 00110 createItem( "XAMCAP-F4-3", 4, 0x000463, 1, 0, "XAM-capability for function 4: word 3"); 00111 createItem( "XAMCAP-F5-3", 4, 0x0004e3, 1, 0, "XAM-capability for function 5: word 3"); 00112 createItem( "XAMCAP-F6-3", 4, 0x000563, 1, 0, "XAM-capability for function 6: word 3"); 00113 createItem( "XAMCAP-F7-3", 4, 0x0005e3, 1, 0, "XAM-capability for function 7: word 3"); 00114 00115 createItem( "XAMCAP-F0-2", 4, 0x000273, 1, 0, "XAM-capability for function 0: word 2"); 00116 createItem( "XAMCAP-F1-2", 4, 0x0002f3, 1, 0, "XAM-capability for function 1: word 2"); 00117 createItem( "XAMCAP-F2-2", 4, 0x000373, 1, 0, "XAM-capability for function 2: word 2"); 00118 createItem( "XAMCAP-F3-2", 4, 0x0003f3, 1, 0, "XAM-capability for function 3: word 2"); 00119 createItem( "XAMCAP-F4-2", 4, 0x000473, 1, 0, "XAM-capability for function 4: word 2"); 00120 createItem( "XAMCAP-F5-2", 4, 0x0004f3, 1, 0, "XAM-capability for function 5: word 2"); 00121 createItem( "XAMCAP-F6-2", 4, 0x000573, 1, 0, "XAM-capability for function 6: word 2"); 00122 createItem( "XAMCAP-F7-2", 4, 0x0005f3, 1, 0, "XAM-capability for function 7: word 2"); 00123 00124 createItem( "XAMCAP-F0-1", 4, 0x000283, 1, 0, "XAM-capability for function 0: word 1"); 00125 createItem( "XAMCAP-F1-1", 4, 0x000303, 1, 0, "XAM-capability for function 1: word 1"); 00126 createItem( "XAMCAP-F2-1", 4, 0x000383, 1, 0, "XAM-capability for function 2: word 1"); 00127 createItem( "XAMCAP-F3-1", 4, 0x000403, 1, 0, "XAM-capability for function 3: word 1"); 00128 createItem( "XAMCAP-F4-1", 4, 0x000483, 1, 0, "XAM-capability for function 4: word 1"); 00129 createItem( "XAMCAP-F5-1", 4, 0x000503, 1, 0, "XAM-capability for function 5: word 1"); 00130 createItem( "XAMCAP-F6-1", 4, 0x000583, 1, 0, "XAM-capability for function 6: word 1"); 00131 createItem( "XAMCAP-F7-1", 4, 0x000603, 1, 0, "XAM-capability for function 7: word 1"); 00132 00133 createItem( "XAMCAP-F0-0", 4, 0x000293, 1, 0, "XAM-capability for function 0: word 0"); 00134 createItem( "XAMCAP-F1-0", 4, 0x000313, 1, 0, "XAM-capability for function 1: word 0"); 00135 createItem( "XAMCAP-F2-0", 4, 0x000393, 1, 0, "XAM-capability for function 2: word 0"); 00136 createItem( "XAMCAP-F3-0", 4, 0x000413, 1, 0, "XAM-capability for function 3: word 0"); 00137 createItem( "XAMCAP-F4-0", 4, 0x000493, 1, 0, "XAM-capability for function 4: word 0"); 00138 createItem( "XAMCAP-F5-0", 4, 0x000513, 1, 0, "XAM-capability for function 5: word 0"); 00139 createItem( "XAMCAP-F6-0", 4, 0x000593, 1, 0, "XAM-capability for function 6: word 0"); 00140 createItem( "XAMCAP-F7-0", 4, 0x000613, 1, 0, "XAM-capability for function 7: word 0"); 00141 00142 createItem( "ADEM-F0", 4, 0x000623, 1, 0, "Address Decoder Mask function 0"); 00143 createItem( "ADEM-F1", 4, 0x000633, 1, 0, "Address Decoder Mask function 1"); 00144 createItem( "ADEM-F2", 4, 0x000643, 1, 0, "Address Decoder Mask function 2"); 00145 createItem( "ADEM-F3", 4, 0x000653, 1, 0, "Address Decoder Mask function 3"); 00146 createItem( "ADEM-F4", 4, 0x000663, 1, 0, "Address Decoder Mask function 4"); 00147 createItem( "ADEM-F5", 4, 0x000673, 1, 0, "Address Decoder Mask function 5"); 00148 createItem( "ADEM-F6", 4, 0x000683, 1, 0, "Address Decoder Mask function 6"); 00149 createItem( "ADEM-F7", 4, 0x000693, 1, 0, "Address Decoder Mask function 7"); 00150 00151 /**************************************** CSR items *************************************************/ 00152 00153 createItem("bar", 1, 0x07ffff, 1, 1, "CR/CSR Base Address Register (BAR)"); 00154 createItem("bitSet", 1, 0x07fffb, 1, 1, "Bit Set Register"); 00155 createItem("bitClear", 1, 0x07fff7, 1, 1, "Bit Clear Register"); 00156 createItem("cramOwner", 1, 0x07fff3, 1, 1, "CRAM owner Register"); 00157 createItem("userBitSet", 1, 0x07ffef, 1, 1, "User Bit Set Register"); 00158 createItem("userBitClear", 1, 0x07ffeb, 1, 1, "User Bit Clear Register"); 00159 00160 createItem("ADER-F7", 4, 0x07ffd3, 1, 1, "Address Decoder Compare Register function 7"); 00161 createItem("ADER-F6", 4, 0x07ffc3, 1, 1, "Address Decoder Compare Register function 6"); 00162 createItem("ADER-F5", 4, 0x07ffb3, 1, 1, "Address Decoder Compare Register function 5"); 00163 createItem("ADER-F4", 4, 0x07ffa3, 1, 1, "Address Decoder Compare Register function 4"); 00164 createItem("ADER-F3", 4, 0x07ff93, 1, 1, "Address Decoder Compare Register function 3"); 00165 createItem("ADER-F2", 4, 0x07ff83, 1, 1, "Address Decoder Compare Register function 2"); 00166 createItem("ADER-F1", 4, 0x07ff73, 1, 1, "Address Decoder Compare Register function 1"); 00167 createItem("ADER-F0", 4, 0x07ff63, 1, 1, "Address Decoder Compare Register function 0"); 00168 createItem("CSRStart", 1, 0x07ff63, 1, 1, "Marks start of CSR space"); 00169 00170 00171 /****************************************************************************************************/ 00172 } 00173 00174 void HAL::VMEConfigurationSpaceAddressReader::createItem( std::string key, 00175 uint32_t width, 00176 uint32_t address, 00177 uint32_t isReadable, 00178 uint32_t isWritable, 00179 std::string description) { 00180 00181 HAL::VMEHardwareAddress* addressPointer = new HAL::VMEHardwareAddress(address,0x2f,width); 00182 HAL::AddressTableItem* itemPointer = new HAL::AddressTableItem(key, description, *addressPointer, 00183 0xffffffff, isWritable, isReadable); 00184 itemPointerList.push_back( itemPointer ); 00185 }