Commit Graph

4965 Commits

Author SHA1 Message Date
Solomon Peachy 60f581e8f5 usb: Add ability to prompt user about what to do upon usb insertion
v3: Add in config option
 v4: Bugfixes
 v5: Force a redraw upon exiting
 v6: keypress-in-chargeonly mode enables mass storage (and vice versa)
 v7: Fix bootloader builds
 v8: Update manual, and have bootloader respect keypresses
 v9: Change default to mass storage (ie no change in behavior)

 todo:
  * test-build dx50/dx90
  * Switch from yes/no to proper menu?
  * prevent WPS progress bar from drawing over us

Change-Id: I82e0ccb08497b7a5aa756ce77f1332ee963703a7

...

Change-Id: I7946cf240b18a4fa8ace5e25e1eb6e97b8b12d7c
2020-11-13 16:44:01 -05:00
William Wilgus f65fb2a64a h300, Others Bugfix Bootloader backlight_init()
backlight_init needs to be called after lcd_init when using
lcd_enable()

Change-Id: Id034835c903801fea49e2b972c110c1ec5106976
2020-11-13 18:08:01 +00:00
James Buren 8ac46f844f h300: fix one long-standing bootloader bug
This was introduced in e13c600133 back
when the author was trying to optimize the LCD code with DMA. For
whatever reason this broke the bootloader for the last 10 years or so
and no one could figure out why. This is now fixed.

However the bootloader is still currently broken in HEAD due to recent
changes to the LCD code. A fix for that is not yet known.

Change-Id: I046d53f9f391f558c391f2fadb6b260fe3be4d92
2020-11-13 18:08:01 +00:00
Solomon Peachy 388adff3cc pcm: Further cleanup of unused bits of the PCM ACPI:
* pcm_get_bytes_remaining()
 * pcm_calculate_peaks()
 * pcm_get_peak_buffer()

Nothing in-tree uses these at all (except for the lua plugin wrapper)

Change-Id: I971b7beed6760250c8b1ce58f401a601e1e2d585
2020-11-12 15:59:09 +00:00
William Wilgus 1a68856f52 Rocker Add WPS and Tree Hotkey, button codes in debug menu
VolUp+VolDown becomes the wps and tree (file browser) hotkey

Change-Id: I0cba96927420c318506bc0c15dabcb809cd81647
2020-11-12 01:22:32 -05:00
Moshe Piekarski c4254d10fc Fuze+: Fix misplaced rectangle when lcd_flip set
Change-Id: Ic5197d8dffd66cfefdb42242869b48b33aa4d042
2020-11-08 03:19:04 +00:00
Torne Wuff 5db83c155a pp5020: use ipod firmware timings for ATA PIO.
Some mSATA adapters seem to have trouble working with Rockbox using our
normal PIO timings; the timing value we use is probably out of spec and
is different to the OF. Switch to using the OF's timings according to
which PIO mode we select. This may not completely resolve problems with
these adapters but allows Rockbox to boot and play audio.

Change-Id: If73210700eb4af01864b373709ee1d15c775fb11
2020-11-04 03:03:19 +00:00
Solomon Peachy 8029c89808 erosq: Fix scrollwheel regression introduced in 125e97b0
Change-Id: Ie1a53d7140ffb09d8e3a19a41617fdc51344a619
2020-11-03 13:23:39 +00:00
Solomon Peachy 125e97b0bf hosted: Consolidate common /dev/input code shared by the hiby targets
* Enable dynamic number of input devices, needed for bluetooth support

Change-Id: Ic2425834eb9b0fff298899ab45f3115ce1d95e91
2020-10-31 14:17:22 +00:00
Amaury Pouly dd82f13fa1 nwz/alsa: various improvements
Also audiohw driver to specific device name, rewrite alsa controls code to
cache more data, thus making the code easier and use less stack. Avoid using
short/long in pcm alsa code since it's the wrong size on 64-bit (simulator
for example)

Change-Id: Ibc1ec44396e37b6cbdedbcf37300878638e5d2d3
2020-10-31 14:16:31 +00:00
Solomon Peachy ce9e7e7122 hosted: fix warning when LOGF is enabled
Change-Id: I67b4cbf8899860411869399143424a0e55d0d4ca
2020-10-31 14:10:46 +00:00
Solomon Peachy 7eee526e6a fix red introduced in the android pcm driver (rev fe2d52c)
Change-Id: I2fa160fd39842a5434cf11573b50061786e610ca
2020-10-31 01:44:48 +00:00
Solomon Peachy fe2d52cc7d pcm: Get rid of pcm_play_pause() and associated APIs
Nothing in the core has used it for some time.  It's exported to the
plugin API but the last plugins to use it were switched to the mixer API
back in 2011.

This allows us to get rid of pcm_play_dma_pause() from all audio drivers

Change-Id: Ic3fa02592316f84963e41d792d1cabb436d1ff6b
2020-10-31 01:18:27 +00:00
Solomon Peachy 7dbfda6c55 iaudiom5: Fix build.
Basically we're overflowing IRAM by 48 bytes.  Shrink the stack
by 48 bytes to compensate.

Fixing this properly will require careful decisions about what
(code and/or data) to eject from IRAM.

Change-Id: Ia3054280bcbd9813b9cce83f16ba4fbd15085110
2020-10-27 14:49:19 -04:00
Solomon Peachy 61f698715d coldfire: We need -fno-delete-null-pointer-checks in flash controller code
Change-Id: I9a3e4ced2c3d41f6a31a968af72659a1a14f702e
2020-10-27 10:29:59 -04:00
William Wilgus 299c237075 'Fix RED e200 Framebuffer_viewport_rewrite
Free malloc in checkwps too

Change-Id: I2b8fcbc94beb0644b643d3b7a9cb53bc26fc8a51
2020-10-26 15:50:42 -04:00
William Wilgus ada919fc11 FIX RED framebuffer viewport rewrite
Change-Id: I4cb8f580e15440d06f8d5fabb2fbf5147c67b49c
2020-10-26 14:35:30 -04:00
William Wilgus 3237ae4a4f LCD core move buf ptr and address look up function viewport struct
I'm currently running up against the limitations of the lcd_draw functions
I want these functions to be able to be used on any size buffer not
just buffers with a stride matching the underlying device

[DONE] allow the framebuffer to be decoupled from the device framebuffer
[DONE need examples] allow for some simple blit like transformations
[DONE] remove the device framebuffer from the plugin api
[DONE}ditto remote framebuffer
[DONE] remove _viewport_get_framebuffer you can call struct *vp = lcd_set_viewport(NULL) and vp->buffer->fb_ptr

while remote lcds may compile (and work in the sim) its not been tested on targets

[FIXED] backdrops need work to be screen agnostic

[FIXED] screen statusbar is not being combined into the main viewport correctly yet

[FIXED] screen elements are displayed incorrectly  after switch to void*

[FIXED] core didn't restore proper viewport on splash etc.

[NEEDS TESTING] remote lcd garbled data

[FIXED] osd lib garbled screen on bmp_part

[FIXED] grey_set_vp needs to return old viewport like lcd_set_viewport

[FIXED] Viewport update now handles viewports with differing buffers/strides by copying to the main buffer

[FIXED] splash on top of WPS leaves old framebuffer data (doesn't redraw)
[UPDATE] refined this a bit more to have clear_viewport set the clean bit and have skin_render do its own screen clear
scrolling viewports no longer trigger wps refresh
also fixed a bug where guisyncyesno was displaying and then disappearing

[ADDED!] New LCD macros that allow you to create properly size frame buffers in you desired size without wasting bytes
(LCD_ and LCD_REMOTE_)
LCD_STRIDE(w, h) same as STRIDE_MAIN
LCD_FBSTRIDE(w, h) returns target specific stride for a buffer W x H
LCD_NBELEMS(w, h) returns the number of fb_data sized elemenst needed for a buffer W x H
LCD_NATIVE_STRIDE(s) conversion between rockbox native vertical and lcd native stride (2bitH)
test_viewports.c has an example of usage

[FIXED!!] 2bit targets don't respect non-native strides
[FIXED] Few define snags

Change-Id: I0d04c3834e464eca84a5a715743a297a0cefd0af
2020-10-26 12:28:48 -04:00
James Buren bde72efa30 coldfire: make the RAM and ROM image locations configurable by macros
Change-Id: Ie27e39c34947b0391be621dafb8711c44e863a1c
2020-10-26 01:07:14 +00:00
Solomon Peachy d4a80ce94b pcm-alsa: fix red.
Change-Id: Id8d5442b0b3eb4ce3c20d1c9d24f07b5378cc22f
2020-10-25 08:38:24 -04:00
Solomon Peachy e7a492ef55 hosted: alsa: Fix two bugs when recording
Change-Id: Ib97857874676ea4aa8f04d44e048de8465a4da4f
2020-10-25 00:42:37 -04:00
Solomon Peachy 46e357f1bb ALSA: Further rework:
* Get rid of non-async (ie tick task) mode due to inherent brokenness
 * Get rid of nonblock mode; we never write if buffers aren't sufficient
 * Move driver init into pcm_open() instead of pcm_init()
 * Much better underrun handling
 * Better error handling in some situations
 * Add in recording functionality
 * Use smaller audio buffers to avoid glitching
 * Don't start audio buffer with silence
 * Allow device name to be overridden by target

Recording portions based on work done by Lorenzo Miori in g#633

Change-Id: I0197bdc1749c28109eb79def1e6a3e1d62d8cef3
2020-10-23 17:48:51 -04:00
William Wilgus 3a7a46d1c0 Hosted targets Fix timer cycle calculation overflow
at 1 GHZ the intermediate calculation for cycles overflows 32 bits
this makes timer fail even with sensible values
solution divide both sides by 100

Change-Id: I18a4054c2d06fb72531d5496bba562f71b03984f
2020-10-23 15:35:11 +00:00
Solomon Peachy 884d8922e3 hosted: Allow ALSA driver to switch output device at runtime
* Allow output device name to be specified
 * Set hw/swparams prior to actual playback start, not at init
 * If told to open a new device, cleanly close down old one.

Change-Id: Ib97310ec23588136c031466ee9c22312ab0f9f5a
2020-10-21 13:24:47 +00:00
Solomon Peachy 6b13437aff Add UI Simulator for Eros Q / K series
Change-Id: I9ffc101bd904b3f0e2d6a86a43fb1ae3fda73a19
2020-10-21 13:24:01 +00:00
Amaury Pouly 08513103c6 nwzstools: add NW-A820 nvp nodes
Change-Id: Iab79eb0c9b0bbf8fb7622f5630f385d56878507a
2020-10-18 22:34:16 +02:00
Solomon Peachy 6a94f1e995 sonynwz: Properly support multidrive, with hotswap of the SD card
Change-Id: I7eb8efb0986a395d5ffbcc06a54bb680e0b59e9d
2020-10-18 10:19:42 -04:00
Solomon Peachy edbdefa09a hosted: Drop a bootloader version string in /etc, and report it in debug menu
Change-Id: I4d72d7800dbff56619898b6bc9d0f81a6c561598
2020-10-17 21:40:40 -04:00
Solomon Peachy 6f9a157fca hosted: Fix USB mounting code to work with HAVE_MULTIDRIVE enabled
Change-Id: I48944c28903db117d3d883a5e777cafe5d055600
2020-10-17 18:38:49 -04:00
Solomon Peachy f3ec58c05b hosted: Support hot-swappable internal and external storage
Change-Id: I321e9da4d5087dbd91194e6faa35cd4a685a0495
2020-10-17 18:38:49 -04:00
Solomon Peachy d8d37ffdb8 Define a USB storage type, and hook it up for hosted targets
Change-Id: I56363c989139c7edf0b2c67b0aac9ef1adfacba2
2020-10-17 18:38:49 -04:00
Solomon Peachy 0a4a920029 hosted: ROLO: Fixes for PIVOT_ROOT targets
Change-Id: I4888bd5db6f8a419d312c6b017f676ba6c749d89
2020-10-17 18:38:46 -04:00
Solomon Peachy 012908e064 hosted: Fix HAVE_MULTIDRIVE to work properly with PIVOT_ROOT
Change-Id: Ibc97de5c345e88c19ad8ba8c05fefebbada08790
2020-10-17 17:10:52 -04:00
Solomon Peachy 13f5e123f9 samsung yp-r0/r1: use os-native opendir() in the low-level driver code
Fixes blank LCD on both R0/R1 and the PMU on the R1

Change-Id: I356907676f7a0a009897fd4895bf78c1022b71d1
2020-10-17 14:37:15 -04:00
Solomon Peachy 0e667ff5b0 sonynwz: use os-native opendir() in the low-level input driver code
instead of the rockbox opendir() wrapper.

Change-Id: I06e8c2d7997c7cc3d507f06659d46cdfd6a02ce3
2020-10-17 14:22:02 -04:00
Solomon Peachy c6d2a0358f hosted: open input device as read-only.
Change-Id: I4dcd98f45f41fe06a0a75a2a0dd45c753c2cf365
2020-10-16 14:37:01 -04:00
Solomon Peachy 2e07223690 m3k: Fixes for the M3K.
* Cannot turn off the LCD directly (have to rely on backlight)
 * Only insmod/rmmod the usb gadget modules if state changes

Change-Id: I9ea90177d496cd035ada93e04a93a7c6f2e84706
2020-10-15 14:11:41 -04:00
Solomon Peachy 0cde20fadb xduoox3: Disable the DAC's digital de-emphasis filter.
Whether or not this is correct depends on how the source material was
mastered, digitized, and/or encoded.  There is no setting appropriate
for everything.

Eventually I'd like to make this configurable, but I'd want to have it
shared with more than one target first.

Change-Id: I20a0eff4b3dc2517c33db49d4f72e85bf81d1ca6
2020-10-15 13:30:48 -04:00
Solomon Peachy d544ce46a7 hosted: Unify the USB code for the hiby-based players.
* Specify exported USB VID/PID in target config header
 * Don't fail if the sd filesystem has already been remounted
   (ie due to platform hotplug)

Change-Id: Ifd2dae0c4f15086bf2bf89eb093018b3c4d2b75d
2020-10-15 10:18:16 -04:00
Solomon Peachy 1b449abf39 erosq: Add battery discharge curve and initial runtime estimation.
(playing mp3 with headphones inserted lasted just over 13 hours)

Change-Id: Id610f911811eafd914db20000ae860c75e0d8a93
2020-10-14 08:37:00 -04:00
Solomon Peachy 19d45c9257 Work around wonky inline asm issue with creativezenvm build.
The right thing here probably to just not bother at all, as this
bootloader can't launch rockbox yet anyway.

Change-Id: I62bd22353b6adc9dbe35b94f3b60a6a67348356a
2020-10-13 21:48:23 -04:00
Solomon Peachy 26bebd77ab Fix more red.
Change-Id: Id1a45b420f8eb70a25010b058822b78f80db33d8
2020-10-13 19:45:03 -04:00
Solomon Peachy 09785a8499 fix more yellow
Change-Id: I74bad58707d05ea167169d4315c05eb0cd1c8b7b
2020-10-13 17:23:56 -04:00
Solomon Peachy b94db707fb Fix more warnings.
Change-Id: Ib3a9fc622a46b1fc72e94dcbc6d29d2e430cd81b
2020-10-13 15:48:31 -04:00
Solomon Peachy 431caa4311 imx31: Work around an apparently not-quite-kosher abuse of CPP
(we were trying to foward-declare functions from within static
 initializer context.  GCC no longer accepts this)

Change-Id: I58f316ecc84c8ab45fffc054955727a55714b0a3
2020-10-13 15:48:31 -04:00
Solomon Peachy f8bd54d575 iaudiox5: Fix red, due to slightly bogus asm
Change-Id: I6ebcda3452d4244b5e2d1a9bbeb9fff9a9456388
2020-10-13 14:18:35 -04:00
Solomon Peachy 4a3d046545 Fix a pile of yellow in the bootloader
Change-Id: Ia89a33bbb13683566e421ac2a002baa20cdb07de
2020-10-13 13:37:21 -04:00
Solomon Peachy e91f89a410 xduoox3ii: Update battery curve.
Change-Id: I2cc04d696631ba887fa8943d94360f902bf12e85
2020-10-13 16:01:55 +00:00
Solomon Peachy 078c34e951 hosted: More PCM muting work
* Track mute state, only call hw if actual change is needed
 * Don't unmute in audiohw_postinit()
 * sample rate tracking fixes
 * erosq:  Don't start up muted

Change-Id: I004f787a4b7ea73c16b6ec9818ec29a12c89f46b
2020-10-12 15:33:32 +00:00
Solomon Peachy 01dc81cd94 rolo: hosted: Make display output non-glitchy
Change-Id: I63d6a28d67fa56d3541aaa121356c8ff2ce10bbe
2020-10-12 11:16:15 -04:00
Solomon Peachy 141e91ef1f Hosted PCM: Rework auto-muting code a bit
* If AUDIOHW_MUTE_ON_PAUSE, no meaningful change
     * Unconditionally unmute on playback start
     * xduoox3ii:  Mute on sample rate change
     * rocker/xduoo:  Stay muted after startup

    This avoids the nasty "pop" on startup, without doing
    the full mute-on-pause stuff that causes unacceptable
    dropouts on the X3ii.

Change-Id: I2e3ee0bb8094e288f37a0acada86a80016ce5cac
2020-10-12 13:40:37 +00:00
Solomon Peachy 135b3f6416 Fix inverted test that made SDL_APP unhappy
Change-Id: I18a51ddd0fa7fd0afda938c732fadce4cd87c262
2020-10-11 18:35:55 -04:00
Solomon Peachy e1bc36ca31 Turn on ROLO for M3K too
Change-Id: I7e1b2168a70605c5a138d83fd69e847fd02af4a4
2020-10-11 18:34:04 -04:00
Solomon Peachy db6f21e295 hosted: sanitize handling of HOME_DIR
* HOME_DIR is now either "/" or special "<HOME>"
   * target-specific "home dir path" is defined solely by PIVOT_ROOT
 * PIVOT_ROOT path is now defined in toplevel config files
 * Make Samsung YP-R0/R1 and SONY_NWZ use PIVOT_ROOT too
 * Do not prepend PIVOT_ROOT path if the path already has it!
 * Do not play these games for __PCTOOL__ builds

Change-Id: I3d51ad902a5f9cafe45ba15ba654f30f1ec6113a
2020-10-11 17:47:34 -04:00
Solomon Peachy 2a471e288c New port: AIGO EROS Q / EROS K
The Q and K have a slightly different case, but the hardware under the
shell is completely identical.

These models are rebadged versions:

 * Hifiwalker H2   (== Q)
 * AGPTek H3       (== K)
 * Surfans F20     (== K)

Other notes:

  * Significant improvements in the shared Hiby-platform launcher/loader
    * SD card can theoretically be hot-swapped now
    * Support external USB mass storage!
  * Some consolidation of Hiby-platform targets
  * Some consolidation of plugin keymaps

Todo/known issues:

 * Keymaps need to be gone over properly
 * Convert to HAVE_SCROLLWHEEL?

Change-Id: I5a8a4f22c38a5b69392ca7c0a8ad8c4e07d9523c
2020-10-11 16:37:17 -04:00
Solomon Peachy 6533d983ca hosted: Add ROLO support for hosted targets
Change-Id: I2d46a63ee8225a9d9d77dd80a06c418af78c260c
2020-10-11 14:18:42 +00:00
Amaury Pouly 76fbb33adf nwztools: fix MW-WM1/A30 KAS, fix KAS length
Split WM1A/WM1Z because they don't have the same KAS. On newer devices, the KAS
is actually 64 bytes, not 60. The strange thing is that "get_dnk_nvp kas" returns
60 bytes whereas "get_dnk_prop kas" returns 64, not sure why.

Change-Id: I944d3d838209ba58388439af0cdf5d7c74f1f7fc
2020-10-11 13:08:03 +02:00
Solomon Peachy 5cfd3ae4e6 hosted: Use O_CLOEXEC for all open() and "e" for fopen() calls
This way we'll automatically close the files upon exec()

Change-Id: Ic0daca8fb56432830de4a2f4a86a77337121ecc7
2020-10-11 01:47:03 -04:00
Solomon Peachy 6c6642e8d5 m3k: Fix red bootloader build
Change-Id: I3a6e9e6222e6219484c6903325c985bff8af39ef
2020-10-09 19:54:49 -04:00
Solomon Peachy aabc8aca47 New port: FiiO M3K
Most credit goes to:  Roman Skylarov
Additional integration and refactoring by myself.

 *** COMPLETELY UNTESTED ***

Change-Id: Ia64c36d92e0214c6b15f7a868df286f8113ea27b
2020-10-09 12:41:18 -04:00
Solomon Peachy 88b2a45b5f xduoox3ii/x20: Define a sane BUTTON_LEFT/RIGHT alias
Change-Id: If11dfa50aeb8cb8b80de730c494d81a9e87880c4
2020-10-09 12:15:43 +00:00
Solomon Peachy 7a1bf01541 Undo the hacks that allowed targets without LEFT/RIGHT (UP/DN) to build.
Replaced them with warnings until they are fixed *PROPERLY*

Change-Id: I4425200e60f8b5224262a54f105b974cec471d22
2020-10-08 20:30:08 -04:00
Solomon Peachy dc81f96fd1 Don't compile audio codecs into native bootloader builds.
Change-Id: I0b2cc143572bf88423bdf7647cee0af567aee684
2020-10-08 19:20:50 -04:00
Solomon Peachy 914114fd21 FS13241: Get rid of the hacky hold switch emulation on the X3ii & X20
It doesn't work properly and interferes with the power button in the keymap.

Rework WPS keymap a bit to make single-tap power emulate lock.

Change-Id: I9d9b9b4adcea3764e6e427f484e051c9bab9d13b
2020-10-05 22:55:08 +00:00
Solomon Peachy f3ae48f552 hosted: control buttonlights along with the display backlight.
Change-Id: I03385db46e94ca1bb6a4e35c89f630145c9d40e5
2020-10-03 20:12:31 -04:00
Solomon Peachy 7642184fd9 alsa: Refactor pcm_dma_apply_settings_nolock()
Change-Id: I32190e6987afca99b24197ca7ae2853053062d30
2020-10-03 20:12:31 -04:00
Solomon Peachy c1d4bf290c coldfire: Fix iAudio M5 build
Change-Id: Iecbcfa16918be3abfaab0936a0dae9c9ed48933e
2020-10-03 16:56:19 -04:00
Solomon Peachy d5167b1221 coldfire: Allow building when 88KHz audio is disabled
Change-Id: Ieeacf591ad4233428dca99c347043e61abae1d1f
2020-10-03 15:57:38 -04:00
Solomon Peachy d4a620e85a alsa: introduce AUDIOHW_MUTE_ON_PAUSE, and have rocker use it.
Change-Id: I1edbb8e71a9c73baaeecb01b66cbee6c3f7b5f8f
2020-10-03 14:41:40 +00:00
Solomon Peachy 90c30bc7ef alsa: Explicitly mute the output when we stop playing, and unmute after playback starts
Allows us to avoid hearing the codec powering on and off.

Change-Id: Idaaff437932009952ed248be97eedf54cb4cf28e
2020-10-03 04:12:51 +00:00
Solomon Peachy c7eceea183 alsa: Handle underruns when starting a new stream
Unsure why this is happening, but now we detect and recover errors at
startup.

Also clean up the mismash of printf(), DEBUGF(), etc in favor of panicf() for the really serious stuff and logf() for everything else.

Change-Id: I9aaa620d55d556645c9a6d108541b987983b32a8
2020-10-03 01:04:53 +00:00
Solomon Peachy b0e1b245b4 alsa: Use larger playback buffers for higher bitrates
(existing ones apply up to 48KHz, scale up linearly to 192KHz)

Change-Id: Iac32d49b8073b63a5d40fd21f41437e6051cb8de
2020-10-02 09:50:38 -04:00
Solomon Peachy 90af40e90c imx233: Hardware codec supports up to 192KHz. Make it so!
Change-Id: If08a1d244f28092a5d5332d666fb9afdc78f35a9
2020-10-02 09:50:38 -04:00
Solomon Peachy 9892e468d5 hosted: Don't use O_SYNC for the framebuffer handle.
Change-Id: Iff4b1947fe053313d677b894c78250760aaef967
2020-10-02 09:48:59 -04:00
Solomon Peachy 9ee618e889 hosted: Fix overzealous spamming of backlight and lcd enable
This caused random delays in LCD activity, and also caused key inputs to go nuts

Change-Id: Ie483c86f7461455308f8c5f8999df313521c6b55
2020-10-02 02:24:42 +00:00
Solomon Peachy f4f3255edf xduoox3: Work out clocks for 176/192KHz support.
Note:  PCM mix buffer sizes are _way_ too small for these high bitrates

(We really need to make the mixer stuff use dynamic buffer sizes based
 on the bitrate.  Maybe pre-allocate a max size based on upper bitrate limit,
 but use only part of it at lower bitrates?  So we can have sane latency..)

Change-Id: Id7b4afd73dba7f1ffb84b2e1c016859fae5d6835
2020-10-01 17:30:22 -04:00
Solomon Peachy a96eb1a7f7 Fix warnings and errors introduced in b030bf5
Change-Id: I23966b6a79c0d2cbab2e01c649c1b991f460d8ad
2020-10-01 16:08:20 -04:00
Solomon Peachy b030bf5885 xduoox3ii/x20: Proper lineout detection and volume mangling.
hotplugging hp and lineout works, without blowing out eardrums.

Change-Id: I2df5c7a618bb2d1d77d416548d45dff9cfc619db
2020-10-01 15:41:30 -04:00
Solomon Peachy 6d47dc9a88 fix some of the red introduced in e43726d
Change-Id: Id1abb0dd11f8a8e79a80fc54e58a5a22706a03ad
2020-10-01 12:55:52 -04:00
Solomon Peachy e43726df2c hosted pcm-alsa improvements
* xduoo x3ii/x20:  Better line out support
 * less granular volume settings (too many steps before)
 * Better handling of swiching sample rates
 * Log actual sample rate in debug menu

Most credit goes to Roman Stolyarov
Additional integration [re]work by myself

Change-Id: I63af3740678cf2ed3170f61534e1029c81826bb6
2020-10-01 11:56:57 -04:00
Solomon Peachy 021b55735b hosted: fix shutdown crash in framebuffer code.
Change-Id: I78315b81ab8df0408abc64d5edb6af37db568ad7
2020-10-01 14:01:21 +00:00
Solomon Peachy 0a7b23097a Hosted: Improvements in the LCD code. (Roman Stolyarov)
* Kill LCD when turning off the backlight
 * Fix logic errors in lcd_enable() calls
 * Use ioctls instead of sysfs to twiddle lcd enable

Change-Id: I6864ff63d87b747ac48719b0f4ba2de00333a1d3
2020-10-01 12:49:39 +00:00
Solomon Peachy ff408fd717 Leave HOME_DIR out of default recording and playlist paths
The hosted filesystem code will automatically prepend HOME_DIR.

Change-Id: I36a76e51637ab2bb68353f8eb9ffac25ca75bad1
2020-09-30 18:56:54 +00:00
Solomon Peachy ae58b5aafe xduoox20: UI Simulator support
Change-Id: I2a03cea07fbad9fb5862ca69e4cfca2e8ca6b17f
2020-09-28 21:12:52 -04:00
Solomon Peachy 7719010ed7 hosted: Slightly cleaner shutdown; kill the display first.
Change-Id: I620d7afb2eb0556cde07c7828b134b13892e6db4
2020-09-29 00:27:49 +00:00
Solomon Peachy fd2e65e94d rocker: Increase the long-press shutdown delay a bit.
Change-Id: Ief64f3d39556efa7de7df32eb7613a29a466a02e
2020-09-29 00:27:27 +00:00
Solomon Peachy e404026308 jz4760: Implement USB DMA RX
Can be disabled at runtime by setting hold switch.

Boosts sysbench sequential write performance by 34-58%

Change-Id: I060c9d7dddc1b448f18aa46af8f8aff046e07843
2020-09-18 17:48:31 -04:00
William Wilgus 2df3a5b04c Headphone / lineout pause/resume #FS13237
Allow Lineout to behave like headphone port in regards to
plug/unplug pause/resume

Change-Id: I9cb2c9c40e0bdf3bf7e1e272164acd343f6b3850
2020-09-18 00:22:52 +00:00
Solomon Peachy ec413f7692 jz4760: Heavily rework USB driver to add working DMA support
* DMA Bulk IN (ie our TX) results in sequential transfers 33-68% faster.
 * DMA Bulk OUT (ie RX) is mostly stripped out due to complete brokenness.
 * Interrupt and control endpoints remain PIO-driven.

Other improvements:

1) Use consistent endpoint references (no magic numbers)
2) Greatly enhanced logging
3) DMA support can be compiled out completely
4) Setting lockswitch will disable all DMA operations at runtime
5) Much more robust error checking and recovery

Change-Id: I57b82e655e55ced0dfe289e379b0b61d8fe443b4
2020-09-17 11:26:04 -04:00
William Wilgus a66b908801 Xduoo X3 add headphone and lineout status to IO Ports debug menu
Change-Id: I9caf55c1249625dff7e437158afd20a526fa7499
2020-09-17 11:22:40 -04:00
William Wilgus 3c2b6809d9 Xduoo X3 no ADC after ROLO
Speachy suggested we don't shut down the adc on ROLO
this fixes the random adc drop out on ROLO

Change-Id: Ife7d679ce51a6f767963210ee650815f1de12223
2020-09-13 13:29:00 -04:00
William Wilgus c62493e98a Xduoo X3 Add tree scrolling FS#13240, Emulate Multibutton presses
Fixes deficiencies with the button system on the X3

  The x3 has an interesting button layout.
  Multiple key presses are NOT supported unless
  [BUTTON_POWER] is one of the combined keys

  As you can imagine this causes problems as the power button takes
  precedence in the button system and initiates a shutdown if the
  key is held too long
  instead of BUTTON_POWER use BUTTON_PWRALT in combination with other keys
  IF using as a prerequsite button then BUTTON_POWER should be used

  Multiple buttons are emulated by button_read_device but there are a few
  caveats to be aware of:

  Button Order Matters!
   different keys have different priorities, higher priority keys 'overide'
   the lower priority keys
  VOLUP[7] VOLDN[6] PREV[5] NEXT[4] PLAY[3] OPTION[2] HOME[1]

  There will be no true release or repeat events, the user can let off the
   button pressed initially and it will still continue to appear to be
   pressed as long as the second key is held

