This makes it possible to reuse the SysCfg reading logic in other places.
Tested on ipod6g (normal + bootloader).
Change-Id: Iae6de2ee671bce4edb0153d26c57579ad47d0335
Comments and notes are converted to UTF-8. Already broken multibyte characters are fixed using common sense.
This patch contains no code changes.
Change-Id: Ia511ab84936cb2495ac17309493a9b98727a7902
This driver decouples the LCD interface from the target-specific LCD parameters. It makes it possible to reuse most of the ipod6g driver code on ipodnano3g and ipodnano4g.
No difference in the produced binaries for ipodnano2g (normal and bootloader).
Tested on ipod6g (normal and bootloader).
This is a part of the large iPod Nano 3G and iPod Nano 4G support patch.
Change-Id: I7ce198ed3d5a8b58759951e2d67788cbf9781dc8
No difference in the produced binaries for ipod6g (normal and bootloader)
This is a part of the large iPod Nano 3G and iPod Nano 4G support patch.
Change-Id: Ib79c5539a317aae350d661ab23c181471ee38abb
No difference in the produced binaries for ipod6g (normal and bootloader)
This is a part of the large iPod Nano 3G and iPod Nano 4G support patch.
Change-Id: I82943e91ba7e6764428f853f84799f0d54b700a6
Tested on ipod6g (normal + bootloader).
No functional change, no binary size change, the only difference is using r3 instead of r1 for the WDT_BASE address value.
Change-Id: I2ce2b7d987671cb4fcbbcdde574437b21a534da0
Tested on ipod6g (normal + bootloader).
This is a part of the large iPod Nano 3G and iPod Nano 4G support patch.
Credit: Cástor Muñoz <cmvidal@gmail.com>
Change-Id: I5b56eaaa8a5621f4293c00c53e50e5ca39831eb6
Tested on ipod6g (normal + bootloader).
This is a part of the large iPod Nano 3G and iPod Nano 4G support patch.
Credit: Cástor Muñoz <cmvidal@gmail.com>
Change-Id: I64beed48e3d88436b9082d4ae387f39843ab2e20
Also adds support for S5L8720 initialization.
This currently changes only the bootloader code for ipod6g. Tested on target.
This is a part of the large iPod Nano 3G and iPod Nano 4G support patch.
Credit: Cástor Muñoz <cmvidal@gmail.com>
Change-Id: Ib4b5f12b701058940c1c5bd686d8ac346ae14e12
No difference in the produced binaries for ipod6g (normal and bootloader)
This is a part of the large iPod Nano 3G and iPod Nano 4G support patch.
Credit: Cástor Muñoz <cmvidal@gmail.com>
Change-Id: I660f446924d07a07842e57acb3f2d1af362ac15c
Also adds support for IM3 functions and SHA-1 on S5L8720.
Tested on ipod6g (normal and bootloader builds)
This is a part of the large iPod Nano 3G and iPod Nano 4G support patch.
Credit: Cástor Muñoz <cmvidal@gmail.com>
Change-Id: Ic5e6f5a3321d4b1ec4efd753a4c30e29d83fd7c2
Tested on ipod6g (normal and bootloader builds)
This is a part of the large iPod Nano 3G and iPod Nano 4G support patch.
Credit: Cástor Muñoz <cmvidal@gmail.com>
Change-Id: I7c21ce2ecb6f94c0b8af4b7b16b3b77c39c6a0a4
No difference in the produced binaries for ipodnano2g and ipod6g (normal and bootloader)
This is a part of the large iPod Nano 3G and iPod Nano 4G support patch.
Credit: Cástor Muñoz <cmvidal@gmail.com>
Change-Id: Ia6a2d2b220d36a56f81fc7c8d05f7c025e2ee766
Tested on ipod6g (normal and bootloader builds)
This is a part of the large iPod Nano 3G and iPod Nano 4G support patch.
Credit: Cástor Muñoz <cmvidal@gmail.com>
Change-Id: I712c1b0cf2d595b1b78caf1d86ce298017dfe7e5
Since the SPI NOR flash is only used for the bootloader, rename the files accordingly, This is a preparation for the nandboot driver will be introduced, since S5L8720+ don't have an SPI NOR flash anymore.
This is a part of the large iPod Nano 4G and iPod Touch 2G support patch.
Credit: Cástor Muñoz <cmvidal@gmail.com>
Change-Id: Iea835fd2029470bfe9f813631ad4f3db711facc3
This also includes a small SPI driver rework for ipod6g. Only the NOR flash currently uses SPI. Tested on target using View SysCfg in Debug menu.
This is a part of the large iPod Nano 4G and iPod Touch 2G support patch.
Credit: Cástor Muñoz <cmvidal@gmail.com>
Change-Id: If2b91c1088034dd606abc6dd0b6ad73dea0152a4
This is a part of the large iPod Nano 4G and iPod Touch 2G support patch.
Credit: Cástor Muñoz <cmvidal@gmail.com>
Change-Id: Ica1e2b8e82ea162ebab01cf119f5da2f8877bc05
This is a part of the large iPod Nano 3G/4G support patch.
Credit: Cástor Muñoz <cmvidal@gmail.com>
Change-Id: I577eef01f42e8752ad9b2ee64e2b30ad0a9e55be
This allows to reuse a register definition across similar SoCs that have the same layout of registers (same offsets), but are using a different base address for the peripheral. The include guard was also fixed to reflect the new file name of the header.
Some registers were renamed in order to match the datasheet and for consistency with the other register numbering.
Change-Id: I0192e227a3c467504b8fcd1eb684a7fc861f7896
This is part of the preparation to add support for iPod Nano 3G and Nano 4G. There are some optimisations left, like merging similar blocks of registers that share the same layout, but the base address have changed between SoC generations.
Change-Id: I4f06727b4061977141b65d39ae19591bd5b29680
Due to its similarity with S5L8702, clickwheel support and sleep can be used as-is on S5L8720. DRAM and IRAM are also configured.
Change-Id: I52f8a3417e6a25c7360b1cae2fb5eed621e2e0db
This is a driver for the UART controller on the S5L87xx series of SoCs, which is named after the SoC family.
Since S5L8720 is confirmed to have the same interface and the newer models probably also have it, the driver is renamed to reflect this.
Change-Id: I974c002924372e860db0e49235d108dab87f8831
No functional change.
We always have it turned in for ipod6g, but this makes some of the
flow/logic easier to follow.
Change-Id: I3abeace4f70afb197e819e0944e0e76f4edc4800
Basically this requires un-hardcoding SECTOR_SIZE everywhere, in
favor of using a variable containing what was reported in IDENTIFY INFO.
Note that the rest of the storage subsystem still needs to be fixed up!
Change-Id: I7f2dbd54ff2bc16b15010721e011949cbf308e12
This lets us *natively* handle varying physical sector sizes
without playing games and lying about the logical sector size.
(The original drives use 4K _physical_ sectors with 512B logical
sectors, but you have to access everything in 4K blocks...)
Achieve this by splitting the MAX_PHYS_SECTOR_SIZE code out
of the main ATA driver and re-using it.
Change-Id: I0bc615ab4562f1e3e83171a8633c74fb60c7da1f
....It's specified in 16-bit words, not bytes. So multiply it by 2.
(This hasn't been a problem in practice as everything uses 512B logical
sectors so far..)
Change-Id: I0b1abd0f6184330f0b7f5c000c5ad547038f7c95
* FLUSH_EXT is used if featureflag is set and we are using LBA48
(unconditionally used for CE-ATA on ipod6g)
* FLUSH is used if featureflag is set (ATA6+) or if device claims to be ATA5+
* Rename ata_disk_can_power_off() to ata_disk_can_sleep() as that is
what it actually tests for. Only use it to gate issuing the
STANDBY IMMEDIATE command.
* Restore behavior of ata_disk_is_active() to return 1 if drive is
"spinning" or powered up.
* Allow poweroff if drive claims PM support OR we are able to issue
FLUSH/FLUSH_EXT commands.
* Added ata_flush() to explicitly trigger a flush operation, and hook it
up to storage_flush() in the device shutdown path. (Flushes were
only previously used in the storage device power management path)
* After issuing all settings, re-issue IDENTIFY_DEVICE to make sure
it reflects everything we've enabled.
* Update manual section on Flash/SSD mods.
Change-Id: I6770a54ef3a87f4c47120bcb96c944a6652f1bf4
This is just to display the frequency correctly in the debug menu and prepare
for future use of said divider
Change-Id: Ib4c80ec71b3300bdf17edf6cc590229f7640d0f5
ipod6g was configured with SECTOR_SIZE of 4096, but this ATA driver
unconditionally translated these to 512B operations on the actual
storage device.
Rockbox's storage layer already has robust support for "logical sectors
larger than physical storage sectors" through use of
MAX_LOG_SECTOR_SIZE. So switch to that mechanism, allowing the ipod6g
ATA driver to be simplified.
If we want to support drives with physical sector sizes > 512B, then
we need to port the MAX_PHYS_SECTOR_SIZE logic from the primary ATA driver.
Additional changes:
* Simplify MWDMA/UDMA selection logic
* Report CE-ATA mode in debug menu
* Use LBA48 commands only if drive is over 128GiB.
* Drop default sleep/poweroff time from 20s to 7s (matching main ATA driver)
Finally, the bulk of the changes are the first phase of a badly needed
style cleanup that made reading this driver a lot harder than it should
be. I intend to split this into a separate patch.
Change-Id: I2feca9fd319c8d6cfb3c2610208970428d2fa947
The iPod 4g and color always ignored the very first
button press after booting, i.e. you needed to either
press another button or scroll for a bit first.
Not sure whether any other PP iPods exhibit the same
behavior, although it is not reproducible on an iPod
video.
This patch basically copies the code from FS#5230
that fixed unresponsive buttons whenever the HOLD
switch was turned off (committed as a5961c944b).
Change-Id: I8d3444094e5d000e0f8e30e39a23f054abeeb0f5
Due to the heisenberg principle, we don't want to check the battery
level when the ATA drive is "spun up".
Unfortunately some ATA devices *cough most SD adapters cough* don't
support mandatory ATA power management commands like flushing caches and
(safely) shutting down so we have to leave them "spinning".
This leads to us never updating our battery status with these
out-of-spec devices. Work around this issue by having is_active() always
return false if that's what we have.
Change-Id: I629f3fdbc7e5cffb0a4d546c80cb5fca8529c0e6
* Create new 'sector_t' type alias:
* uint64_t for all targets with HAVE_LBA48 or HAVE_SDUC
* unsigned long for the everything else
* Alter all storage APIs to use sector_t instead of 'unsigned long'
* Alter Volume/Partition/storage info structures to use sector_t
* Disk cache converted to sector_t
* ATA Core:
* convert to using sector_t for sector addresses and drive sizes
* Always fill out upper 16 bits of LBA48 addresses
* IDENTIFY INFO is fixed at 512 bytes, not SECTOR_SIZE
* USB mass storage:
* convert to using sector_t for sector addesses and drive sizes
* Implement READ_16/WRITE_16 for LBA48 addresses
* Convert FAT code to use sector_t for all sector references
* output_dyn_value() now accepts int64_t instead of 'int'
* Corrected "rockbox info" to work for (MULTIVOLUME & !MULTIDRIVE)
* Better reporting of disk and (logical+physical) sector sizes in debug info
* Detect SDUC cards and report on storage debug_info screen
To-do: SDUC
* Refactor SD core to remove duplicate code in every driver
* Card probe and init state machine
* Implement core SDUC support
* SD2.0 needs to be 2.0+ (fixed for jz47xx and x1000)
* Host and Card ID (ACMD41)
* 32-bit addressing for all read/write/erase operations (CMD22)
* ADD SDUC to target device drivers, defining HAVE_SDUC as appropriate
Change-Id: Ib0138781a0081664d11511037685503df1b93608
The SSD detection heuristic is flawed, and when it fails
(due to very crappy CF->SD adapters) we end up corrupting things.
So let's give up a slight amount of performance on the original hard
drives (which are aging out anyway) in favor of guaranteeing safety.
Change-Id: Id92583a6b9ae6ec543b91b3e0f8f28b57ac38cb0