- 04 Aug, 2018 1 commit
-
-
Jeffrey Lee authored
Detail: Since we can cope with audio devices dynamically being added and removed once initialisation is complete, it seems sensible to also cope with the situation where no devices are available on startup. s/Sound0 - Rearrange Initialise_Module so that if no device is found on startup, the initial state of the module will be the same as if a device had been found but then went missing: configuration SWIs will continue to function, the next device to appear will automatically be selected as the active device (with sound automatically turning on), and manual Sound_Enable calls will produce an error saying no device is present. These changes should also allow the module to cope with situations where other support modules like DMAManager, RTSupport, or VFPSupport are (temporarily) unavailable on startup. Admin: Tested on iMX6 Version 1.88. Tagged as 'Sound0HAL-1_88'
-
- 01 Aug, 2018 1 commit
-
-
John Ballance authored
Detail: A previous mod provided a compile time switch to leave SoundDMA present even when there was no HAL audio device. This has proved unnecessary, so has been removed. Instead, once the HAL device has been made available one should rmreinit in order; SoundDMA, SoundChannels, SoundScheduler, and then WaveSynth, Percussion, and StringLib. This ensures that the module dependant interactions are reinitialised. Additionally there was a possibility that if no HAL audio devices were available at startup it was possible to get a null pointer error under some circumstances. Admin: tested in iMx6 with other HAL audio devices both enabled and disabled Version 1.87. Tagged as 'Sound0HAL-1_87'
-
- 13 May, 2018 1 commit
-
-
John Ballance authored
Module will not then die when initialised Detail: Admin: Version 1.86. Tagged as 'Sound0HAL-1_86'
-
- 12 Jun, 2016 1 commit
-
-
Jeffrey Lee authored
Detail: s/Sound0 - Replace many manual MSR's with PSR manipulation macros, generally the new SEI/SetMode/etc. ones. Fix DMA completed callback restoring CPSR from wrong register. s/Sound0ARM - Replace manual MSR's with PSR manipulation macros. Optimise the buffer post-processing routines for ARMv6 by using SHADD16 Admin: Tested on Raspberry Pi Version 1.85. Tagged as 'Sound0HAL-1_85'
-
- 08 Jun, 2016 1 commit
-
-
Jeffrey Lee authored
Rename new device selection/enumeration SWIs. Add a way to query the supported sample rates of an arbitrary device. Add user-friendly names for the current HAL-based devices. Protect against level1 & level2 sound handlers that fail to preserve IRQ state. Detail: hdr/Sound, s/Sound0: - After some discussion it was decided that "Device" was a bit too generic for the device selection/enumeration SWIs (e.g. could be confusing when also referring to peripheral devices such as headphones or speakers), and so they've been renamed to use "Controller" instead. - Added a new reason code to Sound_ControllerInfo to read the supported sample rates for a controller, similar to Sound_SampleRate 0 & 2 - Update IRQ handler to make sure IRQs are still off after calling level 1 (channel) & level 2 (scheduler) handlers - there's evidence that some third-party handlers fail to do this, which original IOMD versions of SoundDMA were tolerant of but newer versions were not. Resources/Germany/Messages, Resources/UK/Messages: - Added user-friendly, localisation-friendly names/descriptions for the current ROM-based devices which this module supports Admin: Tested on Raspberry Pi German messages in need of translation. Version 1.84. Tagged as 'Sound0HAL-1_84'
-
- 08 May, 2016 1 commit
-
-
Jeffrey Lee authored
Detail: s/Sound0 - Avoid unnecessary remainder calculation in DivRem macro Admin: Tested on Cortex-A15 Version 1.83. Tagged as 'Sound0HAL-1_83'
-
- 12 Feb, 2016 1 commit
-
-
Jeffrey Lee authored
Detail: s/Sound0 - Add a missing condition code to the NEON detection code; FPSID bits must be set to indicate VFPv3+ (and MVFR0/1 availability) and MVFR1 bits must be set to indicate NEON availability Admin: Tested on Pandaboard Issue spotted by Sprow; old code would have been fine on all current machines, but could have failed on a hypothetical VFPv1/v2 machine which had non-standard MVFR registers Version 1.82. Tagged as 'Sound0HAL-1_82'
-
- 02 Dec, 2015 1 commit
-
-
Jeffrey Lee authored
Detail: s/Sound0 - Fix missing DoSoftMix symbol error when software mixer support is disabled s/Sound0ARM - Rename post-processing routines to match the names generated by the loop in Sound0 Admin: Tested on Raspberry Pi Version 1.81. Retagged as 'Sound0HAL-1_81'
-
- 01 Dec, 2015 1 commit
-
-
Jeffrey Lee authored
Add device enumeration and selection APIs. Make audio HAL device API more flexible. Add a generic software mixer implementation that can be used for devices where no hardware mixer is available. Detail: Makefile - Include new source files. Export a C version of hdr/Sound. Resources/* - Add new error text to messages file and update command help text Version - Update MaxDeviceVersion. Add MinDeviceVersion definition to get rid of a magic constant from the code. Add new switch for whether software mixer support is enabled. hdr/AudioDevice - Extend with audio device API 3 features. Buffer size granularity can now be non-power of 2 values, and CustomDMA can be used in a synchronous manner instead of an asynchronous manner (asynchronous defers buffer filling to an RTSupport routine, synchronous performs it directly from within the callback from the device). Also correct a comment relating to AudioRateTable_Frequency. hdr/Sound - Add new SWIs and reason codes. Protect a portion of the header from being processed by Hdr2H (Hdr2H can't handle it) s/Sound0 - Change default sample rate & buffer size settings to 22050Hz (none of the hardware currently supported by this version of the module supports 20833Hz). Add implementations of the new SWIs and features. Tidy up a couple of other bits. s/Sound0NEON - Refactor post-processing code to add support for the software mixer - code is now generated by macros rather than copy & paste. Fix indentation of some other code sections. s/DeviceList - New file to contain code related to managing the list of audio devices that SoundDMA now keeps. s/SoftMix - New file containing the software mixer device implementation. Implements a single mixer channel to control the overall gain of the sound system. Mixing/volume scaling is performed by the buffer post-processing sequences in Sound0ARM/Sound0NEON, with the optimisation of skipping the processing for a gain of +0dB. Note however that Sound0ARM has yet to be updated and so software mixing is currently only available for the NEON version of the module. Admin: Tested in iMX6 ROM German resources are in need of translation Version 1.81. Tagged as 'Sound0HAL-1_81'
-
- 06 Apr, 2015 2 commits
-
-
Robert Sprowson authored
If the RTSupport pollword says there's no work to do, SoundDMA would make a quick exit, but one instruction too early - trying to pop LR before it ever got pushed. Version 1.80. Tagged as 'Sound0HAL-1_80'
-
Robert Sprowson authored
Inspection of DMADevice/GPIODevice/RTCDevice suggests the equivalent of C structs become HALDeviceTHING and enums become THINGFlagName. Rename AudioDevice's flags ot match that pattern. No code change, not tagged.
-
- 28 Mar, 2015 1 commit
-
-
Jeffrey Lee authored
Detail: s/Sound0 - Fix TryInitialise_Device not setting R0 to zero on exit if the HAL device fails to initialise. Whatever (non-zero) value was already in R0 would then be interpreted as an error pointer, most likely leading to a crash. Admin: Tested on Raspberry Pi Version 1.79. Tagged as 'Sound0HAL-1_79'
-
- 15 Sep, 2014 1 commit
-
-
Jeffrey Lee authored
Detail: s/Sound0 - Get rid of the two VIDC20-era Lin16 flag bits and shuffle the other flags down so that the top bit of the flags remains clear. In the buffer fill code the top bit is used to detect when the log-to-lin code needs recompiling, plus it's passed on to the level 1 handler so that it can detect updates, so having the bit permanently set if stereo reverse is in use could cause numerous issues. Admin: Tested on Raspberry Pi Fixes issue reported on forums: https://www.riscosopen.org/forum/forums/4/topics/2814 Version 1.78. Tagged as 'Sound0HAL-1_78'
-
- 22 Jun, 2014 1 commit
-
-
Jeffrey Lee authored
Detail: hdr/Sound - Add Service_SoundAutoTune definition, which SoundChannels will issue whenever automatic tuning is enabled or disabled Admin: Tested on BB-xM Version 1.77. Tagged as 'Sound0HAL-1_77'
-
- 17 Dec, 2013 1 commit
-
-
Jeffrey Lee authored
Detail: s/Sound0NEON - Fix StereoOver to avoid stereo swapping the sample that was retrieved from the previous buffer, as it will have already been stereo swapped Admin: Tested on Pandora Version 1.76. Tagged as 'Sound0HAL-1_76'
-
- 09 Nov, 2012 1 commit
-
-
Jeffrey Lee authored
Detail: s/Sound0 - *Speaker / Sound_Speaker no longer complains if a mixer is present but there's no speaker channel, and instead reports that the speaker is on. This matches the behaviour for if the mixer isn't present, and the behaviour of previous versions of SoundDMA which lacked speaker control (e.g. IOMD) Admin: Tested on Raspberry Pi Fixes "Mixer channel not found" error from Zool & Twin World (although Twin World still lacks audio) Version 1.75. Tagged as 'Sound0HAL-1_75'
-
- 22 Sep, 2012 1 commit
-
-
Jeffrey Lee authored
Detail: s/Sound0 - Rather than manually calling WorkOutVIDCParams & UpdateHALParams, module initialisation now branches into Sound0Config in order to make sure all buffer size/sample rate/channel count constraints are checked. Admin: Tested on Raspberry Pi Sound will probably partially work with latest firmware, but still die on the next settings change. Version 1.74. Tagged as 'Sound0HAL-1_74'
-
- 20 Aug, 2012 1 commit
-
-
Jeffrey Lee authored
Detail: s/Sound0 - Limited ADR range prevented NEON version from building Admin: Tested on BB-xM with high processor vectors Version 1.73. Tagged as 'Sound0HAL-1_73'
-
- 19 Aug, 2012 1 commit
-
-
Jeffrey Lee authored
Detail: Version, s/Sound0 - Reworked code to allow the module to cope with sound devices vanishing and then re-appearing once the module has initialised. It's handled in the same way as the other dependencies; if the device vanishes while sound is active, SoundDMA will automatically re-enable sound once a replacement device is found. While there's no device available, Sound_SampleRate will claim that the system only supports one sample rate - the rate which was last in use. Other SWIs to set the sound system parameters (e.g. channel count, buffer size, stereo positions) will work as normal. Once a new device is activated SoundDMA will adjust its settings to make sure they match the capabilities of the new device. Currently the system assumes there's only one sound device available; if a device vanishes then SoundDMA won't check for any other devices which are already present. There's also still the requirement that a device must be present in order for the module to initialise. Also fixed CustomDMACallback to obey the spec on the wiki (SoundRMA ptr now taken in ATPCS-friendly r1 instead of r12) Admin: Tested on Raspberry Pi with high processor vectors Version 1.72. Tagged as 'Sound0HAL-1_72'
-
- 14 Aug, 2012 1 commit
-
-
Jeffrey Lee authored
Detail: hdr/AudioDevice - extended audio device structure for API version 2. This adds support for controllers that don't use DMAManager, runtime selection of stereo reversal, and device-dictated buffer minimum size & granularity constraints Version, s/Sound0, s/Sound0ARM, s/Sound0NEON - Stripped out StereoReverse compile-time switch, adding support for runtime selection instead. Added support for other new features of device API version 2. Admin: Tested on Raspberry Pi with high processor vectors Version 1.71. Tagged as 'Sound0HAL-1_71'
-
- 29 Jun, 2012 2 commits
-
-
Robert Sprowson authored
ON/OFF -> On/Off. Retagged.
-
Robert Sprowson authored
ON/OFF -> On/Off. Retagged.
-
- 05 Apr, 2012 1 commit
-
-
Jeffrey Lee authored
Detail: s/Sound0 - After oversampling each sample is 8 bytes, not 4 Admin: Tested in OMAP3 ROM Playing MP3 files through DigitalCD/AudioMPEG no longer crashes Version 1.70. Tagged as 'Sound0HAL-1_70'
-
- 01 Apr, 2012 1 commit
-
-
Jeffrey Lee authored
Detail: s/Sound0 - unguarded call to Finalise_NEON was causing an error if the NEON code was disabled Admin: Non-NEON version builds properly again Version 1.69. Retagged as 'Sound0HAL-1_69'
-
- 24 Mar, 2012 1 commit
-
-
Jeffrey Lee authored
Detail: s/Sound0ARM - Mulaw-to-linear and mono/oversampling code ripped out of s/Sound0 and moved to its own file. Minor optimisations for ARMv6+ s/Sound0NEON - NEON-optimised Mulaw-to-linear and mono/oversampling code Version - Update UseLDRSH switch to depend on NoARMv4 arch flag. Add UseNEON switch. hdr/Sound - Added new sound start/stop/config changing service call & Sound_ReadSysInfo SWI definitions s/Sound0: - Added support for new service calls & Sound_ReadSysInfo SWI - Added support for oversampling - Fixed up stereo reversal to work if NoUnaligned is TRUE - Added support for using the new NEON-optimised buffer/manipulation fill routines. Currently whether to use NEON or not must be selected at compile time. - Added timing/profiling code, controlled via TimingCode switch. Uses a HAL timer to measure performance of various sections of the buffer fill/IRQ handling code - Updated buffer size constraints in Sound0Config to properly cope with oversampling and NEON code - Fixed Sound_SampleRate 3 corrupting the stored sound period value. This would cause Sound_Configure to switch to a different sample rate on next call (even if all 0 parameters were passed) - Fixed finalisation not releasing the DMA channel - Changed buffer fill code to run in an RTSupport routine instead of in the DMAManager DMASync callback (since we're not meant to be enabling IRQs from in there!). Old code resulted in buffer filling going out of sync with DMA if the IRQ timing was right. - Rewrote init/finalisation and sound enable/disable code so things don't fail horribly if one of the required modules (DMAManager, RTSupport, VFPSupport) dies. - Sound will be disabled if one of the required modules dies, but will automatically re-enable as the module(s) become available again. Resources/UK/Messages, Resources/Germany/Messages - New error messages Admin: Tested in ROM softload on BB-xM, in both ARM and NEON versions German resources are in need of translation Version 1.69. Tagged as 'Sound0HAL-1_69'
-
- 10 Mar, 2012 1 commit
-
-
Robert Sprowson authored
Version 1.68. Tagged as 'Sound0HAL-1_68'
-
- 28 Feb, 2010 1 commit
-
-
Jeffrey Lee authored
Detail: s/Sound0 - Module_VectorCode, which is currently used to respond to FIFO underflows in the OMAP3 sound driver, wasn't saving R14_svc before calling a SWI from IRQ mode, potentially leading to malfunction if the CPU was in SVC mode at the time of the interrupt. This has been fixed. Admin: Tested on rev C2 beagleboard Version 1.67. Tagged as 'Sound0HAL-1_67'
-
- 16 Jan, 2010 2 commits
-
-
Jeffrey Lee authored
Version 1.66. Tagged as 'Sound0HAL-1_66'
-
Jeffrey Lee authored
Detail: Based on the Sound0Trid source code, this version of SoundDMA makes use of a new version of the audio controller HAL device API. Briefly: * DMA is handled by the HALified DMAManager * The DMASync callback is used to trigger audio buffer filling * The set of available sample rates is dictated by the audio controller device * Basic support for resetting the audio when an error occurs (e.g. FIFO under/overflow causing stereo channels to be swapped) * Module is now ARMv6/7-safe, due to use of LDR(S)H instead of unaligned loads. This comes at the cost of losing RiscPC compatability. Can be disabled if needed via setting UseLDRSH to false. * To keep the code simple, it only accepts devices which use the new API version. * Sound0Enable now enables IRQs for most of its execution, to allow for supporting slow devices (e.g. IIC communications with the TPS65950). The PRMs describe Sound_Enable as having undefined reentrancy & IRQ state, so this should be OK with regards to code compatability. * The stereo reverse code still needs to be made ARMv6/v7-safe, as well as (preferably) being something that can be selectively enabled at runtime, depending on the audio controller in use * The oversampling code is disabled, much as it was in Sound0Trid. * The pipelining of sample rate changes that Sound0Trid performed is gone - partly to keep the code simple, and partly because it wouldn't work too well with the TPS65950 (due to the intermediate FIFO that the samples pass through, and the fact that the TPS audio codec must be turned off to change the sample rate) Admin: Tested on rev C2 beagleboard. Version 1.65. Tagged as 'Sound0HAL-1_65'
-