Commit graph

137 commits

Author SHA1 Message Date
William Wilgus
d8bd356e56 Revert "As3525 v1/v2 Add power savings menu"
This reverts commit 6f0320a953.

Change-Id: I7425d422a4a0af7a49e9194cfe0bb55d431bc401
2018-07-28 17:35:07 +02:00
Michael Giacomelli
c75aac8424 Slightly raise voltage on FuzeV2 devices.
Some devices seem to have trouble accessing the storage at lower voltages.
2018-07-28 11:05:59 -04:00
William Wilgus
6f0320a953 As3525 v1/v2 Add power savings menu
Allow user to select cpu undervolt

There have been quite a few issues across the SANSA AMS line related
to CPU undervolting while most players show greatly increased runtime
some crash.
Rather than constanly upping the voltage we now have a
setting with a safe value for all players and the option for lower voltages

I plan to add a few other options here later such as disk
timings and maybe some other clocks/experimental settings

Added: Disk Low speed option for AS3525v2 devices cuts
	frequency to 12 MHz from 24 MHz
Added: Disk Low speed option for AS3525v1 devices cuts
        frequency to 15.5 MHz from 31 MHz

Added: I2c Low Speed AS3525 devices, should be bigger improvement for v1 devices

Fixed: Debug menu for AS3525v2 No SDSLOT frequency,
	Showed IDE freq though it is unused

Added: DBOP and SSP underclocking affects display on v1/v2 respectively

Fixed: debug menu now has SSP frequency, and SSP_CPSR

Update: made settings menu more generic

Update: cleaned up code

Added: Clip v1 & Fuze v1 didn't have HAVE_ADJUSTABLE_CPU_VOLTAGE.
	not sure why but,  waiting on testing to confirm

Added: C200v2 and E200v2 devices and HAVE_ADJUSTABLE_CPU_VOLTAGE.

Fixed: v1 devices don't like display timing set lower (dbop)
       v1 devices don't have a divider set for ssp (causes divide by 0)

Fixed: ClipZip display lags with Max SSP divider changed from 0xFE to 0x32

Fixed: v1 devices didn't work properly with highspeed sd cards
	Added code from http://gerrit.rockbox.org/r/#/c/1704/
	Added powersave and IDE interface enable/disable

Added: V2 devices now have powersave enabled on sd interface

Update: cleaned up code, lang defines, added manual entries

Update ssp clock mechanism added calculated ssp divider to clipzip

Update turn display clock off when clip+ turns off display

Fixed: clipzip wrong register for SSP clock

Change-Id: I04137682243be92f0f8d8bf1cfa54fbb1965559b
TODO: add other players?
2018-07-27 23:56:32 +02:00
Michael Giacomelli
365a005038 Slightly increase CVDD2 on AMSv2.
At least one person found an SD card that wouldn't work at 2.7v.

Change-Id: I84001f07acc9ce36c71165706cce28c2899ac6bf
2017-06-14 17:37:29 +02:00
Mihail Zenkov
0d0b163dd1 Slightly increase CVDD1 for Clip Zip
Change-Id: Ic784c72a643546c8e31affa820f701eb7982b7c7
2017-02-07 17:28:42 +01:00
Michael Sevakis
783c77531c AMS: Return ascodec to interrupt-based I2C2 driver
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
2017-01-25 00:05:13 +01:00
Cástor Muñoz
6a1644c52a as3525v2: use the new USB DesignWare driver
Targets: sansaclipplus, samsaclipv2, sansaclipzip, sansafuzev2.

Change-Id: I7773528a4e26707dd33fe9cb8948750d49570701
2016-08-15 02:56:23 +02:00
Mihail Zenkov
a25d0c58aa Increase CVDD1 only for Clip+ version 0
Change-Id: I839ba2191a5c52ef6f58fd4a273db628b690a05c
2016-08-11 19:49:57 +00:00
Mihail Zenkov
cfa1c843f2 Increase CVDD1 for Clip+ to prevent ATA error
Change-Id: I0424d02196a6c5fb6d0185b007df5ece24b10b82
2016-08-10 01:36:11 +00:00
Mihail Zenkov
c7daef36c5 as3525: reverting I2C2 to non-interrupts version
Interrupts version is cause of freeze on USB extraction.
Also non-interrupts version much simpler and faster.

