mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-08 20:55:17 -05:00
ipod Classic: implement HAVE_RECORDING
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
This commit is contained in:
parent
42abc6a496
commit
291b2338c9
6 changed files with 246 additions and 14 deletions
|
|
@ -26,6 +26,40 @@
|
|||
#include "gpio-s5l8702.h"
|
||||
#include "panic.h"
|
||||
|
||||
int rec_hw_ver;
|
||||
|
||||
void INIT_ATTR gpio_init(void)
|
||||
{
|
||||
/* Capture hardware versions:
|
||||
*
|
||||
* HW version 1 includes an amplifier for the jack plug
|
||||
* microphone, it is activated configuring GPIO E7 as output
|
||||
* high. It is posible to detect capture HW version (even
|
||||
* when HP are not plugged) reading GPIO E7:
|
||||
*
|
||||
* Ver GPIO E7 models capture support
|
||||
* --- ------- ------ ---------------
|
||||
* 0 1 80/160fat dock line-in
|
||||
* 1 0 120/160slim dock line-in + jack mic
|
||||
*/
|
||||
GPIOCMD = 0xe0700;
|
||||
rec_hw_ver = (PDAT(14) & (1 << 7)) ? 0 : 1;
|
||||
|
||||
/* default GPIO configuration */
|
||||
GPIOCMD = 0xe070e;
|
||||
if (rec_hw_ver == 0) {
|
||||
GPIOCMD = 0xe060e;
|
||||
}
|
||||
else {
|
||||
/* GPIO E6 is connected to mikey IRQ line (active low),
|
||||
configure it as pull-up input */
|
||||
GPIOCMD = 0xe0600;
|
||||
PUNB(14) |= (1 << 6);
|
||||
}
|
||||
|
||||
/* TODO: initialize GPIO ports for minimum power consumption */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* XXX: disabled, not used and never tested!
|
||||
|
|
@ -47,11 +81,6 @@ static int n_handlers = 0;
|
|||
|
||||
|
||||
/* API */
|
||||
void INIT_ATTR gpio_init(void)
|
||||
{
|
||||
/* TODO: initialize GPIO ports for minimum power consumption */
|
||||
}
|
||||
|
||||
uint32_t gpio_group_get(int group)
|
||||
{
|
||||
uint32_t pcon = PCON(group);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue