rockbox/firmware/export/config
Adam N. Burke 383e227671 Sansa Clip Zip: Implement LCD flip (180 degree rotation)
Enable HAVE_LCD_FLIP for the Clip Zip and implement lcd_set_flip()
in the LCD driver, making the Display -> Flip Display setting work.
This lets the player be used upside down, e.g. clipped to clothing
with the control buttons pointing up and screen on the bottom.

Defining HAVE_LCD_FLIP also activates the existing button remap in
button_flip() (firmware/drivers/button.c) for this target: while the
display is flipped, LEFT/RIGHT, UP/DOWN and the volume keys are all
swapped to match the new orientation, so the whole device is usable
upside down, not just readable.

The flip is done in hardware by reversing the controller's GRAM write
direction and mirroring the write window in lcd_setup_rect, so partial
updates keep working and there is no per-frame cost. Both panel
variants are handled: the type 0 WiseChip/SEPS114A via MEMORY_WRITE/READ
(1Dh, 0x02), and the type 1 Visionox/LD7134 via the Graphic RAM Writing
Direction register (05h, 0x03). The direction register is written in
lcd_enable(), so it is set while the panel is powered and is re-applied
after display standby; lcd_set_flip() cycles the panel off and on so a
change to the setting takes effect immediately.

For the simulator, which has no real LCD controller, lcd_set_flip() is
implemented in the SDL LCD driver (lcd-bitmap.c) as a software mirror of
the framebuffer, so the flip is visible in theme previews; the generic
uisimulator stub is guarded out when HAVE_LCD_FLIP is defined.

Tested on real type 1 / LD7134 hardware in both orientations: display
content, button remapping and album art are all correct, and test_fps
shows partial updates run at full speed when flipped (1/4 frame 325 fps,
matching the non-flipped rate). The type 0 / SEPS114A path uses the same
approach; the 0x02 direction value was confirmed to flip a type 0 panel
by William Wilgus during review.

