summaryrefslogtreecommitdiff
path: root/firmware/target/arm/as3525 (follow)
Commit message (Collapse)AuthorAge
* Slightly increase CVDD2 on AMSv2.Michael Giacomelli2017-06-14
| | | | | | At least one person found an SD card that wouldn't work at 2.7v. Change-Id: I84001f07acc9ce36c71165706cce28c2899ac6bf
* Do some housekeeping with fat.h and SECTOR_SIZEMichael Sevakis2017-03-12
| | | | | | | | | | | | | | Many includes of fat.h are pointless. Some includes are just for SECTOR_SIZE. Add a file 'firmware/include/fs_defines.h' for that and to define tuneable values that were scattered amongst various headers. Remove some local definitions of SECTOR_SIZE since they have to be in agreement with the rest of the fs code anyway. (We'll see what's in fact pointless in a moment ;) Change-Id: I9ba183bf58bd87f5c45eba7bd675c7e2c1c18ed5
* Improve radio RDS driver and frameworkMichael Sevakis2017-02-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Remove unused bits like the radio event and simplify basic radio interface. It can be more self-contained with rds.h only required by radio and tuner code. * Add post-processing to text a-la Silicon Labs AN243. The chip's error correction can only do so much; additional checks are highly recommended. Simply testing for two identical messages in a row is extremely effective and I've never seen corrupted text since doing that, even with mediocre reception. Groups segments must arrive in order, not randomly; logic change only accepts them in order, starting at 0. Time readout was made a bit better but really we'd need to use verbose mode and ensure that no errors were seen during receiving of time and more checks would be need to have a stable PI. The text is the important bit anyway. * Time out of stale text. * Text is no longer updated until a complete group has been received, as is specified in the standard. Perhaps go back to scrolling text lines in the radio screen? * Add proper character conversion to UTF-8. Only the default G0 table for the moment. The other two could be added in. * Add variants "RDS_CFG_PROCESS" and "RDS_CFG_PUSH" to allow the option for processed RDS data to be pushed to the driver and still do proper post-processing (only text conversion for now for the latter). Change-Id: I4d83f8b2e89a209a5096d15ec266477318c66925
* Slightly increase CVDD1 for Clip ZipMihail Zenkov2017-02-07
| | | | Change-Id: Ic784c72a643546c8e31affa820f701eb7982b7c7
* sd-as3525v2: simplify logic and cleanupMihail Zenkov2017-01-27
| | | | | | | | Remove "low power mode clocking" as we stop clocking by hands after each transfer. Remove CGU_IDE and CGU_MEMSTICK as we don't use them. Simplify logic in sd_transfer_sectors. Change-Id: I120396d7ec5c99c62f3a746306aa8edd8686e08a
* AMS: Return ascodec to interrupt-based I2C2 driverMichael Sevakis2017-01-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1. Slightly revised and regularized internal interface. Callback is used for read and write to provide completion signal instead of having two mechanisms. 2. Lower overhead for asynchronous or alterate completion callbacks. We now only init what is required by the transfer. A couple unneeded structure members were also nixed. 3. Fixes a bug that would neglect a semaphore wait if pumping the I2C interrupts in a loop when not in thread state or interrupts are masked. 4. Corrects broken initialization order by defining KDEV_INIT, which makes kernel_init() call kernel_device_init() to initialize additional devices _after_ the kernel, threading and synchronization objects are safe to use. 5. Locking set_cpu_frequency has to be done at the highest level in system.c to ensure the boost counter and the frequency are both set in agreement. Reconcile the locking inteface between PP and AMS (the only two currently using locking there) to keep it clean. Now works fine with voltages in GIT HEAD on my Fuze v2, type 0. Previously, everything crashed and died instantly. action.c calling set_cpu_frequency from a tick was part of it. The rest may have been related to 3. and 4. Honestly, I'm not certain! Testing by Mihail Zenkov indicates it solves our problems. This will get the developer builds running again after the kernel assert code push. Change-Id: Ie245994fb3e318dd5ef48e383ce61fdd977224d4
* as3525v2: use the new USB DesignWare driverCástor Muñoz2016-08-15
| | | | | | Targets: sansaclipplus, samsaclipv2, sansaclipzip, sansafuzev2. Change-Id: I7773528a4e26707dd33fe9cb8948750d49570701
* Increase CVDD1 only for Clip+ version 0Mihail Zenkov2016-08-11
| | | | Change-Id: I839ba2191a5c52ef6f58fd4a273db628b690a05c
* Increase CVDD1 for Clip+ to prevent ATA errorMihail Zenkov2016-08-10
| | | | Change-Id: I0424d02196a6c5fb6d0185b007df5ece24b10b82
* as3525: reverting I2C2 to non-interrupts versionMihail Zenkov2016-04-05
| | | | | | | Interrupts version is cause of freeze on USB extraction. Also non-interrupts version much simpler and faster. Change-Id: I30a2993cdcaa85abfba77ca06bfacd5b6b4353e2
* Fix checking for CONFIG_CHARGINGMihail Zenkov2016-04-04
| | | | Change-Id: I53b9a129679fd7b322770025106ef92033226d2a
* Enable voltage scaling on AMSv2.Michael Giacomelli2016-03-27
| | | | | | | | | Voltage is reduced when the CPU is unboosted, resulting in a large reduction in power consumption. In analogy with the AMSv1 voltage scaling code (currently disabled due to problems with SD cards), I have defined a config file option to enable/disable it. Change-Id: Ia89c31ec06dd012354b4d53435e7b5b36243b206
* AMSv2: additional delay for voltage scalingMihail Zenkov2016-03-27
| | | | | | | We need additional delay since ascodec_write_pmu() working faster in non-interrupts version of I2C2. Change-Id: If4af3e42b3c8e8214baa36e54353b8adb527552d
* AMSv2: DBOP frequency divided by 2Mihail Zenkov2016-03-27
| | | | | | | After setting new PCLK (96 Mhz) we have too high DBOP (96 / 16 = 6 MHz). According to datasheet DBOP should be maximum 4 MHz. Change-Id: I1cbec054f41a76a6f18eadccb902c5b174ad6e3a
* Slightly increase VDD2 on AMSv2.Michael Giacomelli2016-03-24
| | | | | | The old value was unstable on some devices. Change-Id: I016906ec076384589bef9ece6156e0ee7b31609a
* sd-as3525v2: prevent DTO error and DMA problemsMihail Zenkov2016-03-18
| | | | | | | | | | We should check sd_wait_for_tran_state() after transfering to prevent data timeout error. Also we should disable DMA channel manually. Should be used with g#1270, without it freezes still can occur on data transfering. Change-Id: If8c6e5547ab14d66237bccf65f83affc7a346e5e
* sd-as3525v2: exit with error if transfer failureMihail Zenkov2016-03-18
| | | | Change-Id: Ic94cf7d3e058a876bbafdb5a35f26f240e1384fd
* sd-as3525v2: Limit number of retryMihail Zenkov2016-03-18
| | | | | | | With current setting we spend few minutes for reading one sector if we have data timeout error. With new setting system (linux) show error after ~10 seconds. Change-Id: Id3922acb2ea146c6ea2f89f26206df9488e6ee4e
* Enable frequency scaling on AMSv2 devices.Mihail Zenkov2016-01-21
| | | | | | | | | | Voltage scaling is not yet enabled, but will follow once we are sure these changes are stable. Preliminary testing suggests a large increase in battery life, which will be further improved by voltage scaling. Patch by Mihail Zenkov with help from myself and others on the forums. Change-Id: I171d20bbee19a48c13cd14efb0d023883cc8c687
* Make sure the system is boosted before enabling USB hardware.Michael Giacomelli2016-01-18
| | | | Change-Id: Ib44d29384f359dff24f0ce012667d9ce93328dc2
* Increase button delays in preperation for frequency scaling.Michael Giacomelli2016-01-18
| | | | | | | When run at lower clock speeds, delays seem to need to be a little longer in absolute time. Change-Id: I5373f43094302e6fa3f0a79126e54cfccd90f5a4
* Change the clipv2 button driver to use fixed delays rather than processor ↵Michael Giacomelli2016-01-18
| | | | | | | | cycle counting. Also introduce a new delay needed for frequency scaling. Change-Id: I575a503a8ca44358fcd5512fd951fe9c7bbde31c
* AMS: Change DMA transfer size for audio.Mihail Zenkov2015-06-01
| | | | | | Slightly reduces power consumption due to DMA overhead. Change-Id: I8576e9e243ce13a71cde710c3a726dce19bafb97
* AMS: Fix pop-clicks noise on play/stop.Mihail Zenkov2015-04-09
| | | | | | | This noise itroduced by starting/stopping I2SO MCLK. Enable MCLK permanently fix it. Change-Id: I6d9c51e5ea5bca13026833d2bfdda49d94c6b723
* Fix a race condition in as3525 I2C driver caused by stacked ISRs.Michael Sevakis2015-03-16
| | | | | | | | | It was possible for interrupts of higher priority than the current IRQ level to attempt to restart the interface while it was still active on a transfer. The list modification also wasn't protected within the I2C ISR itself. Change-Id: I70635c307a1443bba6801c588cf1efde299db9a4
* Get rid of stupid _backlight_* function namesMarcin Bukat2015-01-12
| | | | | | _remote_backlight_* and _buttonlight_* are cleaned as well Change-Id: I73653752831bbe170c26ba95d3bc04c2e3a5cf30
* Get rid of USE_ROCKBOX_USBAmaury Pouly2015-01-08
| | | | | | | | | | | Except for unfinished or experimental ports, it isthe case that USE_ROCKBOX_USB and HAVE_USBSTACK are both defined or both undefined. Furthermore, it is a leftover of some early developments on the USB stack and doesn't make sense anymore. Change-Id: Ic87a865b6bb4c7c9a8d45d1f0bb0f2fb536b8cad Reviewed-on: http://gerrit.rockbox.org/1091 Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
* Fix compilation on amsv1.Michael Giacomelli2014-09-29
| | | | Change-Id: Ie8fb5cacacd6f875c7b0063fdea1c1865941f1bd
* Add various additional AS3525v2 SOC voltages to the debug screen.Michael Giacomelli2014-09-28
| | | | | | | Change-Id: I8c110771f73f5248e949b027fbe1c281c6b1f6f7 Reviewed-on: http://gerrit.rockbox.org/991 Reviewed-by: Michael Giacomelli <giac2000@hotmail.com> Tested: Michael Giacomelli <giac2000@hotmail.com>
* Don't enable the current sink for the Clip Zip backlight until its actually ↵Mihail Zenkov2014-09-28
| | | | | | | | | | | | needed. Patch by Mihail Zenkov who measured a modest increase in power consumption with the current sink enabled. Change-Id: Ib1c1639318de35d449ca51a9bd480005cb6a2ee0 Reviewed-on: http://gerrit.rockbox.org/989 Reviewed-by: Michael Giacomelli <giac2000@hotmail.com> Tested: Michael Giacomelli <giac2000@hotmail.com>
* Rewrite filesystem code (WIP)Michael Sevakis2014-08-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch redoes the filesystem code from the FAT driver up to the clipboard code in onplay.c. Not every aspect of this is finished therefore it is still "WIP". I don't wish to do too much at once (haha!). What is left to do is get dircache back in the sim and find an implementation for the dircache indicies in the tagcache and playlist code or do something else that has the same benefit. Leaving these out for now does not make anything unusable. All the basics are done. Phone app code should probably get vetted (and app path handling just plain rewritten as environment expansions); the SDL app and Android run well. Main things addressed: 1) Thread safety: There is none right now in the trunk code. Most of what currently works is luck when multiple threads are involved or multiple descriptors to the same file are open. 2) POSIX compliance: Many of the functions behave nothing like their counterparts on a host system. This leads to inconsistent code or very different behavior from native to hosted. One huge offender was rename(). Going point by point would fill a book. 3) Actual running RAM usage: Many targets will use less RAM and less stack space (some more RAM because I upped the number of cache buffers for large memory). There's very little memory lying fallow in rarely-used areas (see 'Key core changes' below). Also, all targets may open the same number of directory streams whereas before those with less than 8MB RAM were limited to 8, not 12 implying those targets will save slightly less. 4) Performance: The test_disk plugin shows markedly improved performance, particularly in the area of (uncached) directory scanning, due partly to more optimal directory reading and to a better sector cache algorithm. Uncached times tend to be better while there is a bit of a slowdown in dircache due to it being a bit heavier of an implementation. It's not noticeable by a human as far as I can say. Key core changes: 1) Files and directories share core code and data structures. 2) The filesystem code knows which descriptors refer to same file. This ensures that changes from one stream are appropriately reflected in every open descriptor for that file (fileobj_mgr.c). 3) File and directory cache buffers are borrowed from the main sector cache. This means that when they are not in use by a file, they are not wasted, but used for the cache. Most of the time, only a few of them are needed. It also means that adding more file and directory handles is less expensive. All one must do in ensure a large enough cache to borrow from. 4) Relative path components are supported and the namespace is unified. It does not support full relative paths to an implied current directory; what is does support is use of "." and "..". Adding the former would not be very difficult. The namespace is unified in the sense that volumes may be specified several times along with relative parts, e.g.: "/<0>/foo/../../<1>/bar" :<=> "/<1>/bar". 5) Stack usage is down due to sharing of data, static allocation and less duplication of strings on the stack. This requires more serialization than I would like but since the number of threads is limited to a low number, the tradoff in favor of the stack seems reasonable. 6) Separates and heirarchicalizes (sic) the SIM and APP filesystem code. SIM path and volume handling is just like the target. Some aspects of the APP file code get more straightforward (e.g. no path hashing is needed). Dircache: Deserves its own section. Dircache is new but pays homage to the old. The old one was not compatible and so it, since it got redone, does all the stuff it always should have done such as: 1) It may be update and used at any time during the build process. No longer has one to wait for it to finish building to do basic file management (create, remove, rename, etc.). 2) It does not need to be either fully scanned or completely disabled; it can be incomplete (i.e. overfilled, missing paths), still be of benefit and be correct. 3) Handles mounting and dismounting of individual volumes which means a full rebuild is not needed just because you pop a new SD card in the slot. Now, because it reuses its freed entry data, may rebuild only that volume. 4) Much more fundamental to the file code. When it is built, it is the keeper of the master file list whether enabled or not ("disabled" is just a state of the cache). Its must always to ready to be started and bind all streams opened prior to being enabled. 5) Maintains any short filenames in OEM format which means that it does not need to be rebuilt when changing the default codepage. Miscellaneous Compatibility: 1) Update any other code that would otherwise not work such as the hotswap mounting code in various card drivers. 2) File management: Clipboard needed updating because of the behavioral changes. Still needs a little more work on some finer points. 3) Remove now-obsolete functionality such as the mutex's "no preempt" flag (which was only for the prior FAT driver). 4) struct dirinfo uses time_t rather than raw FAT directory entry time fields. I plan to follow up on genericizing everything there (i.e. no FAT attributes). 5) unicode.c needed some redoing so that the file code does not try try to load codepages during a scan, which is actually a problem with the current code. The default codepage, if any is required, is now kept in RAM separarately (bufalloced) from codepages specified to iso_decode() (which must not be bufalloced because the conversion may be done by playback threads). Brings with it some additional reusable core code: 1) Revised file functions: Reusable code that does things such as safe path concatenation and parsing without buffer limitations or data duplication. Variants that copy or alter the input path may be based off these. To do: 1) Put dircache functionality back in the sim. Treating it internally as a different kind of file system seems the best approach at this time. 2) Restore use of dircache indexes in the playlist and database or something effectively the same. Since the cache doesn't have to be complete in order to be used, not getting a hit on the cache doesn't unambiguously say if the path exists or not. Change-Id: Ia30f3082a136253e3a0eae0784e3091d138915c8 Reviewed-on: http://gerrit.rockbox.org/566 Reviewed-by: Michael Sevakis <jethead71@rockbox.org> Tested: Michael Sevakis <jethead71@rockbox.org>
* Add missing kernel.h includes (hopefully all of them), take #3.Thomas Martitz2014-01-05
| | | | Change-Id: I68ed0e914239f0caf83082a41c2480a01b69285a
* Add missing kernel.h includes (hopefully all of them), take #2.Thomas Martitz2014-01-05
| | | | Change-Id: I62cedf992bb096987050621cfc34f0432e9da170
* Add missing kernel.h includes (hopefully all of them).Thomas Martitz2014-01-05
| | | | Change-Id: I9c1825296a788587b8d494d8514b3314847b0ff0
* Do not include kernel.h in system.h.Thomas Martitz2014-01-05
| | | | | | | system.h doesn't need it on its own and this change makes it less dependant on Rockbox internals. Change-Id: I4e1e4108a52a7b599627a829204eb82b392fc6d6
* Cleanup MV/MD macros a little.Michael Sevakis2013-08-17
| | | | | | | | | | When using variadic macros there's no need for IF_MD2/IF_MV2 to deal with function parameters. IF_MD/IF_MV are enough. Throw in IF_MD_DRV/ID_MV_VOL that return the parameter if MD/MV, or 0 if not. Change-Id: I7605e6039f3be19cb47110c84dcb3c5516f2c3eb
* AMS: make sure ROM clock is always onRafaël Carré2012-11-12
| | | | Change-Id: Ib73b21b944cb609cc26f7f6955d2c894628f65ad
* Revert my previous commit disabling the internal ROM clock during normalMichael Giacomelli2012-07-22
| | | | | | | | | | | operation. The interal ROM clock seems to be needed to reboot the player, so disabling it is too dangerous. Hopefully this will prevent problems where crashes during the abort handler resulted in a stock player that needed the battery to drain in order to reboot. Change-Id: I7d1e64743dde15b64d718ad3255dada3d570736f
* lcd-ssd1303: Fix big oops putting height where there should've been width.Michael Sevakis2012-05-19
| | | | | | Rid code of dar commasar and substitute huggy braces while we're at it. :P Change-Id: If91974b93660bb0de32a0c92629eb83cea99d266
* ssd1303: make sure sansa clip and whatever others clip updates properly.Michael Sevakis2012-05-19
| | | | | | | Sometimes I do want to update outside the screen boundaries and it was messing it up; such things should not cause display problems. Change-Id: Ic9deec609b19e5a1c603601b20c66599dd44f892
* remove debug-target.hRafaël Carré2012-05-07
|
* Sansa AMS: more compat irq namesRafaël Carré2012-05-07
|
* sansa AMS: i2s_reset() is never usedRafaël Carré2012-05-06
|
* Make INITDATA_ATTR work on everything that has INIT_ATTR enabled for code.Michael Sevakis2012-05-01
| | | | Change-Id: If9936bfbbd3bc3eb2a3e3e290701b8517eabfb13
* AMSv1: rename USB interrupt handlerRafaël Carré2012-04-30
| | | | Fix FS#12660 (broken in c9c13497)
* usb-s3c6400: merge the 2 driversRafaël Carré2012-04-28
| | | | | | | | | | | | Player-specific code remaining: usb_drv_(init,exit) The iPods lack a MMU, so: - physical, virtual, and uncached addresses are identical - since we can't access uncached memory we discard caches when receiving data Still not quite reliable on nano2g Change-Id: Iebb79df64818b9ae3b68eccb8be8975ebd6c21ea
* sansa clip+: properly reset display using the reset pinBertrik Sikken2012-03-19
| | | | Change-Id: Ic4bb85cfca4e21d908e187381b868d3f7ef18f88
* AMSv2: add proper definitions for charge currentBertrik Sikken2012-03-04
| | | | Change-Id: I6a14570e94df1be62ae46816d2ff4e3f2b7bc21a
* Revise the PCM callback system after adding multichannel audio.Michael Sevakis2012-03-03
| | | | | | | | | | | | | | | | | | Additional status callback is added to pcm_play/rec_data instead of using a special function to set it. Status includes DMA error reporting to the status callback. Playback and recording callback become more alike except playback uses "const void **addr" (because the data should not be altered) and recording uses "void **addr". "const" is put in place throughout where appropriate. Most changes are fairly trivial. One that should be checked in particular because it isn't so much is telechips, if anyone cares to bother. PP5002 is not so trivial either but that tested as working. Change-Id: I4928d69b3b3be7fb93e259f81635232df9bd1df2 Reviewed-on: http://gerrit.rockbox.org/166 Reviewed-by: Michael Sevakis <jethead71@rockbox.org> Tested-by: Michael Sevakis <jethead71@rockbox.org>
* lcd drivers: Convert lcd_[remote_]framebuffer to a pointerJonathan Gordon2012-02-28
| | | | | | | | | | Change all lcd drivers to using a pointer to the static framebuffer instead of directly accessing the static array. This will let us later do fun things like dynamic framebuffer sizes (RaaA) or ability to use different buffers for different layers (dynamic skin backdrops!) Change-Id: I0a4d58a9d7b55e6c932131b929e5d4c9f9414b06