ipodnano3g: power, RTC, backlight, battery and audio

Fills in the stubs the Nano 3G port was left with, taking each from how
the original firmware drives the same hardware.

Testing evidence: firmware/target/arm/s5l8702/ipodnano3g/TESTING.md.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Change-Id: Iea5314769502f5941a176600869591756c5e3233
This commit is contained in:
Andrew Rice 2026-09-19 07:52:18 +10:00
parent e4c010be98
commit 76f8925d23
18 changed files with 286 additions and 129 deletions

View file

@ -169,7 +169,7 @@ struct sound_settings_info
#include "wm8751.h"
#elif defined(HAVE_WM8978)
#include "wm8978.h"
#elif defined(HAVE_WM8975)
#elif defined(HAVE_WM8975) || defined(HAVE_WM1870)
#include "wm8975.h"
#elif defined(HAVE_WM8985)
#include "wm8985.h"

View file

@ -138,22 +138,17 @@
#define HAVE_MORSE_INPUT
/* define this if you have a real-time clock */
// TODO
//#define CONFIG_RTC RTC_NANO3G
#define CONFIG_RTC 0
#define CONFIG_RTC RTC_NANO3G
/* Define if the device can wake from an RTC alarm */
//#define HAVE_RTC_ALARM
#define CONFIG_LCD LCD_IPOD6GNANO3G4G
// TODO
#if 0
/* Define the type of audio codec */
#define HAVE_WM8975
#endif
// XXX: dummy for preliminary build, WRONG CODEC!!!
#define HAVE_CS42L55
/* Define the type of audio codec. The Nano 3G has a Wolfson WM1870 at I2C
* address 0x34, which the original firmware drives as a WM8975 plus a few
* registers above the WM8975's range, so wm8975.c covers it. */
#define HAVE_WM1870
#define HAVE_PCM_DMA_ADDRESS

View file

@ -313,4 +313,7 @@ void audiohw_enable_lineout(bool enable);
#define WM8975_88200HZ 0x7f
#define WM8975_96000HZ 0x5d
/* The WM1870 (HAVE_WM1870) answers these registers and a few above them */
#define WM1870_R67 0x43
#endif /* _WM8975_H */

View file

@ -20,3 +20,9 @@
void wmcodec_write(int reg, int data);
#ifdef HAVE_WM1870
/* SAMPCTRL for a sample rate, which depends on the MCLK the target feeds
* the codec. Zero if the target cannot make that rate. */
unsigned short wmcodec_sampctrl(unsigned long rate);
#endif