Change-Id: I30a2993cdcaa85abfba77ca06bfacd5b6b4353e2
2016-04-05 01:55:38 +00:00
Michael Giacomelli
7be692e806 Enable voltage scaling on AMSv2.
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
2016-03-27 23:14:51 +02:00
Mihail Zenkov
775b21ebc4 AMSv2: additional delay for voltage scaling
We need additional delay since ascodec_write_pmu() working faster in
non-interrupts version of I2C2.

Change-Id: If4af3e42b3c8e8214baa36e54353b8adb527552d
2016-03-27 21:59:22 +02:00
Michael Giacomelli
ece9303c2b Slightly increase VDD2 on AMSv2.
The old value was unstable on some devices.

Change-Id: I016906ec076384589bef9ece6156e0ee7b31609a
2016-03-24 19:18:14 +01:00
Mihail Zenkov
3f54101858 Enable frequency scaling on AMSv2 devices.
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
2016-01-21 19:26:00 +01:00
Marcin Bukat
89ba7e818c Get rid of stupid _backlight_* function names
_remote_backlight_* and _buttonlight_* are cleaned as well

Change-Id: I73653752831bbe170c26ba95d3bc04c2e3a5cf30
2015-01-12 11:09:27 +01:00
Rafaël Carré
5ce81fde37 AMS: make sure ROM clock is always on
Change-Id: Ib73b21b944cb609cc26f7f6955d2c894628f65ad
2012-11-12 21:52:55 +01:00
Michael Giacomelli
b61b14f5e8 Revert my previous commit disabling the internal ROM clock during normal
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
2012-07-22 19:21:54 -04:00
Rafaël Carré
cf090209a4 Sansa AMS: more compat irq names 2012-05-07 00:02:13 -04:00
Rafaël Carré
c9c1349773 usb-s3c6400: merge the 2 drivers
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
2012-04-28 16:01:57 -04:00
Michael Sevakis
307cb04948 AS3525v1/2: Enable nested handling of interrupts
Mostly for the sake of reducing latency for audio servicing where other service
routines can take a long time to complete, leading to occasional drops of a
few samples, especially in recording, where they are fairly frequent.

One mystery that remains is GPIOA IRQ being interrupted causes strange
undefined instruction exceptions, most easily produced on my Fuze V2 with a
scrollwheel. Making GPIOA the top ISR for now, thus not interruptible, cures it.

SVC mode is used during the actual calls. Hopefully the SVC stack size is
sufficient. Prologue and epilogue code only uses the IRQ stack and is large
enough.

Any routine code that should not be interrupted should disable IRQ itself from
here on in.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31642 a1c6a512-1295-4272-9138-f99709370657
2012-01-08 22:29:25 +00:00
Rafaël Carré
8552824284 ascodec-target.h: remove
move prototypes to ascodec.h
move code to ascodec*.c

YPR0: use adc-as3514.c instead of duplicating it