Tree scrolling is PLAY+NEXT or PLAY+PREV

Change-Id: I88dfee1c70a6a99659e8227f5becacc50cc43910
2020-09-13 16:23:24 +00:00
William Wilgus e18c2f3001 XduooX3 LCD tweaks #2
Group commands for a bit more speed

bitdelay was not being inlined
lower bitdelay to 12 cycles

Clean-up magic numbers

Change-Id: Ifeb57a5532807a598f1ec5e1c55f03e4aa1e133f
2020-09-08 14:37:46 +00:00
William Wilgus af24ff1fc3 XduooX3 Gpio reconfigure button system #2
Fix issue with first battery sample taking 30 seconds

Clean up code

Change-Id: If2437d241e0ab4e3d23b141f5d853b6cf3209b07
2020-09-06 11:06:54 +00:00
Solomon Peachy 53142ae9f5 jz4760: Fix and re-enable the hardware udelay() timer
Change-Id: I591b4f023776b3501fce03e08bfc87a355f4c69b
2020-09-06 02:09:21 +00:00
Solomon Peachy 2dadb8c7d6 jz4760: Use a #define for the timer id, not a raw number
Change-Id: Ic31267a2ae82beede72100c1cc5ddf7211aa0abe
2020-09-06 00:27:07 +00:00
Solomon Peachy d015165bc5 mips: Convert 'nop' to 'ssnop' -- for future-proofing
Change-Id: I17625f4d56a1f5205887cb47668a2dcb628053f4
2020-09-05 22:18:26 +00:00
Solomon Peachy 90a4f28c27 jz47xx: Audio path tweaks:
* Increase audio buffer size to better handle IRQ latency (256->2048)
 * Ensure DMA engine is idle prior to starting transfers
 * Set AIC to repeat last sample in case of underflows

