Commit graph

82 commits

Author SHA1 Message Date
Jack Halpin
03986d4ec7 Revert r23350 "AMS Sansa: Assume IDECLK is MCLK for the internal SD Disk."
More information makes this assumption seem incorrect.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23356 a1c6a512-1295-4272-9138-f99709370657
2009-10-26 07:06:37 +00:00
Jack Halpin
ec43287aa0 AMS Sansa: Assume IDECLK is MCLK for the internal SD Disk. Reduce IDECLK to 62 MHz for now to be consistent with MCLK for uSD which is PCLK.
Adjust SD timeouts accordingly.

Adjust code in debug-as3525.c to display correct frequencies on system/debug/View disk info page.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23350 a1c6a512-1295-4272-9138-f99709370657
2009-10-25 18:31:44 +00:00
Jack Halpin
5897249c1e Add #ifdef HAVE_MULTIDRIVE to HS timings switch for uSD cards.
Internal cards are v1 sd cards so no need to include this code for the clip.

Move transition from STBY -> TRAN-> STBY states inside the if(sd_v2) conditional check for HS switch as it's not needed for non HS cards.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23331 a1c6a512-1295-4272-9138-f99709370657
2009-10-24 16:42:24 +00:00
Jack Halpin
c5a3f93ac3 AMS Sansa: Adjust SD Card frequency to Identification frequency at beginning of card init instead of the end of pl180 controller init.
If a card is reinitialized now the ident frequency is used instead of the bypass frequency during the identification phase.

Added comments throughout sd_init_card() to help follow init process and highlight indent stage.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23256 a1c6a512-1295-4272-9138-f99709370657
2009-10-19 05:34:25 +00:00
Bertrik Sikken
d24d885aa4 Use wrap-safe TIME_BEFORE/TIME_AFTER macros to compare times with current_time, instead of comparing them directly.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23246 a1c6a512-1295-4272-9138-f99709370657
2009-10-18 15:50:30 +00:00
Jack Halpin
562e41bae5 AMS Sansa: FS#10669 Reimplement Voltage scaling.
Reimplement voltage scaling on AMS Sansas at 1.10v during unboosted operation to improve runtimes.  The voltage is now also boosted during disk access if a µSD is present.  This prevents the µSD problems we saw on the last implementation.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23193 a1c6a512-1295-4272-9138-f99709370657
2009-10-15 19:48:26 +00:00
Rafaël Carré
5303ab101b Sansa AMS SD driver: cleanup defines and comments
Remove useless E200V2 || FUZE || C200V2 : all those models have
MULTIDRIVE and/or HOTSWAP defined and have no specific difference.

Correct some comments

Remove HAVE_MULTIDRIVE within HAVE_HOTSWAP since HOTSWAP imply MULTIDRIVE

Change HOTSWAP to MULTIDRIVE where needed

