Playlist Viewer hangs indefinitely on tracks with long Comment fields
Commit 2156d98 (metadata: mp3: Improve support for long tags) has
allowed the length of parsed tags to exceed ID3V2_MAX_ITEM_SIZE.
Overly long tags may blow the stack due to a stack-allocated buffer
in the metadata parsing routine, that can reach 3 times the size of
the id3v2 and id3v1 buffers combined.
This patch moves the mp3entry struct used by the Playlist Viewer
off the stack and onto the plugin buffer instead, which helps prevent
a stack overflow in cases such as the example posted in FS#13518.
Future patches to either constrain ID3V2_BUF_SIZE to ~1120 bytes or
to lower the stack usage of metadata parsing will still be required
to fully address the issue.
Change-Id: I2f436195bc8df4d785b1880f6ab167783a162020
most of the data gets wiped out by the next (or current) text
add some sleep and buffer the log text so we can display it after each test
needs tested:
remote displays
greyscale
Change-Id: I14e53aca71e925ff9f547a77c6805a75d2d37e67
ultimately its only used as a way to prevent reentry
but coverity correctly identified the possibility..
Change-Id: I4738e52782ad4cac6134394238345a0491a50382
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 adds some confirmed and some to-be-confirmed (TBC) registers for Samsung S5L8720, which is used in iPod Nano 4G, iPod Touch 2G and the 920-0614-03 development/prototype board.
All credit goes to Cástor Muñoz <cmvidal@gmail.com>
Change-Id: I9fe5052fe9f05cd33f34de4e228cdb291944aa11
* Make the partial sector logic a little clearer (no functional change)
* Corrections for debugging messages
* Also use MAX_VIRT_SECTOR_SIZE in BOUNCE_BUFFER calculations
Change-Id: I89363824b092b2e3bddd5e0f75bf81200c9bc513
The s5l8702's ATA controller can only DMA in/out of cacheline-
aligned buffers. The more general buffering code already ensures
its buffers are aligned, but this covers the rest of the
users of the general I/O path.
Change-Id: Iae54d98797efb61756cb73e3901308775a0c5e52
* if MAX_VARIABLE_LOG_SECTOR is defined, use that
* if MAX_PHYS_SECTOR_SIZE is defined, use that
* use SECTOR_SIZE
Change-Id: Ia314f590fdb300e99df2c60587657c9563b9ce80
since we now have the length of tag names thru the param_pos var
we can simplify the find tag function to skip if the length doesn't match
this allows us to no longer make a string copy in order to terminate
the buffer
move some of the more frequently encountered tags to the top of the
lookup list
only SKIN_TOKEN_UNKNOWN position matters as its empty string is used
as the sentinel
Change-Id: Ib82d081a9ebedc228768845ae54a3d9466faaef1
* If the device returns a valid upper limit (word 47) use that.
* If the current limit (word 59) is valid, use that.
* Fall back to 1 as a default, not 16!
Note this is only used for PIO transfers!
Change-Id: I269b751466242bbcce91ee991d9ade449cc84b6b
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 reverts commit 4ec34f6986.
Reason for revert:
-fshort-enums makes them smaller if the explicitrly enumerated values will fit in a smaller type
Change-Id: I834dfd2b2039eda91bc02c9cf95a0f9dfc5783f6
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
This is a preparation for merging both files to a new header named s5l87xx.h. Also removed unused register types.
Change-Id: I6aa231064d6a7c734aa297e68b899d6988a88bdc
IMPORTANT: There is no guarantee this will compile cleanly much less
_work_ on any given target. This is purely to enable future hackery.
Change-Id: Ib58f21b717719fd4325622b446a60779406ae035
This reverts commit dcec6828a3.
This did not solve the reported problem, and it turns out that the original
code did the right thing with respect to the device's logical sector size.
Change-Id: I5bed2520ba8f5ca01df0ddd71588d3ed69c1d77c
The file I/O code operates in terms of the FILESYSTEM sector size, which
may be much larger than the underlying device's logical sector size. So
the disk cache buffers need to be the the larger of:
* Max allowed filesystem sector size (MAX_VIRT_SECTOR_SIZE) (if defined)
* Max allowed logical sector size (MAX_VARIABLE_LOG_SECTOR) (if defined)
* Fixed logical size (SECTOR_SIZE)
Change-Id: Ica0ec36d113406f24c12c696317a8d3520e7852c
* volume_partition() wasn't defined for hosted targets
* wrap the "special" volume stuff in HAVE_MULTIDRIVE
Change-Id: Icbea256ab6438e1f7e45d361ed61724feec7ef0b
This is an example of what could happen:
HD1: Not present
ouping Not present
ouping Not present
ouping Not present
We have up to 4 fixed volume slots (==partitions) per drive, but
shouldn't display an entry if the slot isn't used, ie the normal case.
Instead, we _were_ displaying a partially-unitialized entry!
There is a special case for targets that support multiple *drives*, in
that we want to show 'not present' for the first volume slot of the
2nd drive.
Change-Id: I717edd305cd654ff4e13ba9ffb57e7a4c9935c17
skin_tags have name and sometimes valid parameters
storing a pointer results in a lot of wasted space
instead record size of name and write the parameter string just after
Change-Id: Ied32f9e820deec9092dc6b97a93e2660d7abc8b2
- NOR flash size is 1MB, not 10MB
- BOOTFILE_EXT2 is not used, the Rockbox binary is always unencrypted on iPod 6G. This looks like a leftover from ipodnano2g config
Change-Id: Iea76c1e87f27e25b3d59924ef02e22d91448e39d
Support hw4 units with AXP2101 PMU
Bootloader successfully compiles and loads onto device.
The LCD appears to be identical to hw3 units.
Scroll wheel and buttons work
Audio output works, including volume.
HP/LO detect works
Rockbox build is generic
GPIO gating logic seems to be working as intended now.
- Added new GPIO definitions - some significant overlaps with pins
from previous hardware revisions...
- Added some GPIO definitions for older players we didn't know about
- Add register definitions for AXP2101 from datasheet
(these are very different from AXP192!)
- Add AXP2101 regulator definitions, need to support multiple step
sizes per regulator.
- Verify AXP2101 voltage set multi-range logic
- Verify AXP2101 voltage get multi-range logic
- Make AXP2101 its own driver
- AXP2101 driver should be "minimally viable", though I think
there is some extra functionality that could be implemented.
- Disabling the coulomb counter stuff - we could maybe make
the E-Gauge work for the same purpose, but it only appears to
be used on the debug screen at the moment so it doesn't seem
like it's worth the effort.
- Found new button GPIOs
- Found error in my GPIO setting logic, blue light works now!
- Set LDO/DCDC output voltages to OF's settings, as far as
I can tell.
- Determined we probably want TCS1421_CFG1:0 to be 0x00,
for UFP behavior
- Tested this rb build with both old and new bootloaders on hw1.5,
hw2, hw4 in as many configurations as I can think of, works across
the board.
- Bootloader can install itself on hw4, so nand chip isn't novel
- Uninstallation file can be made by patcher script, works on hw4
- Installation file can be made by patcher script, works on hw4
- Added HW4 to rbutil, manual
Change-Id: I5b75782273e81c2c6f2b9c79501c8b7cbf88391f