Change-Id: I9c45c20481ee072e5882b7586fb7d50bd8ef2f35
2020-09-04 15:57:00 -04:00
William Wilgus 48a2b80c77 Xduoo Gpio fix bug
Change-Id: I76eda59a391a408d1a6642497d8cc4aeb93a0da1
2020-09-03 16:06:16 -04:00
Solomon Peachy 0cb162a76b mips: Heavily rework DMA & caching code
Based on code originally written by Amaury Pouly (g#1789, g#1791, g#1527)
but rebased and heavily updated.

Change-Id: Ic794abb5e8d89feb4b88fc3abe854270fb28db70
2020-09-03 15:34:28 -04:00
William Wilgus 1ae8213a64 XduooX3 Gpio reconfigure button system
only check button values with adc when buttons are actually pressed

battery level check frequency is now around 30 seconds
switched to polling for the battery voltage w/ timeout

Ifdef functions Allow BACK OPTION PLAY to be the first of a two key combo

Change-Id: Icb48d62ac8d82b4dc931df5e1c5b4a84a9a69772
2020-09-03 18:19:47 +00:00
Solomon Peachy 546212a977 jz4760: Dial down PIXCLK as low as possible
We don't use it on the X3.  Should we ever get another jz4760 target
we can revisit this.

Change-Id: I591d02c7e47b35424b3c96b776b31a38e3c8ceee
2020-09-02 13:39:05 -04:00
Solomon Peachy f913829d06 xduoox3: Disable the LCD and MSC0 clocks as we don't use them
Change-Id: If2261aed464fcbe3ea1f036dd18376fa8ff42e69
2020-09-02 16:59:13 +00:00
William Wilgus 1a8939cc3d XduooX3 Slow down greylib framerate
halves cpu usage

Change-Id: I3797b01ecd2f7615acfed53a77d8a1f51e947c8b
2020-09-02 16:57:05 +00:00
William Wilgus 35371df671 XduooX3 Debug Menu -- HW_info
add scrolling for clocks and such

moved to a switch based structure..  this ends up a lot cleaner

Change-Id: I940506c4b8dc73f0b776d20810780527cbf7e0d4
2020-09-02 16:38:43 +00:00
Solomon Peachy bb6fc21244 mips: use .set push/pop in asm code
Change-Id: I3e7bc7ffb8d6d0c5d18a6ab38b1a270559a62fb9
2020-09-02 08:29:04 -04:00
Solomon Peachy a7ebd92ec8 jz4760: use SYSFONT in the hw info debug screen, and restore old font
Change-Id: I0c2df20a8c87f7a5bdf25d59904d32806171a544
2020-08-31 13:40:49 -04:00
William Wilgus 790a5bb0ca Xduoo_x3 Boot Fix red from debug menu changes
Change-Id: I1a84cf28f8a3416d661a8e2e4dd31c9e86f50ba0
2020-08-31 02:45:09 -04:00
William Wilgus 63e6aec260 xduooX3 debug menu add GPIO IO Ports
Change-Id: I6ca9f005e412240235354b9369bcc3f4a4ad256f
2020-08-31 03:07:17 +00:00
Solomon Peachy 748133cf9d xduoox3: Fix bootloader build
Change-Id: Ia2f2dba4a263c82aebc7fab9da4ad69ef90565ea
2020-08-30 21:56:11 -04:00
Solomon Peachy 8dadce5c4c jz4760: Explicitly disable UARTs at startup
(Bootloader uses UART1, and leaves it running when it hands it off to us)

Change-Id: Icde1d713574582f18e9f91b5c95f3917fe324b74
2020-08-30 21:36:26 -04:00
William Wilgus 06e9abc428 XduooX3 Tweak LCD drive strength and slew
Change-Id: Ic5ee9e700a0c8acffc39b51cedc24ff44d230fd3
2020-08-30 17:26:43 -04:00
Solomon Peachy e06ab68166 xduoox3: Use correct "ms_clk" divider for SADC and be smarter with polling
Change-Id: Ibbbcd9fd1e7e2cfa896678cccaa00296c86c2c62
2020-08-30 01:45:15 -04:00
Solomon Peachy cc5b0439a8 jz4760: Prioritize Audio DMA and TCU0 (systick) above all others
(And loop in the IRQ handler to make sure we catch everything!)

Change-Id: I813272c69e981fdc214ec28448ced403ad366ea0
2020-08-30 01:45:15 -04:00
Solomon Peachy b01e9295e4 jz4760: Revert back to the delay loop udelay()
... the timer-based version used the same timer as our os tick!

Change-Id: Id84b308bfa1145cb8806e1029f2ca26159fb71e1
2020-08-30 01:45:15 -04:00
Solomon Peachy 733821b592 jz4760: Rework IRQ priorities, make audio the highest.
(it was effectively the _lowest_ prior to this.  wtf?)

Change-Id: I6905c5ba0d87a5e14aeae5d5b79f8f515ac5b806
2020-08-29 21:26:49 +00:00
Solomon Peachy 3dc4f817de jz4760: Disable dynamic clocking entirely.
Back off to 480MHz [max] clock, bus/mem clock of 120MHz.

576 is unstable on at least one unit, and 528 still glitches.

Change-Id: I020e48532524e739f3bfa42bed570381ccd34959
2020-08-29 14:59:46 -04:00
William Wilgus 3867f0b959 XduooX3 Sources WS changes
Change-Id: I17ae59e7ef0440756527ce50ab30f8bf34f79007
2020-08-29 10:14:03 -04:00
William Wilgus 31a1a29004 Xduoo X3 Tweak LCD settings
Adds contrast setting which actually sets the drive voltage

Change-Id: I173238e2efe9e50c6ef4cda9bf991e7ee5568ff5
2020-08-29 04:31:37 +00:00
Solomon Peachy 5e335f5c33 jz4760: do the MSC (ie SD) clocking setup when we change PLL0
Change-Id: Ia17b1d7069af507c3f029bcaed0f65e7e97df275
2020-08-29 00:29:25 -04:00
Solomon Peachy 4a6d8e91bb jz4740: Timer not re-enabled properly
(same fix as g#2703 for the jz4760)

Change-Id: Ic6467d9e6085e3057528b6d1a08b7c07e9dceab4
2020-08-28 15:19:07 +00:00
William Wilgus 77019c2c3c Xduoo_X3 Fix timer_set_period fail to reenable
when timer_set_period is called timer is stopped but never reenabled

Change-Id: I5cfc7a2d5620ff998005e013952b25f1e0a52754
2020-08-28 11:11:03 -04:00
Solomon Peachy 1aee168398 jz4760: Pull non-PLL init out of pll0_init() code.
So it only gets called once, at system startup.

Change-Id: I4c191519009e80dfb118065391295c88a014d25a
2020-08-28 10:41:41 -04:00
William Wilgus 5fb4c74bfb Xduoo X3 - Grey scale lib update
greylib on the xduoo x3 now matches the rest of the 1bit targets

Change-Id: I2685869da6734404356552cc9f4ed5f59ebd6650
2020-08-27 14:33:23 +00:00
Solomon Peachy a52eb1d8cc xduoox3: Include curves for both battery types
There is no way to detect this at runtime so it is a user setting

Change-Id: Ibc5b87312238c59e3678d512af27e3a3bcb9a58a
2020-08-26 18:18:02 +00:00
Solomon Peachy f4bf27c26e jz4760: fix the new udelay() to use _micro_seconds, not milliseconds
Change-Id: I4877b1c8e4a95259b5ade126e28458b65fbd3c4b
2020-08-26 11:56:04 -04:00
Solomon Peachy f791df1375 xduoox3: Update battery discharge curve and runtime estimates
(Brand new unit lasted one minute shy of 12 hours!)

Change-Id: I0330f43065412d432a45b555bb310f943eb526e7
2020-08-26 08:34:07 -04:00
Solomon Peachy 6920c089af jz4740: SD clock sequencing changes.
* Don't stop clock before switching speeds
 * Don't stop clock prior to transactions
 * Stop clock at the end of transactions

Will result in slightly better performance and some power saving when
we're not actively using the SD peripheral.

Change-Id: I1c82476cad97137b1469900645ecf7bb0887119a
2020-08-25 14:01:44 -04:00
Solomon Peachy 0aa2197d93 jz4760: SD driver enhancements:
* Check to see if clock is [not] running prior to [en|dis]abling it
 * Stop clock _prior_ to resetting controller
 * Stop clock after transaction is completed, not before initiating it
 * Use controller's low power mode (disables clocks when idle)
 * Fix, and enable, interrupt-driven DMA transfers
 * Fixes for full interrupt-driven operation  (WIP, still broken)

Change-Id: I723ffa6450fc85f97898c8a8b3e538ae31c4858e
2020-08-25 12:07:50 -04:00
Solomon Peachy 1b31101fdd jz4740: Fix potential deadlock in SD init code.
There's a code path that calls sd_init_device() while we hold sd_mtx, but
sd_init_device() tries to obtain the mutex while doing its work.

Change-Id: I882c595e9e7cd2224b1db0d413925668628476e9
2020-08-25 08:19:10 -04:00
Solomon Peachy 63ef81de31 jz4760: Give each SD interface its own DMA channel, semaphore, and mutex
* Allows both SD interfaces to have requests in flight simultaneously
 * Fixed a deadlock in the hotswap code
 * Ensure TX DMA is idle before initiating a request (bug due to a typo)

Change-Id: I988fa29df5f8e41fc6bbdcc517db89842003b34d
2020-08-25 12:16:33 +00:00
Solomon Peachy 6099767a18 SDL: If our eventloop fails, log the reason!
Change-Id: I028eb118b7da2701b54fce639ee0dbbb1e5a85bc
2020-08-24 21:21:33 -04:00
Johannes Rauh da190727e7 Enable boot from SD for Sansa e200
Change-Id: I0940f2cd5fc914d6d5061b5798b1a636009649b7
2020-08-19 19:17:01 -04:00
Solomon Peachy a9ac2d0ba3 jz4760: Use HW timer for more a more accurate udelay()
(More specifically, use the SoC's "OS Timer", slaved to the main XTAL so
 it doesn't matter how the main CPU is clocked)

Change-Id: I799561ac823ff7f659a05144cf03b6a13d57ea7b
2020-08-12 23:03:33 -04:00
Solomon Peachy 491b696669 Fix HOME_DIR path for Rocker, X3ii, and X20
Prevented plugins from accessing their config files properly

Change-Id: Ic3b115aaa9168fa30b98607aeacb1a12b5498a5f
2020-08-09 17:00:27 -04:00
Solomon Peachy 92d66f761f Un-hardcode 44.1KHz settings from ALSA and iBasso PCM code
Change-Id: I69a69dabc799f360b73b1cf252645bd4cde13715
2020-08-09 19:53:13 +00:00
Solomon Peachy 08c4b708ae jz4760: Move 11/22/44/88KHz back onto the PLL
PLL1 clock for those frequencies has been dropped from 508 to 169.5 MHz,
so it's still a respectable reduction.

(I'm not sure how/why it ever worked with the XTAL source, but it did,
 and was off by an audible amount)

Change-Id: I614d87e7dfdfe9210702b9c646d3863c06d6780b
2020-08-08 22:29:29 -04:00
Solomon Peachy b3a0187416 jz4760: Major clocking improvements for audio PLL
* for <= 48KHz, BCLK must be 256*freq  (ie bdiv = 4)
 * for <= 96KHz, BCLK must be 128*freq  (ie bdiv = 2)
 * for 11/22/44/88 KHz, disable PLL1 and run off XTAL
 * cut PLL1 with 12/24/48/98 KHz audio from 516->86MHz
 * cut PLL1 with 8/16/32/64 KHz audio from 426->106.5MHz

This should result in significant power savings for
common 44.1KHz audio playback, and pretty good savings
for everything else.

As an added bonus:

 * enable de-emphasis filters at 32, 44.1, and 48 KHz

Change-Id: Ie59067cd46c47e62abf4a32c53519efad104d6c8
2020-08-07 15:55:31 -04:00
Solomon Peachy eb0e41c1cc jz4760: Support dynamic reclocking!
default/low speed is 192 MHz, Max is 576

Downclock PCLK/MCLK/etc to 96MHz to save a bit of juice

Honestly the high speed could be dialed down to, eg 384
as this thing is so bloody fast..

Change-Id: Ie65597c74290f1603e65f69dae8e75b59c8ba0b4
2020-08-07 11:42:45 -04:00
Solomon Peachy 62146ed735 jz4760: Fixes in PLL calculation and reporting
Change-Id: I890c661fbff549de5a224d90e3fbda34c71b3a7e
2020-08-07 11:42:45 -04:00
Solomon Peachy e0bb30a1bd xduoox3: Set PLL0 to 480MHz, not 492.
PLL0 Needs to be a multiple of 48MHz for sane USB operation!

(Indeed, "typical" clock for this part is 528, but that seems a
 waste of power)

Also fixes a minor bugaboo in the jz4670 usb divisor calculation
that won't matter until we enable reclocking

Change-Id: I40b1fd1ae48871e50885981ccc8b01feb711b9a5
2020-08-07 03:44:01 +00:00
Solomon Peachy f554c78734 jz4760: Don't enable PLL1 until we need audio.
Change-Id: I6320ee9ac809da93c80e571d45f01e22c5bd1c40
2020-08-07 03:43:43 +00:00
Solomon Peachy 7ab063a157 jz7460: debugging improvements
Change-Id: Ie03609ebe8bff51eed26e3781fe2b8663cc49e3a
2020-08-07 03:43:43 +00:00
Solomon Peachy 5d1d431b97 FS#9295: Detect external power supply for ipod 1st & 2nd gen (Mark Fawcus)
Change-Id: I7b64c37ead60152c8a12556cfa344e225abc1980
2020-08-06 09:28:28 -04:00
Moshe Piekarski e3f6e9d9f6 imx233: rtc: generalize PERSISTENT0 fix
Change-Id: Id8452055534df239dcf5e535943ee918a93ec10c
2020-07-28 22:37:26 +00:00
MichaelRey fbe557d432 Fix IPod 3G USB Recognition Problem
Allow IPod 3rd generation to recognize when USB is connected and reboot into disk mode.
This problem is listed at the bottom of the Ipod status page https://www.rockbox.org/wiki/IpodStatus

Change-Id: I8f32afd065d3a91cddc56fe63454bd082bfa29b9
2020-07-28 01:13:48 +00:00
Solomon Peachy 5e72616618 FS#8778: Fix iPod 1G scroll wheel not being enabled (Mark Fawcus and Rune Pade)
They confirmed it worked in the original ticket.

Change-Id: I949f119554a1e8bbdd0e4160c104cbc4aa2bd17d
2020-07-28 01:07:45 +00:00
Moshe Piekarski 7f282b9280 imx233: rtc: Initialize PERSISTENT0 register
Prevents the rtc from breaking on power removal

Change-Id: I1e434285ccc27d864d2fd9454993d02cae32711d
2020-07-27 21:03:39 +00:00
Solomon Peachy a84176122c Fix two variable-set-but-not-used warnings
(found using -Os with gcc494 on the nano2g)

Change-Id: If0deee3e3cde50e6bf5aff595bebc0f134dcc393
2020-07-24 23:26:15 -04:00
Solomon Peachy 658026e626 [4/4] Remove HAVE_LCD_BITMAP, as it's now the only choice.
Note:  I left behind lcd_bitmap in features.txt, because removing it
would require considerable work in the manual and the translations.

Change-Id: Ia8ca7761f610d9332a0d22a7d189775fb15ec88a
2020-07-24 21:20:13 +00:00
Solomon Peachy 8cb555460f [3/4] Completely remove HWCODEC support
'swcodec' is now always set (and recording_swcodec for recording-capable
units) in feature.txt so the manual and language strings don't need to
all be fixed up.

Change-Id: Ib2c9d5d157af8d33653e2d4b4a12881b9aa6ddb0
2020-07-24 21:20:13 +00:00
Solomon Peachy 0c4f89370d [2/4] get rid of HAVE_LCD_CHARCELLS
HAVE_LCD_BITMAP is now redundant.

lcd_bitmap is always-on in features.txt so manual and lang strings
don't have to change

Change-Id: I08eeb20de48099ffc2dc23782711af368c2ec794
2020-07-24 21:20:13 +00:00
Solomon Peachy 092c340a20 [1/4] Remove SH support and all archos targets
This removes all code specific to SH targets

Change-Id: I7980523785d2596e65c06430f4638eec74a06061
2020-07-24 21:20:13 +00:00
Solomon Peachy ff8cca70a4 imx233: rtc: Explicitly clear the soft reset bit when initializing
If we come up and the RTC is in a reset state, we need to release that
before trying to initialze anything else.  (See IMX23RM 23.8.1 and 39.3.10)

Change-Id: I1820ab771ba81f7d428d07040b7d188d9f688127
2020-07-15 18:29:49 +00:00
Solomon Peachy 650eaa39c4 rk27xx: rename 'start' to '__start'
Change-Id: I3c5bbbc952222e840e82171431ba996a6a5d298b
2020-07-15 14:18:09 -04:00
Solomon Peachy c54170e8f6 mips: Adjust stack sizes
Main/IRQ  from:   7.5/0.75   to:  7.25/1.0

With the reduction of the opus codec stack usage, giving the IRQ stack
some additional breathing room is now possible.

Change-Id: Id0cd3747fcaab70e2360667ac8c1a97ba7234ccf
2020-07-15 11:43:39 -04:00
Solomon Peachy 65a91333ef FS#12082: Add Tuner support to the Nano2G (Bertrik Sikken)
(The serial portions of the patch were already present, this just pulls
 in the tuner enablements)

Change-Id: I8090e318f34835769ac0a56d7a48b9250631eb4f
2020-07-09 13:24:14 +00:00
Solomon Peachy 7381e8bd4d yp-r0: Silence a build warning in simulator build.
Change-Id: I024b6393d778261da151c9756ed38230054b0e7b
2020-07-07 18:34:14 +00:00
Lorenzo Miori 03e6cbec8f Samsung YP-R0/YP-R1: use Linux i2c-dev for radio chip access
Linux offers the high-level i2c-dev driver to directly access the
i2c bus(ses) on the system. This system device is used to get rid
of the (rather silly) radio chip kernel module for ypr0 target and
correctly enables radio access also for the ypr1 target.
fm-radio chip is located on i2c-0 bus on the ypr0 target while it
is located on i2c-1 bus on the ypr1 target.
Power-up (RST) pin is also handled for both targets, which is wired
to another GPIO of the i.MX 37 platform.
Additionally, this patch simplifies the RDS low-level handling by
exploiting the Si4709 debug interface which comes with a mutex
protection as free bonus.

Change-Id: I839282bec4a27ad0ad8403c5a8dd86963b77e1bf
2020-07-07 16:50:42 +00:00
Solomon Peachy 4fa57d7661 sdl: Get rid of duplicate instantiation of 'button_queue'
(Caused a build failure under GCC10's stricter '-fno-common' default)

Change-Id: I7d49c630771e8294e2ad8c740a4ada136a6befd7
2020-07-06 18:16:19 +00:00
Solomon Peachy 2d57bfba36 portalplayer: Fix three set-but-not-used warnings.
(They show up when building with gcc494)

Change-Id: Id5e2bccf18114ed78a557ac1b369f46b4f07d042
2020-07-05 17:15:57 +00:00
Solomon Peachy 495c8e2a69 imx31: Fix regression in bootloader caused by cd9906
Change-Id: I1b561c9136a727f49e02e53798e46ef9197a3958
2020-07-05 04:52:29 +00:00
Solomon Peachy 8105d7659f imx233: Fix bootloader link regression caused by cd9906
Change-Id: I6341069aa3855a8a3ea9ed021c27aaa742cab698
2020-07-05 04:17:17 +00:00
Solomon Peachy cd9906847b arm: Fix PortalPlayer linker scripts with binutils 2.21+
For reasons that are still unclear, the 'ncbss' region was overlapping
the "audiobuffer" when linked with 2.21, but okay with 2.20.

Fixed it by making the audiobuffer explcitly use the current position
instead of relying on it being implicit.

With this change, portalplayer-based targets generate working binaries
when built with binutils 2.21 or newer.

This bug also theoretically affects imx233/imx31 targets as they
also have NOCACHE_BASE games in their linker scripts, but I lack
access to one to test with.

Change-Id: Idb38ab20f03599b9ed3d4bc0eafe519f38677438
2020-07-05 03:34:30 +00:00
Solomon Peachy 58cb467583 xduoox3ii: Add UI Simulator bitmap, keymap, and fix offsets.
Change-Id: I8e322b93653cb43b010dfd5c0f566ea1c4c7b7ff
2020-06-12 15:31:30 +00:00
William Wilgus a8ae936f8c Sansa AMS add Minimum Clocks for I2c IDE SDSLOT SSP
This patch doesn't implement them just defines them

Change-Id: I1762152c3c683cc68bcedac5923c536316441613
2020-05-23 16:00:15 +02:00
William Wilgus 4f49d21992 Sansa AMS set I2C properly
Change-Id: I95c93933487c4260a7aa43ebed273ab2c05e55c1
2020-05-23 15:44:20 +02:00
William Wilgus 6ed38c89ae Sansa Clip+ set lcd SSP properly
Change-Id: I152f038954ac1649b30dd17c3e6332e4d756502c
2020-05-23 15:03:58 +02:00
William Wilgus 084aa9c1fd Sansa ClipZip set lcd SSP properly
Change-Id: Ice62dfa7f266ee4369793777a39e675bceae1831
2020-05-23 14:44:34 +02:00
Solomon Peachy 83d8b25fda filesystem: don't PIVOT_ROOT for checkps and simulator builds for hiby targets
Change-Id: I297cbfb60aa18c0895b27ffa787ef6fb9440e03c
2020-05-03 15:31:52 +02:00
William Wilgus 4382d3f5ed ClipZip LCD Corruption Backlight fix
User reported LCD screen corruption via forum in 3.14 and 3.15
turning backlight off and back on seems to fix the issue
http://forums.rockbox.org/index.php/topic,53192.0.html

Change-Id: Id0b34d2f9b77e79ab0ecabace331f0b203184724
2020-04-17 06:53:33 +02:00
Solomon Peachy 683abd77d2 Fix checkwps build for dx50 & dx90 targets
Their codec headers weren't in the right place.

Change-Id: Iae16c10defc937cc227afd8992ff45cd6d664898
2020-04-14 08:15:19 +02:00
Solomon Peachy a820a98361 obsolete: Nuke the very-incomplete Archos AV300 target
It's even missing a config header file.  Just shoot it in the head.

Change-Id: I4c5cdb4fb63361a4e4fc893e93d73d3890fe17df
2020-04-13 22:06:22 +02:00
Solomon Peachy 6984a7ce15 RTC: Add support RTC alarms on hosted targets
Only AGPTeck Rocker is enabled for now, and it doesn't work properly:

 * No generic way to determine wakeup reason under Linux
 * No generic way to be asynchronously notified if the alarm is
   triggered when we're already awake
 * Shutting down may clobber RTC wakeup (driver/etc dependent)

And finally:

 * AGPTek kernel's RTC driver has some 24h clock and
   some timezone-related issues.

So, the infrastructure is arguably useful, but the only applicable
hardware I have is pathologically brain-dead.

Change-Id: Iac6a26a9b6e4efec5d0b3030b87f456eb23fc01d
2020-04-11 18:02:26 +02:00
Solomon Peachy 5cdfe30e79 hiby: Use HAVE_LCD_ENABLE instead of HAVE_LCD_SLEEP
Change-Id: I93819f5ecaad9101a711a0cca626570c7aef0e57
2020-04-08 16:36:43 +02:00
Solomon Peachy 53b93ea6a6 hiby: Refactor X3ii/X20 and Rocker LCD code
Once some missing power optimization stuff was added to the X3ii code,
they were completely identical.

Change-Id: I68e4db5e270e8ff22f91e521616a054bd7baa95d
2020-04-08 15:56:06 +02:00
Marcin Bukat 180cef835b xDuoo X3II and X20 port
Provided by Roman Stolyarov
Integration, Refactoring, and Upstreaming by Solomon Peachy

X3II confirmed working by forum tester, X20 is nearly identical.

This includes bootloader, main firmware, and the flash image patcher.

Eventual Todo:

 * Further refactor AGPTek Rocker & xduoo hiby bootloaders
 * Further refactor AGPTek Rocker & xduoo hosted platform code

Change-Id: I34a674051d368efcc75d1d18c725971fe46c3eee
2020-04-06 18:15:41 +02:00
Solomon Peachy 87a40552fb simulator: Fix sim build for sdl/hosted targets
Change-Id: I39a7be7cf0ace47cd4aba2a01d9450e1ba41cb7b
2020-04-05 20:55:14 +02:00
Solomon Peachy 5bd86eb4b4 pp502x: Don't fill the cache starting from address 0x0
The pp502x cache init code tries to flush the cache by reading
a block of DRAM.  Change the starting point from 0x0 to 0x1000
so the compiler doesn't helpfully insert an undefined instruction
to deliberately crash the target.

(This behavior is intentional on the part of GCC, and was triggered
 by using -Os with my experimental 4.9.4 toolchain)

Change-Id: I2d2719615a1164a035f3dac8a56dd3737bbab1d5
2020-04-04 23:07:04 +02:00
Amaury Pouly 44fb7f384e sonynwz/scsitools: add NWZ-S610 series
Change-Id: I8977e1bcc805df463f7b08f11be889368db4eab2
2020-01-29 13:25:56 +01:00
Amaury Pouly d6c9303c75 sonynwz/scsitools: add support for NW-A56
Change-Id: I07e57218638ef62c0e4bf92833add6c3ba7bdcd8
2020-01-12 17:59:02 +01:00
William Wilgus 8794b95a72 Fix As3525 SD unused parameter warning
Change-Id: I0a4bbcf94e9cadf43a822c1cb2f2dad3bd4f7588
2019-12-30 23:41:46 -06:00
William Wilgus 9f336217c2 Sansa AS3525V1 Sd Interface implement powersave mode
This patch cleans up the sd driver for the V1 sansas
powersave implemented for the sd interface

Change-Id: I3d864f7aa304cf792cc65fa4ff06c1e52fbed329
2019-12-31 05:57:38 +01:00
William Wilgus 1da2708a7c Fix timer Agptek Rocker (other hosted players)
on timer_unregister callbacks are not removed

It seems (at least on the Rocker) timers continue to fire (for a bit??)

Now we store the registered callback in the sigev structure and check
that the callback matches the one registered when the timer is created.

This should stop the possible case of a new timer getting spurious callbacks
We also now NULL the callbacks on un-register which should stop the segfaults

Added some notes to timer.c and timer.h

Change-Id: Ia155c3a4e4af89f474d55ed845560ccc1fab85aa
2019-10-17 21:19:00 +02:00
Franklin Wei 3d6d90382e iPod Classic: enable IRAM1 in bootloader
7442742 ("iPod Classic: disable IRAM1") was causing subsequent ipod6g
bootloader builds to result in a completely black screen upon
installation, with recovery only possible with a reflash through DFU
mode.

IRAM1 is re-enabled for bootloader only.

Change-Id: I92d489c91f81cad55d66a8647c1e61a45f468770
2019-10-13 23:23:32 -04:00
Solomon Peachy 83963fcb15 XduooX3: Uncomment code that prevented hotswap from working.
Change-Id: I5efec00e60aacf05166407ad43b9d63340e18967
2019-07-29 11:14:41 -04:00
LiveboxAndy d462d26ff0 Fix issue with building the UI Simulator for Windows
Addition of rtc support for AGPtEK ROCKER broke building the UI Simulator
for Windows. This patch removes the rtc support if building UI Simulator for
Windows.
2019-07-26 20:11:33 -04:00
William Wilgus 5264a6eac1 Fix Truncation warning cpufreq-linux.c->cpufreq_available_governors
limit cpu identifer to 0xFFFF

Change-Id: I6fb170aa7ce32b7b5c0366bbd689878bb5069be8
2019-07-10 07:09:00 +02:00
Solomon Peachy 1e076a7be8 jz7460: Disable IRQ-driven DMA transfers.
This greatly increases the stability of SD card write operations.

(I suspect the underlying problem is not IRQ operation itself, instead
 being exacerbated by it..)

Change-Id: Ia00f0656abd4b3cb0b1b5fc9db7c1b6a02847956
2019-06-02 13:09:19 +02:00
Marcin Bukat e85a3ba518 Agptek rocker: do not update display when not active
Change-Id: I963a9098b82a09aed8050123932a128f2d08dee0
2019-05-31 15:17:33 +02:00
Amaury Pouly 063ff294a2 nwztools: add DMP-Z1 to the database
This is one of those fancy gold-plated devices. Of course it breaks my scripts
that were nicely expecting every device to start with NW.

Change-Id: I161320f620f65f4f92c2650d192b26a9831eeb9d
2019-04-22 23:45:33 +02:00
Sebastian Leonhardt 168e242498 Fix the fix
Change-Id: I54b97fd0c208f775e4ee22cf8499f1da423ebc39
2019-02-08 00:52:37 +01:00
Sebastian Leonhardt 26e0c64e34 Fix red and remove duplicated function declaration
Change-Id: I5fed7fdad077eedfc1e36fbd9e1669f11b90288d
2019-02-08 00:04:20 +01:00
Sebastian Leonhardt 666405f346 Simulator: improve simulation of transflective screens
This patch simulates the three possible states of a transflective
LCD: backlight on (bright screen as usual), backlight off (dimmed
screen) and LCD off (black screen).
Makes use of already defined 'BACKLIGHT_OFF_ALPHA'.

Change-Id: I9b0fc79b8d50c29e024ba1e6d9c2501119a7e0e0
2019-02-07 22:52:07 +01:00
Sebastian Leonhardt 03e63da316 YH820: implement LCD sleep
use sleep setting to keep transflective LCD active without backlight

Change-Id: Iccd97e956d5e4a2a22abc90d15e9123782126ecb
2019-02-07 20:04:19 +01:00
Solomon Peachy d24edc605b Add HAVE_LINEOUT_DETECTION and associated logic
This allows targets to automatically switch audio settings when the
line out is plugged/unplugged.

Only hooked up on the xDuoo X3, but there are other potential users.

Change-Id: Ic46a329bc955cca2e2ad0335ca16295eab24ad59
2019-01-04 23:52:42 +01:00
Solomon Peachy 52ed74aad0 mips: Adjust main & irq stack sizes to fit in IRAM on all targets
New amounts:

7.50K main stack
0.75K irq stack

Prior values of 8K+1K overflowed IRAM by ~660 bytes on Onda 7x7 targets,
but worked on the xDuoo X3.

(The discrepancy is due to the Onda targets having more LCD code shoved
 into IRAM.)

Change-Id: I16fcfae3c5f3e36db688dfa9167b620584e79df8
2019-01-02 19:52:05 -05:00
Solomon Peachy 36a50dd00f mips: Use a separate IRQ stack & optimize IRQ handling a little
Should prevent the IRQ-related stack overflows seen on MIPS targets.

Change-Id: I447336ef3fe37e11b3276a78ba220ce64c2f87f5
2019-01-02 23:30:04 +01:00
Solomon Peachy d4942cc74c Add Xuelin iHIFI 770/770C/800 support
Taken from the xvortex fork (Roman Stolyarov)
Ported, rebased, and cleaned up by myself.

Change-Id: I7b2bca2d29502f2e4544e42f3d122786dd4b7978
2019-01-02 08:10:01 -05:00
Solomon Peachy 88cae9d13d Coldfire: Don't clobber alwarm wakeup signal in dualboot mode
(See FS#7814 for details)

Change-Id: I6a09a8dfe1abc3a396ca8afe1dbbf1d203c7e3e2
2019-01-01 23:30:44 -05:00