Use NUM_DRIVES in sd_num_drives()

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23180 a1c6a512-1295-4272-9138-f99709370657
2009-10-15 07:16:38 +00:00
Jack Halpin
7331bd5381 AMS Sansa: Remove BUSWIDTH and BLOCKLEN commands and revise strategy for High Speed SD Card.
We are unable to successfully put the pl180 controller into 4 bit mode so we should not put the cards into widebus mode for now.
The blocklength is hardcoded to 512 in sd.c and BLOCKLEN defaults to 512 so this command is not needed.
It appears the internal SD card is not HS capable but sending it the HS switch command does not seem to hinder it's init process.
Assume all SD_V2 cards are HS capable and send them the HS switch command.
If View disk info shows 50.0 MBit/s the card has HS timings.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23137 a1c6a512-1295-4272-9138-f99709370657
2009-10-12 18:55:10 +00:00
Jack Halpin
14079c39f0 AMS Sansa: If SD card is HS capable set High Speed timings.
This still doesn't solve the problem of the cards being overclocked at 62MHz but we can mitigate this a bit by switching to HS timings.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23088 a1c6a512-1295-4272-9138-f99709370657
2009-10-11 03:11:13 +00:00
Rafaël Carré
7cc6202c03 Sansa AMS SD: relax requirement for APP_CMD response, some uSD cards seem to not set correctly the response bits
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23001 a1c6a512-1295-4272-9138-f99709370657
2009-10-07 20:34:58 +00:00
Jack Halpin
1c36835b80 AMS Sansa: Replace another simple delay with a more intelligent MCI FIFO status check.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22864 a1c6a512-1295-4272-9138-f99709370657
2009-10-01 03:54:36 +00:00
Jack Halpin
bf3d60b25e AMS Sansa: Rename variable sdhc to sd_v2 to more accurately reflect the information it holds.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22862 a1c6a512-1295-4272-9138-f99709370657
2009-09-30 20:33:40 +00:00
Jack Halpin
37265d308b AMS Sansa: Replace simple write delay with a smarter check on status of MCI FIFO.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22850 a1c6a512-1295-4272-9138-f99709370657
2009-09-29 16:32:24 +00:00
Bertrik Sikken
69b40e704d Clean up duplicate #includes
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22845 a1c6a512-1295-4272-9138-f99709370657
2009-09-27 14:46:44 +00:00
Jack Halpin
68089db6db AMS Sansa: Add delay for µSD writes to fix CRC failures with class 6 µSD cards.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22825 a1c6a512-1295-4272-9138-f99709370657
2009-09-25 01:38:51 +00:00
Frank Gevaerts
a7548d3bc7 Make sd_present() and mmc_present() look only at the actual presence of a card, not at initialisation state
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21981 a1c6a512-1295-4272-9138-f99709370657
2009-07-20 13:47:21 +00:00
Frank Gevaerts
c0a5a67387 Commit FS#9545, storage cleanup and multi-driver support
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21933 a1c6a512-1295-4272-9138-f99709370657
2009-07-17 22:28:49 +00:00
Thomas Martitz
fd17a8d637 Apply the same fix as r21930 did for the ramdisk for the AMS Sansa driver.
Nothing should change, since the value of transfer didn't change in the == case, but it saves executing this case at least.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21931 a1c6a512-1295-4272-9138-f99709370657
2009-07-17 21:50:36 +00:00
Rafaël Carré
17ac0d7ff9 fix yellow : panicf() is declared in panic.h
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21780 a1c6a512-1295-4272-9138-f99709370657
2009-07-11 15:26:58 +00:00
Rafaël Carré
405d12de7e Sansa AMS: panic with the PL180 controller status register in case of errors
The maximum number of errors is 10 (arbitrary)
A recovery mechanism is not in place (yet) but could be implemented in the future

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21776 a1c6a512-1295-4272-9138-f99709370657
2009-07-11 14:27:26 +00:00
Rafaël Carré
75fa699814 Sansa AMS: handle properly SD transfer errors
clocks disabling and mutex unlocking were not made in case of errors

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21773 a1c6a512-1295-4272-9138-f99709370657
2009-07-11 13:46:10 +00:00
Thomas Martitz
161cb164ca Adding last minutes comments to explain things is only cool if you close it also (aka fix yellow).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21745 a1c6a512-1295-4272-9138-f99709370657
2009-07-10 15:44:38 +00:00
Thomas Martitz
e7f0c3f397 Rearrange things a bit for less #ifdefs and less duplication.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21744 a1c6a512-1295-4272-9138-f99709370657
2009-07-10 15:32:02 +00:00
Rafaël Carré
c51e26a43d Sansa AMS SD driver: fix error checking in µSD insertion
If µSD init fails, rockbox will panic and give an error number
Use a maximal delay of 1 second for µSD (and internal storage) init, as
specified in the SD Specification 2.00

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21742 a1c6a512-1295-4272-9138-f99709370657
2009-07-10 12:51:50 +00:00
Rafaël Carré
03fe562a95 Sansa AMS: display the virtual led icon on disk transfers
Sansa PP: directly use led() function, remove useless sd_led()