Change-Id: I99ef13949102b344826e72d1d90c71e2271448a6
2026-06-14 23:16:17 -04:00
..
agptekrocker.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
aigoerosq.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
android.h Fix warnings introduced in prior commit 2025-10-12 17:20:20 -04:00
cowond2.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
creativezen.h imx233: move SoC-specific config symbols to separate header 2026-01-19 12:47:57 -05:00
creativezenmozaic.h imx233: move SoC-specific config symbols to separate header 2026-01-19 12:47:57 -05:00
creativezenv.h imx233: move SoC-specific config symbols to separate header 2026-01-19 12:47:57 -05:00
creativezenxfi.h imx233: move SoC-specific config symbols to separate header 2026-01-19 12:47:57 -05:00
creativezenxfi2.h imx233: move SoC-specific config symbols to separate header 2026-01-19 12:47:57 -05:00
creativezenxfi3.h imx233: move SoC-specific config symbols to separate header 2026-01-19 12:47:57 -05:00
creativezenxfistyle.h imx233: move SoC-specific config symbols to separate header 2026-01-19 12:47:57 -05:00
ctru.h 3ds: Fix crash on shutdown 2026-03-11 22:26:44 +02:00
echor1.h echoplayer: implement audio playback 2026-03-03 09:23:23 -05:00
erosqnative.h x1000: remove LCD fast sleep define 2025-04-18 10:35:49 -04:00
fiiom3k.h x1000: remove LCD fast sleep define 2025-04-18 10:35:49 -04:00
fiiom3klinux.h hosted: consolidate sysfs-based battery measurement code 2025-12-01 13:39:04 +00:00
gigabeatfx.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
gigabeats.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
gogearhdd1630.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
gogearhdd6330.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
gogearsa9200.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
hibylinux.h Rockbox for the HiBy R3 Pro II/R1 2025-12-27 15:44:54 -05:00
hibyr1.h Rockbox for the HiBy R3 Pro II/R1 2025-12-27 15:44:54 -05:00
hibyr3proii.h Remove wrong define for HiBy R3 Pro II BATTERY_DEV_NAME resulting in the device shutting down almost instantly. 2026-01-19 16:58:02 +01:00
hifietma8.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
hifietma8c.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
hifietma9.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
hifietma9c.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
hifimanhm60x.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
hifimanhm801.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
iaudiom3.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
iaudiom5.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
iaudiox5.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
ibassodx50.h ibasso: Rejigger RAM and buffer sizes a little 2025-09-13 08:44:38 -04:00
ibassodx90.h ibasso: Rejigger RAM and buffer sizes a little 2025-09-13 08:44:38 -04:00
ihifi760.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
ihifi770.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
ihifi770c.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
ihifi800.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
ihifi960.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
imx233-config.h Fix red in 7e31f2a6d5 2026-01-19 13:49:51 -05:00
ipod1g2g.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
ipod3g.h ipod: Turn on SMART support for all PP502x-based iPods 2025-09-16 10:59:57 -04:00
ipod4g.h ipod4g: Pull LCD framebuffer out of IRAM 2026-04-14 10:27:20 -04:00
ipod6g.h ipod6g: CE-ATA uses a 4K block size at minimum 2025-09-16 15:12:16 -04:00
ipodcolor.h config: USB_CHARGING_FORCE must be enabled for all iPods 2026-02-23 16:11:38 -05:00
ipodmini1g.h config: USB_CHARGING_FORCE must be enabled for all iPods 2026-02-23 16:11:38 -05:00
ipodmini2g.h config: USB_CHARGING_FORCE must be enabled for all iPods 2026-02-23 16:11:38 -05:00
ipodnano1g.h config: USB_CHARGING_FORCE must be enabled for all iPods 2026-02-23 16:11:38 -05:00
ipodnano2g.h usb: Clean up the pile of USB_FULL_INIT exceptions 2026-01-27 10:27:09 -05:00
ipodnano3g.h ipodnano3g/4g: fix compile issues for normal build 2026-02-04 07:51:40 -05:00
ipodnano4g.h ipodnano3g/4g: fix compile issues for normal build 2026-02-04 07:51:40 -05:00
ipodvideo.h config: USB_CHARGING_FORCE must be enabled for all iPods 2026-02-23 16:11:38 -05:00
iriverh10.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
iriverh10_5gb.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
iriverh100.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
iriverh120.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
iriverh300.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
librockplay.h buflib: Check the validity of of handles passed to buflib_get_data() in DEBUG builds. 2014-02-02 16:59:29 +01:00
mpiohd200.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
mpiohd300.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
mrobe100.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
mrobe500.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
ondavx747.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
ondavx767.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
ondavx777.h chore: Get rid of *all* vestigal CVS '$Id:$' tags 2026-06-01 16:01:18 -04:00
rgnano.h hosted: consolidate sysfs-based battery measurement code 2025-12-01 13:39:04 +00:00
rk27generic.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
samsungyh820.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
samsungyh920.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
samsungyh925.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
samsungypr0.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
samsungypr1.h Fix warnings introduced in prior commit 2025-10-12 17:20:20 -04:00
sansac200.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
sansac200v2.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
sansaclip.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
sansaclipplus.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
sansaclipv2.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
sansaclipzip.h Sansa Clip Zip: Implement LCD flip (180 degree rotation) 2026-06-14 23:16:17 -04:00
sansaconnect.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
sansae200.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
sansae200v2.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
sansafuze.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
sansafuzeplus.h sansafuzeplus: Support up to 96KHz playback. 2026-02-17 14:37:38 -05:00
sansafuzev2.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
sansam200v4.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
sdlapp.h Fix warnings introduced in prior commit 2025-10-12 17:20:20 -04:00
shanlingq1.h x1000: remove LCD fast sleep define 2025-04-18 10:35:49 -04:00
sim.h build: Enforce -Wundef on all targets. 2025-10-12 16:12:56 -04:00
sonynwa20.h sonynwz: Properly support multidrive, with hotswap of the SD card 2020-10-18 10:19:42 -04:00
sonynwza10.h sonynwz: Properly support multidrive, with hotswap of the SD card 2020-10-18 10:19:42 -04:00
sonynwza860.h Add support for the NWZ-A860 2017-09-17 00:03:02 +02:00
sonynwze350.h Add support for the NWZ-E350 2017-09-17 23:47:49 +02:00
sonynwze360.h imx233: move SoC-specific config symbols to separate header 2026-01-19 12:47:57 -05:00
sonynwze370.h imx233: move SoC-specific config symbols to separate header 2026-01-19 12:47:57 -05:00
sonynwze450.h Initial commit for the Sony NWZ linux port 2017-09-05 21:42:12 +02:00
sonynwze460.h Initial commit for the Sony NWZ linux port 2017-09-05 21:42:12 +02:00
sonynwze470.h Initial commit for the Sony NWZ linux port 2017-09-05 21:42:12 +02:00
sonynwze580.h Initial commit for the Sony NWZ linux port 2017-09-05 21:42:12 +02:00
sonynwzlinux.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
sonynwzs750.h Add support for the Sony NWZ-S750 2017-09-17 14:35:58 +02:00
surfansf28.h surfansf28: Correct touchscreen operation 2026-01-17 19:58:21 -05:00
vibe500.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
xduoox3.h xduoox3: Disable CONFIG_STORAGE_MULTI 2026-02-23 08:23:47 -05:00
xduoox3ii.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00
xduoox20.h Remove BATTERY_TYPES 2025-03-11 02:26:38 -04:00