diff options
author | Dana Conrad <dconrad@fastmail.com> | 2021-06-26 12:07:11 -0500 |
---|---|---|
committer | Aidan MacDonald <amachronic@protonmail.com> | 2021-07-18 12:14:35 +0000 |
commit | 3e7a09cb0dee0ee04b5c77f427bf89d990ec8d0b (patch) | |
tree | be1eb7e1d4166f60b245a0603e9f7dc11e1f5614 /firmware/export | |
parent | 64a24591aec049682167b193700a07572fc04c4c (diff) | |
download | rockbox-3e7a09cb0dee0ee04b5c77f427bf89d990ec8d0b.tar.gz rockbox-3e7a09cb0dee0ee04b5c77f427bf89d990ec8d0b.zip |
New Port: Eros Q Native
What works:
- LCD: 16-bit RGB565
- all buttons, including scrollwheel
- SD Card
- Battery level and charging/not charging status
- USB
- audio
- sample rate switching
- HP / LO detect, with "safe" fixed LO volume -
LO volume will only be put to user-defined max volume
if headphones are not present.
- rtc
- Plugins build, tried a couple and they seem OK
- Bootloader, installable to nand via usbboot
What doesn't work:
- Dual Boot
- power on/off has intermittent, low volume audio click
(sometimes it's completely silent, sometimes there's
a click)
- Audio uses 16-bit volume scaling, so clicking/popping
is pretty bad at lower volumes - need 32 bit volume
scaling, 24 bit I2S data
- USB HID keys not yet defined
- no jztool support
Unknowns:
- Stereo Switch pins: Direction select, AC_DC
(probably not even hooked up)
- What is the actual purpose of the Stereo Swtich?
- How does the bluetooth module connect?
"Someday" stuff:
- get LCD working at higher bit depth
- Bluetooth
Change-Id: I70dda8fc092c6e3f4352f2245e4164193f803c33
Diffstat (limited to 'firmware/export')
-rw-r--r-- | firmware/export/audiohw.h | 2 | ||||
-rw-r--r-- | firmware/export/config.h | 3 | ||||
-rw-r--r-- | firmware/export/config/erosqnative.h | 125 | ||||
-rw-r--r-- | firmware/export/eros_qn_codec.h | 35 |
4 files changed, 165 insertions, 0 deletions
diff --git a/firmware/export/audiohw.h b/firmware/export/audiohw.h index 5b2815149d..5a706da3b8 100644 --- a/firmware/export/audiohw.h +++ b/firmware/export/audiohw.h @@ -210,6 +210,8 @@ struct sound_settings_info #include "df1704.h" #elif defined(HAVE_PCM1792_CODEC) #include "pcm1792.h" +#elif defined(HAVE_EROS_QN_CODEC) +#include "eros_qn_codec.h" #elif defined(HAVE_NWZ_LINUX_CODEC) #include "nwzlinux_codec.h" #elif defined(HAVE_CS4398) diff --git a/firmware/export/config.h b/firmware/export/config.h index 5e7b2be6e4..702b821856 100644 --- a/firmware/export/config.h +++ b/firmware/export/config.h @@ -276,6 +276,7 @@ #define LCD_IHIFI800 68 /* as used by IHIFI 800 */ #define LCD_FIIOM3K 69 /* as used by the FiiO M3K */ #define LCD_SHANLING_Q1 70 /* as used by the Shanling Q1 */ +#define LCD_EROSQ 71 /* as used by the ErosQ (native) */ /* LCD_PIXELFORMAT */ #define HORIZONTAL_PACKING 1 @@ -596,6 +597,8 @@ Lyre prototype 1 */ #include "config/aigoerosq.h" #elif defined(SHANLING_Q1) #include "config/shanlingq1.h" +#elif defined(EROS_QN) +#include "config/erosqnative.h" #else //#error "unknown hwardware platform!" #endif diff --git a/firmware/export/config/erosqnative.h b/firmware/export/config/erosqnative.h new file mode 100644 index 0000000000..1b37b6042a --- /dev/null +++ b/firmware/export/config/erosqnative.h @@ -0,0 +1,125 @@ +/* + * This config file is for the AIGO EROS Q / EROS K (and its clones) + */ + +/* For Rolo and boot loader */ +#define MODEL_NAME "AIGO Eros Q Native" +#define MODEL_NUMBER 116 +#define BOOTFILE_EXT "erosq" +#define BOOTFILE "rockbox." BOOTFILE_EXT +#define BOOTDIR "/.rockbox" +#define FIRMWARE_OFFSET_FILE_CRC 0 +#define FIRMWARE_OFFSET_FILE_DATA 8 + +/* CPU defines */ +#define CONFIG_CPU X1000 +#define X1000_EXCLK_FREQ 24000000 +#define CPU_FREQ 1008000000 +#define HAVE_FPU + +#ifndef SIMULATOR +#define TIMER_FREQ X1000_EXCLK_FREQ +#endif + +/* kernel defines */ +#define INCLUDE_TIMEOUT_API +#define HAVE_SEMAPHORE_OBJECTS + +/* drivers */ +#define HAVE_I2C_ASYNC + +/* Buffers for plugsins and codecs */ +#define PLUGIN_BUFFER_SIZE 0x200000 /* 2 MiB */ +#define CODEC_SIZE 0x100000 /* 1 MiB */ + +/* LCD defines */ +#define CONFIG_LCD LCD_EROSQ +#define LCD_WIDTH 320 +#define LCD_HEIGHT 240 +#define LCD_DEPTH 16 /* Future Improvement: 18 or 24 bpp if display supports it */ +#define LCD_PIXELFORMAT RGB565 +/* sqrt(240^2 + 320^2) / 2.0 = 200 */ +#define LCD_DPI 200 +#define HAVE_LCD_COLOR +#define HAVE_LCD_BITMAP +#define HAVE_LCD_ENABLE +#define HAVE_LCD_SHUTDOWN +#define LCD_X1000_FASTSLEEP +//#define LCD_X1000_DMA_WAITFORFRAME + +#define HAVE_BACKLIGHT +#define HAVE_BACKLIGHT_BRIGHTNESS +#define MIN_BRIGHTNESS_SETTING 1 +#define MAX_BRIGHTNESS_SETTING 255 +#define BRIGHTNESS_STEP 5 +#define DEFAULT_BRIGHTNESS_SETTING 70 +#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_SETTING + +/* RTC settings */ +#define CONFIG_RTC RTC_X1000 + +/* Codec / audio hardware defines */ +#define HW_SAMPR_CAPS SAMPR_CAP_ALL_192 +#define HAVE_EROS_QN_CODEC +#define HAVE_SW_TONE_CONTROLS +#define HAVE_SW_VOLUME_CONTROL + +/* Button defines */ +#define CONFIG_KEYPAD EROSQ_PAD +#define HAVE_SCROLLWHEEL +#define HAVE_HEADPHONE_DETECTION +#define HAVE_LINEOUT_DETECTION + +/* Storage defines */ +#define CONFIG_STORAGE STORAGE_SD +#define HAVE_HOTSWAP +#define HAVE_HOTSWAP_STORAGE_AS_MAIN +#define HAVE_MULTIDRIVE +#define NUM_DRIVES 1 +#define STORAGE_WANTS_ALIGN +#define STORAGE_NEEDS_BOUNCE_BUFFER + +/* Power management */ +#define CONFIG_BATTERY_MEASURE VOLTAGE_MEASURE +#define CONFIG_CHARGING CHARGING_MONITOR +#define HAVE_SW_POWEROFF + +#ifndef SIMULATOR +#define HAVE_AXP_PMU 192 +#define HAVE_POWEROFF_WHILE_CHARGING +#endif + +/* Battery */ +#define BATTERY_TYPES_COUNT 1 +#define BATTERY_CAPACITY_DEFAULT 1300 /* default battery capacity */ +#define BATTERY_CAPACITY_MIN 1300 /* min. capacity selectable */ +#define BATTERY_CAPACITY_MAX 1300 /* max. capacity selectable */ +#define BATTERY_CAPACITY_INC 0 /* capacity increment */ + +#define CURRENT_NORMAL 100 // 1.7mA * 60s +#define CURRENT_BACKLIGHT 180 +#define CURRENT_MAX_CHG 500 // bursts higher if needed + +/* USB support */ +#ifndef SIMULATOR +#define CONFIG_USBOTG USBOTG_DESIGNWARE +#define USB_DW_ARCH_SLAVE +#define USB_DW_TURNAROUND 5 +#define HAVE_USBSTACK +#define USB_VENDOR_ID 0xc502 +#define USB_PRODUCT_ID 0x0023 +#define USB_DEVBSS_ATTR __attribute__((aligned(32))) +#define HAVE_USB_POWER +#define HAVE_USB_CHARGING_ENABLE +#define HAVE_BOOTLOADER_USB_MODE +#endif + +/* Rockbox capabilities */ +#define HAVE_VOLUME_IN_LIST +#define HAVE_FAT16SUPPORT +#define HAVE_ALBUMART +#define HAVE_BMP_SCALING +#define HAVE_JPEG +#define HAVE_TAGCACHE +#define HAVE_QUICKSCREEN +#define HAVE_HOTKEY diff --git a/firmware/export/eros_qn_codec.h b/firmware/export/eros_qn_codec.h new file mode 100644 index 0000000000..15c745c04b --- /dev/null +++ b/firmware/export/eros_qn_codec.h @@ -0,0 +1,35 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * + * Copyright (c) 2021 Andrew Ryabinin, Dana Conrad + * + * 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 _EROS_QN_CODEC_H +#define _EROS_QN_CODEC_H + +#define PCM5102A_VOLUME_MIN -740 +#define PCM5102A_VOLUME_MAX 0 + +AUDIOHW_SETTING(VOLUME, "dB", 0, 1, PCM5102A_VOLUME_MIN/10, PCM5102A_VOLUME_MAX/10, 0) + +/* this just calls audiohw_set_volume() with the last (locally) known volume, + * used for switching to/from fixed line out volume. */ +void pcm5102_set_outputs(void); + +#endif |