Thanks to mc2739 (Michael Chicoine)

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21693 a1c6a512-1295-4272-9138-f99709370657
2009-07-06 16:44:57 +00:00
Rafaël Carré
e3636a8f32 Samsa SD driver : acknowledge USB events, now reboots on USB insertion
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21690 a1c6a512-1295-4272-9138-f99709370657
2009-07-06 14:20:52 +00:00
Rafaël Carré
293b499093 Move sd_get_info() into common sd code
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21610 a1c6a512-1295-4272-9138-f99709370657
2009-07-01 23:39:57 +00:00
Maurus Cuelenaere
ccbd8f4f31 * Move some more stuff to the general SD driver
* Ingenic SD driver: cleanup DMA part a bit (not working yet)


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21606 a1c6a512-1295-4272-9138-f99709370657
2009-07-01 22:56:14 +00:00
Rafaël Carré
c0eb9aeb9e add firmware/driver/sd.c which contains common code between SD drivers
ingenic SD driver needs more cleanup so it still doesn't use the common code
correct a comment in hotswap.c: card_extract_bits assume most significant word of register first (so, use this order)
fix debug menu which used MMC specific commands / bits positions in csd/cid
move the default block size of 512 into sd.h
move the mantissa & exponent table into a single file (sd.c) to reduce binsize. we don't need to export it anymore anyway

TODO : ingenic cleanup (will happen soon so building sd.c is not conditional)

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21601 a1c6a512-1295-4272-9138-f99709370657
2009-07-01 21:49:13 +00:00
Rafaël Carré
e0e24cbf0a Merge tCardInfo struct (MMC) and tSDCardInfo struct (SD)
Put specific members under #ifdef (CONFIG_STORAGE & STORAGE_xx) (2 members for SD and 1 for MMC)
Fix a typo: tsac doesn't exist and must be read taac
Move card_get_info functions declaration inside hotswap.h to remove mutual inclusion of ata_mmc.h and hotswap.h
Move static const data structures from SD drivers into sd.h (sd_exponent and sd_mantissa)
Fix sd_command prototypes in SD drivers (card registers are unsigned long)
Fix speed calculation in Sansa AMS driver (PP SD driver needs to be checked)
Move ata-sd-target.h to sd-pp-target.h to reflect the PP specifity. Now it only contains declaration of microsd_int()
Remove unused ata-sd-target.h for injenic

TODO:
- check if CSD register bits are extracted correctly in PP driver
- correctly define read_timeout and write_timeout unit for MMC & SD, and use timeouts in Sansa AMS driver

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21586 a1c6a512-1295-4272-9138-f99709370657
2009-07-01 10:07:22 +00:00
Rafaël Carré
ed75cc09f1 Sansa AMS : use the aligned buffer in bss for all DMA transfers
This was only used for data transfers, now use it also for card data
transfers in sd_select_bank, to save runtime alignement and stack usage.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21564 a1c6a512-1295-4272-9138-f99709370657
2009-06-29 18:14:26 +00:00
Rafaël Carré
529855e79b Sansa AMS: correct sd_select_bank() in SD driver
Put the card data sent by DMA aligned on cache line size, and in uncached memory

Since sd_select_bank() is not used very often, still allocate the DMA buffer on the stack.

If you still experience any problems with this commit please report them after having formatted your player and reinstalled rockbox

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21550 a1c6a512-1295-4272-9138-f99709370657
2009-06-29 11:56:49 +00:00
Rafaël Carré
753064fccf Sansa AMS: fix yellow for models with buttonlight & without multivolume
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21343 a1c6a512-1295-4272-9138-f99709370657
2009-06-18 23:03:10 +00:00
Rafaël Carré
1e787a9911 FS#10306 by Thomas Martitz : button light doesn't change on SD transfers on Sansa AMS (Fuze & e200v2)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21340 a1c6a512-1295-4272-9138-f99709370657
2009-06-18 22:33:02 +00:00
Rafaël Carré
0181bc42c9 Sansa c200v2 : support more hardware
Don't read the buttons from GPIOC but from DBOP_DIN (all directional buttons + select)
Still missing hold, rec, volume up and volume down
Read microsd
Tuner is a si4700 but seems to suffer from the same problem than e200v2
Sound works

