Changeset 2811
- Timestamp:
- 06/01/21 17:11:47 (3 years ago)
- Files:
-
- trunk/libffado/doc/motu_firewire_protocol.txt (modified) (4 diffs)
- trunk/libffado/doc/rme_notes/rme_config_register_map.txt (modified) (4 diffs)
- trunk/libffado/libffado/ffado.h.in (modified) (1 diff)
- trunk/libffado/README (modified) (1 diff)
- trunk/libffado/src/devicemanager.cpp (modified) (1 diff)
- trunk/libffado/src/digidesign/digidesign_avdevice.cpp (modified) (2 diffs)
- trunk/libffado/src/libieee1394/ieee1394service.cpp (modified) (1 diff)
- trunk/libffado/src/libieee1394/ieee1394service.h (modified) (1 diff)
- trunk/libffado/src/libieee1394/IsoHandlerManager.cpp (modified) (4 diffs)
- trunk/libffado/src/libstreaming/amdtp/AmdtpReceiveStreamProcessor.cpp (modified) (1 diff)
- trunk/libffado/src/libstreaming/digidesign/DigidesignReceiveStreamProcessor.cpp (modified) (3 diffs)
- trunk/libffado/src/libstreaming/digidesign/DigidesignTransmitStreamProcessor.cpp (modified) (1 diff)
- trunk/libffado/src/rme/fireface_flash.cpp (modified) (2 diffs)
- trunk/libffado/support/firmware/bridgeco-downloader.cpp (modified) (2 diffs)
- trunk/libffado/support/firmware/ffado-fireworks-downloader.1 (modified) (1 diff)
- trunk/libffado/support/tools/ffado-diag.1 (modified) (1 diff)
- trunk/libffado/tests/scan-devreg.cpp (modified) (2 diffs)
- trunk/libffado/tests/systemtests/test-isorecv-1.cpp (modified) (1 diff)
- trunk/libffado/tests/systemtests/test-isoxmit-1.cpp (modified) (1 diff)
- trunk/libffado/tests/test-ieee1394service.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/libffado/doc/motu_firewire_protocol.txt
r1898 r2811 1 Notes on the firewire protocol used by MOTU audio devices1 Notes on the FireWire protocol used by MOTU audio devices 2 2 ========================================================= 3 3 … … 15 15 16 16 Audio data is sent via iso packets. With nothing else present on the 17 firewire bus Iso channel 0 is used by the PC to send data to the MOTU while17 FireWire bus Iso channel 0 is used by the PC to send data to the MOTU while 18 18 iso channel 1 is used by the MOTU to send data to the PC. The channels 19 19 used can be arbitarily chosen by software subject to availability as … … 73 73 1x rates and 840 at 2x rates. 74 74 75 The Traveler usually becomes the IRM on the firewire bus it is plugged into;75 The Traveler usually becomes the IRM on the FireWire bus it is plugged into; 76 76 when functioning as the IRM it also broadcasts "cycle start" packets on a 77 77 regular basis as would be expected. These appear to be as per ieee1394-1995. … … 725 725 specify the iso channel the Motu should send its data on (ie: the Motu->PC 726 726 iso channel number). This makes sense since there are 64 iso channels 727 available on the firewire bus requiring 6 bits to specify. If it is then727 available on the FireWire bus requiring 6 bits to specify. If it is then 728 728 assumed that bits 15-0 are reserved we have the following layout for 729 729 this register. trunk/libffado/doc/rme_notes/rme_config_register_map.txt
r2802 r2811 247 247 248 248 Status register 2: 249 bits 31-0: (FF800 only) firewire iso channel used for data from FF800 to PC249 bits 31-0: (FF800 only) FireWire iso channel used for data from FF800 to PC 250 250 251 251 Status register 3: … … 687 687 The third quadlet is mapped as follows. 688 688 bits 10-0 = number of audio channels 689 bit 11 = speed flag; set to 1 if firewire bus is at 800 Mbps689 bit 11 = speed flag; set to 1 if FireWire bus is at 800 Mbps 690 690 In local tests with a FF800 the value of this register was always 0x0000001c 691 (28 channels, 400 Mbps firewire bus).691 (28 channels, 400 Mbps FireWire bus). 692 692 693 693 The forth and fifth quadlets (used only by the FF400) are zero. … … 702 702 as follows: 703 703 bits 10-0 = number of audio channels 704 bit 11 = bus speed flag; set to 1 if firewire bus is at 800 Mbps704 bit 11 = bus speed flag; set to 1 if FireWire bus is at 800 Mbps 705 705 On a FF400 the register is as follows: 706 706 bits 4-0 = number of audio channels … … 741 741 742 742 No CIP header is included in the iso data packet. Fireface data follows 743 immediately after the standard 2-quadlet firewire iso packet header.743 immediately after the standard 2-quadlet FireWire iso packet header. 744 744 745 745 Each iso packet contains a number of samples across all 28 device channels trunk/libffado/libffado/ffado.h.in
r2803 r2811 149 149 * The actual meaning of the device specification should be one of the following: 150 150 * - Format 1: "hw:x[,y[,z]]" 151 * x = the firewire bus to use ('port' in raw1394 terminology)151 * x = the FireWire bus to use ('port' in raw1394 terminology) 152 152 * (mandatory) 153 153 * y = the node id the device currently has (bus resets might change that, but FFADO trunk/libffado/README
r2810 r2811 190 190 NOTE: In order to build jackd with ffado support, you have 191 191 to install libffado before you build jackd. The backend to use in jackd is 192 firewire.192 "firewire". 193 193 194 194 NOTE: the beta versions are distributed with debugging enabled by default. trunk/libffado/src/devicemanager.cpp
r2803 r2811 185 185 } 186 186 if (nb_detected_ports == 0) { 187 debugFatal("No firewire adapters (ports) found.\n");187 debugFatal("No FireWire adapters (ports) found.\n"); 188 188 return false; 189 189 } 190 debugOutput( DEBUG_LEVEL_VERBOSE, "Found %d firewire adapters (ports)\n", nb_detected_ports);190 debugOutput( DEBUG_LEVEL_VERBOSE, "Found %d FireWire adapters (ports)\n", nb_detected_ports); 191 191 for (unsigned int port = 0; port < (unsigned int)nb_detected_ports; port++) { 192 192 Ieee1394Service* tmp1394Service = new Ieee1394Service(); trunk/libffado/src/digidesign/digidesign_avdevice.cpp
r2803 r2811 279 279 // will ultimately show up as JACK ports - one per audio channel. 280 280 281 // Store the number of frames per firewire packet. Depending on the281 // Store the number of frames per FireWire packet. Depending on the 282 282 // device protocol this may not need to be stored in a data field of 283 283 // the object, in which case frames_per_packet could be come a local … … 438 438 signed int 439 439 Device::getFramesPerPacket(void) { 440 // Return the number of frames transmitted in a single firewire packet.440 // Return the number of frames transmitted in a single FireWire packet. 441 441 // For some devices this is fixed, while for others it depends on the 442 442 // current sampling rate. trunk/libffado/src/libieee1394/ieee1394service.cpp
r2803 r2811 183 183 This usually means:\n\ 184 184 a) The device-node /dev/raw1394 doesn't exists because you don't have a\n\ 185 (recognized) firewire controller.\n \185 (recognized) FireWire controller.\n \ 186 186 b) The modules needed aren't loaded. This is not in the scope of ffado but of\n\ 187 your distribution, so if you have a firewire controller that should be\n\187 your distribution, so if you have a FireWire controller that should be\n\ 188 188 supported and the modules aren't loaded, file a bug with your distributions\n\ 189 189 bug tracker.\n \ trunk/libffado/src/libieee1394/ieee1394service.h
r2803 r2811 68 68 69 69 /** 70 * @brief get number of ports ( firewire adapters) in this machine70 * @brief get number of ports (FireWire adapters) in this machine 71 71 * 72 72 * @return the number of ports trunk/libffado/src/libieee1394/IsoHandlerManager.cpp
r2803 r2811 146 146 // FIXME: This is a very crude guard against some other thread 147 147 // deleting handlers while this function is running. While this 148 // didn't tend to happen with the old kernel firewire stack, delays148 // didn't tend to happen with the old kernel FireWire stack, delays 149 149 // in shutdown experienced in the new stack mean it can happen that 150 150 // a handler disappears during the running of this function. This … … 1336 1336 // have called disable() on the handler (in the FW_ISORCV/FW_ISOXMT 1337 1337 // threads). However, the raw1394_destroy_handle() call therein takes 1338 // upwards of 20 milliseconds to complete under the new kernel firewire1338 // upwards of 20 milliseconds to complete under the new kernel FireWire 1339 1339 // stack, and may not have completed by the time ~IsoHandler() is called by 1340 1340 // the "jackd" thread. Thus, wait for the lock before testing the state … … 1880 1880 if (i == EBUSY) { 1881 1881 // Some other thread is disabling this handler, a process which can 1882 // take considerable time when using the new kernel firewire stack.1882 // take considerable time when using the new kernel FireWire stack. 1883 1883 // Wait until it is finished before returning so the present caller 1884 1884 // can act knowing that the disable has occurred and is complete … … 1923 1923 raw1394_iso_shutdown(m_handle); 1924 1924 1925 // When running on the new kernel firewire stack, this call can take of1925 // When running on the new kernel FireWire stack, this call can take of 1926 1926 // the order of 20 milliseconds to return, in which time other threads 1927 1927 // may wish to test the state of the handler and call this function trunk/libffado/src/libstreaming/amdtp/AmdtpReceiveStreamProcessor.cpp
r2803 r2811 155 155 but the actual packet does contain a reduced set of channels. 156 156 157 The channels are referred to as Dimensions in the firewire parlance.157 The channels are referred to as Dimensions in the FireWire parlance. 158 158 With an Audiofire Pre8, we typically receive 17 channels of data at 159 159 44100 and 48000, being 8 Analog, 8 Digital and 1 MIDI. When we switch trunk/libffado/src/libstreaming/digidesign/DigidesignReceiveStreamProcessor.cpp
r2803 r2811 69 69 unsigned int 70 70 DigidesignReceiveStreamProcessor::getNominalFramesPerPacket() { 71 // Return the number of frames per firewire iso packet. A "frame" here is a collection71 // Return the number of frames per FireWire iso packet. A "frame" here is a collection 72 72 // of a single audio sample from all active audio channels. If this depends on the 73 73 // sample rate, that can be obtained using something like this: … … 97 97 // extract a timestamp from it. "data" points to the iso packet's 98 98 // contents - no assumption is made about what constitutes a "header" 99 // because each device's protocol is different. Note that the firewire99 // because each device's protocol is different. Note that the FireWire 100 100 // ISO header is not included in "data". 101 101 // … … 109 109 // 110 110 // Other parameters to this function contain selected information from 111 // the firewire ISO header which came with this packet:111 // the FireWire ISO header which came with this packet: 112 112 // - length = length in bytes of the content pointed to by "data". 113 113 // - tag = the iso packet header's "tag" field. trunk/libffado/src/libstreaming/digidesign/DigidesignTransmitStreamProcessor.cpp
r2803 r2811 111 111 // overriden in generateEmptyPacketHeader(). 112 112 // 113 // As per the firewire standards, only set "tag" if the Digidesign113 // As per the FireWire standards, only set "tag" if the Digidesign 114 114 // expects a CIP header in the first two bytes of "data". Similarly, 115 115 // remove the "+8" from the length calculation if no CIP header is to be trunk/libffado/src/rme/fireface_flash.cpp
r2803 r2811 300 300 // unsigned, so there's no need to check for values less than 0. 301 301 if (hw_settings.limit_bandwidth > FF_DEV_FLASH_BWLIMIT_ANALOG_ONLY) { 302 debugOutput(DEBUG_LEVEL_WARNING, "bogus firewire bandwidth limit flag 0x%08x reset to 0 (send all channels)\n",302 debugOutput(DEBUG_LEVEL_WARNING, "bogus FireWire bandwidth limit flag 0x%08x reset to 0 (send all channels)\n", 303 303 hw_settings.limit_bandwidth); 304 304 hw_settings.limit_bandwidth = FF_DEV_FLASH_BWLIMIT_SEND_ALL_CHANNELS; … … 392 392 debugOutput(DEBUG_LEVEL_VERBOSE, " sync ref: %d\n", dsettings->sync_ref); 393 393 debugOutput(DEBUG_LEVEL_VERBOSE, " tms: %d\n", dsettings->tms); 394 debugOutput(DEBUG_LEVEL_VERBOSE, " limit firewire bandwidth: %d\n", dsettings->limit_bandwidth);394 debugOutput(DEBUG_LEVEL_VERBOSE, " limit FireWire bandwidth: %d\n", dsettings->limit_bandwidth); 395 395 debugOutput(DEBUG_LEVEL_VERBOSE, " stop on dropout: %d\n", dsettings->stop_on_dropout); 396 396 debugOutput(DEBUG_LEVEL_VERBOSE, " input level: %d\n", dsettings->input_level); trunk/libffado/support/firmware/bridgeco-downloader.cpp
r2803 r2811 160 160 } else { 161 161 cout << "Firmware download was successful" << endl; 162 cout << "Please reboot the device by removing the power and firewire connections." << endl;162 cout << "Please reboot the device by removing the power and FireWire connections." << endl; 163 163 } 164 164 } else if ( strcmp( args->args[1], "cne" ) == 0 ) { … … 174 174 } else { 175 175 cout << "CnE download was successful" << endl; 176 cout << "Please reboot the device by removing the power and firewire connections." << endl;176 cout << "Please reboot the device by removing the power and FireWire connections." << endl; 177 177 } 178 178 } else if ( strcmp( args->args[1], "display" ) == 0 ) { trunk/libffado/support/firmware/ffado-fireworks-downloader.1
r2089 r2811 17 17 .TP 18 18 .B list 19 List devices on the firewire bus.19 List devices on the FireWire bus. 20 20 .TP 21 21 .B display trunk/libffado/support/tools/ffado-diag.1
r2751 r2811 10 10 prints out an extensive collection of diagnostic information about the 11 11 computer it is run on. Information included is the FFADO version number, 12 the version number of libraries which FFADO depends on, the firewire12 the version number of libraries which FFADO depends on, the FireWire 13 13 interface card, interrupt usage, and so on. This is useful for developers 14 14 to know when giving support via the FFADO mailing lists. For anything other trunk/libffado/tests/scan-devreg.cpp
r2803 r2811 210 210 p2++; 211 211 } 212 printf("Scanning %d firewire adapters (ports)\n", n_ports);212 printf("Scanning %d FireWire adapters (ports)\n", n_ports); 213 213 for (signed int i=p1; i<p2; i++) { 214 214 Ieee1394Service *tmp1394 = new Ieee1394Service(); … … 250 250 } 251 251 if (node_id == -1) { 252 printf("Could not find a target audio device on the firewire bus\n");252 printf("Could not find a target audio device on the FireWire bus\n"); 253 253 return false; 254 254 } trunk/libffado/tests/systemtests/test-isorecv-1.cpp
r2803 r2811 67 67 static struct argp_option options[] = { 68 68 {"verbose", 'v', "level", 0, "Verbose level" }, 69 {"port", 'p', "port", 0, " firewire port to use" },69 {"port", 'p', "port", 0, "FireWire port to use" }, 70 70 {"channel", 'c', "channel", 0, "iso channel to use" }, 71 71 {"packetsize", 's', "packetsize", 0, "packet size to use" }, trunk/libffado/tests/systemtests/test-isoxmit-1.cpp
r2803 r2811 84 84 static struct argp_option options[] = { 85 85 {"verbose", 'v', "level", 0, "Verbose level" }, 86 {"port", 'p', "port", 0, " firewire port to use" },86 {"port", 'p', "port", 0, "FireWire port to use" }, 87 87 {"channel", 'c', "channel", 0, "iso channel to use" }, 88 88 {"packetsize", 's', "packetsize", 0, "packet size to use" }, trunk/libffado/tests/test-ieee1394service.cpp
r2803 r2811 307 307 printf( "USAGE:\n\ 308 308 Currently two options are understood:\n\ 309 --port <number> or -p <number> selects the firewire-port to use, default is 0\n\309 --port <number> or -p <number> selects the FireWire-port to use, default is 0\n\ 310 310 --verbose <number> or -v <number> selects the verbose level, default is 4\n\ 311 311 --help or -h shows this help and exits.\n\