summaryrefslogtreecommitdiffstats
path: root/firmware/export
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/export')
-rw-r--r--firmware/export/ak4376.h42
-rw-r--r--firmware/export/axp-pmu.h151
-rw-r--r--firmware/export/axp173.h94
-rw-r--r--firmware/export/config.h44
-rw-r--r--firmware/export/config/aigoerosq.h1
-rw-r--r--firmware/export/config/fiiom3k.h27
-rw-r--r--firmware/export/config/iaudio7.h164
-rw-r--r--firmware/export/config/ibassodx50.h6
-rw-r--r--firmware/export/config/ibassodx90.h6
-rw-r--r--firmware/export/config/iriverifp7xx.h129
-rw-r--r--firmware/export/config/logikdax.h152
-rw-r--r--firmware/export/config/sansac100.h130
-rw-r--r--firmware/export/config/sansaconnect.h16
-rw-r--r--firmware/export/config/sansam200.h139
-rw-r--r--firmware/export/cpu.h6
-rw-r--r--firmware/export/dm320.h17
-rw-r--r--firmware/export/ft6x06.h (renamed from firmware/export/installer.h)33
-rw-r--r--firmware/export/gdb_api.h3
-rw-r--r--firmware/export/ifp_usb_serial.h30
-rw-r--r--firmware/export/tcc77x.h262
-rw-r--r--firmware/export/ucl_decompress.h32
-rw-r--r--firmware/export/usb_ch9.h17
-rw-r--r--firmware/export/x1000.h72
23 files changed, 382 insertions, 1191 deletions
diff --git a/firmware/export/ak4376.h b/firmware/export/ak4376.h
index eb06755e92..eab0bc24f3 100644
--- a/firmware/export/ak4376.h
+++ b/firmware/export/ak4376.h
@@ -104,10 +104,12 @@ AUDIOHW_SETTING(POWER_MODE, "", 0, 1, 0, 1, 0)
#define AK4376_FS_176 17
#define AK4376_FS_192 18
-/* Functions to power on / off the DAC which should be called from
- * the target's audiohw_init() / audiohw_close() implementation.
+/* Functions to power on / off the DAC.
+ *
+ * NOTE: Target must call ak4376_set_frequency() after ak4376_open() to
+ * finish the power-up sequence of the headphone amp.
*/
-extern void ak4376_init(void);
+extern void ak4376_open(void);
extern void ak4376_close(void);
/* Register read/write. Cached to avoid redundant reads/writes. */
@@ -117,16 +119,17 @@ extern int ak4376_read(int reg);
/* Target-specific function to set the PDN pin level. */
extern void ak4376_set_pdn_pin(int level);
-/* Target-specific function to control the external master clock frequency.
- * This is called by the ak4376's audiohw implementation when switching to
- * or from a frequency that is configured to use this clock source.
- *
- * - hw_freq is the new sample rate -- one of the HW_FREQ_XX constants.
- * - enabled is true if clock should be output, false if not.
+/* Set overall output volume */
+extern void ak4376_set_volume(int vol_l, int vol_r);
+
+/* Set the roll-off filter */
+extern void ak4376_set_filter_roll_off(int val);
+
+/* Set audio sampling frequency and power mode.
*
- * The return value is the master clock rate as a multiple of the sampling
- * frequency. The allowed multiples depend on the sampling frequency, shown
- * in the table below.
+ * If the I2S master clock is being supplied externally, the caller must also
+ * give the master clock multiplier 'mult'. The accepted values depend on the
+ * sampling rate, see below:
*
* +-----------+------------------------+
* | frequency | master clock rate |
@@ -137,16 +140,13 @@ extern void ak4376_set_pdn_pin(int level);
* | 128 - 192 | 128fs |
* +-----------+------------------------+
*
- * For example, at 48 KHz you could return either 256 or 512 depending on
- * the rate you decided to actually use.
- *
- * You need to return a valid master multiplier for supported frequencies
- * even when enabled = false, since the driver needs to know the multiplier
- * _before_ enabling the clock.
+ * Switching between high-power and low-power mode requires the same registers
+ * and power-up / power-down sequences as a frequency switch, so both settings
+ * are controlled by this function.
*
- * For unsupported frequencies you don't need to return a valid master
- * multiplier, because the DAC doesn't need the return value in such cases.
+ * high power mode -- use power_mode=0
+ * low power mode -- use power_mode=1
*/
-extern int ak4376_set_mclk_freq(int hw_freq, bool enabled);
+extern void ak4376_set_freqmode(int fsel, int mult, int power_mode);
#endif /* __AK4376_H__ */
diff --git a/firmware/export/axp-pmu.h b/firmware/export/axp-pmu.h
new file mode 100644
index 0000000000..457f746e8c
--- /dev/null
+++ b/firmware/export/axp-pmu.h
@@ -0,0 +1,151 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2021 Aidan MacDonald
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#ifndef __AXP_PMU_H__
+#define __AXP_PMU_H__
+
+#include "config.h"
+#include <stdbool.h>
+#include <stdint.h>
+
+/* ADC channels */
+#define ADC_ACIN_VOLTAGE 0
+#define ADC_ACIN_CURRENT 1
+#define ADC_VBUS_VOLTAGE 2
+#define ADC_VBUS_CURRENT 3
+#define ADC_INTERNAL_TEMP 4
+#define ADC_TS_INPUT 5
+#define ADC_BATTERY_VOLTAGE 6
+#define ADC_CHARGE_CURRENT 7
+#define ADC_DISCHARGE_CURRENT 8
+#define ADC_APS_VOLTAGE 9
+#define ADC_BATTERY_POWER 10
+#define NUM_ADC_CHANNELS 11
+
+/* ADC sampling rates */
+#define AXP_ADC_RATE_25HZ 0
+#define AXP_ADC_RATE_50HZ 1
+#define AXP_ADC_RATE_100HZ 2
+#define AXP_ADC_RATE_200HZ 3
+
+/* Return values of axp_battery_status() */
+#define AXP_BATT_DISCHARGING 0
+#define AXP_BATT_CHARGING 1
+#define AXP_BATT_FULL 2
+
+/* Bits returned by axp_input_status() */
+#define AXP_INPUT_AC (1 << 0)
+#define AXP_INPUT_USB (1 << 1)
+#define AXP_INPUT_BATTERY (1 << 2)
+#define AXP_INPUT_EXTERNAL (AXP_INPUT_AC|AXP_INPUT_USB)
+
+/* Power supplies known by this driver. Not every chip has all supplies! */
+#define AXP_SUPPLY_DCDC1 0
+#define AXP_SUPPLY_DCDC2 1
+#define AXP_SUPPLY_DCDC3 2
+#define AXP_SUPPLY_LDO1 3
+#define AXP_SUPPLY_LDO2 4
+#define AXP_SUPPLY_LDO3 5
+#define AXP_SUPPLY_LDO_IO0 6
+#define AXP_NUM_SUPPLIES 7
+
+/* Special values returned by axp_supply_get_voltage */
+#define AXP_SUPPLY_NOT_PRESENT INT_MIN
+#define AXP_SUPPLY_DISABLED (-1)
+
+/* Registers -- common to AXP173 and AXP192 (incomplete listing) */
+#define AXP_REG_POWERSTATUS 0x00
+#define AXP_REG_CHARGESTATUS 0x01
+#define AXP_REG_CHIP_ID 0x03
+#define AXP_REG_PWROUTPUTCTRL1 0x10
+#define AXP_REG_PWROUTPUTCTRL2 0x12
+#define AXP_REG_SHUTDOWNLEDCTRL 0x32
+#define AXP_REG_CHARGECONTROL1 0x33
+#define AXP_REG_DCDCWORKINGMODE 0x80
+#define AXP_REG_ADCENABLE1 0x82
+#define AXP_REG_ADCENABLE2 0x83
+#define AXP_REG_ADCSAMPLERATE 0x84
+#define AXP_REG_COULOMBCOUNTERBASE 0xb0
+#define AXP_REG_COULOMBCOUNTERCTRL 0xb8
+
+/* AXP192-only registers (incomplete listing) */
+#define AXP192_REG_GPIO0FUNCTION 0x90
+#define AXP192_REG_GPIO1FUNCTION 0x92
+#define AXP192_REG_GPIO2FUNCTION 0x93
+#define AXP192_REG_GPIOSTATE1 0x94
+
+/* Must be called from power_init() to initialize the driver state */
+extern void axp_init(void);
+
+/* - axp_supply_set_voltage(): set a supply voltage to the given value
+ * in millivolts. Pass a voltage of AXP_SUPPLY_DISABLED to shut off
+ * the supply. Any invalid supply or voltage will make the call a no-op.
+ *
+ * - axp_supply_get_voltage() returns a supply voltage in millivolts.
+ * If the supply is powered off, returns AXP_SUPPLY_DISABLED.
+ * If the chip does not have the supply, returns AXP_SUPPLY_NOT_PRESENT.
+ */
+extern void axp_supply_set_voltage(int supply, int voltage);
+extern int axp_supply_get_voltage(int supply);
+
+/* Basic battery and power supply status */
+extern int axp_battery_status(void);
+extern int axp_input_status(void);
+
+/* ADC access -- ADCs which are not enabled will return INT_MIN if read.
+ * The output of axp_adc_read() is normalized to appropriate units:
+ *
+ * - for voltages, the scale is millivolts
+ * - for currents, the scale is milliamps
+ * - for temperatures, the scale is tenths of a degree Celsius
+ * - for power, the scale is microwatts
+ *
+ * See the comment in axp_adc_conv_raw() for raw value precision/scale.
+ */
+extern int axp_adc_read(int adc);
+extern int axp_adc_read_raw(int adc);
+extern int axp_adc_conv_raw(int adc, int value);
+extern int axp_adc_get_enabled(void);
+extern void axp_adc_set_enabled(int adc_bits);
+extern int axp_adc_get_rate(void);
+extern void axp_adc_set_rate(int rate);
+
+/* - axp_cc_read() reads the coulomb counters
+ * - axp_cc_clear() resets both counters to zero
+ * - axp_cc_enable() will stop/start the counters running
+ * - axp_cc_is_enabled() returns true if the counters are running
+ */
+extern void axp_cc_read(uint32_t* charge, uint32_t* discharge);
+extern void axp_cc_clear(void);
+extern void axp_cc_enable(bool en);
+extern bool axp_cc_is_enabled(void);
+
+/* Set/get maximum charging current in milliamps */
+extern void axp_set_charge_current(int maxcurrent);
+extern int axp_get_charge_current(void);
+
+/* Set the shutdown bit */
+extern void axp_power_off(void);
+
+/* Debug menu */
+extern bool axp_debug_menu(void);
+
+#endif /* __AXP_PMU_H__ */
diff --git a/firmware/export/axp173.h b/firmware/export/axp173.h
deleted file mode 100644
index 60519138e1..0000000000
--- a/firmware/export/axp173.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2021 Aidan MacDonald
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
-
-#ifndef __AXP173_H__
-#define __AXP173_H__
-
-#include <stdbool.h>
-#include <stdint.h>
-
-#define ADC_ACIN_VOLTAGE 0
-#define ADC_ACIN_CURRENT 1
-#define ADC_VBUS_VOLTAGE 2
-#define ADC_VBUS_CURRENT 3
-#define ADC_INTERNAL_TEMP 4
-#define ADC_TS_INPUT 5
-#define ADC_BATTERY_VOLTAGE 6
-#define ADC_CHARGE_CURRENT 7
-#define ADC_DISCHARGE_CURRENT 8
-#define ADC_APS_VOLTAGE 9
-#define ADC_BATTERY_POWER 10
-#define NUM_ADC_CHANNELS 11
-
-/* ADC sampling rates */
-#define AXP173_ADC_RATE_25HZ 0
-#define AXP173_ADC_RATE_50HZ 1
-#define AXP173_ADC_RATE_100HZ 2
-#define AXP173_ADC_RATE_200HZ 3
-
-/* Return values of axp173_battery_status() */
-#define AXP173_BATT_DISCHARGING 0
-#define AXP173_BATT_CHARGING 1
-#define AXP173_BATT_FULL 2
-
-/* Bits returned by axp173_input_status() */
-#define AXP173_INPUT_AC (1 << 0)
-#define AXP173_INPUT_USB (1 << 1)
-#define AXP173_INPUT_BATTERY (1 << 2)
-#define AXP173_INPUT_EXTERNAL (AXP173_INPUT_AC|AXP173_INPUT_USB)
-
-/* Must be called from power_init() to initialize the driver state */
-extern void axp173_init(void);
-
-/* Basic battery and power supply status */
-extern int axp173_battery_status(void);
-extern int axp173_input_status(void);
-
-/* ADC access -- ADCs which are not enabled will return INT_MIN if read.
- * The output of axp173_adc_read() is normalized to appropriate units:
- *
- * - for voltages, the scale is millivolts
- * - for currents, the scale is milliamps
- * - for temperatures, the scale is tenths of a degree Celsius
- * - for power, the scale is microwatts
- *
- * See the comment in axp173_adc_conv_raw() for raw value precision/scale.
- */
-extern int axp173_adc_read(int adc);
-extern int axp173_adc_read_raw(int adc);
-extern int axp173_adc_conv_raw(int adc, int value);
-extern int axp173_adc_get_enabled(void);
-extern void axp173_adc_set_enabled(int adc_bits);
-extern int axp173_adc_get_rate(void);
-extern void axp173_adc_set_rate(int rate);
-
-/* - axp173_cc_read() reads the coulomb counters
- * - axp173_cc_clear() resets both counters to zero
- * - axp173_cc_enable() will stop/start the counters running
- */
-extern void axp173_cc_read(uint32_t* charge, uint32_t* discharge);
-extern void axp173_cc_clear(void);
-extern void axp173_cc_enable(bool en);
-
-/* Debug menu */
-extern bool axp173_debug_menu(void);
-
-#endif /* __AXP173_H__ */
diff --git a/firmware/export/config.h b/firmware/export/config.h
index db1c589043..623ef8b4ff 100644
--- a/firmware/export/config.h
+++ b/firmware/export/config.h
@@ -68,9 +68,6 @@
#define DSC25 25
#define DM320 320
#define IMX31L 31
-#define TCC770 770
-#define TCC771L 771
-#define TCC773L 773
#define TCC7801 7801
#define S5L8700 8700
#define S5L8701 8701
@@ -104,7 +101,6 @@
#define IPOD_4G_PAD 7
#define IPOD_3G_PAD 8
#define IPOD_1G2G_PAD 9
-#define IRIVER_IFP7XX_PAD 10
#define GIGABEAT_PAD 11
#define IRIVER_H10_PAD 12
#define SANSA_E200_PAD 13
@@ -113,15 +109,12 @@
#define MROBE100_PAD 17
#define MROBE500_PAD 18
#define GIGABEAT_S_PAD 19
-#define LOGIK_DAX_PAD 20
-#define IAUDIO67_PAD 21
#define COWON_D2_PAD 22
#define IAUDIO_M3_PAD 23
#define CREATIVEZVM_PAD 24
#define SANSA_M200_PAD 25
#define CREATIVEZV_PAD 26
#define PHILIPS_SA9200_PAD 27
-#define SANSA_C100_PAD 28
#define PHILIPS_HDD1630_PAD 29
#define MEIZU_M6SL_PAD 30
#define ONDAVX747_PAD 31
@@ -228,7 +221,6 @@
#define LCD_IPODVIDEO 8 /* as used by iPod Video */
#define LCD_IPOD2BPP 9 /* as used by all fullsize greyscale iPods */
#define LCD_IPODMINI 10 /* as used by iPod Mini g1/g2 */
-#define LCD_IFP7XX 11 /* as used by iRiver iFP 7xx/8xx */
#define LCD_GIGABEAT 12
#define LCD_H10_20GB 13 /* as used by iriver H10 20Gb */
#define LCD_H10_5GB 14 /* as used by iriver H10 5Gb */
@@ -236,13 +228,11 @@
#define LCD_C200 17 /* as used by Sandisk Sansa c200 */
#define LCD_MROBE500 18 /* as used by Olympus M:Robe 500i */
#define LCD_MROBE100 19 /* as used by Olympus M:Robe 100 */
-#define LCD_LOGIKDAX 20 /* as used by Logik DAX - SSD1815 */
-#define LCD_IAUDIO67 21 /* as used by iAudio 6/7 - unknown */
#define LCD_CREATIVEZVM 22 /* as used by Creative Zen Vision:M */
#define LCD_TL0350A 23 /* as used by the iAudio M3 remote, treated as main LCD */
#define LCD_COWOND2 24 /* as used by Cowon D2 - LTV250QV, TCC7801 driver */
#define LCD_SA9200 25 /* as used by the Philips SA9200 */
-#define LCD_S6B33B2 26 /* as used by the Sansa c100 */
+#define LCD_S6B33B2 26 /* as used by the Samsumg YH820 */
#define LCD_HDD1630 27 /* as used by the Philips HDD1630 */
#define LCD_MEIZUM6 28 /* as used by the Meizu M6SP and M6SL (various models) */
#define LCD_ONDAVX747 29 /* as used by the Onda VX747 */
@@ -314,7 +304,6 @@ Lyre prototype 1 */
#define I2C_S3C2440 7
#define I2C_PP5024 8 /* PP5024 style */
#define I2C_IMX31L 9
-#define I2C_TCC77X 10
#define I2C_TCC780X 11
#define I2C_DM320 12 /* DM320 style */
#define I2C_S5L8700 13
@@ -331,7 +320,6 @@ Lyre prototype 1 */
/* else HW controlled LED (iRiver H1x0) */
/* CONFIG_NAND */
-#define NAND_IFP7XX 1
#define NAND_TCC 2
#define NAND_SAMSUNG 3
#define NAND_CC 4 /* ChinaChip */
@@ -347,7 +335,6 @@ Lyre prototype 1 */
#define RTC_DS1339_DS3231 7 /* h1x0 RTC mod */
#define RTC_IMX31L 8
#define RTC_RX5X348AB 9
-#define RTC_TCC77X 10
#define RTC_TCC780X 11
#define RTC_MR100 12
#define RTC_MC13783 13 /* Freescale MC13783 PMIC */
@@ -420,8 +407,6 @@ Lyre prototype 1 */
#include "config/ipodnano2g.h"
#elif defined(IPOD_6G)
#include "config/ipod6g.h"
-#elif defined(IRIVER_IFP7XX)
-#include "config/iriverifp7xx.h"
#elif defined(GIGABEAT_F)
#include "config/gigabeatfx.h"
#elif defined(GIGABEAT_S)
@@ -438,18 +423,12 @@ Lyre prototype 1 */
#include "config/sansae200.h"
#elif defined(SANSA_C200)
#include "config/sansac200.h"
-#elif defined(SANSA_M200)
-#include "config/sansam200.h"
#elif defined(TATUNG_TPJ1022)
#include "config/tatungtpj1022.h"
#elif defined(MROBE_100)
#include "config/mrobe100.h"
#elif defined(MROBE_500)
#include "config/mrobe500.h"
-#elif defined(LOGIK_DAX)
-#include "config/logikdax.h"
-#elif defined(IAUDIO_7)
-#include "config/iaudio7.h"
#elif defined(COWON_D2)
#include "config/cowond2.h"
#elif defined(CREATIVE_ZVM)
@@ -468,8 +447,6 @@ Lyre prototype 1 */
#include "config/gogearhdd1630.h"
#elif defined(PHILIPS_HDD6330)
#include "config/gogearhdd6330.h"
-#elif defined(SANSA_C100)
-#include "config/sansac100.h"
#elif defined(MEIZU_M6SL)
#include "config/meizum6sl.h"
#elif defined(MEIZU_M6SP)
@@ -666,11 +643,6 @@ Lyre prototype 1 */
#define CPU_S5L870X
#endif
-/* define for all cpus from TCC77X family */
-#if (CONFIG_CPU == TCC771L) || (CONFIG_CPU == TCC773L) || (CONFIG_CPU == TCC770)
-#define CPU_TCC77X
-#endif
-
/* define for all cpus from TCC780 family */
#if (CONFIG_CPU == TCC7801)
#define CPU_TCC780X
@@ -930,6 +902,10 @@ Lyre prototype 1 */
#define INCLUDE_TIMEOUT_API
#define USB_DRIVER_CLOSE
#endif
+#if defined(HAVE_USBSTACK) && CONFIG_USBOTG == USBOTG_TNETV105
+#define INCLUDE_TIMEOUT_API
+#define USB_DRIVER_CLOSE
+#endif
#endif
#else /* !BOOTLOADER */
@@ -966,6 +942,9 @@ Lyre prototype 1 */
#define USB_DETECT_BY_REQUEST
#elif CONFIG_USBOTG == USBOTG_RK27XX
#define USB_DETECT_BY_REQUEST
+#elif CONFIG_USBOTG == USBOTG_TNETV105
+#define USB_STATUS_BY_EVENT
+#define USB_DETECT_BY_REQUEST
#endif /* CONFIG_USB == */
#endif /* HAVE_USBSTACK */
@@ -1199,10 +1178,11 @@ Lyre prototype 1 */
(CONFIG_USBOTG == USBOTG_M66591) || \
(CONFIG_USBOTG == USBOTG_DESIGNWARE) || \
(CONFIG_USBOTG == USBOTG_AS3525) || \
- (CONFIG_USBOTG == USBOTG_RK27XX)
+ (CONFIG_USBOTG == USBOTG_RK27XX) || \
+ (CONFIG_USBOTG == USBOTG_TNETV105)
#define USB_HAS_BULK
#define USB_HAS_INTERRUPT
-#elif defined(CPU_TCC780X) || defined(CPU_TCC77X)
+#elif defined(CPU_TCC780X)
#define USB_HAS_BULK
#elif CONFIG_USBOTG == USBOTG_S3C6400X
#define USB_HAS_BULK
@@ -1219,7 +1199,7 @@ Lyre prototype 1 */
/* enable usb storage for targets that do bootloader usb */
#if defined(HAVE_BOOTLOADER_USB_MODE) || \
- defined(CREATIVE_ZVx) || defined(CPU_TCC77X) || defined(CPU_TCC780X) || \
+ defined(CREATIVE_ZVx) || defined(CPU_TCC780X) || \
CONFIG_USBOTG == USBOTG_JZ4740 || CONFIG_USBOTG == USBOTG_AS3525 || \
CONFIG_USBOTG == USBOTG_S3C6400X || CONFIG_USBOTG == USBOTG_DESIGNWARE || \
CONFIG_USBOTG == USBOTG_JZ4760
diff --git a/firmware/export/config/aigoerosq.h b/firmware/export/config/aigoerosq.h
index 2d0f7a0cdf..bfaa323968 100644
--- a/firmware/export/config/aigoerosq.h
+++ b/firmware/export/config/aigoerosq.h
@@ -15,6 +15,7 @@
/* define this if you have access to the quickscreen */
#define HAVE_QUICKSCREEN
+#define HAVE_HOTKEY
#define HAVE_HEADPHONE_DETECTION
#define HAVE_LINEOUT_DETECTION
diff --git a/firmware/export/config/fiiom3k.h b/firmware/export/config/fiiom3k.h
index 99285728a2..849aa9c0a6 100644
--- a/firmware/export/config/fiiom3k.h
+++ b/firmware/export/config/fiiom3k.h
@@ -10,25 +10,20 @@
/* CPU defines */
#define CONFIG_CPU X1000
#define X1000_EXCLK_FREQ 24000000
+#define CPU_FREQ 1008000000
#ifndef SIMULATOR
#define TIMER_FREQ X1000_EXCLK_FREQ
#endif
-#define CPU_FREQ 1008000000
-#define CPUFREQ_MAX CPU_FREQ
-/* TODO: figure out if this does in fact affect power consumption. */
-#define CPUFREQ_DEFAULT (CPUFREQ_MAX/4)
-#define CPUFREQ_NORMAL (CPUFREQ_MAX/4)
-#define HAVE_ADJUSTABLE_CPU_FREQ
-#define HAVE_GUI_BOOST
-
/* Kernel defines */
#define INCLUDE_TIMEOUT_API
#define HAVE_SEMAPHORE_OBJECTS
/* Drivers */
#define HAVE_I2C_ASYNC
+#define HAVE_FT6x06
+#define FT6x06_SWAP_AXES
/* Buffer for plugins and codecs. */
#define PLUGIN_BUFFER_SIZE 0x200000 /* 2 MiB */
@@ -97,7 +92,7 @@
#define HAVE_SW_POWEROFF
#ifndef SIMULATOR
-#define HAVE_AXP173
+#define HAVE_AXP_PMU 192
#define HAVE_POWEROFF_WHILE_CHARGING
#endif
@@ -108,9 +103,18 @@
#define BATTERY_CAPACITY_INC 0
#define BATTERY_TYPES_COUNT 1
-/* USB is still TODO. */
+/* USB support */
#ifndef SIMULATOR
-#define USB_NONE
+#define CONFIG_USBOTG USBOTG_DESIGNWARE
+#define USB_DW_ARCH_SLAVE
+#define USB_DW_TURNAROUND 5
+#define HAVE_USBSTACK
+#define USB_VENDOR_ID 0x2972
+#define USB_PRODUCT_ID 0x0003
+#define USB_DEVBSS_ATTR __attribute__((aligned(32)))
+#define HAVE_USB_POWER
+#define HAVE_USB_CHARGING_ENABLE
+#define HAVE_BOOTLOADER_USB_MODE
#endif
/* Rockbox capabilities */
@@ -122,4 +126,5 @@
#define HAVE_VOLUME_IN_LIST
#define HAVE_QUICKSCREEN
#define HAVE_HOTKEY
+#define HAVE_LOCKED_ACTIONS
#define AB_REPEAT_ENABLE
diff --git a/firmware/export/config/iaudio7.h b/firmware/export/config/iaudio7.h
deleted file mode 100644
index 698ff13724..0000000000
--- a/firmware/export/config/iaudio7.h
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * This config file is for the Iaudio7 series
- */
-
-/* For Rolo and boot loader */
-#define MODEL_NUMBER 32
-#define MODEL_NAME "Cowon iAudio7"
-
-/* define this if you have recording possibility */
-#define HAVE_RECORDING
-
-/* Define bitmask of input sources - recordable bitmask can be defined
- explicitly if different */
-#define INPUT_SRC_CAPS (SRC_CAP_MIC | SRC_CAP_LINEIN | SRC_CAP_FMRADIO)
-
-/* FM Tuner */
-#define CONFIG_TUNER LV24020LP
-#define HAVE_TUNER_PWR_CTRL
-
-/* Define this for FM radio input available */
-#define HAVE_FMRADIO_IN
-
-/* define hardware samples rate caps mask */
-#define HW_SAMPR_CAPS (/*SAMPR_CAP_88 | */SAMPR_CAP_44/* | SAMPR_CAP_22 | SAMPR_CAP_11*/)
-
-/* define the bitmask of recording sample rates */
-#define REC_SAMPR_CAPS (SAMPR_CAP_44/* | SAMPR_CAP_22 | SAMPR_CAP_11*/)
-
-
-
-
-/* define this if you have a colour LCD */
-#define HAVE_LCD_COLOR
-
-/* define this if you can flip your LCD */
-//#define HAVE_LCD_FLIP
-
-/* define this if you can invert the colours on your LCD */
-//#define HAVE_LCD_INVERT
-
-/* define this if you want album art for this target */
-#define HAVE_ALBUMART
-
-/* define this to enable bitmap scaling */
-#define HAVE_BMP_SCALING
-
-/* define this to enable JPEG decoding */
-#define HAVE_JPEG
-
-/* define this if you have access to the quickscreen */
-#define HAVE_QUICKSCREEN
-
-/* define this if you have LCD enable function */
-#define HAVE_LCD_ENABLE
-
-/* define this if you would like tagcache to build on this target */
-#define HAVE_TAGCACHE
-
-#define HAVE_FAT16SUPPORT
-
-#if 0 && !defined(SIMULATOR) /* Enable for USB driver test */
-#define HAVE_USBSTACK
-#define USB_VENDOR_ID 0x0e21
-#define USB_PRODUCT_ID 0x0750
-#endif
-
-/* define this if you have a flash memory storage */
-#define HAVE_FLASH_STORAGE
-
-#define CONFIG_STORAGE STORAGE_NAND
-
-#define CONFIG_NAND NAND_TCC
-
-/* LCD dimensions */
-#define LCD_WIDTH 160
-#define LCD_HEIGHT 128
-/* sqrt(160^2 + 128^2) / 1.3 = 157.6 */
-#define LCD_DPI 158
-/* 16bits for now... */
-#define LCD_DEPTH 16 /* 262144 colours */
-#define LCD_PIXELFORMAT RGB565 /*rgb565*/
-
-/*#define LCD_PIXELFORMAT VERTICAL_PACKING*/
-
-/* define this to indicate your device's keypad */
-#define CONFIG_KEYPAD IAUDIO67_PAD
-
-/* #define HAVE_BUTTON_DATA */
-
-/* define this if you have a real-time clock */
-#define CONFIG_RTC RTC_PCF50606
-
-/* define this if you have RTC RAM available for settings */
-//#define HAVE_RTC_RAM
-
-/* Define this if you have a software controlled poweroff */
-#define HAVE_SW_POWEROFF
-
-/* Reduce Tremor's ICODE usage */
-#define ICODE_ATTR_TREMOR_NOT_MDCT
-
-/* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x100000
-
-/* The number of bytes reserved for loadable plugins */
-#define PLUGIN_BUFFER_SIZE 0x80000
-
-#define AB_REPEAT_ENABLE
-
-
-
-
-/* The iaudio7 uses built-in WM8731 codec */
-#define HAVE_WM8731
-/* Codec is slave on serial bus */
-#define CODEC_SLAVE
-
-/* WM8731 has no tone controls, so we use the software ones */
-#define HAVE_SW_TONE_CONTROLS
-
-/* Define this for LCD backlight available */
-#define HAVE_BACKLIGHT
-
-#define CONFIG_I2C I2C_TCC77X
-
-#define BATTERY_CAPACITY_DEFAULT 540 /* default battery capacity */
-#define BATTERY_CAPACITY_MIN 540 /* min. capacity selectable */
-#define BATTERY_CAPACITY_MAX 540 /* max. capacity selectable */
-#define BATTERY_CAPACITY_INC 50 /* capacity increment */
-#define BATTERY_TYPES_COUNT 1 /* only one type */
-
-#define CONFIG_BATTERY_MEASURE VOLTAGE_MEASURE
-
-#define CONFIG_CHARGING CHARGING_SIMPLE
-
-/* Define this if you have a TCC770 */
-#define CONFIG_CPU TCC770
-
-/* Define this if you have ATA power-off control */
-#define HAVE_ATA_POWER_OFF
-
-/* Define this to the CPU frequency */
-#define CPU_FREQ 120000000
-
-/* Offset ( in the firmware file's header ) to the file CRC */
-#define FIRMWARE_OFFSET_FILE_CRC 0
-
-/* Offset ( in the firmware file's header ) to the real data */
-#define FIRMWARE_OFFSET_FILE_DATA 8
-
-#define CONFIG_LCD LCD_IAUDIO67
-
-#define BOOTFILE_EXT "iaudio"
-#define BOOTFILE "rockbox." BOOTFILE_EXT
-#define BOOTDIR "/.rockbox"
-
-#ifdef BOOTLOADER
-#define TCCBOOT
-#endif
-
-#define IRAM_LCDFRAMEBUFFER IBSS_ATTR /* put the lcd frame buffer in IRAM */
-
-/* Define this if a programmable hotkey is mapped */
-//#define HAVE_HOTKEY
diff --git a/firmware/export/config/ibassodx50.h b/firmware/export/config/ibassodx50.h
index bb4b2809e5..2161d9f3e3 100644
--- a/firmware/export/config/ibassodx50.h
+++ b/firmware/export/config/ibassodx50.h
@@ -97,11 +97,9 @@
/* Which backlight fading type? */
#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_SETTING
-
-
#define HAVE_SW_TONE_CONTROLS
#define HAVE_SW_VOLUME_CONTROL
-#define HW_SAMPR_CAPS SAMPR_CAP_ALL_96
+#define HW_SAMPR_CAPS SAMPR_CAP_ALL_192
//#define HAVE_MULTIMEDIA_KEYS
#define CONFIG_KEYPAD DX50_PAD
@@ -111,7 +109,7 @@
#define BATTERY_CAPACITY_DEFAULT 2100 /* default battery capacity */
#define BATTERY_CAPACITY_MIN 1700 /* min. capacity selectable */
-#define BATTERY_CAPACITY_MAX 3200 /* max. capacity selectable */
+#define BATTERY_CAPACITY_MAX 7300 /* max. capacity selectable */
#define BATTERY_CAPACITY_INC 50 /* capacity increment */
#define BATTERY_TYPES_COUNT 1 /* only one type */
diff --git a/firmware/export/config/ibassodx90.h b/firmware/export/config/ibassodx90.h
index cd7ddf78cd..570a8d2a35 100644
--- a/firmware/export/config/ibassodx90.h
+++ b/firmware/export/config/ibassodx90.h
@@ -96,11 +96,9 @@
/* Which backlight fading type? */
#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_SETTING
-
-
#define HAVE_SW_TONE_CONTROLS
#define HAVE_SW_VOLUME_CONTROL
-#define HW_SAMPR_CAPS SAMPR_CAP_ALL_96
+#define HW_SAMPR_CAPS SAMPR_CAP_ALL_192
//#define HAVE_MULTIMEDIA_KEYS
#define CONFIG_KEYPAD DX50_PAD
@@ -110,7 +108,7 @@
#define BATTERY_CAPACITY_DEFAULT 2100 /* default battery capacity */
#define BATTERY_CAPACITY_MIN 1700 /* min. capacity selectable */
-#define BATTERY_CAPACITY_MAX 3200 /* max. capacity selectable */
+#define BATTERY_CAPACITY_MAX 7300 /* max. capacity selectable */
#define BATTERY_CAPACITY_INC 50 /* capacity increment */
#define BATTERY_TYPES_COUNT 1 /* only one type */
diff --git a/firmware/export/config/iriverifp7xx.h b/firmware/export/config/iriverifp7xx.h
deleted file mode 100644
index 0db9a7810d..0000000000
--- a/firmware/export/config/iriverifp7xx.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * This config file is for iriver iFP-799
- */
-
-#define IRIVER_IFP7XX_SERIES 1
-
-#define MODEL_NAME "iriver iFP-799"
-
-/* For Rolo and boot loader */
-#define MODEL_NUMBER 6
-
-/* define this if you have recording possibility */
-/*#define HAVE_RECORDING*/
-
-
-
-
-/* define this if you would like tagcache to build on this target */
-/* #define HAVE_TAGCACHE */
-
-/* LCD dimensions */
-#define LCD_WIDTH 128
-#define LCD_HEIGHT 64
-/* sqrt(128^2 + 64^2) / 1.0 = 143.1 */
-#define LCD_DPI 143
-#define LCD_DEPTH 1
-
-#define LCD_PIXELFORMAT VERTICAL_PACKING
-
-/* Display colours, for screenshots and sim (0xRRGGBB) */
-#define LCD_DARKCOLOR 0x000000
-#define LCD_BRIGHTCOLOR 0x5e6854
-#define LCD_BL_DARKCOLOR 0x000000
-#define LCD_BL_BRIGHTCOLOR 0x3ca0e6
-
-#define CONFIG_KEYPAD IRIVER_IFP7XX_PAD
-
-#define CONFIG_STORAGE STORAGE_NAND
-
-#define CONFIG_NAND NAND_IFP7XX
-
-#define HAVE_FAT16SUPPORT
-
-
-
-
-/* Define this if you have a software controlled poweroff */
-#define HAVE_SW_POWEROFF
-
-/* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x38000
-
-/* The number of bytes reserved for loadable plugins */
-#define PLUGIN_BUFFER_SIZE 0x10000
-
-/* Define this if you have the WM8975 audio codec */
-/* #define HAVE_WM8975 */
-
-#define HAVE_LCD_CONTRAST
-
-#define MIN_CONTRAST_SETTING 5
-#define MAX_CONTRAST_SETTING 63
-#define DEFAULT_CONTRAST_SETTING 40
-
-/* define this if you have a flash memory storage */
-#define HAVE_FLASH_STORAGE
-
-#define BATTERY_CAPACITY_DEFAULT 1000 /* default battery capacity */
-#define BATTERY_CAPACITY_MIN 500 /* min. capacity selectable */
-#define BATTERY_CAPACITY_MAX 2800 /* max. capacity selectable */
-#define BATTERY_CAPACITY_INC 50 /* capacity increment */
-#define BATTERY_TYPES_COUNT 2 /* Alkalines or NiMH */
-
-#define CONFIG_BATTERY_MEASURE VOLTAGE_MEASURE
-
-/* define this if the unit should not shut down on low battery. */
-#define NO_LOW_BATTERY_SHUTDOWN
-
-/* Define this if you have a Philips PNX0101 */
-#define CONFIG_CPU PNX0101
-
-/* Define this if you want to use the PNX0101 i2c interface */
-#define CONFIG_I2C I2C_PNX0101
-
-/* The start address index for ROM builds */
-#define ROM_START 0x00000000
-
-/* Define this for LCD backlight available */
-#define HAVE_BACKLIGHT
-
-/* Define this to the CPU frequency */
-#define CPU_FREQ 48000000
-
-#define CONFIG_LCD LCD_IFP7XX
-
-/* Offset ( in the firmware file's header ) to the file length */
-#define FIRMWARE_OFFSET_FILE_LENGTH 0
-
-/* Offset ( in the firmware file's header ) to the file CRC */
-#define FIRMWARE_OFFSET_FILE_CRC 0
-
-/* Offset ( in the firmware file's header ) to the real data */
-#define FIRMWARE_OFFSET_FILE_DATA 8
-
-#define USB_ISP1582
-
-#define HAVE_GDB_API
-
-/* Define this if you have adjustable CPU frequency */
-#define HAVE_ADJUSTABLE_CPU_FREQ
-
-#define BOOTFILE_EXT "iriver"
-#define BOOTFILE "rockbox." BOOTFILE_EXT
-#define BOOTDIR "/.rockbox"
-
-#define IBSS_ATTR_VOICE_STACK
-#define ICODE_ATTR_TREMOR_NOT_MDCT
-#define ICODE_ATTR_TREMOR_MDCT
-#define ICODE_ATTR_FLAC
-#define IBSS_ATTR_FLAC_DECODED0
-#define ICONST_ATTR_MPA_HUFFMAN
-#define IBSS_ATTR_MPC_SAMPLE_BUF
-#define ICODE_ATTR_ALAC
-#define IBSS_ATTR_SHORTEN_DECODED0
-
-#define IRAM_LCDFRAMEBUFFER IBSS_ATTR /* put the lcd frame buffer in IRAM */
-
-/* Define this if a programmable hotkey is mapped */
-#define HAVE_HOTKEY
diff --git a/firmware/export/config/logikdax.h b/firmware/export/config/logikdax.h
deleted file mode 100644
index 47229f7a1d..0000000000
--- a/firmware/export/config/logikdax.h
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * This config file is for the Logik DAX MP3/DAB
- */
-
-/* For Rolo and boot loader */
-#define MODEL_NUMBER 33
-
-#define MODEL_NAME "Logik DAX MP3/DAB"
-
-/* define this if you have recording possibility */
-//#define HAVE_RECORDING
-
-/* Define bitmask of input sources - recordable bitmask can be defined
- explicitly if different */
-//#define INPUT_SRC_CAPS (SRC_CAP_MIC | SRC_CAP_LINEIN | SRC_CAP_SPDIF)
-
-#if 0 /* Enable for USB driver test */
-#define HAVE_USBSTACK
-#define USB_VENDOR_ID 0x13d1
-#define USB_PRODUCT_ID 0x1002
-#endif
-
-
-
-
-
-/* define this if you can flip your LCD */
-#define HAVE_LCD_FLIP
-
-/* define this if you can invert the colours on your LCD */
-#define HAVE_LCD_INVERT
-
-/* define this if you have access to the quickscreen */
-#define HAVE_QUICKSCREEN
-
-/* define this if you would like tagcache to build on this target */
-#define HAVE_TAGCACHE
-
-#define HAVE_FAT16SUPPORT
-
-/* define this if you have a flash memory storage */
-#define HAVE_FLASH_STORAGE
-
-#define CONFIG_STORAGE STORAGE_NAND
-
-#define CONFIG_NAND NAND_TCC
-
-/* LCD dimensions */
-#define LCD_WIDTH 128
-#define LCD_HEIGHT 64
-/* sqrt(128^2 + 64^2) / 1.0 = 143.1 */
-#define LCD_DPI 143
-#define LCD_DEPTH 1
-
-#define LCD_PIXELFORMAT VERTICAL_PACKING
-
-/* Display colours, for screenshots and sim (0xRRGGBB) */
-#define LCD_DARKCOLOR 0x000000
-#define LCD_BRIGHTCOLOR 0x5a915a
-#define LCD_BL_DARKCOLOR 0x000000
-#define LCD_BL_BRIGHTCOLOR 0x82b4fa
-
-/* define this to indicate your device's keypad */
-#define CONFIG_KEYPAD LOGIK_DAX_PAD
-
-/* define this if you have a real-time clock */
-#define CONFIG_RTC RTC_TCC77X
-
-/* define this if you have RTC RAM available for settings */
-//#define HAVE_RTC_RAM
-
-/* Define this if you have a software controlled poweroff */
-#define HAVE_SW_POWEROFF
-
-/* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x38000
-
-/* The number of bytes reserved for loadable plugins */
-#define PLUGIN_BUFFER_SIZE 0x10000
-
-#define AB_REPEAT_ENABLE
-
-
-
-
-/* The DAX uses built-in WM8731 codec */
-#define HAVE_WM8731
-/* Codec is slave on serial bus */
-#define CODEC_SLAVE
-/* WM8731 has no tone controls, so we use the software ones */
-#define HAVE_SW_TONE_CONTROLS
-
-/* Define this for LCD backlight available */
-#define HAVE_BACKLIGHT
-
-#define CONFIG_I2C I2C_TCC77X
-
-#define BATTERY_CAPACITY_DEFAULT 1500 /* default battery capacity */
-#define BATTERY_CAPACITY_MIN 1500 /* min. capacity selectable */
-#define BATTERY_CAPACITY_MAX 3200 /* max. capacity selectable */
-#define BATTERY_CAPACITY_INC 50 /* capacity increment */
-#define BATTERY_TYPES_COUNT 1 /* only one type */
-
-#define CONFIG_BATTERY_MEASURE VOLTAGE_MEASURE
-
-/* define this if the unit should not shut down on low battery. */
-#define NO_LOW_BATTERY_SHUTDOWN
-
-/* Define this if you have a TCC773L */
-#define CONFIG_CPU TCC773L
-
-/* Define this if you have ATA power-off control */
-#define HAVE_ATA_POWER_OFF
-
-#define HAVE_FAT16SUPPORT
-
-/* Define this to the CPU frequency */
-#define CPU_FREQ 120000000
-
-/* Offset ( in the firmware file's header ) to the file length */
-#define FIRMWARE_OFFSET_FILE_LENGTH 0
-
-/* Offset ( in the firmware file's header ) to the file CRC */
-#define FIRMWARE_OFFSET_FILE_CRC 4
-
-/* Offset ( in the firmware file's header ) to the real data */
-#define FIRMWARE_OFFSET_FILE_DATA 6
-
-/* The start address index for ROM builds */
-/* #define ROM_START 0x11010 for behind original Archos */
-#define ROM_START 0x7010 /* for behind BootBox */
-
-#define CONFIG_LCD LCD_SSD1815
-
-#define BOOTFILE_EXT "logik"
-#define BOOTFILE "rockbox." BOOTFILE_EXT
-#define BOOTDIR "/"
-
-#define IBSS_ATTR_VOICE_STACK
-#define ICODE_ATTR_TREMOR_NOT_MDCT
-#define ICODE_ATTR_TREMOR_MDCT
-#define ICODE_ATTR_FLAC
-#define IBSS_ATTR_FLAC_DECODED0
-#define ICONST_ATTR_MPA_HUFFMAN
-#define IBSS_ATTR_MPC_SAMPLE_BUF
-#define ICODE_ATTR_ALAC
-#define IBSS_ATTR_SHORTEN_DECODED0
-
-#define IRAM_LCDFRAMEBUFFER IBSS_ATTR /* put the lcd frame buffer in IRAM */
-
-/* Define this if a programmable hotkey is mapped */
-//#define HAVE_HOTKEY
diff --git a/firmware/export/config/sansac100.h b/firmware/export/config/sansac100.h
deleted file mode 100644
index c2956eed12..0000000000
--- a/firmware/export/config/sansac100.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * This config file is for the Sansa C100 series
- */
-
-#define MODEL_NAME "Sandisk Sansa c100 series"
-
-/* For Rolo and bootloader */
-#define MODEL_NUMBER 30
-
-/* define hardware samples rate caps mask */
-#define HW_SAMPR_CAPS (/*SAMPR_CAP_88 | */SAMPR_CAP_44/* | SAMPR_CAP_22 | SAMPR_CAP_11*/)
-
-
-
-
-/* define this if you have a colour LCD */
-#define HAVE_LCD_COLOR
-
-/* define this if you can flip your LCD */
-/*#define HAVE_LCD_FLIP*/
-
-/* define this if you can invert the colours on your LCD */
-/*#define HAVE_LCD_INVERT*/
-
-/* define this if you have access to the quickscreen */
-#define HAVE_QUICKSCREEN
-
-/* define this if you would like tagcache to build on this target */
-#define HAVE_TAGCACHE
-
-/* define this if you have a flash memory storage */
-#define HAVE_FLASH_STORAGE
-
-/* Only v1 */
-#define CONFIG_STORAGE STORAGE_NAND
-#define CONFIG_NAND NAND_TCC
-
-/* c100's with direct-to-NAND access are FAT16 */
-#define HAVE_FAT16SUPPORT
-
-/* LCD dimensions */
-#define LCD_WIDTH 128
-#define LCD_HEIGHT 64
-/* sqrt(128^2 + 64^2) / 1.7 = 84.2 */
-#define LCD_DPI 84
-#define LCD_DEPTH 16 /* 65536 colours */
-#define LCD_PIXELFORMAT RGB565 /*rgb565*/
-
-/*#define LCD_PIXELFORMAT VERTICAL_PACKING*/
-
-/* define this to indicate your device's keypad */
-#define CONFIG_KEYPAD SANSA_C100_PAD
-
-/* define this if you have a real-time clock */
-#define CONFIG_RTC RTC_TCC77X
-
-/* define this if you have RTC RAM available for settings */
-//#define HAVE_RTC_RAM
-
-/* Define this if you have a software controlled poweroff */
-#define HAVE_SW_POWEROFF
-
-/* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x50000
-
-/* The number of bytes reserved for loadable plugins */
-#define PLUGIN_BUFFER_SIZE 0x50000
-
-#define AB_REPEAT_ENABLE
-
-
-
-
-/* Define this if you have the TLV320 audio codec */
-#define HAVE_TLV320
-
-/*#define CONFIG_TUNER TEA5767*/
-
-/* TLV320 has no tone controls, so we use the software ones */
-#define HAVE_SW_TONE_CONTROLS
-
-/* Define this for LCD backlight available */
-#define HAVE_BACKLIGHT
-
-#define CONFIG_I2C I2C_TCC77X
-
-#define BATTERY_CAPACITY_DEFAULT 540 /* default battery capacity */
-#define BATTERY_CAPACITY_MIN 540 /* min. capacity selectable */
-#define BATTERY_CAPACITY_MAX 540 /* max. capacity selectable */
-#define BATTERY_CAPACITY_INC 50 /* capacity increment */
-#define BATTERY_TYPES_COUNT 1 /* only one type */
-
-#define CONFIG_BATTERY_MEASURE VOLTAGE_MEASURE
-
-/* define this if the unit should not shut down on low battery. */
-#define NO_LOW_BATTERY_SHUTDOWN
-
-/* Define this if you have a TCC770 */
-#define CONFIG_CPU TCC770
-
-/* Define this if you have ATA power-off control */
-#define HAVE_ATA_POWER_OFF
-
-/* Define this to the CPU frequency */
-#define CPU_FREQ 120000000
-
-/* Offset ( in the firmware file's header ) to the file CRC */
-#define FIRMWARE_OFFSET_FILE_CRC 0
-
-/* Offset ( in the firmware file's header ) to the real data */
-#define FIRMWARE_OFFSET_FILE_DATA 8
-
-/* The start address index for ROM builds */
-/* #define ROM_START 0x11010 for behind original Archos */
-#define ROM_START 0x7010 /* for behind BootBox */
-
-#define CONFIG_LCD LCD_S6B33B2
-
-#define BOOTFILE_EXT "c100"
-#define BOOTFILE "rockbox." BOOTFILE_EXT
-#define BOOTDIR "/.rockbox"
-
-#ifdef BOOTLOADER
-#define TCCBOOT
-#endif
-
-#define IRAM_LCDFRAMEBUFFER IBSS_ATTR /* put the lcd frame buffer in IRAM */
-
-/* Define this if a programmable hotkey is mapped */
-#define HAVE_HOTKEY
diff --git a/firmware/export/config/sansaconnect.h b/firmware/export/config/sansaconnect.h
index 465a576664..5909d3bf84 100644
--- a/firmware/export/config/sansaconnect.h
+++ b/firmware/export/config/sansaconnect.h
@@ -147,7 +147,7 @@
#define BATTERY_CAPACITY_INC 100 /* capacity increment */
#define BATTERY_TYPES_COUNT 1 /* only one type */
-#define CONFIG_BATTERY_MEASURE VOLTAGE_MEASURE
+#define CONFIG_BATTERY_MEASURE PERCENTAGE_MEASURE
/* define current usage levels */
#if 0
@@ -156,9 +156,6 @@
#define CURRENT_BACKLIGHT 200
#endif
-/* Hardware controlled charging with monitoring */
-//#define CONFIG_CHARGING CHARGING_MONITOR
-
#define CONFIG_CPU DM320
#define CONFIG_I2C I2C_DM320
@@ -182,11 +179,18 @@
/* Offset ( in the firmware file's header ) to the real data */
#define FIRMWARE_OFFSET_FILE_DATA 8
-#if 0
+/* Hardware controlled charging */
+#define CONFIG_CHARGING CHARGING_MONITOR
+
+#define CONFIG_USBOTG USBOTG_TNETV105
+
#define HAVE_USBSTACK
+#define HAVE_USB_POWER
+#define HAVE_USB_CHARGING_ENABLE
+#define HAVE_BOOTLOADER_USB_MODE
#define USB_VENDOR_ID 0x0781
#define USB_PRODUCT_ID 0x7480
-#endif
+#define USB_NUM_ENDPOINTS 5
#define INCLUDE_TIMEOUT_API
diff --git a/firmware/export/config/sansam200.h b/firmware/export/config/sansam200.h
deleted file mode 100644
index 95647013e7..0000000000
--- a/firmware/export/config/sansam200.h
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * This config file is for the Sansa M200 series
- */
-
-/* For Rolo and boot loader */
-#define MODEL_NUMBER 29
-
-#define MODEL_NAME "Sandisk Sansa m200 series"
-
-/* Enable FAT16 support */
-#define HAVE_FAT16SUPPORT
-
-/* define this if you have recording possibility */
-//#define HAVE_RECORDING
-
-/* Define bitmask of input sources - recordable bitmask can be defined
- explicitly if different */
-//#define INPUT_SRC_CAPS (SRC_CAP_MIC | SRC_CAP_LINEIN | SRC_CAP_SPDIF)
-
-
-
-
-/* define this if you can flip your LCD */
-#define HAVE_LCD_FLIP
-
-/* define this if you can invert the colours on your LCD */
-#define HAVE_LCD_INVERT
-
-/* define this if you have access to the quickscreen */
-#define HAVE_QUICKSCREEN
-
-/* define this if you would like tagcache to build on this target */
-#define HAVE_TAGCACHE
-
-/* define this if you have a flash memory storage */
-#define HAVE_FLASH_STORAGE
-
-#define CONFIG_STORAGE STORAGE_NAND
-
-#define CONFIG_NAND NAND_TCC
-
-/* LCD dimensions */
-#define LCD_WIDTH 128
-#define LCD_HEIGHT 64
-/* sqrt(128^2 + 64^2) / 1.8 = 79.5 */
-#define LCD_DPI 80
-#define LCD_DEPTH 1
-
-#define LCD_PIXELFORMAT VERTICAL_PACKING
-
-/* Display colours, for screenshots and sim (0xRRGGBB) */
-#define LCD_BARKCOLOR 0x000000
-#define LCD_BRIGHTCOLOR 0x5e6854
-#define LCD_BL_DARKCOLOR 0x000000
-#define LCD_BL_BRIGHTCOLOR 0x3ca0e6
-
-/* define this to indicate your device's keypad */
-#define CONFIG_KEYPAD SANSA_M200_PAD
-
-/* Define this to enable morse code input */
-#define HAVE_MORSE_INPUT
-
-/* define this if you have a real-time clock */
-#define CONFIG_RTC RTC_TCC77X
-
-/* define this if you have RTC RAM available for settings */
-//#define HAVE_RTC_RAM
-
-/* Define this if you have a software controlled poweroff */
-#define HAVE_SW_POWEROFF
-
-/* The number of bytes reserved for loadable codecs */
-#define CODEC_SIZE 0x38000
-
-/* The number of bytes reserved for loadable plugins */
-#define PLUGIN_BUFFER_SIZE 0x10000
-
-#define AB_REPEAT_ENABLE
-
-
-
-
-/* Define this if you have the TLV320 audio codec */
-#define HAVE_TLV320
-
-/* TLV320 has no tone controls, so we use the software ones */
-#define HAVE_SW_TONE_CONTROLS
-
-/* Define this for LCD backlight available */
-#define HAVE_BACKLIGHT
-
-#define CONFIG_I2C I2C_TCC77X
-
-#define BATTERY_CAPACITY_DEFAULT 1500 /* default battery capacity */
-#define BATTERY_CAPACITY_MIN 1500 /* min. capacity selectable */
-#define BATTERY_CAPACITY_MAX 3200 /* max. capacity selectable */
-#define BATTERY_CAPACITY_INC 50 /* capacity increment */
-#define BATTERY_TYPES_COUNT 1 /* only one type */
-
-#define CONFIG_BATTERY_MEASURE VOLTAGE_MEASURE
-
-/* define this if the unit should not shut down on low battery. */
-#define NO_LOW_BATTERY_SHUTDOWN
-
-/* Define this if you have a TCC770 */
-#define CONFIG_CPU TCC770
-
-/* Define this if you have ATA power-off control */
-#define HAVE_ATA_POWER_OFF
-
-/* Define this to the CPU frequency */
-#define CPU_FREQ 120000000
-
-/* Offset ( in the firmware file's header ) to the file CRC */
-#define FIRMWARE_OFFSET_FILE_CRC 0
-
-/* Offset ( in the firmware file's header ) to the real data */
-#define FIRMWARE_OFFSET_FILE_DATA 8
-
-#define CONFIG_LCD LCD_SSD1815
-
-#define BOOTFILE_EXT "m200"
-#define BOOTFILE "rockbox." BOOTFILE_EXT
-#define BOOTDIR "/"
-
-#define IBSS_ATTR_VOICE_STACK
-#define ICODE_ATTR_TREMOR_NOT_MDCT
-#define ICODE_ATTR_TREMOR_MDCT
-#define ICODE_ATTR_FLAC
-#define IBSS_ATTR_FLAC_DECODED0
-#define ICONST_ATTR_MPA_HUFFMAN
-#define IBSS_ATTR_MPC_SAMPLE_BUF
-#define ICODE_ATTR_ALAC
-#define IBSS_ATTR_SHORTEN_DECODED0
-
-#define IRAM_LCDFRAMEBUFFER IBSS_ATTR /* put the lcd frame buffer in IRAM */
-
-/* Define this if a programmable hotkey is mapped */
-#define HAVE_HOTKEY
diff --git a/firmware/export/cpu.h b/firmware/export/cpu.h
index aade199dd2..67509141aa 100644
--- a/firmware/export/cpu.h
+++ b/firmware/export/cpu.h
@@ -50,9 +50,6 @@
#if CONFIG_CPU == IMX31L
#include "imx31l.h"
#endif
-#ifdef CPU_TCC77X
-#include "tcc77x.h"
-#endif
#ifdef CPU_TCC780X
#include "tcc780x.h"
#endif
@@ -80,3 +77,6 @@
#if CONFIG_CPU == RK27XX
#include "rk27xx.h"
#endif
+#if CONFIG_CPU == X1000
+#include "x1000.h"
+#endif
diff --git a/firmware/export/dm320.h b/firmware/export/dm320.h
index def8508b0b..01f206bfc9 100644
--- a/firmware/export/dm320.h
+++ b/firmware/export/dm320.h
@@ -930,11 +930,27 @@ extern unsigned long _ttbstart;
#define MMC_ST1_DXFULL (1 << 3)
#define MMC_ST1_DAT3ST (1 << 4)
+#define MMC_IE_EDATDNE (1 << 0)
+#define MMC_IE_EBSYDNE (1 << 1)
+#define MMC_IE_ERSPDNE (1 << 2)
+#define MMC_IE_ETOUTRD (1 << 3)
+#define MMC_IE_ETOUTRS (1 << 4)
+#define MMC_IE_ECRCWR (1 << 5)
+#define MMC_IE_ECRCRD (1 << 6)
+#define MMC_IE_ECRCRS (1 << 7)
+#define MMC_IE_EDXRDY (1 << 9)
+#define MMC_IE_EDRRDY (1 << 10)
+#define MMC_IE_EDATED (1 << 11)
+
#define MMC_DMAMODE_RD_WORDSWAP (1 << 10)
#define MMC_DMAMODE_WR_WORDSWAP (1 << 11)
#define MMC_DMAMODE_WRITE (1 << 12)
#define MMC_DMAMODE_ENABLE (1 << 13)
#define MMC_DMAMODE_TIMEOUTIRQ_EN (1 << 14)
+
+#define MMC_DMASTAT1_RUNST (1 << 12)
+#define MMC_DMASTAT1_TOUTDT (1 << 13)
+
/*
* IO_EINTx bits
*/
@@ -1001,6 +1017,7 @@ extern unsigned long _ttbstart;
#define INTR_IRQ1_EXT0 INTR_EINT1_EXT0
#define INTR_IRQ1_EXT2 INTR_EINT1_EXT2
#define INTR_IRQ1_EXT7 INTR_EINT1_EXT7
+#define INTR_IRQ1_MMCSDMS0 INTR_EINT1_MMCSDMS0
#define INTR_IRQ1_MTC0 INTR_EINT1_MTC0
/*
diff --git a/firmware/export/installer.h b/firmware/export/ft6x06.h
index 802798618d..de1fdd0979 100644
--- a/firmware/export/installer.h
+++ b/firmware/export/ft6x06.h
@@ -19,13 +19,32 @@
*
****************************************************************************/
-#ifndef _INSTALLER_H_
-#define _INSTALLER_H_
+#ifndef __FT6x06_H__
+#define __FT6x06_H__
-/* Provisional interface for installing/dumping a bootloader */
+#include "config.h"
+#include <stdbool.h>
-extern int install_bootloader(const char* path);
-extern int dump_bootloader(const char* path);
-extern const char* installer_strerror(int rc);
+typedef void(*ft6x06_event_cb)(int, int, int);
-#endif /* _INSTALLER_H_ */
+struct ft6x06_state {
+ int event;
+ int pos_x;
+ int pos_y;
+};
+
+enum ft6x06_event {
+ FT6x06_EVT_NONE = -1,
+ FT6x06_EVT_PRESS = 0,
+ FT6x06_EVT_RELEASE = 1,
+ FT6x06_EVT_CONTACT = 2,
+};
+
+extern struct ft6x06_state ft6x06_state;
+
+void ft6x06_init(void);
+void ft6x06_set_event_cb(ft6x06_event_cb fn);
+void ft6x06_enable(bool en);
+void ft6x06_irq_handler(void);
+
+#endif /* __FT6x06_H__ */
diff --git a/firmware/export/gdb_api.h b/firmware/export/gdb_api.h
index 1836c5992e..d2358ee3bb 100644
--- a/firmware/export/gdb_api.h
+++ b/firmware/export/gdb_api.h
@@ -25,9 +25,6 @@
#include "config.h"
#define GDB_API_MAGIC 0x6db570b
-#ifdef IRIVER_IFP7XX_SERIES
-#define GDB_API_ADDRESS 0xc06000
-#endif
struct gdb_api
{
diff --git a/firmware/export/ifp_usb_serial.h b/firmware/export/ifp_usb_serial.h
deleted file mode 100644
index b56e5fff86..0000000000
--- a/firmware/export/ifp_usb_serial.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2006 by Tomasz Malesinski
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
-#ifndef _USB_SERIAL_H_
-#define _USB_SERIAL_H_
-
-void usb_serial_init(void);
-void usb_serial_put_byte(int b);
-int usb_serial_get_byte(void);
-int usb_serial_try_put_byte(int b);
-int usb_serial_try_get_byte(void);
-
-#endif
diff --git a/firmware/export/tcc77x.h b/firmware/export/tcc77x.h
deleted file mode 100644
index 3c457c5b38..0000000000
--- a/firmware/export/tcc77x.h
+++ /dev/null
@@ -1,262 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2007 Dave Chapman
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
-#ifndef __TCC77X_H__
-#define __TCC77X_H__
-
-#define CACHEALIGN_BITS (5)
-
-/* General-purpose IO */
-
-#define GPIOA (*(volatile unsigned long *)0x80000300)
-#define GPIOB (*(volatile unsigned long *)0x80000310)
-#define GPIOC (*(volatile unsigned long *)0x80000320)
-#define GPIOD (*(volatile unsigned long *)0x80000330)
-#define GPIOE (*(volatile unsigned long *)0x80000340)
-
-#define GPIOA_DIR (*(volatile unsigned long *)0x80000304)
-#define GPIOB_DIR (*(volatile unsigned long *)0x80000314)
-#define GPIOC_DIR (*(volatile unsigned long *)0x80000324)
-#define GPIOD_DIR (*(volatile unsigned long *)0x80000334)
-#define GPIOE_DIR (*(volatile unsigned long *)0x80000344)
-
-#define GPIOA_FUNC (*(volatile unsigned long *)0x80000308)
-#define GPIOB_FUNC (*(volatile unsigned long *)0x80000318)
-#define GPIOC_FUNC (*(volatile unsigned long *)0x80000328)
-#define GPIOD_FUNC (*(volatile unsigned long *)0x80000338)
-#define GPIOE_FUNC (*(volatile unsigned long *)0x80000348)
-
-#define BMI (*(volatile unsigned long *)0x80000364)
-
-/* Clock Generator */
-
-#define CLKCTRL (*(volatile unsigned long *)0x80000400)
-#define PLL0CFG (*(volatile unsigned long *)0x80000404)
-#define CLKDIVC (*(volatile unsigned long *)0x8000040c)
-#define MODECTR (*(volatile unsigned long *)0x80000410)
-#define BCLKCTR (*(volatile unsigned long *)0x80000414)
-#define SWRESET (*(volatile unsigned long *)0x80000418)
-#define PCLKCFG0 (*(volatile unsigned long *)0x8000041c)
-#define PCLKCFG1 (*(volatile unsigned long *)0x80000420)
-#define PCLKCFG2 (*(volatile unsigned long *)0x80000424)
-#define PCLKCFG3 (*(volatile unsigned long *)0x80000428)
-#define PCLKCFG4 (*(volatile unsigned long *)0x8000042c)
-#define PCLKCFG5 (*(volatile unsigned long *)0x80000430)
-#define PCLKCFG6 (*(volatile unsigned long *)0x80000434)
-
-#define PCLK_DAI PCLKCFG6
-
-/* Device bits for SWRESET & BCLKCTR */
-
-#define DEV_DAI (1<<0)
-#define DEV_USBD (1<<4)
-#define DEV_ECC (1<<9)
-#define DEV_NAND (1<<16)
-
-/* ADC */
-
-#define ADCCON (*(volatile unsigned long *)0x80000a00)
-#define ADCDATA (*(volatile unsigned long *)0x80000a04)
-#define ADCCONA (*(volatile unsigned long *)0x80000a80)
-#define ADCSTATUS (*(volatile unsigned long *)0x80000a84)
-#define ADCCFG (*(volatile unsigned long *)0x80000a88)
-
-
-/* Memory Controller */
-#define SDCFG (*(volatile unsigned long *)0xf0000000)
-#define SDFSM (*(volatile unsigned long *)0xf0000004)
-#define MCFG (*(volatile unsigned long *)0xf0000008)
-#define TST (*(volatile unsigned long *)0xf000000c)
-#define CSCFG0 (*(volatile unsigned long *)0xf0000010)
-#define CSCFG1 (*(volatile unsigned long *)0xf0000014)
-#define CSCFG2 (*(volatile unsigned long *)0xf0000018)
-#define CSCFG3 (*(volatile unsigned long *)0xf000001c)
-#define CLKCFG (*(volatile unsigned long *)0xf0000020)
-#define SDCMD (*(volatile unsigned long *)0xf0000024)
-
-
-/* IRQ Controller */
-#define EXT0_IRQ_MASK (1<<0)
-#define EXT1_IRQ_MASK (1<<1)
-#define EXT2_IRQ_MASK (1<<2)
-#define EXT3_IRQ_MASK (1<<3)
-#define I2SR_IRQ_MASK (1<<4)
-#define I2ST_IRQ_MASK (1<<5)
-#define TIMER0_IRQ_MASK (1<<6)
-#define USBD_IRQ_MASK (1<<8) /* USB 2.0 device */
-#define USBH_IRQ_MASK (1<<10) /* USB 1.1 host */
-#define ADC_IRQ_MASK (1<<16)
-#define USB_DMA_IRQ_MASK (1<<26) /* USB DMA */
-#define ECC_IRQ_MASK (1<<27)
-
-#define DAI_RX_IRQ_MASK I2SR_IRQ_MASK
-#define DAI_TX_IRQ_MASK I2ST_IRQ_MASK
-
-#define USB_DMA_IRQ_MASK (1<<26) /* USB DMA */
-
-#define IEN (*(volatile unsigned long *)0x80000100)
-#define CREQ (*(volatile unsigned long *)0x80000104)
-#define IREQ (*(volatile unsigned long *)0x80000108)
-#define IRQSEL (*(volatile unsigned long *)0x8000010c)
-#define ICFG (*(volatile unsigned long *)0x80000110)
-#define MREQ (*(volatile unsigned long *)0x80000114)
-#define TSTREQ (*(volatile unsigned long *)0x80000118)
-#define IRQ (*(volatile unsigned long *)0x80000120)
-#define FIQ (*(volatile unsigned long *)0x80000124)
-#define MIRQ (*(volatile unsigned long *)0x80000128)
-#define MFIQ (*(volatile unsigned long *)0x8000012c)
-#define TMODE (*(volatile unsigned long *)0x80000130)
-#define SYNC (*(volatile unsigned long *)0x80000134)
-#define WKUP (*(volatile unsigned long *)0x80000138)
-
-/* Timer Controller */
-
-#define TCFG0 (*(volatile unsigned long *)0x80000200)
-#define TCNT0 (*(volatile unsigned long *)0x80000204)
-#define TREF0 (*(volatile unsigned long *)0x80000208)
-#define TMREF0 (*(volatile unsigned long *)0x8000020c)
-#define TCFG1 (*(volatile unsigned long *)0x80000210)
-#define TCNT1 (*(volatile unsigned long *)0x80000214)
-#define TREF1 (*(volatile unsigned long *)0x80000218)
-#define TMREF1 (*(volatile unsigned long *)0x8000021c)
-#define TCFG2 (*(volatile unsigned long *)0x80000220)
-#define TCNT2 (*(volatile unsigned long *)0x80000224)
-#define TREF2 (*(volatile unsigned long *)0x80000228)
-#define TMREF2 (*(volatile unsigned long *)0x8000022c)
-#define TCFG3 (*(volatile unsigned long *)0x80000230)
-#define TCNT3 (*(volatile unsigned long *)0x80000234)
-#define TREF3 (*(volatile unsigned long *)0x80000238)
-#define TMREF3 (*(volatile unsigned long *)0x8000023c)
-#define TCFG4 (*(volatile unsigned long *)0x80000240)
-#define TCNT4 (*(volatile unsigned long *)0x80000244)
-#define TREF4 (*(volatile unsigned long *)0x80000248)
-#define TCFG5 (*(volatile unsigned long *)0x80000250)
-#define TCNT5 (*(volatile unsigned long *)0x80000254)
-#define TREF5 (*(volatile unsigned long *)0x80000258)
-#define TIREQ (*(volatile unsigned long *)0x80000260)
-#define TWDCFG (*(volatile unsigned long *)0x80000270)
-#define TWDCLR (*(volatile unsigned long *)0x80000274)
-#define TC32EN (*(volatile unsigned long *)0x80000280)
-#define TC32LDV (*(volatile unsigned long *)0x80000284)
-#define TC32CMP0 (*(volatile unsigned long *)0x80000288)
-#define TC32CMP1 (*(volatile unsigned long *)0x8000028c)
-#define TC32PCNT (*(volatile unsigned long *)0x80000290)
-#define TC32MCNT (*(volatile unsigned long *)0x80000294)
-#define TC32IRQ (*(volatile unsigned long *)0x80000298)
-
-/* TIREQ flags */
-#define TF0 (1<<8) /* Timer 0 reference value reached */
-#define TF1 (1<<9) /* Timer 1 reference value reached */
-#define TI0 (1<<0) /* Timer 0 IRQ flag */
-#define TI1 (1<<1) /* Timer 1 IRQ flag */
-
-/* NAND Flash Controller */
-
-#define NFC_CMD (*(volatile unsigned long *)0x90000000)
-#define NFC_SADDR (*(volatile unsigned long *)0x9000000C)
-#define NFC_SDATA (*(volatile unsigned long *)0x90000040)
-#define NFC_WDATA (*(volatile unsigned long *)0x90000010)
-#define NFC_CTRL (*(volatile unsigned long *)0x90000050)
- #define NFC_16BIT (1<<26)
- #define NFC_CS0 (1<<23)
- #define NFC_CS1 (1<<22)
- #define NFC_READY (1<<20)
-#define NFC_IREQ (*(volatile unsigned long *)0x90000060)
-#define NFC_RST (*(volatile unsigned long *)0x90000064)
-
-
-/* ECC controller */
-
-#define ECC_CTRL (*(volatile unsigned long *)0x80000900)
- #define ECC_DMA_REQ (1<<28)
- #define ECC_ENC (1<<27) /* MLC ECC3/4 */
- #define ECC_READY (1<<26)
- #define ECC_IEN (1<<25)
- #define ECC_MANUAL (1<<22)
- #define ECC_WCNT (1<<12) /* [21:12] */
- #define ECC_HOLD (1<<7)
- #define ECC_M4EN (1<<6)
- #define ECC_ZERO (1<<5)
- #define ECC_M3EN (1<<4)
- #define ECC_CNT_MASK (7<<1)
- #define ECC_CNT (1<<1)
- #define ECC_SLC (1<<0)
-
-#define ECC_BASE (*(volatile unsigned long *)0x80000904)
-#define ECC_MASK (*(volatile unsigned long *)0x80000908)
-#define ECC_CLR (*(volatile unsigned long *)0x8000090c)
-#define SLC_ECC0 (*(volatile unsigned long *)0x80000910)
-#define SLC_ECC1 (*(volatile unsigned long *)0x80000914)
-#define SLC_ECC2 (*(volatile unsigned long *)0x80000918)
-#define SLC_ECC3 (*(volatile unsigned long *)0x8000091c)
-#define SLC_ECC4 (*(volatile unsigned long *)0x80000920)
-#define SLC_ECC5 (*(volatile unsigned long *)0x80000924)
-#define SLC_ECC6 (*(volatile unsigned long *)0x80000928)
-#define SLC_ECC7 (*(volatile unsigned long *)0x8000092c)
-#define MLC_ECC0W (*(volatile unsigned long *)0x80000930)
-#define MLC_ECC1W (*(volatile unsigned long *)0x80000934)
-#define MLC_ECC2W (*(volatile unsigned long *)0x80000938)
-#define MLC_ECC0R (*(volatile unsigned long *)0x80000940)
-#define MLC_ECC1R (*(volatile unsigned long *)0x80000944)
-#define MLC_ECC2R (*(volatile unsigned long *)0x80000948)
-#define ECC_CORR_START (*(volatile unsigned long *)0x8000094c)
-#define ECC_ERRADDR(x) (*(volatile unsigned long *)(0x80000950+4*(x)))
-#define ECC_ERRDATA(x) (*(volatile unsigned long *)(0x80000960+4*(x)))
-#define ECC_ERR_NUM (*(volatile unsigned long *)0x80000970)
-
-
-/* Digital Audio Interface */
-#define DADI_L0 (*(volatile unsigned long *)0x80000000)
-#define DADI_R0 (*(volatile unsigned long *)0x80000004)
-#define DADI_L1 (*(volatile unsigned long *)0x80000008)
-#define DADI_R1 (*(volatile unsigned long *)0x8000000C)
-#define DADI_L2 (*(volatile unsigned long *)0x80000010)
-#define DADI_R2 (*(volatile unsigned long *)0x80000014)
-#define DADI_L3 (*(volatile unsigned long *)0x80000018)
-#define DADI_R3 (*(volatile unsigned long *)0x8000001c)
-
-#define DADO_L0 (*(volatile unsigned long *)0x80000020)
-#define DADO_R0 (*(volatile unsigned long *)0x80000024)
-#define DADO_L1 (*(volatile unsigned long *)0x80000028)
-#define DADO_R1 (*(volatile unsigned long *)0x8000002C)
-#define DADO_L2 (*(volatile unsigned long *)0x80000030)
-#define DADO_R2 (*(volatile unsigned long *)0x80000034)
-#define DADO_L3 (*(volatile unsigned long *)0x80000038)
-#define DADO_R3 (*(volatile unsigned long *)0x8000003c)
-
-#define DAMR (*(volatile unsigned long *)0x80000040)
-#define DAVC (*(volatile unsigned long *)0x80000044)
-
-#define DADI_L(x) (*(volatile unsigned long *)(0x80000000 + (x) * 8))
-#define DADI_R(x) (*(volatile unsigned long *)(0x80000004 + (x) * 8))
-#define DADO_L(x) (*(volatile unsigned long *)(0x80000020 + (x) * 8))
-#define DADO_R(x) (*(volatile unsigned long *)(0x80000024 + (x) * 8))
-
-/* USB 2.0 device system MMR base address */
-#define USB_BASE 0x90000b00
-
-#define USB_NUM_ENDPOINTS 3
-#define USB_DEVBSS_ATTR IBSS_ATTR
-
-/* Timer frequency */
-/* timers are based on XIN (12Mhz) */
-#define TIMER_FREQ (12000000)
-
-#endif
diff --git a/firmware/export/ucl_decompress.h b/firmware/export/ucl_decompress.h
new file mode 100644
index 0000000000..bea7564a94
--- /dev/null
+++ b/firmware/export/ucl_decompress.h
@@ -0,0 +1,32 @@
+/* Standalone UCL decompressor and uclpack-compatible unpacker,
+ * adapted for Rockbox from the libucl code.
+ *
+ * Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer
+ * All Rights Reserved.
+ *
+ * See firmware/common/ucl_decompress.c for full copyright notice
+ */
+#ifndef UCL_DECOMPRESS_H
+#define UCL_DECOMPRESS_H
+
+#include <stdint.h>
+#include <stdlib.h>
+
+#define UCL_E_OK 0
+#define UCL_E_INPUT_OVERRUN 1
+#define UCL_E_OUTPUT_OVERRUN 2
+#define UCL_E_LOOKBEHIND_OVERRUN 3
+#define UCL_E_INPUT_NOT_CONSUMED 4
+#define UCL_E_BAD_MAGIC 5
+#define UCL_E_BAD_BLOCK_SIZE 6
+#define UCL_E_UNSUPPORTED_METHOD 7
+#define UCL_E_TRUNCATED 8
+#define UCL_E_CORRUPTED 9
+
+extern int ucl_nrv2e_decompress_8(const uint8_t* src, uint32_t src_len,
+ uint8_t* dst, uint32_t* dst_len);
+
+extern int ucl_unpack(const uint8_t* src, uint32_t src_len,
+ uint8_t* dst, uint32_t* dst_len);
+
+#endif /* UCL_DECOMPRESS_H */
diff --git a/firmware/export/usb_ch9.h b/firmware/export/usb_ch9.h
index c11775b893..659bcca101 100644
--- a/firmware/export/usb_ch9.h
+++ b/firmware/export/usb_ch9.h
@@ -391,6 +391,23 @@ struct usb_debug_descriptor {
} __attribute__((packed));
/*-------------------------------------------------------------------------*/
+
+/* USB_DT_INTERFACE_ASSOCIATION: groups interfaces */
+struct usb_interface_assoc_descriptor {
+ uint8_t bLength;
+ uint8_t bDescriptorType;
+
+ uint8_t bFirstInterface;
+ uint8_t bInterfaceCount;
+ uint8_t bFunctionClass;
+ uint8_t bFunctionSubClass;
+ uint8_t bFunctionProtocol;
+ uint8_t iFunction;
+} __attribute__ ((packed));
+
+#define USB_DT_INTERFACE_ASSOCIATION_SIZE 8
+
+/*-------------------------------------------------------------------------*/
/* USB 2.0 defines three speeds, here's how Linux identifies them */
enum usb_device_speed {
diff --git a/firmware/export/x1000.h b/firmware/export/x1000.h
new file mode 100644
index 0000000000..102d4ec978
--- /dev/null
+++ b/firmware/export/x1000.h
@@ -0,0 +1,72 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2021 Aidan MacDonald
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#ifndef __X1000_H__
+#define __X1000_H__
+
+#include "config.h"
+
+/* Frequency of external oscillator EXCLK */
+//#define X1000_EXCLK_FREQ 24000000
+
+/* Maximum CPU frequency that can be achieved on the target */
+//#define CPU_FREQ 1008000000
+
+/* Only 24 MHz and 26 MHz external oscillators are supported by the X1000 */
+#if X1000_EXCLK_FREQ == 24000000
+# define X1000_EXCLK_24MHZ
+#elif X1000_EXCLK_FREQ == 26000000
+# define X1000_EXCLK_26MHZ
+#else
+# error "Unsupported EXCLK freq"
+#endif
+
+/* On-chip TCSM (tightly coupled shared memory), aka IRAM */
+#define X1000_TCSM_BASE 0xf4000000
+#define X1000_TCSM_SIZE (16 * 1024)
+
+/* External SDRAM */
+#define X1000_SDRAM_BASE 0x80000000
+#define X1000_SDRAM_SIZE (MEMORYSIZE * 1024 * 1024)
+
+/* Memory definitions for Rockbox */
+#define X1000_IRAM_BASE X1000_SDRAM_BASE
+#define X1000_IRAM_SIZE (16 * 1024)
+#define X1000_IRAM_END (X1000_IRAM_BASE + X1000_IRAM_SIZE)
+#define X1000_DRAM_BASE X1000_IRAM_END
+#define X1000_DRAM_SIZE (X1000_SDRAM_SIZE - X1000_IRAM_SIZE)
+#define X1000_DRAM_END (X1000_DRAM_BASE + X1000_DRAM_SIZE)
+#define X1000_STACKSIZE 0x1e00
+#define X1000_IRQSTACKSIZE 0x300
+
+/* Convert kseg0 address to physical address or uncached address */
+#define PHYSADDR(x) ((unsigned long)(x) & 0x1fffffff)
+#define UNCACHEDADDR(x) (PHYSADDR(x) | 0xa0000000)
+
+/* Defines for usb-designware driver */
+#define OTGBASE 0xb3500000
+#define USB_NUM_ENDPOINTS 9
+
+/* CPU cache parameters */
+#define CACHEALIGN_BITS 5
+#define CACHE_SIZE (16 * 1024)
+
+#endif /* __X1000_H__ */