TODO: missing buttons, lcd yuv, test lcd performance (the c200v1 lcd performance has decreased since r21321 : needs to be investigated)

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21330 a1c6a512-1295-4272-9138-f99709370657
2009-06-18 15:05:59 +00:00
Bertrik Sikken
79f348a178 Minor nitpick: don't do |= on the write-only GPIOA_IC register
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21251 a1c6a512-1295-4272-9138-f99709370657
2009-06-11 20:43:53 +00:00
Rafaël Carré
460a1c4497 Sansa AMS storage driver: restart bank selection if data transfer failed, and precise a comment about retry variable
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21248 a1c6a512-1295-4272-9138-f99709370657
2009-06-11 17:28:24 +00:00
Rafaël Carré
7572141d42 FS#10309 : Sets reasonable timeouts for data access in the SD driver
Those are the recommended maximal timeouts in §4.6.2
Despite that, some people still experiment problems with the SD driver since MMU and data cache were enabled

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21247 a1c6a512-1295-4272-9138-f99709370657
2009-06-11 17:17:12 +00:00
Rafaël Carré
e2f165c088 Sansa AMS: make the UNCACHED_ADDR macro work for any type of pointer, and only use pointers with it, not arrays
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21230 a1c6a512-1295-4272-9138-f99709370657
2009-06-09 00:51:30 +00:00
Rafaël Carré
f504153857 FS#10048 : enable MMU and data cache on Sansa AMS to give a major speed up
- cache IRAM and DRAM
- map IRAM just next to DRAM to remove the need for -mlong-calls and reduce binsize
- tweak delays in Fuze button code
- tweak delays in Clip button code (down button sometimes doesn't respond anyway : an alternate driver is being worked on)

Before reporting any problem, please check your filesystem or format your player from the OF

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21228 a1c6a512-1295-4272-9138-f99709370657
2009-06-08 23:05:33 +00:00
Rafaël Carré
c8f22f5a8f Sansa AMS : don't use the SHAREDBSS_ATTR since we don't have a coprocessor
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21171 a1c6a512-1295-4272-9138-f99709370657
2009-06-02 22:45:02 +00:00
Rafaël Carré
f5db6b9ce3 Sansa AMS : higher a bit the delay between acmd41 loops, needed for some microsd cards. FS#10268 by Eric Shattow
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21152 a1c6a512-1295-4272-9138-f99709370657
2009-06-01 10:51:05 +00:00
Rafaël Carré
83eb479732 FS#10216 : Sansa AMS : Do not cross a bank boundary in a single transfer (Only for 8GB or more -if they exist- players)
Also add a few comments in the code

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21096 a1c6a512-1295-4272-9138-f99709370657
2009-05-26 21:08:47 +00:00
Rafaël Carré
ef9aacb2e0 FS#10245 by Jack Halpin : Adjust Clocking scheme on Sansa AMS
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21088 a1c6a512-1295-4272-9138-f99709370657
2009-05-26 18:44:02 +00:00
Rafaël Carré
0f93ae5da0 Sansa AMS: move OF size declaration in model specific config
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21008 a1c6a512-1295-4272-9138-f99709370657
2009-05-21 11:46:52 +00:00
Rafaël Carré
8033342d0f Sansa AMS : remove mci_set_clock_divider()
Inline the 2 uses, and use a preprocessor sanity check for identification frequency

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20924 a1c6a512-1295-4272-9138-f99709370657
2009-05-13 08:27:33 +00:00
Thomas Martitz
ec797ed622 FS#10113 - Sansa AMS : do not use unaligned buffers on ATA DMA by Rafaël Carré.
Fixes various storage related problems like stuttering audio, md5sum and test disk failure and Sansa Fuze's backdrop corruption by using aligned buffers. There's a speed penalty but stability has more priority.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20679 a1c6a512-1295-4272-9138-f99709370657
2009-04-10 17:03:56 +00:00
Thomas Martitz
dc859ebd51 FS#10053 - Sansa AMS >2GB support by Rafaël Carré. Enables bank switching on
the AMS sansas, which solves the ">2GB problem" (the problem that we could not
access data past 1GB on devices having more than 2GB internal storage).


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20577 a1c6a512-1295-4272-9138-f99709370657
2009-03-30 13:26:05 +00:00
Michael Sevakis
580d91f097 Unify kernel list management for ticks, registered queues and timeout objects by using NULL-terminated lists of pointers. Redo timeout API a bit to simplify it and integrate it. Should give some small binsize reduction accross the board but more if timeout objects are being included.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19808 a1c6a512-1295-4272-9138-f99709370657
2009-01-21 02:44:20 +00:00
Michael Giacomelli
3db7893911 Commit second part of FS#9663 by Thomas Martitz. Enable button light on fuze and e200v2.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19792 a1c6a512-1295-4272-9138-f99709370657
2009-01-18 18:49:36 +00:00