TODO: merge as3514.h and ascodec.h ?

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31626 a1c6a512-1295-4272-9138-f99709370657
2012-01-08 01:43:16 +00:00
Rafaël Carré
95cf63b294 button-target.h : move prototypes to button.h
no need to define BUTTON_REMOTE anymore

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31620 a1c6a512-1295-4272-9138-f99709370657
2012-01-08 00:07:19 +00:00
Bertrik Sikken
8c19dcd598 FS#12370: Initial RDS support for Si4701/Si4703 tuner (beast and clip zip)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31346 a1c6a512-1295-4272-9138-f99709370657
2011-12-17 20:24:19 +00:00
Michael Sevakis
184459fa54 Deal with a complication when transferring recording method from PP5024: since the FIFO POP is always read until empty, keep track of sample parity instead of always saving the first one in the FIFO upon entering the ISR or else the first of a duplicate that is also the last in the FIFO would get duplicated. Also, give top priority to audio interrupts in all cases.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31218 a1c6a512-1295-4272-9138-f99709370657
2011-12-12 20:12:22 +00:00
Bertrik Sikken
75f2e4551c AMS(v2): fix system_reboot by re-enabling the internal ROM clock just before rebooting
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31196 a1c6a512-1295-4272-9138-f99709370657
2011-12-10 11:28:00 +00:00
Michael Giacomelli
64c73c4751 Disable the clock the built in AS3525(v2) bootrom. This is only useful for reverse engineering purposes, so disable during normal operation in case it uses power.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30930 a1c6a512-1295-4272-9138-f99709370657
2011-11-08 02:07:26 +00:00
Bertrik Sikken
e90f961593 Sansa clip zip: update mkamsboot and fix various drivers to make it boot to the main firmware
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30853 a1c6a512-1295-4272-9138-f99709370657
2011-10-29 17:08:05 +00:00
Bertrik Sikken
94c573f3ec Sansa clipzip: miscellaneous updates
* add support for OF version 01.01.17 in mkamsboot
* introduce and implement oled_brightness function
* configure voltage CVDD2 to 2.8V (like the OF does)

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30831 a1c6a512-1295-4272-9138-f99709370657
2011-10-23 14:20:47 +00:00
Bertrik Sikken
936fd540c0 Sansa AMSv2: set internal voltages PVDD1 and AVDD17 to the same value as the OF does.
* improves audio quality and increases maximum volume
* reduces pop on power-down
* reduces runtime slightly (about 3%)

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30743 a1c6a512-1295-4272-9138-f99709370657
2011-10-12 20:09:19 +00:00
Bertrik Sikken
b1298c2c44 Sansa AMS/AMSv2: analog front-end register CVDD/DCDC3 doesn't exist in AMSv2, so don't modify it
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30579 a1c6a512-1295-4272-9138-f99709370657
2011-09-21 21:48:19 +00:00
Bertrik Sikken
1d1e8e4eb7 Sansa AMSv2: initialise PMU (power management unit), inspired by how the OF does it
Differences in PMU settings:
- explicitly disable the PLL inside the PMU (we don't use it)
- don't increase the PVDD1/AVDD17 voltages because the impact on runtime is still unclear

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30571 a1c6a512-1295-4272-9138-f99709370657
2011-09-18 15:33:19 +00:00
Rafaël Carré
a1e1892b0f as3525: make interrupts struct static and merge declaration & definition
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30116 a1c6a512-1295-4272-9138-f99709370657
2011-07-02 02:49:09 +00:00
Fred Bauer
e541c98a7e revert r28834 because it causes problems with uSD
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28925 a1c6a512-1295-4272-9138-f99709370657
2010-12-29 16:07:15 +00:00
Fred Bauer
279dff1c21 FS#11765: Improve AMSv1 Battery Life by Lowering CPU and Peripheral clocks. Unboosted CPU and peripheral clock is now 31MHz. Boosted CPU and pclk are 186MHz and 62MHz, respectively.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28834 a1c6a512-1295-4272-9138-f99709370657
2010-12-14 22:08:43 +00:00
Fred Bauer
9b2e9472ea FS#11608: switch cpu to async operation in boosted mode
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28616 a1c6a512-1295-4272-9138-f99709370657
2010-11-18 16:37:56 +00:00
Rafaël Carré
c196da2cee FS#11597 : decrease FCLK frequency when unboosted
FCLK is unused because we use fastbus clocking: CPU clock = PCLK
Base PCLK off PLLA and use the lowest frqeuency for FCLK (24MHz source,
maximum divider)
Save a bit of power, adjust Clipv1/e200v2/Fuzev1 current usage accordingly

Note: the power saving (in mA) is a bit less on e200v2/Fuzev1 than on Clipv1

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28000 a1c6a512-1295-4272-9138-f99709370657
2010-09-05 15:34:34 +00:00
Rafaël Carré
b9201e3c6f include lcd.h , forgotten in r27957
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27958 a1c6a512-1295-4272-9138-f99709370657
2010-08-31 06:53:28 +00:00
Rafaël Carré
67cf859b42 AMS: update the LCD on system exception to be sure the content is up to date
Without this change the backlight would be enabled but the screen would
show the last content displayed before the screen went off

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27957 a1c6a512-1295-4272-9138-f99709370657
2010-08-31 06:49:08 +00:00
Rafaël Carré
b0e34a6a6c AMSv1: Don't modify MPMC_DYNAMIC_CONTROL
The last bootloaders already set it correctly

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27627 a1c6a512-1295-4272-9138-f99709370657
2010-07-30 12:28:14 +00:00
Bertrik Sikken
4d6c816721 Sansa Clip+: detect AMSv2 variant (just like was already done for fuze v2), this makes SD transfers work for newer clip+ players ("COMBO4E" type). Variable fuzev2_variant has been renamed to amsv2_variant.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27520 a1c6a512-1295-4272-9138-f99709370657
2010-07-22 13:47:09 +00:00
Rafaël Carré
25491980d6 as3525*: disable_irq in system_reboot()
make sure CGU_PERI write is atomic

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27493 a1c6a512-1295-4272-9138-f99709370657
2010-07-19 15:56:10 +00:00
Rafaël Carré
e44b65c806 Support new Fuzev2 revisions (fuzev2_variant == 1)
- Revert BUTTON_HOME
- Modifications to SD driver (µSD not working yet)

TODO: µSD and FM radio

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27492 a1c6a512-1295-4272-9138-f99709370657
2010-07-19 15:29:28 +00:00
Rafaël Carré
a937b8ba05 as3525*: initialize cpu_frequency correctly
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27082 a1c6a512-1295-4272-9138-f99709370657
2010-06-23 07:06:06 +00:00
Tobias Diedrich
62622277dc With a max delay of 17 seconds before overflow happens limiting to unsigned short shouldn't be necessary.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26939 a1c6a512-1295-4272-9138-f99709370657
2010-06-18 20:04:16 +00:00
Rafaël Carré
7a9033179f as3525*: make udelay() be a simple busy loop
it achieves all the requirements, work fine on c200v2, and is much simpler

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26933 a1c6a512-1295-4272-9138-f99709370657
2010-06-18 19:14:08 +00:00
Rafaël Carré
fd715fa95c as3525*: enable MMU in bootloader
Reserve 1MB of DRAM for loading rockbox and use the rest as BSS
Write sdram setup in assembler and move it to a separate file, together
with MMU init code

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26926 a1c6a512-1295-4272-9138-f99709370657
2010-06-18 17:33:51 +00:00
Tobias Diedrich
68e2023184 Enable display and backlight on panic.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26917 a1c6a512-1295-4272-9138-f99709370657
2010-06-18 13:45:24 +00:00
Rafaël Carré
7ad50c6f59 as3525: write irq/fiq handlers in C
Declare VIC registers holding function pointers as volatile pointers to
function pointers and access them directly without casting
UIRQ() is an IRQ handler too, even if it doesn't return

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26313 a1c6a512-1295-4272-9138-f99709370657
2010-05-26 16:03:01 +00:00
Rafaël Carré
f0f5a6419a typo: 'nomasked' -> 'unmasked'
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26312 a1c6a512-1295-4272-9138-f99709370657
2010-05-26 14:45:59 +00:00
Rafaël Carré
873dd7becc as3525: find_first_set_bit() isn't built in bootloaders
We assume only one bit is set and use clz to find the most significant
set bit, if there's more than one bit set we'll see it in the panic msg

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26285 a1c6a512-1295-4272-9138-f99709370657
2010-05-25 16:20:04 +00:00