Age | Commit message (Collapse) | Author |
|
Change-Id: I71b8e9f7ce2568c180396d6695cef18ce94ded32
|
|
Change-Id: I0f0950c42ae5bf5c5b4c2c2f097f8c68a92ba4dd
|
|
Change-Id: I24a861cd45095d858d1a7db39969f6eda17cc563
|
|
- polling/IRQ modes for Tx/Rx (TODO?: DMA)
- fine adjust for Tx/Rx bitrates
- auto bauding using HW circuitry
- status and stats in debug screen
Change-Id: I8650957063bc6d274d92eba2779d93ae73453fb6
|
|
This patch has been tested on iPod 80 and 160slim, actually
it works but some updates must be done to the final version:
- unlimitted input buffer
- decrease CHUNK_SIZE
- use non-cached addresses instead of discard d-cache ???
Capture hardware versions:
Ver iPod models capture support
--- ----------- ---------------
0 80/160fat dock line-in
1 120/160slim dock line-in + jack mic
HW version 1 includes an amplifier for the jack plug mic.
Capture HW detection only tested on iPod 80 and 160slim.
CODEC power:
AFAIK, OF powers CS42L55 at VA=2.4V for capture (1.8V for
playback) and turns on the ADC charge pump. CODEC datasheet
recommmends to disable the charge pump for VA>2.1V.
CS42L55 DS, s4.13 (Required Initialization Settings): for
VA>2.1V, some adjustments "must" be done using undocummented
"control port compensation" registers. OF does not modifies
these registers when VA=2.4V.
This patch configures capture HW in the same way as OF does.
TODO:
- ADC full scale voltage depends on VA, perform tests to find
clipping levels for VA=1.8V and VA=2.4V
Change-Id: I7e20fd3ecaa83b1c58d5c746f5153fe5c3891d75
|
|
There are a couple of power saving options that can be selected using
defines, they configure the CODEC in a different way than OF does:
MONO_MIC: jack microphone is connected to left channel, disabling
right channel saves ~1 mW, there is no reason to not to do it.
BYPASS_PGA: this option only applies to the line-in, OF does not
bypass the PGA and configures it to 0 dB gain. At the beginning,
this patch was written based on CODEC datasheet, bypassing PGA
because it saves power and incrementes dinamic range ~1dB, i have
used this setup for a while without problems. Finally this option
was disabled at the last minute, i decided to do it after reviewing
the OF and realizing that CS42L55 datasheet recommends to bypass the
PGA only if the HW includes a couple of capacitors (see Typical
Connection Diagram, Note 4), at this moment i don't know if Classic
includes these capacitors (probably not). Anyway, i am not able to
tell the difference listening to voice recodings.
TODO:
- Use variable PGA gain for jack microphone (it is fixed to +12 dB.
as OF does).
- I am not a fan of having lots of unused #define options, these could
be useful for a generic driver but actually this driver is Classic
oriented, i am not sure if it could be considered disirable to
eliminate them in the final version.
Change-Id: I3dadf2341f44d5e13f3847e6c9de4a76cd6f0918
|
|
This patch uses the new pl080 DMA driver for I2S playback and LCD
update. I have tried to be as fiel as possible to the current
behaviour, algorithms and configurations are the same, but using
the new driver. Other modifications:
Playback:
- CHUNK_SIZE is decreased from 42988 to 8188 bytes, it does not
affect normal playback (block size 1024), was tested using
metronome (block size 46080). This change is needed because the
new code commits d-cache range instead of commiting the whole
d-cache, maximum time spent commiting the range should be
limited, CHUNK_SIZE can be decreased even more if necessary.
- pcm_play_dma_start() calls pcm_play_dma_stop() to stop the
channel when it is running (metronome replays the tick sound
without stopping the channel).
- pcm_play_dma_get_peak_buffer(): same as actual SVN function but
returns samples count instead of bytes count.
TODO: AFAIK, actually this function is not used in RB. Not tested,
but probably this function will fail because it returns pointers
to the internal double buffer.
LCD update:
- suppresses lcd_wakeup semaphore and uses yield()
Change-Id: I79b8aa47a941e0dd91847150618f3f7f676c26ef
|
|
Motivation:
This driver began as a set of functions to help to test and
experiment with different DMA configurations. It is cumbersome,
time consuming, and leads to mistakes to handle LLIs and DMA
registers dispersed along the code.
Later, i decided to adapt an old DMA queue driver written in the
past for a similar (scatter-gather) controller, all task/queue
code is based on the old driver.
Finally, some cleaning and dmac_ch_get_info() function was added
to complete RB needs.
Description:
- Generic, can be used by other targets including the same
controller. Not difficult to adapt for other similar
controllers if necesary.
- Easy to experiment and compare results using different
setups and/or queue algorithms:
Multi-controller and fully configurable from an unique place.
All task and LLI management is done by the driver, user only
has to (statically) allocate them.
- Two queue modes:
QUEUE_NORMAL: each task in the queue is launched using a new
DMA transfer once previous task is finished.
QUEUE_LINK: when a task is queued, it is linked with the last
queued task, creating a single continuous DMA transfer. New
tasks must be queued while the channel is running, otherwise
the continuous DMA transfer will be broken.
On Classic, QUEUE_LINK mode is needed for I2S continuous
transfers, QUEUE_NORMAL is used for LCD and could be useful
in the future for I2C or UART (non-blocking serial debug) if
necessary.
- Robust DMA transfer progress info (peak meter), needs final
testing, see below.
Technical details about DMA progress:
There are comments in the code related to the method actually
used (sequence method), it reads progress without halting the
DMA transfer. Althought the datasheet does not recommend to do
that, the sequence method seems to be robust, I ran tests calling
dmac_ch_get_info() millions of times and the results were always
as expected (tests done at 2:1 CPU/AHB clock ratio, no other
ratios were tried but probably sequence method will work for any
typical ratio).
This controller allows to halt the transfer and drain the DMAC
FIFO, DMA requests are ignored when the DMA channel is halted.
This method is not suitable for playback because FIFO is never
drained to I2S peripheral (who raises the DMA requests). This
method probably works for capture, the FIFO is drained to memory
before halting.
Another way is to disable (stop) the playback channel. When the
channel is disabled, all FIFO data is lost. It is unknown how much
the FIFO was filled when it was cleared, SRCADDR counter includes
the lost data, therefore the only useful information is LINK and
COUNT, that is the same information disponible when using the
sequence method. At this point we must procced in the same way as
in sequence method, in addition the playback channel should be
relaunched (configure + start) after calculating real SRCADDR.
The stop+relaunch method should work, it is a bit complicated,
and not valid for all peripheral FIFO configurations (depending
on stream rate). Moreover, due to the way the COUNT register is
implemented in HW, I suspect that this method will fail when
source and destination bus widths doesn't match. And more
important, it is not easy to garantize that no sample is lost
here or there, using the sequence method we can always be sure
that playback is ok.
Change-Id: Ib12a1e2992e2b6da4fc68431128c793a21b4b540
|
|
This patch implements a simple API to use the external interrupt
hardware present on s5l8702 (GPIO interrupt controller). This
GPIOIC has been fully tested using emcore apps.
Code is based on openiBoot project, there are a few modifications
to optimize space considering we will only use two or three external
interrupts. The API compiles and works, but has been never used,
therefore probably will need some changes to the final version.
External interrupts are necessary for jack remote+mic controller
(see iAP Interface Specifiction: Headphone Remote and Mic System),
this controller is located at I2C bus address 0x72, there is a IRQ
line for remote button press/release events routed to GPIO E6. At
this moment, the functionallity of this controller has been
extensively tested using emcore, getting a lot of information about
how it works. Microphone is already working on RB, jack accessory
detection and button events are work in progress.
PMU IRQ line is also routed to GPIO F3, it signals many events:
holdswitch, usb plug, wall adapter, low battery... The use of PMU
interrupts is the orthodox way of doing things, at this moment
there is no work done in this direction, there are a lot of PMU
events and i think it is a matter of discursion what to do and how.
Change-Id: Icc2e48965e664ca56c9518d84a81c9d9fdd31736
|
|
Change-Id: I12a785e554b7d598b91e526af1b7ebc1fc44f610
|
|
Let's give the defined, yet unused keymaps some sense :)
Change-Id: I372217351f7edc35c69c8c29fba782d32c895d5b
|
|
Default toolchain can be overriden using PREFIX, for example:
PREFIX=arm-none-eabi- make
Change-Id: I06f5ad0ad492b9f648ccba853a851918644f0500
|
|
These fit by pure chance exactly the YH820 screen :)
Change-Id: I0f7a7f5d14aa0497da5ddf63cf1f95a2c4989460
|
|
* allow button combos for QUIT (fixes MPIO_HD300)
* allow quitting during PAUSE mode
Change-Id: Iaf8ffc65cdcfe6c1d25bfbad3e38764eea2664cc
|
|
KEYA is defined for Fuze+ (even in the manual),
but wasn't implemented yet.
Change-Id: Ib0a93544926c15893b1cce967db931f3b515422c
|
|
* improve manual (hopefully fixes fs#11988). Parts of the
description are taken from fs#10820.
* move ACTION_STD_CONTEXT from alternate select to alternate
menu action, as not all targets have ACTION_STD_MENU
* add menu entries for "Quit" and "Quit without saving"
Change-Id: Iec86a1608756a899f9f9d7ec7d479838dfd1d95f
|
|
Change-Id: Ifc82ac1051ed05527393838d8aa93bde65287b5d
|
|
Fix qeditor to use the old soc_desc_v1.
Port hwstub_shell to the new description format.
Change-Id: I9fefbff534bfaa5c3603bb3dd8307a2b76e88cfc
|
|
Change-Id: Ib938b4be71d2c7623851dbc3c211f96105077d7d
|
|
Change-Id: I314365c3a2cb9d230c412f24d2a8034a12c43444
|
|
Fix an 'ATA error' issue that affects CE-ATA devices.
Change-Id: I246348bb0506155b096ed8559dcf1b0b0fab3596
|
|
Fixes a buffer overflow present when MP3 is encoded at 32000 Hz sample
rate, affected bitrates are 320 and 256 kbps.
Change-Id: I7634e70409be9d675d47be316a42630dd3147636
|
|
Change-Id: I19e59cfe86598c2e5a7b070ef72b5a12e88b7242
|
|
This uses slightly hacked luaprompt to provide all the goodis.
See https://github.com/dpapavas/luaprompt for original.
Change-Id: Iedddb79abae5809299322bc215722dd928c35cca
|
|
OS X ar operates on fat libaries and cannot update existing archives. Remove it
first to avoid this.
Use a make function when removing files to allow calling the correct command on
Windows, which doesn't know about rm.
Change-Id: Ia0c13ef7907239a1e6f4abc26bb08238a226c476
|
|
The wrong IDs made a connected c200v1 get detected as c200v1 and c200v2 in MTP
mode.
Change-Id: I9048910ca9d768b17b9d23e4679c96d9ab8d6831
|
|
Make sure to handle if retrieving the device description ends up with a NULL
data buffer pointer. Also switch handling the retrieved string using QString.
Fixes a crash reported in the forums.
Change-Id: I6e95a411308e85656cd78ddcecb1bcee165864d0
|
|
Change-Id: I1172cb0c4910f1d49b6a5d1125a809491a5aba9c
|
|
Fix regressions introduced by 42219b6e7
Change-Id: I1f3edb5f269f60e9431b45a43c4370836ecac733
|
|
Regression after 8b8b85433f6e9ac673adb
Change-Id: I86389be0b85c5c2ad8a32d7089a6a79a6b7c8708
|
|
Slightly reduces power consumption due to DMA overhead.
Change-Id: I8576e9e243ce13a71cde710c3a726dce19bafb97
|
|
Make sure to expand variable before testing.
Change-Id: I6b6f11782677c178fe3f2209f84887084940976a
|
|
Windows doesn't have which, so building natively on Windows didn't create
translations anymore. Use a which-less approach instead.
Change-Id: I7b4c40b26d68da54277a148e8e2d76ac81061c8b
|
|
Change-Id: I8e6cc0eb8a5bff722bf5278ffa7685436c3d846a
|
|
When building in the current tree (i.e. buildfolder ending up as '.') creating
the filename to use in the zip file stripped all '.' characters. Use a
different way to create the filename to avoid this.
Change-Id: I139c404d5e83a8bcb028a9a22b125f238911e405
|
|
version.h doesn't store the version number as string anymore. Update
findversion to use the individual values instead.
Change-Id: I6bf0fdd4420d41279b44cffd22b42febbfc778ce
|
|
Since currently new entries are at the bottom scroll down when opening the
changelog window.
Change-Id: I3cec84f5d9251e268c34335d8032dd11f42098ae
|
|
Check for lrelease and always try to run it if found. If not found show a
warning. This avoids build problems for certain setups which previously
required -config dbg to complete.
Change-Id: I60f0f49adc8455743afc5e4d23294ce0729f38d2
|
|
MSVC doesn't like function style call to the logger.
Change-Id: I98480442cafbec6728198e5f3bc40f992d4ea477
|
|
Change-Id: Iaa0a20c8bff1faaa191de70d6f02c62dafec1591
|
|
Change-Id: I47442ea0458461d0ae0a1af40e7719f8543b1992
|
|
Change-Id: I098882ea1c1a3f5265a763046400d79aed8eb43f
|
|
Move to separate project include file for better readability and reusability.
Change-Id: If75805be8fad4aec8ede600f5c616a9412ac0505
|
|
Update to latest quazip release. Note that quazip is now LGPL and not GPL /
LGPL dual licensed anymore.
Change-Id: Ie1e975b5b546dd31218eef9df472527493fe81e0
|
|
Change-Id: I48428eb1e455a841f9f1295cf6a61631bd925977
|
|
Change-Id: Ieb9b94d39009db4954df05cc1f54161b76b44f61
|
|
Show the user both the current and updated version.
Change-Id: Ief693cce020a39a0c79bf2705da4a44b7bd15928
|
|
Change-Id: Ia2955ecc9616eaa91644970ef81320e23a7970a0
|
|
Change-Id: I1f39cb93081738e757101cdf6aeb5e3a1ca0e42c
|
|
I copied the direction button description from snake2
manual, as both snakes seem to have the same controls.
No guarantee however :)
Change-Id: I8ca1ccf75f0737d5a922aae207c7c7efef5ec026
|