Full Code of Guillem96/argon-nx for AI

master a4bf7774c829 cached
398 files
4.3 MB
1.2M tokens
2614 symbols
1 requests
Download .txt
Showing preview only (4,605K chars total). Download the full file or copy to clipboard to get everything.
Repository: Guillem96/argon-nx
Branch: master
Commit: a4bf7774c829
Files: 398
Total size: 4.3 MB

Directory structure:
gitextract_8az_imlq/

├── .gitignore
├── Changelog.md
├── LICENSE
├── Makefile
├── README.md
├── argon-first-stage/
│   ├── Dockerfile
│   ├── Makefile
│   ├── include/
│   │   ├── core/
│   │   │   └── launcher.h
│   │   ├── gfx/
│   │   │   ├── di.h
│   │   │   ├── di.inl
│   │   │   └── gfx.h
│   │   ├── ianos/
│   │   │   └── ianos.h
│   │   ├── libs/
│   │   │   ├── compr/
│   │   │   │   ├── blz.h
│   │   │   │   └── lz.h
│   │   │   ├── elfload/
│   │   │   │   ├── elf.h
│   │   │   │   ├── elfarch.h
│   │   │   │   └── elfload.h
│   │   │   └── fatfs/
│   │   │       ├── diskio.h
│   │   │       ├── ff.h
│   │   │       └── ffconf.h
│   │   ├── mem/
│   │   │   ├── emc.h
│   │   │   ├── heap.h
│   │   │   ├── mc.h
│   │   │   ├── mc_t210.h
│   │   │   ├── sdram.h
│   │   │   ├── sdram_config_lz.inl
│   │   │   └── sdram_param_t210.h
│   │   ├── power/
│   │   │   ├── bq24193.h
│   │   │   ├── max17050.h
│   │   │   ├── max77620.h
│   │   │   └── max7762x.h
│   │   ├── sec/
│   │   │   ├── se.h
│   │   │   └── se_t210.h
│   │   ├── soc/
│   │   │   ├── bpmp.h
│   │   │   ├── clock.h
│   │   │   ├── cluster.h
│   │   │   ├── fuse.h
│   │   │   ├── gpio.h
│   │   │   ├── hw_init.h
│   │   │   ├── i2c.h
│   │   │   ├── pinmux.h
│   │   │   ├── pmc.h
│   │   │   ├── pmc_lp0_t210.h
│   │   │   ├── smmu.h
│   │   │   ├── t210.h
│   │   │   └── uart.h
│   │   ├── storage/
│   │   │   ├── mmc.h
│   │   │   ├── sd.h
│   │   │   ├── sdmmc.h
│   │   │   ├── sdmmc_driver.h
│   │   │   └── sdmmc_t210.h
│   │   └── utils/
│   │       ├── aarch64_util.h
│   │       ├── btn.h
│   │       ├── dirlist.h
│   │       ├── fs_utils.h
│   │       ├── types.h
│   │       └── util.h
│   └── src/
│       ├── LICENSE
│       ├── core/
│       │   └── launcher.c
│       ├── gfx/
│       │   ├── di.c
│       │   └── gfx.c
│       ├── ianos/
│       │   └── ianos.c
│       ├── libs/
│       │   ├── compr/
│       │   │   ├── blz.c
│       │   │   └── lz.c
│       │   ├── elfload/
│       │   │   ├── elfload.c
│       │   │   ├── elfreloc_aarch64.c
│       │   │   └── elfreloc_arm.c
│       │   └── fatfs/
│       │       ├── diskio.c
│       │       ├── ff.c
│       │       ├── ffsystem.c
│       │       └── ffunicode.c
│       ├── link.ld
│       ├── main.c
│       ├── mem/
│       │   ├── heap.c
│       │   ├── mc.c
│       │   └── sdram.c
│       ├── power/
│       │   ├── bq24193.c
│       │   ├── max17050.c
│       │   └── max7762x.c
│       ├── sec/
│       │   └── se.c
│       ├── soc/
│       │   ├── bpmp.c
│       │   ├── clock.c
│       │   ├── cluster.c
│       │   ├── fuse.c
│       │   ├── gpio.c
│       │   ├── hw_init.c
│       │   ├── i2c.c
│       │   ├── pinmux.c
│       │   ├── smmu.c
│       │   └── uart.c
│       ├── start.s
│       ├── storage/
│       │   ├── sdmmc.c
│       │   └── sdmmc_driver.c
│       └── utils/
│           ├── btn.c
│           ├── dirlist.c
│           ├── fs_utils.c
│           └── util.c
├── argon-nx-gui/
│   ├── Dockerfile
│   ├── Makefile
│   ├── include/
│   │   ├── core/
│   │   │   ├── argon-ctxt.h
│   │   │   ├── argon-resources.h
│   │   │   ├── custom-gui.h
│   │   │   ├── launcher.h
│   │   │   └── payloads.h
│   │   ├── gfx/
│   │   │   ├── di.h
│   │   │   ├── di.inl
│   │   │   ├── gfx.h
│   │   │   └── lvgl_adapter.h
│   │   ├── ianos/
│   │   │   └── ianos.h
│   │   ├── libs/
│   │   │   ├── compr/
│   │   │   │   ├── blz.h
│   │   │   │   └── lz.h
│   │   │   ├── elfload/
│   │   │   │   ├── elf.h
│   │   │   │   ├── elfarch.h
│   │   │   │   └── elfload.h
│   │   │   ├── fatfs/
│   │   │   │   ├── diskio.h
│   │   │   │   ├── ff.h
│   │   │   │   └── ffconf.h
│   │   │   └── lvgl/
│   │   │       ├── lv_conf.h
│   │   │       ├── lv_conf_checker.h
│   │   │       ├── lv_core/
│   │   │       │   ├── lv_core.mk
│   │   │       │   ├── lv_disp.h
│   │   │       │   ├── lv_group.h
│   │   │       │   ├── lv_indev.h
│   │   │       │   ├── lv_obj.h
│   │   │       │   ├── lv_refr.h
│   │   │       │   └── lv_style.h
│   │   │       ├── lv_draw/
│   │   │       │   ├── lv_draw.h
│   │   │       │   ├── lv_draw.mk
│   │   │       │   ├── lv_draw_arc.h
│   │   │       │   ├── lv_draw_basic.h
│   │   │       │   ├── lv_draw_img.h
│   │   │       │   ├── lv_draw_label.h
│   │   │       │   ├── lv_draw_line.h
│   │   │       │   ├── lv_draw_rect.h
│   │   │       │   ├── lv_draw_triangle.h
│   │   │       │   ├── lv_img_cache.h
│   │   │       │   └── lv_img_decoder.h
│   │   │       ├── lv_font/
│   │   │       │   ├── lv_font.h
│   │   │       │   ├── lv_font.mk
│   │   │       │   ├── lv_font_fmt_txt.h
│   │   │       │   └── lv_symbol_def.h
│   │   │       ├── lv_hal/
│   │   │       │   ├── lv_hal.h
│   │   │       │   ├── lv_hal.mk
│   │   │       │   ├── lv_hal_disp.h
│   │   │       │   ├── lv_hal_indev.h
│   │   │       │   └── lv_hal_tick.h
│   │   │       ├── lv_misc/
│   │   │       │   ├── lv_anim.h
│   │   │       │   ├── lv_area.h
│   │   │       │   ├── lv_async.h
│   │   │       │   ├── lv_circ.h
│   │   │       │   ├── lv_color.h
│   │   │       │   ├── lv_fs.h
│   │   │       │   ├── lv_gc.h
│   │   │       │   ├── lv_ll.h
│   │   │       │   ├── lv_log.h
│   │   │       │   ├── lv_math.h
│   │   │       │   ├── lv_mem.h
│   │   │       │   ├── lv_misc.mk
│   │   │       │   ├── lv_task.h
│   │   │       │   ├── lv_templ.h
│   │   │       │   ├── lv_txt.h
│   │   │       │   ├── lv_types.h
│   │   │       │   └── lv_utils.h
│   │   │       ├── lv_objx/
│   │   │       │   ├── lv_arc.h
│   │   │       │   ├── lv_bar.h
│   │   │       │   ├── lv_btn.h
│   │   │       │   ├── lv_btnm.h
│   │   │       │   ├── lv_calendar.h
│   │   │       │   ├── lv_canvas.h
│   │   │       │   ├── lv_cb.h
│   │   │       │   ├── lv_chart.h
│   │   │       │   ├── lv_cont.h
│   │   │       │   ├── lv_ddlist.h
│   │   │       │   ├── lv_gauge.h
│   │   │       │   ├── lv_img.h
│   │   │       │   ├── lv_imgbtn.h
│   │   │       │   ├── lv_kb.h
│   │   │       │   ├── lv_label.h
│   │   │       │   ├── lv_led.h
│   │   │       │   ├── lv_line.h
│   │   │       │   ├── lv_list.h
│   │   │       │   ├── lv_lmeter.h
│   │   │       │   ├── lv_mbox.h
│   │   │       │   ├── lv_objx.mk
│   │   │       │   ├── lv_objx_templ.h
│   │   │       │   ├── lv_page.h
│   │   │       │   ├── lv_preload.h
│   │   │       │   ├── lv_roller.h
│   │   │       │   ├── lv_slider.h
│   │   │       │   ├── lv_spinbox.h
│   │   │       │   ├── lv_sw.h
│   │   │       │   ├── lv_ta.h
│   │   │       │   ├── lv_table.h
│   │   │       │   ├── lv_tabview.h
│   │   │       │   ├── lv_tileview.h
│   │   │       │   └── lv_win.h
│   │   │       ├── lv_themes/
│   │   │       │   ├── lv_theme.h
│   │   │       │   ├── lv_theme_argon.h
│   │   │       │   ├── lv_theme_default.h
│   │   │       │   └── lv_themes.mk
│   │   │       ├── lv_version.h
│   │   │       ├── lvgl.h
│   │   │       └── lvgl.mk
│   │   ├── mem/
│   │   │   ├── emc.h
│   │   │   ├── heap.h
│   │   │   ├── mc.h
│   │   │   ├── mc_t210.h
│   │   │   ├── sdram.h
│   │   │   ├── sdram_config_lz.inl
│   │   │   └── sdram_param_t210.h
│   │   ├── menu/
│   │   │   └── gui/
│   │   │       ├── gui_menu.h
│   │   │       ├── gui_menu_controllers.h
│   │   │       └── gui_menu_pool.h
│   │   ├── minerva/
│   │   │   ├── minerva.h
│   │   │   └── mtc_table.h
│   │   ├── power/
│   │   │   ├── battery.h
│   │   │   ├── bq24193.h
│   │   │   ├── max17050.h
│   │   │   ├── max77620.h
│   │   │   └── max7762x.h
│   │   ├── sec/
│   │   │   ├── se.h
│   │   │   └── se_t210.h
│   │   ├── soc/
│   │   │   ├── bpmp.h
│   │   │   ├── clock.h
│   │   │   ├── cluster.h
│   │   │   ├── fuse.h
│   │   │   ├── gpio.h
│   │   │   ├── hw_init.h
│   │   │   ├── i2c.h
│   │   │   ├── pinmux.h
│   │   │   ├── pmc.h
│   │   │   ├── pmc_lp0_t210.h
│   │   │   ├── smmu.h
│   │   │   ├── t210.h
│   │   │   └── uart.h
│   │   ├── storage/
│   │   │   ├── mmc.h
│   │   │   ├── sd.h
│   │   │   ├── sdmmc.h
│   │   │   ├── sdmmc_driver.h
│   │   │   └── sdmmc_t210.h
│   │   └── utils/
│   │       ├── aarch64_util.h
│   │       ├── btn.h
│   │       ├── dirlist.h
│   │       ├── fs_utils.h
│   │       ├── touch.h
│   │       ├── types.h
│   │       └── util.h
│   └── src/
│       ├── LICENSE
│       ├── core/
│       │   ├── argon-ctxt.c
│       │   ├── argon-resources.c
│       │   ├── custom-gui.c
│       │   ├── launcher.c
│       │   └── payloads.c
│       ├── gfx/
│       │   ├── di.c
│       │   ├── gfx.c
│       │   └── lvgl_adapter.c
│       ├── ianos/
│       │   └── ianos.c
│       ├── libs/
│       │   ├── compr/
│       │   │   ├── blz.c
│       │   │   └── lz.c
│       │   ├── elfload/
│       │   │   ├── elfload.c
│       │   │   ├── elfreloc_aarch64.c
│       │   │   └── elfreloc_arm.c
│       │   ├── fatfs/
│       │   │   ├── diskio.c
│       │   │   ├── ff.c
│       │   │   ├── ffsystem.c
│       │   │   └── ffunicode.c
│       │   └── lvgl/
│       │       ├── lv_core/
│       │       │   ├── lv_core.mk
│       │       │   ├── lv_disp.c
│       │       │   ├── lv_group.c
│       │       │   ├── lv_indev.c
│       │       │   ├── lv_obj.c
│       │       │   ├── lv_refr.c
│       │       │   └── lv_style.c
│       │       ├── lv_draw/
│       │       │   ├── lv_draw.c
│       │       │   ├── lv_draw.mk
│       │       │   ├── lv_draw_arc.c
│       │       │   ├── lv_draw_basic.c
│       │       │   ├── lv_draw_img.c
│       │       │   ├── lv_draw_label.c
│       │       │   ├── lv_draw_line.c
│       │       │   ├── lv_draw_rect.c
│       │       │   ├── lv_draw_triangle.c
│       │       │   ├── lv_img_cache.c
│       │       │   └── lv_img_decoder.c
│       │       ├── lv_font/
│       │       │   ├── lv_font.c
│       │       │   ├── lv_font.mk
│       │       │   ├── lv_font_fmt_txt.c
│       │       │   ├── lv_font_ma_110.c
│       │       │   ├── lv_font_ma_20.c
│       │       │   ├── lv_font_ma_30.c
│       │       │   ├── lv_font_ma_80.c
│       │       │   ├── lv_font_montserrat_12.c
│       │       │   └── lv_font_unscii_8.c
│       │       ├── lv_hal/
│       │       │   ├── lv_hal.mk
│       │       │   ├── lv_hal_disp.c
│       │       │   ├── lv_hal_indev.c
│       │       │   └── lv_hal_tick.c
│       │       ├── lv_misc/
│       │       │   ├── lv_anim.c
│       │       │   ├── lv_area.c
│       │       │   ├── lv_async.c
│       │       │   ├── lv_circ.c
│       │       │   ├── lv_color.c
│       │       │   ├── lv_fs.c
│       │       │   ├── lv_gc.c
│       │       │   ├── lv_ll.c
│       │       │   ├── lv_log.c
│       │       │   ├── lv_math.c
│       │       │   ├── lv_mem.c
│       │       │   ├── lv_misc.mk
│       │       │   ├── lv_task.c
│       │       │   ├── lv_templ.c
│       │       │   ├── lv_txt.c
│       │       │   └── lv_utils.c
│       │       ├── lv_objx/
│       │       │   ├── lv_arc.c
│       │       │   ├── lv_bar.c
│       │       │   ├── lv_btn.c
│       │       │   ├── lv_btnm.c
│       │       │   ├── lv_calendar.c
│       │       │   ├── lv_canvas.c
│       │       │   ├── lv_cb.c
│       │       │   ├── lv_chart.c
│       │       │   ├── lv_cont.c
│       │       │   ├── lv_ddlist.c
│       │       │   ├── lv_gauge.c
│       │       │   ├── lv_img.c
│       │       │   ├── lv_imgbtn.c
│       │       │   ├── lv_kb.c
│       │       │   ├── lv_label.c
│       │       │   ├── lv_led.c
│       │       │   ├── lv_line.c
│       │       │   ├── lv_list.c
│       │       │   ├── lv_lmeter.c
│       │       │   ├── lv_mbox.c
│       │       │   ├── lv_objx.mk
│       │       │   ├── lv_objx_templ.c
│       │       │   ├── lv_page.c
│       │       │   ├── lv_preload.c
│       │       │   ├── lv_roller.c
│       │       │   ├── lv_slider.c
│       │       │   ├── lv_spinbox.c
│       │       │   ├── lv_sw.c
│       │       │   ├── lv_ta.c
│       │       │   ├── lv_table.c
│       │       │   ├── lv_tabview.c
│       │       │   ├── lv_tileview.c
│       │       │   └── lv_win.c
│       │       ├── lv_themes/
│       │       │   ├── lv_theme.c
│       │       │   ├── lv_theme_argon.c
│       │       │   ├── lv_theme_default.c
│       │       │   └── lv_themes.mk
│       │       └── lvgl.mk
│       ├── link.ld
│       ├── main.c
│       ├── mem/
│       │   ├── heap.c
│       │   ├── mc.c
│       │   └── sdram.c
│       ├── menu/
│       │   └── gui/
│       │       ├── gui_menu.c
│       │       ├── gui_menu_controllers.c
│       │       └── gui_menu_pool.c
│       ├── minerva/
│       │   └── minerva.c
│       ├── power/
│       │   ├── battery.c
│       │   ├── bq24193.c
│       │   ├── max17050.c
│       │   └── max7762x.c
│       ├── sec/
│       │   └── se.c
│       ├── soc/
│       │   ├── bpmp.c
│       │   ├── clock.c
│       │   ├── cluster.c
│       │   ├── fuse.c
│       │   ├── gpio.c
│       │   ├── hw_init.c
│       │   ├── i2c.c
│       │   ├── pinmux.c
│       │   ├── smmu.c
│       │   └── uart.c
│       ├── start.s
│       ├── storage/
│       │   ├── sdmmc.c
│       │   └── sdmmc_driver.c
│       └── utils/
│           ├── btn.c
│           ├── dirlist.c
│           ├── fs_utils.c
│           ├── touch.c
│           └── util.c
├── docker-compose.yml
├── modules/
│   ├── minerva/
│   │   ├── Dockerfile
│   │   ├── Makefile
│   │   ├── common.h
│   │   ├── gfx.h
│   │   ├── heap.h
│   │   ├── mtc.h
│   │   ├── mtc_mc_emc_regs.h
│   │   ├── mtc_switch_tables.h
│   │   ├── mtc_table.h
│   │   ├── sys_sdrammtc.c
│   │   └── types.h
│   └── resources.argon
└── scripts/
    ├── argon.py
    └── requirements.txt

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
# Visual Studio Code
.vs/
.vscode/

# Build files
build/
output/

# Cli files
venv/
scripts/sd-files/

# Release files
argon-nx.zip

# Helpers
new-gui.sh

================================================
FILE: Changelog.md
================================================
# Changelog

## v0.2

- Cancel autolaunch/autochainloading of `argon/payload.bin` by holding VOL_DOWN_BUTTON when ArgonNX is booting.
- Minerva training to improve performace.
- Custom background. Just place your custom background inside `argon` directory and name it `background.bmp`. Use of custom background is optional.
- Custom title. Just place your custom title inside argon directory and name it `title.bmp`. Use of custom title is optional.
- By default ArgonNX uses dark background instead of the white one in v0.1.
- Payloads' names now are centered below the logo.
- Partial touch support. To enable touch support create an empty file called `touch` inside `argon` directory.
- Take Screenshots to share your argon configuration! 
- Improve system stability to enhance user experience.

## v0.3

- Now background must be in a vertical position. New background size must be smaller or equal than 720x1280. (Performance reasons)
- Using double buffering for rendering in order to avoid flickering and also improve performance.
- Fully touch support. Thanks to @pixel-stuck
- Now payloads are sorted by name.
- Correctly deallocate argon-nx from memory when launching payloads.
- Improve system stability to enhance user experience.

## v1.0-alpha

- ArgonNX's UI has been rewritten using [LittlevGL]() library. This rewrite has a lot of benefits. Some benefits include:
    - Prettier font
    - Faster rendering
    - Better touch support
    - In general terms improves UX
- Now payloads are listed inside tabviews where each tab contains a group of 4 payloads.
- New tab of tools. By now tools only are related to reboot stuff (reboot to rcm, power off, reboot to ofw)
- Background size back to 1280*720. No more weird image flippings.
- ArgonNX Command Line Interface to simplify the process to create logos and backgrounds.
- Now there is no need to declare a `default.bmp` logo inside the `argon/logos` directory.
- Improve system stability to enhance user experience.

## v1.1-alpha

- Fixing critical bug. Now launches using any payload sender.
- Argon now is composed by 2 payloads (2 stages).
    1. First stage configures hardware
    2. Loads the GUI
- Bootlogo/splash and wait until GUI is loaded.
- Improve system stability to enhance user experience.


================================================
FILE: LICENSE
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

                    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

                            NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    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 program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.


================================================
FILE: Makefile
================================================

.PHONY: all clean


all: directories primary gui
	$(MAKE) -C modules/minerva

directories:
	@mkdir -p output

gui:
	$(MAKE) -C argon-nx-gui

primary:
	$(MAKE) -C argon-first-stage

clean:
	$(MAKE) -C modules/minerva clean
	$(MAKE) -C argon-first-stage clean
	$(MAKE) -C argon-nx-gui clean
	rm -rf output/

dist: clean all 
	mkdir -p argon/logos
	mkdir -p argon/payloads
	mkdir -p argon/sys

	cp output/argon-nx.bin argon-nx.bin
	cp output/argon-nx-gui.bin argon/sys/argon-nx-gui.bin

	cp output/libsys_minerva.bso argon/sys/minerva.bso
	
	cp img/example-custom/logos/* argon/logos
	cp img/example-custom/backgrounds/default.bmp argon/background.bmp
	cp img/example-custom/splashes/default.bmp argon/splash.bmp
	
	cp modules/resources.argon argon/sys/resources.argon

	zip -r argon-nx.zip argon argon-nx.bin

	rm -rf argon
	rm argon-nx.bin

================================================
FILE: README.md
================================================

<img src="img/splash.jpg" alt="banner">

![License badge](https://img.shields.io/badge/license-GPLv2-blue.svg)
[![Homebrew Store](https://img.shields.io/badge/Homebrew%20Switch-store-%23ff4554.svg)](https://www.switchbru.com/appstore/#/app/argon-nx)

## What Argon is?

Argon is a noble gas.
"Argon" comes from Greek "Argon", neuter of "argos" meaning *lazy* , *idle* or *inactive*.
Argon recieved this name because of its chemical inactivity.

Argon NX is an immutable payload which is injected to your Nintendo Switch via Fusee Gelee exploit.

## Purpose 

The purpose of Argon NX is to stay immutable, so you can always inject it, without caring about other payloads getting updated (Always use ArgonNX for TegraSmash, TegraGUI, TrinkedM0...).

## How can it be immutable?

When Argon NX is injected, it automatically launches the `payload.bin` loacted at `argon` directory on your SD Card root. 

If `payload.bin` is not present or VOLUME DOWN button is pressed on payload injection, Argon NX will list all payloads located at `argon/payloads`, and you will be able to select one of them to launch it.

## Features

- **Autolaunch/autochainload** the payload named `payload.bin` inside `argon` directory in your sd card root.
- If `argon/payload.bin` is not found or `VOLUME_DOWN_BUTTON` is held during ArgonNX injection, ArgonNX will list all the payloads located at `argon/payloads`, so you can select one of them to launch it.
- **Customize payloads' logos**. **Logos must be smaller or equal than 280x280** (See About BMP format section). Example:

```
argon
  ├───logos
  │     fusee-primary.bmp # Logo for fusee-primary.bin payload
  │     ReiNX.bmp # Logo for ReiNX.bin payload
  │
  └───payloads
        fusee-primary.bin
        ReiNX.bin         
        hekate.bin # Will be rendered using default logo
```

- **Custom backgrounds** can be added by placing `background.bmp` file inside `argon` directory. **The background must be smaller or equal than 1280x720**.
- Take **screenshots** to share your ArgonNX gui. To capture ArgonNX screen tap anywhere with two or more fingers.
- Touch support. Thanks to @pixel-stuck
- Simple tools. (Don't expect tools like the onew built in hekate, argon tools are much more lightweighted and simple, such as reboot options)
- Command Line Interface (CLI) to facilitate the procedure to create bmp files for custom logos and backgrounds.

## About BMP format

The only format supported is **BMP 32 bit ARGB color**.
ArgonNX recommends using a solid background without alpha channel (alpha channel set to 0xFF). Payloads' logos **support alpha channel**.

### Generate new logos and background

ArgonNX provides a useful Command Line Interface (CLI) to create new logos and backgrounds for your payloads using a *jpg* or *png* images.

#### CLI installation

The Argon CLI is written in Python. To install python follow the instructions listed [here](https://realpython.com/installing-python/). Once you have python3 installed just type the following commands (These will install the requirements for running the CLI):

```bash
$ cd scripts
$ pip install -r requirements.txt
$ sudo apt-get install libmagickwand-dev
```

> If you are using Windows visit [Wand's installation page](http://docs.wand-py.org/en/0.4.1/guide/install.html) and follow the steps to install libmagikcwand on Windows.

#### CLI Usage

To generate a new logo use the following command.

```bash
$ cd scripts
$ python argon.py img-to-logo <path-to-png-jpg-img>
```

To generate a new background use the following command.

```bash
$ cd scripts
$ python argon.py generate-background <path-to-png-jpg-img>
```

The CLI stores the outputs of the commands at the recently created (also by the CLI) `sd-files/argon` directory (This directory simulates an sd-card argon structure).

To learn more about the CLI options type:

```bash
$ python argon.py --help
```

## GUI

These images were captured with the **screenshot** feature.

<img src="img/example1.png" alt="example" width="700">

<img src="img/example2.png" alt="example" width="700">

<img src="img/example3.png" alt="example" width="700">

<img src="img/example4.png" alt="example" width="700">

As you can see in the pictures, payloads are displayed in groups of 4 and each group is displayed in a different *payloads* tab.

You can find the logos used in the pictures inside [this directory](img/example-custom/logos) and backgrounds [here](img/example-custom/backgrounds).

## ArgonNX sd card tree

How a full running ArgonNX example looks inside the sd card:

```
argon
├─── payloads
│       Atmosphere.bin
│       ReiNX.bin
│       fusee-gelee.bin
│       hekate.bin
│       SXOS.bin
│
├─── logos
|       Atmosphere.bmp
|       Reinx.bmp
|       hekate.bmp
|       SXOS.bmp
|
├─── sys
|       minerva.bso # IMPORTANT if you want a good UX experience
|       resources.argon # IMPORTANT. Binary file containing all render resources except the background and logos
|
└─── background.bmp
```

## Improve performance

ArgonNX can use **minerva training cell** to improve performance.
The use of minerva is optional but recommended. To use minerva just place the compiled `minerva.bso` inside `argon/sys`. The directory `argon/sys` with minerva, is included in `sd-files.zip` in the release section.

To learn more about Minerva Training Cell check its [official repo](https://github.com/CTCaer/minerva_tc).

## Compatibility

This payload will chainload any CFW or payload. 

Some users reported issuses when chainloading SX OS. <small>But with Atmosphere out there... who wants SXOS?</small> 🙄

## Roadmap

1. Config file to manage tabs titles and argon sd card directory tree.
2. More tools inside tools tab.

## Credits

* __devkitPro__ for the [devkitA64](https://devkitpro.org/) toolchain.
* __naehrwert__ and __st4rk__ for the original [hekate](https://github.com/nwert/hekate) project and its hwinit code base.
* __CTCaer__ for the continued [hekate](https://github.com/CTCaer/hekate) and his **minerva** project.
* __xalgovia__ and __Retrogamer 74__ for the splash and logos. Also thanks them to use ArgonNX in RetroReloaded.
* __langerhans__ and  __stuck-pixel__ for their implementation of touch support.
* __LittlevGL__ for being such a good embedded graphics library.
* __D3fau4__ for touch support testing.


================================================
FILE: argon-first-stage/Dockerfile
================================================
# Build Docker image using: docker build . -t argon-nx-builder
# Run docker image using: docker run -a stdout -a stderr -v $(pwd)/output:/argon-nx/output argon-nx-builder

FROM devkitpro/devkitarm
WORKDIR /argon-first-stage
COPY . .
ENTRYPOINT ["make"]

================================================
FILE: argon-first-stage/Makefile
================================================
ifeq ($(strip $(DEVKITARM)),)
$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM")
endif

include $(DEVKITARM)/base_rules

TARGET          := argon-nx
BUILD           := build
OUTPUT          := ../output
SOURCEDIR       := src
SOURCES         := src \
			src/ianos \
			src/libs/fatfs src/libs/elfload src/libs/compr \
			src/core \
			src/gfx \
			src/mem \
			src/menu/gui \
			src/power \
			src/sec \
			src/soc \
			src/storage \
			src/utils

INCLUDES        := include
VPATH           = $(dir $(wildcard ./$(SOURCEDIR)/*/)) $(dir $(wildcard ./$(SOURCEDIR)/*/*/))
VPATH 		+= $(dir $(wildcard ./$(SOURCEDIR)/*/*/*/)) $(dir $(wildcard ./$(SOURCEDIR)/*/*/*/*/))
CFILES          := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
SFILES          := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))

OFILES_SRC      := $(SFILES:.s=.o) $(CFILES:.c=.o)
HFILES_BIN      := $(addsuffix .h,$(subst .,_,$(BINFILES)))

OBJS            = $(addprefix $(BUILD)/$(TARGET)/, $(OFILES_SRC))


INCLUDE         :=$(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
		  $(foreach dir,$(LIBDIRS),-I$(dir)/include) \
		  -I$(BUILD)/$(TARGET)

ARCH := -march=armv4t -mtune=arm7tdmi -mthumb -mthumb-interwork
CFLAGS = $(INCLUDE) $(ARCH) -O2 -nostdlib -ffunction-sections -fdata-sections -fomit-frame-pointer -fno-inline -std=gnu11 -Wall
LDFLAGS = $(ARCH) -nostartfiles -lgcc -Wl,--nmagic,--gc-sections


.PHONY: all clean

all: directories $(TARGET).bin
	@echo $(HFILES_BIN)
	@echo -n "Payload size is "
	@wc -c < $(OUTPUT)/$(TARGET).bin
	@echo "Max size is 126296 Bytes."

directories:
	@mkdir -p "$(BUILD)"
	@mkdir -p "$(BUILD)/$(TARGET)"
	@mkdir -p "$(OUTPUT)"
	
clean:
	@rm -rf $(OBJS)
	@rm -rf $(BUILD)
	@rm -f $(OUTPUT)/$(TARGET).bin

$(MODULEDIRS):
	$(MAKE) -C $@ $(MAKECMDGOALS)

$(TARGET).bin: $(BUILD)/$(TARGET)/$(TARGET).elf $(MODULEDIRS)
	$(OBJCOPY) -S -O binary $< $(OUTPUT)/$@

$(BUILD)/$(TARGET)/$(TARGET).elf: $(OBJS)
	$(CC) $(LDFLAGS) -T $(SOURCEDIR)/link.ld $^ -o $@

$(BUILD)/$(TARGET)/%.o: %.c
	$(CC) $(CFLAGS) -c $< -o $@

$(BUILD)/$(TARGET)/%.o: %.s
	$(CC) $(CFLAGS) -c $< -o $@

$(OFILES_SRC): $(HFILES_BIN)

print-%  : ; @echo $* = $($*)


================================================
FILE: argon-first-stage/include/core/launcher.h
================================================
/*
 * Copyright (c) 2018 Guillem96
 * 
 * This program is free software; you can redistribute it and/or modify it
 * under the terms and conditions of the GNU General Public License,
 * version 2, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
#ifndef _LAUNCHER_H_
#define _LAUNCHER_H_

int launch_payload(char*);

#endif

================================================
FILE: argon-first-stage/include/gfx/di.h
================================================
/*
 * Copyright (c) 2018 naehrwert
 * Copyright (C) 2018 CTCaer
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms and conditions of the GNU General Public License,
 * version 2, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef _DI_H_
#define _DI_H_

#include "utils/types.h"

#define FB_ADDRESS 0xC0000000

/*! Display registers. */
#define _DIREG(reg) ((reg) * 4)

#define DC_CMD_GENERAL_INCR_SYNCPT 0x00

#define DC_CMD_GENERAL_INCR_SYNCPT_CNTRL 0x01
#define  SYNCPT_CNTRL_NO_STALL   (1 << 8)
#define  SYNCPT_CNTRL_SOFT_RESET (1 << 0)

#define DC_CMD_CONT_SYNCPT_VSYNC 0x28
#define  SYNCPT_VSYNC_ENABLE (1 << 8)

#define DC_CMD_DISPLAY_COMMAND_OPTION0 0x031

#define DC_CMD_DISPLAY_COMMAND 0x32
#define  DISP_CTRL_MODE_STOP       (0 << 5)
#define  DISP_CTRL_MODE_C_DISPLAY  (1 << 5)
#define  DISP_CTRL_MODE_NC_DISPLAY (2 << 5)
#define  DISP_CTRL_MODE_MASK       (3 << 5)

#define DC_CMD_DISPLAY_POWER_CONTROL 0x36
#define  PW0_ENABLE (1 <<  0)
#define  PW1_ENABLE (1 <<  2)
#define  PW2_ENABLE (1 <<  4)
#define  PW3_ENABLE (1 <<  6)
#define  PW4_ENABLE (1 <<  8)
#define  PM0_ENABLE (1 << 16)
#define  PM1_ENABLE (1 << 18)

#define DC_CMD_INT_MASK 0x38
#define DC_CMD_INT_ENABLE 0x39

#define DC_CMD_STATE_ACCESS 0x40
#define  READ_MUX  (1 << 0)
#define  WRITE_MUX (1 << 2)

#define DC_CMD_STATE_CONTROL 0x41
#define  GENERAL_ACT_REQ (1 <<  0)
#define  WIN_A_ACT_REQ   (1 <<  1)
#define  WIN_B_ACT_REQ   (1 <<  2)
#define  WIN_C_ACT_REQ   (1 <<  3)
#define  CURSOR_ACT_REQ  (1 <<  7)
#define  GENERAL_UPDATE  (1 <<  8)
#define  WIN_A_UPDATE    (1 <<  9)
#define  WIN_B_UPDATE    (1 << 10)
#define  WIN_C_UPDATE    (1 << 11)
#define  CURSOR_UPDATE   (1 << 15)
#define  NC_HOST_TRIG    (1 << 24)

#define DC_CMD_DISPLAY_WINDOW_HEADER 0x42
#define  WINDOW_A_SELECT (1 << 4)
#define  WINDOW_B_SELECT (1 << 5)
#define  WINDOW_C_SELECT (1 << 6)

#define DC_CMD_REG_ACT_CONTROL 0x043

#define DC_COM_CRC_CONTROL 0x300
#define DC_COM_PIN_OUTPUT_ENABLE(x) (0x302 + (x))
#define DC_COM_PIN_OUTPUT_POLARITY(x) (0x306 + (x))

#define DC_COM_DSC_TOP_CTL 0x33E

#define DC_DISP_DISP_WIN_OPTIONS 0x402
#define  HDMI_ENABLE     (1 << 30)
#define  DSI_ENABLE      (1 << 29)
#define  SOR1_TIMING_CYA (1 << 27)
#define  SOR1_ENABLE     (1 << 26)
#define  SOR_ENABLE      (1 << 25)
#define  CURSOR_ENABLE   (1 << 16)

#define DC_DISP_DISP_MEM_HIGH_PRIORITY 0x403
#define DC_DISP_DISP_MEM_HIGH_PRIORITY_TIMER 0x404
#define DC_DISP_DISP_TIMING_OPTIONS 0x405
#define DC_DISP_REF_TO_SYNC 0x406
#define DC_DISP_SYNC_WIDTH 0x407
#define DC_DISP_BACK_PORCH 0x408
#define DC_DISP_ACTIVE 0x409
#define DC_DISP_FRONT_PORCH 0x40A

#define DC_DISP_DISP_CLOCK_CONTROL 0x42E
#define  PIXEL_CLK_DIVIDER_PCD1  (0 << 8)
#define  PIXEL_CLK_DIVIDER_PCD1H (1 << 8)
#define  PIXEL_CLK_DIVIDER_PCD2  (2 << 8)
#define  PIXEL_CLK_DIVIDER_PCD3  (3 << 8)
#define  PIXEL_CLK_DIVIDER_PCD4  (4 << 8)
#define  PIXEL_CLK_DIVIDER_PCD6  (5 << 8)
#define  PIXEL_CLK_DIVIDER_PCD8  (6 << 8)
#define  PIXEL_CLK_DIVIDER_PCD9  (7 << 8)
#define  PIXEL_CLK_DIVIDER_PCD12 (8 << 8)
#define  PIXEL_CLK_DIVIDER_PCD16 (9 << 8)
#define  PIXEL_CLK_DIVIDER_PCD18 (10 << 8)
#define  PIXEL_CLK_DIVIDER_PCD24 (11 << 8)
#define  PIXEL_CLK_DIVIDER_PCD13 (12 << 8)
#define  SHIFT_CLK_DIVIDER(x)    ((x) & 0xff)

#define DC_DISP_DISP_INTERFACE_CONTROL 0x42F
#define  DISP_DATA_FORMAT_DF1P1C    (0 << 0)
#define  DISP_DATA_FORMAT_DF1P2C24B (1 << 0)
#define  DISP_DATA_FORMAT_DF1P2C18B (2 << 0)
#define  DISP_DATA_FORMAT_DF1P2C16B (3 << 0)
#define  DISP_DATA_FORMAT_DF2S      (4 << 0)
#define  DISP_DATA_FORMAT_DF3S      (5 << 0)
#define  DISP_DATA_FORMAT_DFSPI     (6 << 0)
#define  DISP_DATA_FORMAT_DF1P3C24B (7 << 0)
#define  DISP_DATA_FORMAT_DF1P3C18B (8 << 0)
#define  DISP_ALIGNMENT_MSB         (0 << 8)
#define  DISP_ALIGNMENT_LSB         (1 << 8)
#define  DISP_ORDER_RED_BLUE        (0 << 9)
#define  DISP_ORDER_BLUE_RED        (1 << 9)

#define DC_DISP_DISP_COLOR_CONTROL 0x430
#define  DITHER_CONTROL_MASK    (3 << 8)
#define  DITHER_CONTROL_DISABLE (0 << 8)
#define  DITHER_CONTROL_ORDERED (2 << 8)
#define  DITHER_CONTROL_ERRDIFF (3 << 8)
#define  BASE_COLOR_SIZE_MASK   (0xf << 0)
#define  BASE_COLOR_SIZE_666    (0 << 0)
#define  BASE_COLOR_SIZE_111    (1 << 0)
#define  BASE_COLOR_SIZE_222    (2 << 0)
#define  BASE_COLOR_SIZE_333    (3 << 0)
#define  BASE_COLOR_SIZE_444    (4 << 0)
#define  BASE_COLOR_SIZE_555    (5 << 0)
#define  BASE_COLOR_SIZE_565    (6 << 0)
#define  BASE_COLOR_SIZE_332    (7 << 0)
#define  BASE_COLOR_SIZE_888    (8 << 0)

#define DC_DISP_SHIFT_CLOCK_OPTIONS 0x431
#define  SC1_H_QUALIFIER_NONE	(1 << 16)
#define  SC0_H_QUALIFIER_NONE	(1 <<  0)

#define DC_DISP_DATA_ENABLE_OPTIONS 0x432
#define  DE_SELECT_ACTIVE_BLANK  (0 << 0)
#define  DE_SELECT_ACTIVE        (1 << 0)
#define  DE_SELECT_ACTIVE_IS     (2 << 0)
#define  DE_CONTROL_ONECLK       (0 << 2)
#define  DE_CONTROL_NORMAL       (1 << 2)
#define  DE_CONTROL_EARLY_EXT    (2 << 2)
#define  DE_CONTROL_EARLY        (3 << 2)
#define  DE_CONTROL_ACTIVE_BLANK (4 << 2)

#define DC_DISP_DC_MCCIF_FIFOCTRL 0x480
#define DC_DISP_SD_BL_PARAMETERS 0x4D7
#define DC_DISP_SD_BL_CONTROL 0x4DC
#define DC_DISP_BLEND_BACKGROUND_COLOR 0x4E4

#define DC_WIN_CSC_YOF 0x611
#define DC_WIN_CSC_KYRGB 0x612
#define DC_WIN_CSC_KUR 0x613
#define DC_WIN_CSC_KVR 0x614
#define DC_WIN_CSC_KUG 0x615
#define DC_WIN_CSC_KVG 0x616
#define DC_WIN_CSC_KUB 0x617
#define DC_WIN_CSC_KVB 0x618
#define DC_WIN_AD_WIN_OPTIONS 0xB80
#define DC_WIN_BD_WIN_OPTIONS 0xD80
#define DC_WIN_CD_WIN_OPTIONS 0xF80

// The following registers are A/B/C shadows of the 0xB80/0xD80/0xF80 registers (see DISPLAY_WINDOW_HEADER).
#define DC_WIN_WIN_OPTIONS 0x700
#define  H_DIRECTION  (1 <<  0)
#define  V_DIRECTION  (1 <<  2)
#define  SCAN_COLUMN  (1 <<  4)
#define  COLOR_EXPAND (1 <<  6)
#define  CSC_ENABLE   (1 << 18)
#define  WIN_ENABLE   (1 << 30)

#define DC_WIN_COLOR_DEPTH 0x703
#define  WIN_COLOR_DEPTH_P1             0x0
#define  WIN_COLOR_DEPTH_P2             0x1
#define  WIN_COLOR_DEPTH_P4             0x2
#define  WIN_COLOR_DEPTH_P8             0x3
#define  WIN_COLOR_DEPTH_B4G4R4A4       0x4
#define  WIN_COLOR_DEPTH_B5G5R5A        0x5
#define  WIN_COLOR_DEPTH_B5G6R5         0x6
#define  WIN_COLOR_DEPTH_AB5G5R5        0x7
#define  WIN_COLOR_DEPTH_B8G8R8A8       0xC
#define  WIN_COLOR_DEPTH_R8G8B8A8       0xD
#define  WIN_COLOR_DEPTH_B6x2G6x2R6x2A8 0xE
#define  WIN_COLOR_DEPTH_R6x2G6x2B6x2A8 0xF
#define  WIN_COLOR_DEPTH_YCbCr422       0x10
#define  WIN_COLOR_DEPTH_YUV422         0x11
#define  WIN_COLOR_DEPTH_YCbCr420P      0x12
#define  WIN_COLOR_DEPTH_YUV420P        0x13
#define  WIN_COLOR_DEPTH_YCbCr422P      0x14
#define  WIN_COLOR_DEPTH_YUV422P        0x15
#define  WIN_COLOR_DEPTH_YCbCr422R      0x16
#define  WIN_COLOR_DEPTH_YUV422R        0x17
#define  WIN_COLOR_DEPTH_YCbCr422RA     0x18
#define  WIN_COLOR_DEPTH_YUV422RA       0x19

#define DC_WIN_BUFFER_CONTROL 0x702
#define DC_WIN_POSITION 0x704

#define DC_WIN_SIZE 0x705
#define  H_SIZE(x) (((x) & 0x1fff) <<  0)
#define  V_SIZE(x) (((x) & 0x1fff) << 16)

#define DC_WIN_PRESCALED_SIZE 0x706
#define  H_PRESCALED_SIZE(x) (((x) & 0x7fff) <<  0)
#define  V_PRESCALED_SIZE(x) (((x) & 0x1fff) << 16)

#define DC_WIN_H_INITIAL_DDA 0x707
#define DC_WIN_V_INITIAL_DDA 0x708

#define DC_WIN_DDA_INC 0x709
#define  H_DDA_INC(x) (((x) & 0xffff) <<  0)
#define  V_DDA_INC(x) (((x) & 0xffff) << 16)

#define DC_WIN_LINE_STRIDE 0x70A
#define  LINE_STRIDE(x)	   (x)
#define  UV_LINE_STRIDE(x) (((x) & 0xffff) << 16)
#define DC_WIN_DV_CONTROL 0x70E

// The following registers are A/B/C shadows of the 0xBC0/0xDC0/0xFC0 registers (see DISPLAY_WINDOW_HEADER).
#define DC_WINBUF_START_ADDR 0x800
#define DC_WINBUF_ADDR_H_OFFSET 0x806
#define DC_WINBUF_ADDR_V_OFFSET 0x808
#define DC_WINBUF_SURFACE_KIND 0x80B
#define  PITCH	(0 << 0)
#define  TILED	(1 << 0)
#define  BLOCK	(2 << 0)
#define  BLOCK_HEIGHT(x) (((x) & 0x7) << 4)

/*! Display serial interface registers. */
#define _DSIREG(reg) ((reg) * 4)

#define DSI_RD_DATA 0x9
#define DSI_WR_DATA 0xA

#define DSI_POWER_CONTROL 0xB
#define  DSI_POWER_CONTROL_ENABLE 1

#define DSI_INT_ENABLE 0xC
#define DSI_INT_STATUS 0xD
#define DSI_INT_MASK 0xE

#define DSI_HOST_CONTROL 0xF
#define  DSI_HOST_CONTROL_FIFO_RESET   (1 << 21)
#define  DSI_HOST_CONTROL_CRC_RESET    (1 << 20)
#define  DSI_HOST_CONTROL_TX_TRIG_SOL  (0 << 12)
#define  DSI_HOST_CONTROL_TX_TRIG_FIFO (1 << 12)
#define  DSI_HOST_CONTROL_TX_TRIG_HOST (2 << 12)
#define  DSI_HOST_CONTROL_RAW          (1 << 6)
#define  DSI_HOST_CONTROL_HS           (1 << 5)
#define  DSI_HOST_CONTROL_FIFO_SEL     (1 << 4)
#define  DSI_HOST_CONTROL_IMM_BTA      (1 << 3)
#define  DSI_HOST_CONTROL_PKT_BTA      (1 << 2)
#define  DSI_HOST_CONTROL_CS           (1 << 1)
#define  DSI_HOST_CONTROL_ECC          (1 << 0)

#define DSI_CONTROL 0x10
#define  DSI_CONTROL_HS_CLK_CTRL  (1 << 20)
#define  DSI_CONTROL_CHANNEL(c)   (((c) & 0x3) << 16)
#define  DSI_CONTROL_FORMAT(f)    (((f) & 0x3) << 12)
#define  DSI_CONTROL_TX_TRIG(x)   (((x) & 0x3) <<  8)
#define  DSI_CONTROL_LANES(n)     (((n) & 0x3) <<  4)
#define  DSI_CONTROL_DCS_ENABLE   (1 << 3)
#define  DSI_CONTROL_SOURCE(s)    (((s) & 0x1) <<  2)
#define  DSI_CONTROL_VIDEO_ENABLE (1 << 1)
#define  DSI_CONTROL_HOST_ENABLE  (1 << 0)

#define DSI_SOL_DELAY 0x11
#define DSI_MAX_THRESHOLD 0x12

#define DSI_TRIGGER 0x13
#define  DSI_TRIGGER_HOST  (1 << 1)
#define  DSI_TRIGGER_VIDEO (1 << 0)

#define DSI_TX_CRC 0x14
#define DSI_STATUS 0x15
#define DSI_INIT_SEQ_CONTROL 0x1A
#define DSI_INIT_SEQ_DATA_0 0x1B
#define DSI_INIT_SEQ_DATA_1 0x1C
#define DSI_INIT_SEQ_DATA_2 0x1D
#define DSI_INIT_SEQ_DATA_3 0x1E
#define DSI_PKT_SEQ_0_LO 0x23
#define DSI_PKT_SEQ_0_HI 0x24
#define DSI_PKT_SEQ_1_LO 0x25
#define DSI_PKT_SEQ_1_HI 0x26
#define DSI_PKT_SEQ_2_LO 0x27
#define DSI_PKT_SEQ_2_HI 0x28
#define DSI_PKT_SEQ_3_LO 0x29
#define DSI_PKT_SEQ_3_HI 0x2A
#define DSI_PKT_SEQ_4_LO 0x2B
#define DSI_PKT_SEQ_4_HI 0x2C
#define DSI_PKT_SEQ_5_LO 0x2D
#define DSI_PKT_SEQ_5_HI 0x2E
#define DSI_DCS_CMDS 0x33
#define DSI_PKT_LEN_0_1 0x34
#define DSI_PKT_LEN_2_3 0x35
#define DSI_PKT_LEN_4_5 0x36
#define DSI_PKT_LEN_6_7 0x37
#define DSI_PHY_TIMING_0 0x3C
#define DSI_PHY_TIMING_1 0x3D
#define DSI_PHY_TIMING_2 0x3E
#define DSI_BTA_TIMING 0x3F

#define DSI_TIMEOUT_0 0x44
#define  DSI_TIMEOUT_LRX(x) (((x) & 0xffff) << 16)
#define  DSI_TIMEOUT_HTX(x) (((x) & 0xffff) <<  0)

#define DSI_TIMEOUT_1 0x45
#define  DSI_TIMEOUT_PR(x) (((x) & 0xffff) << 16)
#define  DSI_TIMEOUT_TA(x) (((x) & 0xffff) <<  0)

#define DSI_TO_TALLY 0x46

#define DSI_PAD_CONTROL_0 0x4B
#define  DSI_PAD_CONTROL_VS1_PULLDN_CLK (1 << 24)
#define  DSI_PAD_CONTROL_VS1_PULLDN(x)  (((x) & 0xf) << 16)
#define  DSI_PAD_CONTROL_VS1_PDIO_CLK   (1 <<  8)
#define  DSI_PAD_CONTROL_VS1_PDIO(x)    (((x) & 0xf) <<  0)

#define DSI_PAD_CONTROL_CD 0x4C
#define DSI_VIDEO_MODE_CONTROL 0x4E

#define DSI_PAD_CONTROL_1 0x4F
#define DSI_PAD_CONTROL_2 0x50

#define DSI_PAD_CONTROL_3 0x51
#define  DSI_PAD_PREEMP_PD_CLK(x) (((x) & 0x3) << 12)
#define  DSI_PAD_PREEMP_PU_CLK(x) (((x) & 0x3) << 8)
#define  DSI_PAD_PREEMP_PD(x)     (((x) & 0x3) << 4)
#define  DSI_PAD_PREEMP_PU(x)     (((x) & 0x3) << 0)

#define DSI_PAD_CONTROL_4 0x52
#define DSI_INIT_SEQ_DATA_15 0x5F

#define MIPI_CAL_MIPI_BIAS_PAD_CFG2 0x60

void display_init();
void display_backlight_pwm_init();
void display_end();

/*! Show one single color on the display. */
void display_color_screen(u32 color);

/*! Switches screen backlight ON/OFF. */
void display_backlight(bool enable);
void display_backlight_brightness(u32 brightness, u32 step_delay);

/*! Init display in full 1280x720 resolution (B8G8R8A8, line stride 768, framebuffer size = 1280*768*4 bytes). */
u32 *display_init_framebuffer();

#endif


================================================
FILE: argon-first-stage/include/gfx/di.inl
================================================
/*
* Copyright (c) 2018 naehrwert
* Copyright (C) 2018 CTCaer
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

//Clock config.
static const cfg_op_t _display_config_1[4] = {
	{0x4E, 0x40000000}, //CLK_RST_CONTROLLER_CLK_SOURCE_DISP1
	{0x34, 0x4830A001}, //CLK_RST_CONTROLLER_PLLD_BASE
	{0x36, 0x20},       //CLK_RST_CONTROLLER_PLLD_MISC1
	{0x37, 0x2D0AAA}    //CLK_RST_CONTROLLER_PLLD_MISC
};

//Display A config.
static const cfg_op_t _display_config_2[94] = {
	{DC_CMD_STATE_ACCESS, 0},
	{DC_CMD_STATE_CONTROL, GENERAL_UPDATE},
	{DC_CMD_STATE_CONTROL, GENERAL_ACT_REQ},
	{DC_CMD_REG_ACT_CONTROL, 0x54},
	{DC_CMD_STATE_CONTROL, GENERAL_UPDATE},
	{DC_CMD_STATE_CONTROL, GENERAL_ACT_REQ},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_A_SELECT},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_B_SELECT},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_C_SELECT},
	{DC_DISP_DC_MCCIF_FIFOCTRL, 0},
	{DC_DISP_DISP_MEM_HIGH_PRIORITY, 0},
	{DC_DISP_DISP_MEM_HIGH_PRIORITY_TIMER, 0},
	{DC_CMD_DISPLAY_POWER_CONTROL, PW0_ENABLE | PW1_ENABLE | PW2_ENABLE | PW3_ENABLE | PW4_ENABLE | PM0_ENABLE | PM1_ENABLE},
	{DC_CMD_GENERAL_INCR_SYNCPT_CNTRL, SYNCPT_CNTRL_NO_STALL},
	{DC_CMD_CONT_SYNCPT_VSYNC, SYNCPT_VSYNC_ENABLE | 0x9}, // 9: SYNCPT
	{DC_CMD_STATE_CONTROL, GENERAL_UPDATE | WIN_A_UPDATE | WIN_B_UPDATE | WIN_C_UPDATE},
	{DC_CMD_STATE_CONTROL, GENERAL_ACT_REQ | WIN_A_ACT_REQ | WIN_B_ACT_REQ | WIN_C_ACT_REQ},
	{DC_CMD_STATE_ACCESS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_A_SELECT},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_A_SELECT},
	{DC_WIN_DV_CONTROL, 0},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_A_SELECT},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_A_SELECT},
	/* Setup default YUV colorspace conversion coefficients */
	{DC_WIN_CSC_YOF,   0xF0},
	{DC_WIN_CSC_KYRGB, 0x12A},
	{DC_WIN_CSC_KUR,   0},
	{DC_WIN_CSC_KVR,   0x198},
	{DC_WIN_CSC_KUG,   0x39B},
	{DC_WIN_CSC_KVG,   0x32F},
	{DC_WIN_CSC_KUB,   0x204},
	{DC_WIN_CSC_KVB,   0},
	/* End of color coefficients */
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_B_SELECT},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_B_SELECT},
	{DC_WIN_DV_CONTROL, 0},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_B_SELECT},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_B_SELECT},
	/* Setup default YUV colorspace conversion coefficients */
	{DC_WIN_CSC_YOF,   0xF0},
	{DC_WIN_CSC_KYRGB, 0x12A},
	{DC_WIN_CSC_KUR,   0},
	{DC_WIN_CSC_KVR,   0x198},
	{DC_WIN_CSC_KUG,   0x39B},
	{DC_WIN_CSC_KVG,   0x32F},
	{DC_WIN_CSC_KUB,   0x204},
	{DC_WIN_CSC_KVB,   0},
	/* End of color coefficients */
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_C_SELECT},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_C_SELECT},
	{DC_WIN_DV_CONTROL, 0},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_C_SELECT},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_C_SELECT},
	/* Setup default YUV colorspace conversion coefficients */
	{DC_WIN_CSC_YOF,   0xF0},
	{DC_WIN_CSC_KYRGB, 0x12A},
	{DC_WIN_CSC_KUR,   0},
	{DC_WIN_CSC_KVR,   0x198},
	{DC_WIN_CSC_KUG,   0x39B},
	{DC_WIN_CSC_KVG,   0x32F},
	{DC_WIN_CSC_KUB,   0x204},
	{DC_WIN_CSC_KVB,   0},
	/* End of color coefficients */
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_A_SELECT},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_B_SELECT},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_C_SELECT},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_DISP_DISP_COLOR_CONTROL, BASE_COLOR_SIZE_888},
	{DC_DISP_DISP_INTERFACE_CONTROL, DISP_DATA_FORMAT_DF1P1C},
	{DC_COM_PIN_OUTPUT_POLARITY(1), 0x1000000},
	{DC_COM_PIN_OUTPUT_POLARITY(3), 0},
	{0x4E4, 0},
	{DC_COM_CRC_CONTROL, 0},
	{DC_CMD_STATE_CONTROL, GENERAL_UPDATE | WIN_A_UPDATE | WIN_B_UPDATE | WIN_C_UPDATE},
	{DC_CMD_STATE_CONTROL, GENERAL_ACT_REQ | WIN_A_ACT_REQ | WIN_B_ACT_REQ | WIN_C_ACT_REQ},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_A_SELECT},
	{0x716, 0x10000FF},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_B_SELECT},
	{0x716, 0x10000FF},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_C_SELECT},
	{0x716, 0x10000FF},
	{DC_CMD_DISPLAY_COMMAND_OPTION0, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_A_SELECT},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_B_SELECT},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_C_SELECT},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_DISP_DISP_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_COMMAND, DISP_CTRL_MODE_STOP},
	{DC_CMD_STATE_CONTROL, GENERAL_UPDATE | WIN_A_UPDATE | WIN_B_UPDATE | WIN_C_UPDATE},
	{DC_CMD_STATE_CONTROL, GENERAL_ACT_REQ | WIN_A_ACT_REQ | WIN_B_ACT_REQ | WIN_C_ACT_REQ}
};

//DSI Init config.
static const cfg_op_t _display_config_3[61] = { 
	{DSI_WR_DATA, 0},
	{DSI_INT_ENABLE, 0},
	{DSI_INT_STATUS, 0},
	{DSI_INT_MASK, 0},
	{DSI_INIT_SEQ_DATA_0, 0},
	{DSI_INIT_SEQ_DATA_1, 0},
	{DSI_INIT_SEQ_DATA_2, 0},
	{DSI_INIT_SEQ_DATA_3, 0},
	{DSI_INIT_SEQ_DATA_15, 0},
	{DSI_DCS_CMDS, 0},
	{DSI_PKT_SEQ_0_LO, 0},
	{DSI_PKT_SEQ_1_LO, 0},
	{DSI_PKT_SEQ_2_LO, 0},
	{DSI_PKT_SEQ_3_LO, 0},
	{DSI_PKT_SEQ_4_LO, 0},
	{DSI_PKT_SEQ_5_LO, 0},
	{DSI_PKT_SEQ_0_HI, 0},
	{DSI_PKT_SEQ_1_HI, 0},
	{DSI_PKT_SEQ_2_HI, 0},
	{DSI_PKT_SEQ_3_HI, 0},
	{DSI_PKT_SEQ_4_HI, 0},
	{DSI_PKT_SEQ_5_HI, 0},
	{DSI_CONTROL, 0},
	{DSI_PAD_CONTROL_CD, 0},
	{DSI_SOL_DELAY, 0x18},
	{DSI_MAX_THRESHOLD, 0x1E0},
	{DSI_TRIGGER, 0},
	{DSI_INIT_SEQ_CONTROL, 0},
	{DSI_PKT_LEN_0_1, 0},
	{DSI_PKT_LEN_2_3, 0},
	{DSI_PKT_LEN_4_5, 0},
	{DSI_PKT_LEN_6_7, 0},
	{DSI_PAD_CONTROL_1, 0},
	{DSI_PHY_TIMING_0, 0x6070601},
	{DSI_PHY_TIMING_1, 0x40A0E05},
	{DSI_PHY_TIMING_2, 0x30109},
	{DSI_BTA_TIMING, 0x190A14},
	{DSI_TIMEOUT_0, DSI_TIMEOUT_LRX(0x2000) | DSI_TIMEOUT_HTX(0xFFFF)},
	{DSI_TIMEOUT_1, DSI_TIMEOUT_PR(0x765) | DSI_TIMEOUT_TA(0x2000)},
	{DSI_TO_TALLY, 0},
	{DSI_PAD_CONTROL_0, DSI_PAD_CONTROL_VS1_PULLDN(0) | DSI_PAD_CONTROL_VS1_PDIO(0)}, // Enable
	{DSI_POWER_CONTROL, DSI_POWER_CONTROL_ENABLE},
	{DSI_POWER_CONTROL, DSI_POWER_CONTROL_ENABLE},
	{DSI_POWER_CONTROL, 0},
	{DSI_POWER_CONTROL, 0},
	{DSI_PAD_CONTROL_1, 0},
	{DSI_PHY_TIMING_0, 0x6070601},
	{DSI_PHY_TIMING_1, 0x40A0E05},
	{DSI_PHY_TIMING_2, 0x30118},
	{DSI_BTA_TIMING, 0x190A14},
	{DSI_TIMEOUT_0, DSI_TIMEOUT_LRX(0x2000) | DSI_TIMEOUT_HTX(0xFFFF)},
	{DSI_TIMEOUT_1, DSI_TIMEOUT_PR(0x1343) | DSI_TIMEOUT_TA(0x2000)},
	{DSI_TO_TALLY, 0},
	{DSI_HOST_CONTROL, DSI_HOST_CONTROL_CRC_RESET | DSI_HOST_CONTROL_TX_TRIG_HOST | DSI_HOST_CONTROL_CS | DSI_HOST_CONTROL_ECC},
	{DSI_CONTROL, DSI_CONTROL_LANES(3) | DSI_CONTROL_HOST_ENABLE},
	{DSI_POWER_CONTROL, DSI_POWER_CONTROL_ENABLE},
	{DSI_POWER_CONTROL, DSI_POWER_CONTROL_ENABLE},
	{DSI_MAX_THRESHOLD, 0x40},
	{DSI_TRIGGER, 0},
	{DSI_TX_CRC, 0},
	{DSI_INIT_SEQ_CONTROL, 0}
};

//DSI config (if ver == 0x10).
static const cfg_op_t _display_config_4[43] = {
	{DSI_WR_DATA, 0x439},
	{DSI_WR_DATA, 0x9483FFB9},
	{DSI_TRIGGER, DSI_TRIGGER_HOST},
	{DSI_WR_DATA, 0xBD15},
	{DSI_TRIGGER, DSI_TRIGGER_HOST},
	{DSI_WR_DATA, 0x1939},
	{DSI_WR_DATA, 0xAAAAAAD8},
	{DSI_WR_DATA, 0xAAAAAAEB},
	{DSI_WR_DATA, 0xAAEBAAAA},
	{DSI_WR_DATA, 0xAAAAAAAA},
	{DSI_WR_DATA, 0xAAAAAAEB},
	{DSI_WR_DATA, 0xAAEBAAAA},
	{DSI_WR_DATA, 0xAA},
	{DSI_TRIGGER, DSI_TRIGGER_HOST},
	{DSI_WR_DATA, 0x1BD15},
	{DSI_TRIGGER, DSI_TRIGGER_HOST},
	{DSI_WR_DATA, 0x2739},
	{DSI_WR_DATA, 0xFFFFFFD8},
	{DSI_WR_DATA, 0xFFFFFFFF},
	{DSI_WR_DATA, 0xFFFFFFFF},
	{DSI_WR_DATA, 0xFFFFFFFF},
	{DSI_WR_DATA, 0xFFFFFFFF},
	{DSI_WR_DATA, 0xFFFFFFFF},
	{DSI_WR_DATA, 0xFFFFFFFF},
	{DSI_WR_DATA, 0xFFFFFFFF},
	{DSI_WR_DATA, 0xFFFFFFFF},
	{DSI_WR_DATA, 0xFFFFFF},
	{DSI_TRIGGER, DSI_TRIGGER_HOST},
	{DSI_WR_DATA, 0x2BD15},
	{DSI_TRIGGER, DSI_TRIGGER_HOST},
	{DSI_WR_DATA, 0xF39},
	{DSI_WR_DATA, 0xFFFFFFD8},
	{DSI_WR_DATA, 0xFFFFFFFF},
	{DSI_WR_DATA, 0xFFFFFFFF},
	{DSI_WR_DATA, 0xFFFFFF},
	{DSI_TRIGGER, DSI_TRIGGER_HOST},
	{DSI_WR_DATA, 0xBD15},
	{DSI_TRIGGER, DSI_TRIGGER_HOST},
	{DSI_WR_DATA, 0x6D915},
	{DSI_TRIGGER, DSI_TRIGGER_HOST},
	{DSI_WR_DATA, 0x439},
	{DSI_WR_DATA, 0xB9},
	{DSI_TRIGGER, DSI_TRIGGER_HOST}
};

//DSI config.
static const cfg_op_t _display_config_5[21] = {
	{DSI_PAD_CONTROL_1, 0},
	{DSI_PHY_TIMING_0, 0x6070601},
	{DSI_PHY_TIMING_1, 0x40A0E05},
	{DSI_PHY_TIMING_2, 0x30172},
	{DSI_BTA_TIMING, 0x190A14},
	{DSI_TIMEOUT_0, DSI_TIMEOUT_LRX(0x2000) | DSI_TIMEOUT_HTX(0xA40)},
	{DSI_TIMEOUT_1, DSI_TIMEOUT_PR(0x5A2F) | DSI_TIMEOUT_TA(0x2000)},
	{DSI_TO_TALLY, 0},
	{DSI_PKT_SEQ_0_LO, 0x40000208},
	{DSI_PKT_SEQ_2_LO, 0x40000308},
	{DSI_PKT_SEQ_4_LO, 0x40000308},
	{DSI_PKT_SEQ_1_LO, 0x40000308},
	{DSI_PKT_SEQ_3_LO, 0x3F3B2B08},
	{DSI_PKT_SEQ_3_HI, 0x2CC},
	{DSI_PKT_SEQ_5_LO, 0x3F3B2B08},
	{DSI_PKT_SEQ_5_HI, 0x2CC},
	{DSI_PKT_LEN_0_1, 0xCE0000},
	{DSI_PKT_LEN_2_3, 0x87001A2},
	{DSI_PKT_LEN_4_5, 0x190},
	{DSI_PKT_LEN_6_7, 0x190},
	{DSI_HOST_CONTROL, 0},
};

//Clock config.
static const cfg_op_t _display_config_6[3] = {
	{0x34, 0x4810C001}, //CLK_RST_CONTROLLER_PLLD_BASE
	{0x36, 0x20},       //CLK_RST_CONTROLLER_PLLD_MISC1
	{0x37, 0x2DFC00}    //CLK_RST_CONTROLLER_PLLD_MISC
};

//DSI config.
static const cfg_op_t _display_config_7[10] = {
	{DSI_TRIGGER, 0},
	{DSI_CONTROL, 0},
	{DSI_SOL_DELAY, 6},
	{DSI_MAX_THRESHOLD, 0x1E0},
	{DSI_POWER_CONTROL, DSI_POWER_CONTROL_ENABLE},
	{DSI_CONTROL, DSI_CONTROL_HS_CLK_CTRL | DSI_CONTROL_FORMAT(3) | DSI_CONTROL_LANES(3) | DSI_CONTROL_VIDEO_ENABLE},
	{DSI_HOST_CONTROL, DSI_HOST_CONTROL_HS | DSI_HOST_CONTROL_FIFO_SEL| DSI_HOST_CONTROL_CS | DSI_HOST_CONTROL_ECC},
	{DSI_CONTROL, DSI_CONTROL_HS_CLK_CTRL | DSI_CONTROL_FORMAT(3) | DSI_CONTROL_LANES(3) | DSI_CONTROL_VIDEO_ENABLE},
	{DSI_HOST_CONTROL, DSI_HOST_CONTROL_CS | DSI_HOST_CONTROL_ECC},
	{DSI_HOST_CONTROL, DSI_HOST_CONTROL_HS | DSI_HOST_CONTROL_CS | DSI_HOST_CONTROL_ECC}
};

//MIPI CAL config.
static const cfg_op_t _display_config_8[6] = {
	{0x18, 0},          // MIPI_CAL_MIPI_BIAS_PAD_CFG2
	{0x02, 0xF3F10000}, // MIPI_CAL_CIL_MIPI_CAL_STATUS
	{0x16, 0},          // MIPI_CAL_MIPI_BIAS_PAD_CFG0
	{0x18, 0},          // MIPI_CAL_MIPI_BIAS_PAD_CFG2
	{0x18, 0x10010},    // MIPI_CAL_MIPI_BIAS_PAD_CFG2
	{0x17, 0x300}       // MIPI_CAL_MIPI_BIAS_PAD_CFG1
};

//DSI config.
static const cfg_op_t _display_config_9[4] = {
	{DSI_PAD_CONTROL_1, 0},
	{DSI_PAD_CONTROL_2, 0},
	{DSI_PAD_CONTROL_3, DSI_PAD_PREEMP_PD_CLK(0x3) | DSI_PAD_PREEMP_PU_CLK(0x3) | DSI_PAD_PREEMP_PD(0x03) | DSI_PAD_PREEMP_PU(0x3)},
	{DSI_PAD_CONTROL_4, 0}
};

//MIPI CAL config.
static const cfg_op_t _display_config_10[16] = {
	{0x0E, 0x200200}, // MIPI_CAL_DSIA_MIPI_CAL_CONFIG
	{0x0F, 0x200200}, // MIPI_CAL_DSIB_MIPI_CAL_CONFIG
	{0x19, 0x200002}, // MIPI_CAL_DSIA_MIPI_CAL_CONFIG_2
	{0x1A, 0x200002}, // MIPI_CAL_DSIB_MIPI_CAL_CONFIG_2
	{0x05, 0},        // MIPI_CAL_CILA_MIPI_CAL_CONFIG
	{0x06, 0},        // MIPI_CAL_CILB_MIPI_CAL_CONFIG
	{0x07, 0},        // MIPI_CAL_CILC_MIPI_CAL_CONFIG
	{0x08, 0},        // MIPI_CAL_CILD_MIPI_CAL_CONFIG
	{0x09, 0},        // MIPI_CAL_CILE_MIPI_CAL_CONFIG
	{0x0A, 0},        // MIPI_CAL_CILF_MIPI_CAL_CONFIG
	{0x10, 0},        // MIPI_CAL_DSIC_MIPI_CAL_CONFIG
	{0x11, 0},        // MIPI_CAL_DSID_MIPI_CAL_CONFIG
	{0x1A, 0},        // MIPI_CAL_DSIB_MIPI_CAL_CONFIG_2
	{0x1C, 0},        // MIPI_CAL_DSIC_MIPI_CAL_CONFIG_2
	{0x1D, 0},        // MIPI_CAL_DSID_MIPI_CAL_CONFIG_2
	{0, 0x2A000001}   // MIPI_CAL_DSIA_MIPI_CAL_CONFIG
};

//Display A config.
static const cfg_op_t _display_config_11[113] = {
	{DC_CMD_STATE_ACCESS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_A_SELECT},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_A_SELECT},
	{DC_WIN_DV_CONTROL, 0},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_A_SELECT},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_A_SELECT},
	/* Setup default YUV colorspace conversion coefficients */
	{DC_WIN_CSC_YOF,   0xF0},
	{DC_WIN_CSC_KYRGB, 0x12A},
	{DC_WIN_CSC_KUR,   0},
	{DC_WIN_CSC_KVR,   0x198},
	{DC_WIN_CSC_KUG,   0x39B},
	{DC_WIN_CSC_KVG,   0x32F},
	{DC_WIN_CSC_KUB,   0x204},
	{DC_WIN_CSC_KVB,   0},
	/* End of color coefficients */
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_B_SELECT},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_B_SELECT},
	{DC_WIN_DV_CONTROL, 0},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_B_SELECT},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_B_SELECT},
	/* Setup default YUV colorspace conversion coefficients */
	{DC_WIN_CSC_YOF,   0xF0},
	{DC_WIN_CSC_KYRGB, 0x12A},
	{DC_WIN_CSC_KUR,   0},
	{DC_WIN_CSC_KVR,   0x198},
	{DC_WIN_CSC_KUG,   0x39B},
	{DC_WIN_CSC_KVG,   0x32F},
	{DC_WIN_CSC_KUB,   0x204},
	{DC_WIN_CSC_KVB,   0},
	/* End of color coefficients */
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_C_SELECT},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_C_SELECT},
	{DC_WIN_DV_CONTROL, 0},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_C_SELECT},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_C_SELECT},
	/* Setup default YUV colorspace conversion coefficients */
	{DC_WIN_CSC_YOF,   0xF0},
	{DC_WIN_CSC_KYRGB, 0x12A},
	{DC_WIN_CSC_KUR,   0},
	{DC_WIN_CSC_KVR,   0x198},
	{DC_WIN_CSC_KUG,   0x39B},
	{DC_WIN_CSC_KVG,   0x32F},
	{DC_WIN_CSC_KUB,   0x204},
	{DC_WIN_CSC_KVB,   0},
	/* End of color coefficients */
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_A_SELECT},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_B_SELECT},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_C_SELECT},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_DISP_DISP_COLOR_CONTROL, BASE_COLOR_SIZE_888},
	{DC_DISP_DISP_INTERFACE_CONTROL, DISP_DATA_FORMAT_DF1P1C},
	{DC_COM_PIN_OUTPUT_POLARITY(1), 0x1000000},
	{DC_COM_PIN_OUTPUT_POLARITY(3), 0},
	{0x4E4, 0},
	{DC_COM_CRC_CONTROL, 0},
	{DC_CMD_STATE_CONTROL, GENERAL_UPDATE | WIN_A_UPDATE | WIN_B_UPDATE | WIN_C_UPDATE},
	{DC_CMD_STATE_CONTROL, GENERAL_ACT_REQ | WIN_A_ACT_REQ | WIN_B_ACT_REQ | WIN_C_ACT_REQ},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_A_SELECT},
	{0x716, 0x10000FF},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_B_SELECT},
	{0x716, 0x10000FF},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_C_SELECT},
	{0x716, 0x10000FF},
	{DC_CMD_DISPLAY_COMMAND_OPTION0, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_A_SELECT},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_B_SELECT},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_C_SELECT},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_DISP_DISP_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_COMMAND, DISP_CTRL_MODE_STOP},
	{DC_CMD_STATE_CONTROL, GENERAL_UPDATE | WIN_A_UPDATE | WIN_B_UPDATE | WIN_C_UPDATE},
	{DC_CMD_STATE_CONTROL, GENERAL_ACT_REQ | WIN_A_ACT_REQ | WIN_B_ACT_REQ | WIN_C_ACT_REQ},
	{DC_CMD_STATE_ACCESS, 0},
	/* Set Display timings */
	{DC_DISP_DISP_TIMING_OPTIONS, 0},
	{DC_DISP_REF_TO_SYNC, (1 << 16)}, // h_ref_to_sync = 0, v_ref_to_sync = 1.
	{DC_DISP_SYNC_WIDTH,  0x10048},
	{DC_DISP_BACK_PORCH,  0x90048},
	{DC_DISP_ACTIVE,      0x50002D0},
	{DC_DISP_FRONT_PORCH, 0xA0088}, // Sources say that this should be above the DC_DISP_ACTIVE cmd.
	/* End of Display timings */
	{DC_DISP_SHIFT_CLOCK_OPTIONS, SC1_H_QUALIFIER_NONE | SC0_H_QUALIFIER_NONE},
	{DC_COM_PIN_OUTPUT_ENABLE(1), 0},
	{DC_DISP_DATA_ENABLE_OPTIONS, DE_SELECT_ACTIVE | DE_CONTROL_NORMAL},
	{DC_DISP_DISP_INTERFACE_CONTROL, DISP_DATA_FORMAT_DF1P1C},
	{DC_DISP_DISP_CLOCK_CONTROL, 0},
	{DC_CMD_DISPLAY_COMMAND_OPTION0, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_A_SELECT},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_B_SELECT},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_C_SELECT},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_DISP_DISP_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_COMMAND, DISP_CTRL_MODE_C_DISPLAY},
	{DC_CMD_STATE_CONTROL, GENERAL_UPDATE},
	{DC_CMD_STATE_CONTROL, GENERAL_ACT_REQ},
	{DC_CMD_STATE_ACCESS, READ_MUX | WRITE_MUX},
	{DC_DISP_FRONT_PORCH, 0xA0088},
	{DC_CMD_STATE_ACCESS, 0},
	{DC_CMD_STATE_CONTROL, GENERAL_UPDATE},
	{DC_CMD_STATE_CONTROL, GENERAL_ACT_REQ},
	{DC_CMD_GENERAL_INCR_SYNCPT, 0x301},
	{DC_CMD_GENERAL_INCR_SYNCPT, 0x301},
	{DC_CMD_STATE_CONTROL, GENERAL_UPDATE},
	{DC_CMD_STATE_CONTROL, GENERAL_ACT_REQ},
	{DC_CMD_STATE_ACCESS, 0},
	{DC_DISP_DISP_CLOCK_CONTROL, PIXEL_CLK_DIVIDER_PCD1 | SHIFT_CLK_DIVIDER(4)},
	{DC_DISP_DISP_COLOR_CONTROL, BASE_COLOR_SIZE_888},
	{DC_CMD_DISPLAY_COMMAND_OPTION0, 0}
};

////Display A config.
static const cfg_op_t _display_config_12[17] = {
	{DC_DISP_FRONT_PORCH, 0xA0088},
	{DC_CMD_INT_MASK, 0},
	{DC_CMD_STATE_ACCESS, 0},
	{DC_CMD_INT_ENABLE, 0},
	{DC_CMD_CONT_SYNCPT_VSYNC, 0},
	{DC_CMD_DISPLAY_COMMAND, DISP_CTRL_MODE_STOP},
	{DC_CMD_STATE_CONTROL, GENERAL_UPDATE},
	{DC_CMD_STATE_CONTROL, GENERAL_ACT_REQ},
	{DC_CMD_STATE_CONTROL, GENERAL_UPDATE},
	{DC_CMD_STATE_CONTROL, GENERAL_ACT_REQ},
	{DC_CMD_GENERAL_INCR_SYNCPT, 0x301},
	{DC_CMD_GENERAL_INCR_SYNCPT, 0x301},
	{DC_CMD_STATE_CONTROL, GENERAL_UPDATE},
	{DC_CMD_STATE_CONTROL, GENERAL_ACT_REQ},
	{DC_CMD_DISPLAY_POWER_CONTROL, 0},
	{DC_CMD_STATE_CONTROL, GENERAL_UPDATE},
	{DC_CMD_STATE_CONTROL, GENERAL_ACT_REQ},
};

//DSI config.
static const cfg_op_t _display_config_13[16] = {
	{DSI_POWER_CONTROL, 0},
	{DSI_PAD_CONTROL_1, 0},
	{DSI_PHY_TIMING_0, 0x6070601},
	{DSI_PHY_TIMING_1, 0x40A0E05},
	{DSI_PHY_TIMING_2, 0x30118},
	{DSI_BTA_TIMING, 0x190A14},
	{DSI_TIMEOUT_0, DSI_TIMEOUT_LRX(0x2000) | DSI_TIMEOUT_HTX(0xFFFF) },
	{DSI_TIMEOUT_1, DSI_TIMEOUT_PR(0x1343) | DSI_TIMEOUT_TA(0x2000)},
	{DSI_TO_TALLY, 0},
	{DSI_HOST_CONTROL, DSI_HOST_CONTROL_CRC_RESET | DSI_HOST_CONTROL_TX_TRIG_HOST | DSI_HOST_CONTROL_CS | DSI_HOST_CONTROL_ECC},
	{DSI_CONTROL, DSI_CONTROL_LANES(3) | DSI_CONTROL_HOST_ENABLE},
	{DSI_POWER_CONTROL, DSI_POWER_CONTROL_ENABLE},
	{DSI_MAX_THRESHOLD, 0x40},
	{DSI_TRIGGER, 0},
	{DSI_TX_CRC, 0},
	{DSI_INIT_SEQ_CONTROL, 0}
};

//DSI config (if ver == 0x10).
static const cfg_op_t _display_config_14[22] = {
	{DSI_WR_DATA, 0x439},
	{DSI_WR_DATA, 0x9483FFB9},
	{DSI_TRIGGER, DSI_TRIGGER_HOST},
	{DSI_WR_DATA, 0x2139},
	{DSI_WR_DATA, 0x191919D5},
	{DSI_WR_DATA, 0x19191919},
	{DSI_WR_DATA, 0x19191919},
	{DSI_WR_DATA, 0x19191919},
	{DSI_WR_DATA, 0x19191919},
	{DSI_WR_DATA, 0x19191919},
	{DSI_WR_DATA, 0x19191919},
	{DSI_WR_DATA, 0x19191919},
	{DSI_WR_DATA, 0x19},
	{DSI_TRIGGER, DSI_TRIGGER_HOST},
	{DSI_WR_DATA, 0xB39},
	{DSI_WR_DATA, 0x4F0F41B1},
	{DSI_WR_DATA, 0xF179A433},
	{DSI_WR_DATA, 0x2D81},
	{DSI_TRIGGER, DSI_TRIGGER_HOST},
	{DSI_WR_DATA, 0x439},
	{DSI_WR_DATA, 0xB9},
	{DSI_TRIGGER, DSI_TRIGGER_HOST}
};

//Display A config.
static const cfg_op_t cfg_display_one_color[8] = {
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_A_SELECT}, //Enable window A.
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_B_SELECT}, //Enable window B.
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_C_SELECT}, //Enable window C.
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_DISP_DISP_WIN_OPTIONS, DSI_ENABLE}, //DSI_ENABLE
	{DC_CMD_DISPLAY_COMMAND, DISP_CTRL_MODE_C_DISPLAY} //DISPLAY_CTRL_MODE: continuous display.
};

//Display A config.
static const cfg_op_t cfg_display_framebuffer[32] = {
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_C_SELECT}, //Enable window C.
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_B_SELECT}, //Enable window B.
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_CMD_DISPLAY_WINDOW_HEADER, WINDOW_A_SELECT}, //Enable window A.
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_DISP_DISP_WIN_OPTIONS, DSI_ENABLE}, //DSI_ENABLE
	{DC_WIN_COLOR_DEPTH, WIN_COLOR_DEPTH_B8G8R8A8}, //T_A8R8G8B8 //NX Default: T_A8B8G8R8, WIN_COLOR_DEPTH_R8G8B8A8
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_WIN_POSITION, 0}, //(0,0)
	{DC_WIN_H_INITIAL_DDA, 0},
	{DC_WIN_V_INITIAL_DDA, 0},
	{DC_WIN_PRESCALED_SIZE, V_PRESCALED_SIZE(1280) | H_PRESCALED_SIZE(2880)}, //Pre-scaled size: 1280x2880 bytes.
	{DC_WIN_DDA_INC, V_DDA_INC(0x1000) | H_DDA_INC(0x1000)},
	{DC_WIN_SIZE, V_SIZE(1280) | H_SIZE(720)}, //Window size: 1280 vertical lines x 720 horizontal pixels.
	{DC_WIN_LINE_STRIDE, UV_LINE_STRIDE(720 * 2) | LINE_STRIDE(720 * 4)}, //768*2x768*4 (= 0x600 x 0xC00) bytes, see TRM for alignment requirements.
	{DC_WIN_BUFFER_CONTROL, 0},
	{DC_WINBUF_SURFACE_KIND, 0}, //Regular surface.
	{DC_WINBUF_START_ADDR, FB_ADDRESS}, //Framebuffer address.
	{DC_WINBUF_ADDR_H_OFFSET, 0},
	{DC_WINBUF_ADDR_V_OFFSET, 0},
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_DISP_DISP_WIN_OPTIONS, DSI_ENABLE}, //DSI_ENABLE
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_DISP_DISP_WIN_OPTIONS, DSI_ENABLE}, //DSI_ENABLE
	{DC_WIN_WIN_OPTIONS, 0},
	{DC_DISP_DISP_WIN_OPTIONS, DSI_ENABLE}, //DSI_ENABLE
	{DC_WIN_WIN_OPTIONS, WIN_ENABLE}, //Enable window AD.
	{DC_CMD_DISPLAY_COMMAND, DISP_CTRL_MODE_C_DISPLAY}, //DISPLAY_CTRL_MODE: continuous display.
	{DC_CMD_STATE_CONTROL, GENERAL_UPDATE | WIN_A_UPDATE}, //General update; window A update.
	{DC_CMD_STATE_CONTROL, GENERAL_ACT_REQ | WIN_A_ACT_REQ} //General activation request; window A activation request.
};


================================================
FILE: argon-first-stage/include/gfx/gfx.h
================================================
/*
 * Copyright (c) 2018 naehrwert
 * Copyright (C) 2018 CTCaer
 * Copyright (C) 2018 M4xw
 * Copyright (C) 2018 Guillem96
 * 
 * This program is free software; you can redistribute it and/or modify it
 * under the terms and conditions of the GNU General Public License,
 * version 2, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef _GFX_H_
#define _GFX_H_

#include "utils/types.h"

#define RED 0xFF0000FF
#define GREEN 0xFF00FF00
#define BLUE 0xFFFF0000
#define YELLOW 0xFF00FFFF
#define ORANGE 0xFF3891FF
#define WHITE 0xFFFFFFFF
#define BLACK 0xFF000000

#define CHAR_WIDTH 8
#define CHAR_HEIGHT 8

typedef struct _gfx_ctxt_t
{
	u32 *fb;
    u32* next;
	u32 width;
	u32 height;
	u32 stride;
} gfx_ctxt_t;

typedef struct _gfx_con_t
{
	gfx_ctxt_t *gfx_ctxt;
    u8 scale;
	u32 fntsz;
	u32 x;
	u32 y;
	u32 savedx;
	u32 savedy;
	u32 fgcol;
	int fillbg;
	u32 bgcol;
	bool mute;
} gfx_con_t;

typedef struct 
{
    u32 size;
    u32 size_x;
    u32 size_y;
    u32 offset;
    u32 pos_x;
    u32 pos_y;
} bmp_data_t;


#define FB_ADDRESS 0xC0000000

void gfx_init_ctxt(u32 *fb, u32 width, u32 height, u32 stride);
void gfx_clear_grey(u8 color);
void gfx_clear_partial_grey(u8 color, u32 pos_x, u32 height);
void gfx_clear_color(u32 color);
void gfx_con_init();
void gfx_con_setcol(u32 fgcol, int fillbg, u32 bgcol);
void gfx_con_getpos(u32 *x, u32 *y);
void gfx_con_setpos(u32 x, u32 y);
void gfx_putc(char c);
void gfx_puts(const char *s);
void gfx_printf(const char *fmt, ...);
void gfx_hexdump(u32 base, const u8 *buf, u32 len);

void gfx_set_pixel(u32 x, u32 y, u32 color);
void gfx_line(int x0, int y0, int x1, int y1, u32 color);
void gfx_put_small_sep();
void gfx_put_big_sep();
void gfx_set_rect_grey(const u8 *buf, u32 size_x, u32 size_y, u32 pos_x, u32 pos_y);
void gfx_set_rect_rgb(const u8 *buf, u32 size_x, u32 size_y, u32 pos_x, u32 pos_y);
void gfx_set_rect_argb(const u32 *buf, u32 size_x, u32 size_y, u32 pos_x, u32 pos_y);
void gfx_render_bmp_argb(const u32 *buf, u32 size_x, u32 size_y, u32 pos_x, u32 pos_y);
void gfx_render_splash(u8 *bitmap);

// Global gfx console and context.
gfx_ctxt_t g_gfx_ctxt;
gfx_con_t g_gfx_con;

#endif


================================================
FILE: argon-first-stage/include/ianos/ianos.h
================================================
/*
 * Copyright (c) 2018 M4xw
 * Copyright (c) 2018 CTCaer
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms and conditions of the GNU General Public License,
 * version 2, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef IANOS_H
#define IANOS_H

#include <stdint.h>
#include "utils/types.h"

typedef enum
{
	DRAM_LIB = 0, // DRAM library.
	EXEC_ELF = 1, // Executable elf that does not return.
	DR64_LIB = 2, // AARCH64 DRAM library.
	AR64_ELF = 3, // Executable elf that does not return.
	KEEP_IN_RAM = (1 << 31)  // Shared library mask.
} elfType_t;

uintptr_t ianos_loader(bool sdmount, char *path, elfType_t type, void* config);

#endif

================================================
FILE: argon-first-stage/include/libs/compr/blz.h
================================================
/*
 * Copyright (c) 2018 rajkosto
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms and conditions of the GNU General Public License,
 * version 2, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef _BLZ_H_
#define _BLZ_H_

#include "utils/types.h"

typedef struct _blz_footer
{
	u32 cmp_and_hdr_size;
	u32 header_size;
	u32 addl_size;
} blz_footer;

// Returns pointer to footer in compData if present, additionally copies it to outFooter if not NULL.
const blz_footer *blz_get_footer(const unsigned char *compData, unsigned int compDataLen, blz_footer *outFooter);
// Returns 0 on failure.
int blz_uncompress_inplace(unsigned char *dataBuf, unsigned int compSize, const blz_footer *footer);
// Returns 0 on failure.
int blz_uncompress_srcdest(const unsigned char *compData, unsigned int compDataLen, unsigned char *dstData, unsigned int dstSize);

#endif


================================================
FILE: argon-first-stage/include/libs/compr/lz.h
================================================
/*************************************************************************
* Name:        lz.h
* Author:      Marcus Geelnard
* Description: LZ77 coder/decoder interface.
* Reentrant:   Yes
*-------------------------------------------------------------------------
* Copyright (c) 2003-2006 Marcus Geelnard
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
*    claim that you wrote the original software. If you use this software
*    in a product, an acknowledgment in the product documentation would
*    be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not
*    be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
*    distribution.
*
* Marcus Geelnard
* marcus.geelnard at home.se
*************************************************************************/

#ifndef _lz_h_
#define _lz_h_

#ifdef __cplusplus
extern "C" {
#endif


/*************************************************************************
* Function prototypes
*************************************************************************/

void LZ_Uncompress( const unsigned char *in, unsigned char *out,
                    unsigned int insize );


#ifdef __cplusplus
}
#endif

#endif /* _lz_h_ */


================================================
FILE: argon-first-stage/include/libs/elfload/elf.h
================================================
/*    $OpenBSD: exec_elf.h,v 1.53 2014/01/03 03:00:39 guenther Exp $    */
/*
 * Copyright (c) 1995, 1996 Erik Theisen.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. The name of the author may not be used to endorse or promote products
 *    derived from this software without specific prior written permission
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

/* imported sys/exec_elf.h from OpenBSD */

#ifndef ELF_H
#define ELF_H
#include <stdint.h>

typedef uint8_t Elf_Byte;

typedef uint32_t Elf32_Addr; /* Unsigned program address */
typedef uint32_t Elf32_Off;  /* Unsigned file offset */
typedef int32_t Elf32_Sword; /* Signed large integer */
typedef uint32_t Elf32_Word; /* Unsigned large integer */
typedef uint16_t Elf32_Half; /* Unsigned medium integer */

typedef uint64_t Elf64_Addr;
typedef uint64_t Elf64_Off;
typedef int32_t Elf64_Shalf;

#ifdef __alpha__
typedef int64_t Elf64_Sword;
typedef uint64_t Elf64_Word;
#else
typedef int32_t Elf64_Sword;
typedef uint32_t Elf64_Word;
#endif

typedef int64_t Elf64_Sxword;
typedef uint64_t Elf64_Xword;

typedef uint32_t Elf64_Half;
typedef uint16_t Elf64_Quarter;

/*
 * e_ident[] identification indexes
 * See http://www.sco.com/developers/gabi/latest/ch4.eheader.html
 */
#define EI_MAG0 0       /* file ID */
#define EI_MAG1 1       /* file ID */
#define EI_MAG2 2       /* file ID */
#define EI_MAG3 3       /* file ID */
#define EI_CLASS 4      /* file class */
#define EI_DATA 5       /* data encoding */
#define EI_VERSION 6    /* ELF header version */
#define EI_OSABI 7      /* OS/ABI ID */
#define EI_ABIVERSION 8 /* ABI version */
#define EI_PAD 9        /* start of pad bytes */
#define EI_NIDENT 16    /* Size of e_ident[] */

/* e_ident[] magic number */
#define ELFMAG0 0x7f     /* e_ident[EI_MAG0] */
#define ELFMAG1 'E'      /* e_ident[EI_MAG1] */
#define ELFMAG2 'L'      /* e_ident[EI_MAG2] */
#define ELFMAG3 'F'      /* e_ident[EI_MAG3] */
#define ELFMAG "\177ELF" /* magic */
#define SELFMAG 4        /* size of magic */

/* e_ident[] file class */
#define ELFCLASSNONE 0 /* invalid */
#define ELFCLASS32 1   /* 32-bit objs */
#define ELFCLASS64 2   /* 64-bit objs */
#define ELFCLASSNUM 3  /* number of classes */

/* e_ident[] data encoding */
#define ELFDATANONE 0 /* invalid */
#define ELFDATA2LSB 1 /* Little-Endian */
#define ELFDATA2MSB 2 /* Big-Endian */
#define ELFDATANUM 3  /* number of data encode defines */

/* e_ident[] Operating System/ABI */
#define ELFOSABI_SYSV 0         /* UNIX System V ABI */
#define ELFOSABI_HPUX 1         /* HP-UX operating system */
#define ELFOSABI_NETBSD 2       /* NetBSD */
#define ELFOSABI_LINUX 3        /* GNU/Linux */
#define ELFOSABI_HURD 4         /* GNU/Hurd */
#define ELFOSABI_86OPEN 5       /* 86Open common IA32 ABI */
#define ELFOSABI_SOLARIS 6      /* Solaris */
#define ELFOSABI_MONTEREY 7     /* Monterey */
#define ELFOSABI_IRIX 8         /* IRIX */
#define ELFOSABI_FREEBSD 9      /* FreeBSD */
#define ELFOSABI_TRU64 10       /* TRU64 UNIX */
#define ELFOSABI_MODESTO 11     /* Novell Modesto */
#define ELFOSABI_OPENBSD 12     /* OpenBSD */
#define ELFOSABI_ARM 97         /* ARM */
#define ELFOSABI_STANDALONE 255 /* Standalone (embedded) application */

/* e_ident */
#define IS_ELF(ehdr) ((ehdr).e_ident[EI_MAG0] == ELFMAG0 && \
                      (ehdr).e_ident[EI_MAG1] == ELFMAG1 && \
                      (ehdr).e_ident[EI_MAG2] == ELFMAG2 && \
                      (ehdr).e_ident[EI_MAG3] == ELFMAG3)

/* ELF Header */
typedef struct
{
    unsigned char e_ident[EI_NIDENT]; /* ELF Identification */
    Elf32_Half e_type;                /* object file type */
    Elf32_Half e_machine;             /* machine */
    Elf32_Word e_version;             /* object file version */
    Elf32_Addr e_entry;               /* virtual entry point */
    Elf32_Off e_phoff;                /* program header table offset */
    Elf32_Off e_shoff;                /* section header table offset */
    Elf32_Word e_flags;               /* processor-specific flags */
    Elf32_Half e_ehsize;              /* ELF header size */
    Elf32_Half e_phentsize;           /* program header entry size */
    Elf32_Half e_phnum;               /* number of program header entries */
    Elf32_Half e_shentsize;           /* section header entry size */
    Elf32_Half e_shnum;               /* number of section header entries */
    Elf32_Half e_shstrndx;            /* section header table's "section
                                                header string table" entry offset */
} Elf32_Ehdr;

typedef struct
{
    unsigned char e_ident[EI_NIDENT]; /* Id bytes */
    Elf64_Quarter e_type;             /* file type */
    Elf64_Quarter e_machine;          /* machine type */
    Elf64_Half e_version;             /* version number */
    Elf64_Addr e_entry;               /* entry point */
    Elf64_Off e_phoff;                /* Program hdr offset */
    Elf64_Off e_shoff;                /* Section hdr offset */
    Elf64_Half e_flags;               /* Processor flags */
    Elf64_Quarter e_ehsize;           /* sizeof ehdr */
    Elf64_Quarter e_phentsize;        /* Program header entry size */
    Elf64_Quarter e_phnum;            /* Number of program headers */
    Elf64_Quarter e_shentsize;        /* Section header entry size */
    Elf64_Quarter e_shnum;            /* Number of section headers */
    Elf64_Quarter e_shstrndx;         /* String table index */
} Elf64_Ehdr;

/* e_type */
#define ET_NONE 0        /* No file type */
#define ET_REL 1         /* relocatable file */
#define ET_EXEC 2        /* executable file */
#define ET_DYN 3         /* shared object file */
#define ET_CORE 4        /* core file */
#define ET_NUM 5         /* number of types */
#define ET_LOPROC 0xff00 /* reserved range for processor */
#define ET_HIPROC 0xffff /*  specific e_type */

/* e_machine */
#define EM_NONE 0  /* No Machine */
#define EM_M32 1   /* AT&T WE 32100 */
#define EM_SPARC 2 /* SPARC */
#define EM_386 3   /* Intel 80386 */
#define EM_68K 4   /* Motorola 68000 */
#define EM_88K 5   /* Motorola 88000 */
#define EM_486 6   /* Intel 80486 - unused? */
#define EM_860 7   /* Intel 80860 */
#define EM_MIPS 8  /* MIPS R3000 Big-Endian only */
/*
 * Don't know if EM_MIPS_RS4_BE,
 * EM_SPARC64, EM_PARISC,
 * or EM_PPC are ABI compliant
 */
#define EM_MIPS_RS4_BE 10 /* MIPS R4000 Big-Endian */
#define EM_SPARC64 11     /* SPARC v9 64-bit unofficial */
#define EM_PARISC 15      /* HPPA */
#define EM_SPARC32PLUS 18 /* Enhanced instruction set SPARC */
#define EM_PPC 20         /* PowerPC */
#define EM_ARM 40         /* ARM AArch32 */
#define EM_ALPHA 41       /* DEC ALPHA */
#define EM_SH 42          /* Hitachi/Renesas Super-H */
#define EM_SPARCV9 43     /* SPARC version 9 */
#define EM_IA_64 50       /* Intel IA-64 Processor */
#define EM_AMD64 62       /* AMD64 architecture */
#define EM_VAX 75         /* DEC VAX */
#define EM_AARCH64 183    /* ARM AArch64 */

/* Non-standard */
#define EM_ALPHA_EXP 0x9026 /* DEC ALPHA */

/* Version */
#define EV_NONE 0    /* Invalid */
#define EV_CURRENT 1 /* Current */
#define EV_NUM 2     /* number of versions */

/* Section Header */
typedef struct
{
    Elf32_Word sh_name;      /* name - index into section header
                                 * string table section */
    Elf32_Word sh_type;      /* type */
    Elf32_Word sh_flags;     /* flags */
    Elf32_Addr sh_addr;      /* address */
    Elf32_Off sh_offset;     /* file offset */
    Elf32_Word sh_size;      /* section size */
    Elf32_Word sh_link;      /* section header table index link */
    Elf32_Word sh_info;      /* extra information */
    Elf32_Word sh_addralign; /* address alignment */
    Elf32_Word sh_entsize;   /* section entry size */
} Elf32_Shdr;

typedef struct
{
    Elf64_Half sh_name;       /* section name */
    Elf64_Half sh_type;       /* section type */
    Elf64_Xword sh_flags;     /* section flags */
    Elf64_Addr sh_addr;       /* virtual address */
    Elf64_Off sh_offset;      /* file offset */
    Elf64_Xword sh_size;      /* section size */
    Elf64_Half sh_link;       /* link to another */
    Elf64_Half sh_info;       /* misc info */
    Elf64_Xword sh_addralign; /* memory alignment */
    Elf64_Xword sh_entsize;   /* table entry size */
} Elf64_Shdr;

/* Special Section Indexes */
#define SHN_UNDEF 0          /* undefined */
#define SHN_LORESERVE 0xff00 /* lower bounds of reserved indexes */
#define SHN_LOPROC 0xff00    /* reserved range for processor */
#define SHN_HIPROC 0xff1f    /*   specific section indexes */
#define SHN_ABS 0xfff1       /* absolute value */
#define SHN_COMMON 0xfff2    /* common symbol */
#define SHN_HIRESERVE 0xffff /* upper bounds of reserved indexes */

/* sh_type */
#define SHT_NULL 0            /* inactive */
#define SHT_PROGBITS 1        /* program defined information */
#define SHT_SYMTAB 2          /* symbol table section */
#define SHT_STRTAB 3          /* string table section */
#define SHT_RELA 4            /* relocation section with addends*/
#define SHT_HASH 5            /* symbol hash table section */
#define SHT_DYNAMIC 6         /* dynamic section */
#define SHT_NOTE 7            /* note section */
#define SHT_NOBITS 8          /* no space section */
#define SHT_REL 9             /* relation section without addends */
#define SHT_SHLIB 10          /* reserved - purpose unknown */
#define SHT_DYNSYM 11         /* dynamic symbol table section */
#define SHT_NUM 12            /* number of section types */
#define SHT_LOPROC 0x70000000 /* reserved range for processor */
#define SHT_HIPROC 0x7fffffff /*  specific section header types */
#define SHT_LOUSER 0x80000000 /* reserved range for application */
#define SHT_HIUSER 0xffffffff /*  specific indexes */

/* Section names */
#define ELF_BSS ".bss"               /* uninitialized data */
#define ELF_DATA ".data"             /* initialized data */
#define ELF_DEBUG ".debug"           /* debug */
#define ELF_DYNAMIC ".dynamic"       /* dynamic linking information */
#define ELF_DYNSTR ".dynstr"         /* dynamic string table */
#define ELF_DYNSYM ".dynsym"         /* dynamic symbol table */
#define ELF_FINI ".fini"             /* termination code */
#define ELF_GOT ".got"               /* global offset table */
#define ELF_HASH ".hash"             /* symbol hash table */
#define ELF_INIT ".init"             /* initialization code */
#define ELF_REL_DATA ".rel.data"     /* relocation data */
#define ELF_REL_FINI ".rel.fini"     /* relocation termination code */
#define ELF_REL_INIT ".rel.init"     /* relocation initialization code */
#define ELF_REL_DYN ".rel.dyn"       /* relocation dynamic link info */
#define ELF_REL_RODATA ".rel.rodata" /* relocation read-only data */
#define ELF_REL_TEXT ".rel.text"     /* relocation code */
#define ELF_RODATA ".rodata"         /* read-only data */
#define ELF_SHSTRTAB ".shstrtab"     /* section header string table */
#define ELF_STRTAB ".strtab"         /* string table */
#define ELF_SYMTAB ".symtab"         /* symbol table */
#define ELF_TEXT ".text"             /* code */

/* Section Attribute Flags - sh_flags */
#define SHF_WRITE 0x1           /* Writable */
#define SHF_ALLOC 0x2           /* occupies memory */
#define SHF_EXECINSTR 0x4       /* executable */
#define SHF_TLS 0x400           /* thread local storage */
#define SHF_MASKPROC 0xf0000000 /* reserved bits for processor \
                                 *  specific section attributes */

/* Symbol Table Entry */
typedef struct elf32_sym
{
    Elf32_Word st_name;     /* name - index into string table */
    Elf32_Addr st_value;    /* symbol value */
    Elf32_Word st_size;     /* symbol size */
    unsigned char st_info;  /* type and binding */
    unsigned char st_other; /* 0 - no defined meaning */
    Elf32_Half st_shndx;    /* section header index */
} Elf32_Sym;

typedef struct
{
    Elf64_Half st_name;     /* Symbol name index in str table */
    Elf_Byte st_info;       /* type / binding attrs */
    Elf_Byte st_other;      /* unused */
    Elf64_Quarter st_shndx; /* section index of symbol */
    Elf64_Xword st_value;   /* value of symbol */
    Elf64_Xword st_size;    /* size of symbol */
} Elf64_Sym;

/* Symbol table index */
#define STN_UNDEF 0 /* undefined */

/* Extract symbol info - st_info */
#define ELF32_ST_BIND(x) ((x) >> 4)
#define ELF32_ST_TYPE(x) (((unsigned int)x) & 0xf)
#define ELF32_ST_INFO(b, t) (((b) << 4) + ((t)&0xf))

#define ELF64_ST_BIND(x) ((x) >> 4)
#define ELF64_ST_TYPE(x) (((unsigned int)x) & 0xf)
#define ELF64_ST_INFO(b, t) (((b) << 4) + ((t)&0xf))

/* Symbol Binding - ELF32_ST_BIND - st_info */
#define STB_LOCAL 0   /* Local symbol */
#define STB_GLOBAL 1  /* Global symbol */
#define STB_WEAK 2    /* like global - lower precedence */
#define STB_NUM 3     /* number of symbol bindings */
#define STB_LOPROC 13 /* reserved range for processor */
#define STB_HIPROC 15 /*  specific symbol bindings */

/* Symbol type - ELF32_ST_TYPE - st_info */
#define STT_NOTYPE 0  /* not specified */
#define STT_OBJECT 1  /* data object */
#define STT_FUNC 2    /* function */
#define STT_SECTION 3 /* section */
#define STT_FILE 4    /* file */
#define STT_TLS 6     /* thread local storage */
#define STT_LOPROC 13 /* reserved range for processor */
#define STT_HIPROC 15 /*  specific symbol types */

/* Relocation entry with implicit addend */
typedef struct
{
    Elf32_Addr r_offset; /* offset of relocation */
    Elf32_Word r_info;   /* symbol table index and type */
} Elf32_Rel;

/* Relocation entry with explicit addend */
typedef struct
{
    Elf32_Addr r_offset; /* offset of relocation */
    Elf32_Word r_info;   /* symbol table index and type */
    Elf32_Sword r_addend;
} Elf32_Rela;

/* Extract relocation info - r_info */
#define ELF32_R_SYM(i) ((i) >> 8)
#define ELF32_R_TYPE(i) ((unsigned char)(i))
#define ELF32_R_INFO(s, t) (((s) << 8) + (unsigned char)(t))

typedef struct
{
    Elf64_Xword r_offset; /* where to do it */
    Elf64_Xword r_info;   /* index & type of relocation */
} Elf64_Rel;

typedef struct
{
    Elf64_Xword r_offset;  /* where to do it */
    Elf64_Xword r_info;    /* index & type of relocation */
    Elf64_Sxword r_addend; /* adjustment value */
} Elf64_Rela;

#define ELF64_R_SYM(info) ((info) >> 32)
#define ELF64_R_TYPE(info) ((info)&0xFFFFFFFF)
#define ELF64_R_INFO(s, t) (((s) << 32) + (__uint32_t)(t))

#if defined(__mips64__) && defined(__MIPSEL__)
/*
 * The 64-bit MIPS ELF ABI uses a slightly different relocation format
 * than the regular ELF ABI: the r_info field is split into several
 * pieces (see gnu/usr.bin/binutils/include/elf/mips.h for details).
 */
#undef ELF64_R_SYM
#undef ELF64_R_TYPE
#undef ELF64_R_INFO
#define ELF64_R_TYPE(info) (swap32((info) >> 32))
#define ELF64_R_SYM(info) ((info)&0xFFFFFFFF)
#define ELF64_R_INFO(s, t) (((__uint64_t)swap32(t) << 32) + (__uint32_t)(s))
#endif /* __mips64__ && __MIPSEL__ */

/* Program Header */
typedef struct
{
    Elf32_Word p_type;   /* segment type */
    Elf32_Off p_offset;  /* segment offset */
    Elf32_Addr p_vaddr;  /* virtual address of segment */
    Elf32_Addr p_paddr;  /* physical address - ignored? */
    Elf32_Word p_filesz; /* number of bytes in file for seg. */
    Elf32_Word p_memsz;  /* number of bytes in mem. for seg. */
    Elf32_Word p_flags;  /* flags */
    Elf32_Word p_align;  /* memory alignment */
} Elf32_Phdr;

typedef struct
{
    Elf64_Half p_type;    /* entry type */
    Elf64_Half p_flags;   /* flags */
    Elf64_Off p_offset;   /* offset */
    Elf64_Addr p_vaddr;   /* virtual address */
    Elf64_Addr p_paddr;   /* physical address */
    Elf64_Xword p_filesz; /* file size */
    Elf64_Xword p_memsz;  /* memory size */
    Elf64_Xword p_align;  /* memory & file alignment */
} Elf64_Phdr;

/* Segment types - p_type */
#define PT_NULL 0            /* unused */
#define PT_LOAD 1            /* loadable segment */
#define PT_DYNAMIC 2         /* dynamic linking section */
#define PT_INTERP 3          /* the RTLD */
#define PT_NOTE 4            /* auxiliary information */
#define PT_SHLIB 5           /* reserved - purpose undefined */
#define PT_PHDR 6            /* program header */
#define PT_TLS 7             /* thread local storage */
#define PT_LOOS 0x60000000   /* reserved range for OS */
#define PT_HIOS 0x6fffffff   /*  specific segment types */
#define PT_LOPROC 0x70000000 /* reserved range for processor */
#define PT_HIPROC 0x7fffffff /*  specific segment types */

#define PT_OPENBSD_RANDOMIZE 0x65a3dbe6 /* fill with random data */
#define PT_GANDR_KERNEL 0x67646b6c      /* gdkl */

/* Segment flags - p_flags */
#define PF_X 0x1               /* Executable */
#define PF_W 0x2               /* Writable */
#define PF_R 0x4               /* Readable */
#define PF_MASKPROC 0xf0000000 /* reserved bits for processor */
                               /*  specific segment flags */

/* Dynamic structure */
typedef struct
{
    Elf32_Sword d_tag; /* controls meaning of d_val */
    union {
        Elf32_Word d_val; /* Multiple meanings - see d_tag */
        Elf32_Addr d_ptr; /* program virtual address */
    } d_un;
} Elf32_Dyn;

typedef struct
{
    Elf64_Xword d_tag; /* controls meaning of d_val */
    union {
        Elf64_Addr d_ptr;
        Elf64_Xword d_val;
    } d_un;
} Elf64_Dyn;

/* Dynamic Array Tags - d_tag */
#define DT_NULL 0            /* marks end of _DYNAMIC array */
#define DT_NEEDED 1          /* string table offset of needed lib */
#define DT_PLTRELSZ 2        /* size of relocation entries in PLT */
#define DT_PLTGOT 3          /* address PLT/GOT */
#define DT_HASH 4            /* address of symbol hash table */
#define DT_STRTAB 5          /* address of string table */
#define DT_SYMTAB 6          /* address of symbol table */
#define DT_RELA 7            /* address of relocation table */
#define DT_RELASZ 8          /* size of relocation table */
#define DT_RELAENT 9         /* size of relocation entry */
#define DT_STRSZ 10          /* size of string table */
#define DT_SYMENT 11         /* size of symbol table entry */
#define DT_INIT 12           /* address of initialization func. */
#define DT_FINI 13           /* address of termination function */
#define DT_SONAME 14         /* string table offset of shared obj */
#define DT_RPATH 15          /* string table offset of library \
                              * search path */
#define DT_SYMBOLIC 16       /* start sym search in shared obj. */
#define DT_REL 17            /* address of rel. tbl. w addends */
#define DT_RELSZ 18          /* size of DT_REL relocation table */
#define DT_RELENT 19         /* size of DT_REL relocation entry */
#define DT_PLTREL 20         /* PLT referenced relocation entry */
#define DT_DEBUG 21          /* bugger */
#define DT_TEXTREL 22        /* Allow rel. mod. to unwritable seg */
#define DT_JMPREL 23         /* add. of PLT's relocation entries */
#define DT_BIND_NOW 24       /* Bind now regardless of env setting */
#define DT_LOOS 0x6000000d   /* reserved range for OS */
#define DT_HIOS 0x6ffff000   /*  specific dynamic array tags */
#define DT_LOPROC 0x70000000 /* reserved range for processor */
#define DT_HIPROC 0x7fffffff /*  specific dynamic array tags */

/* some other useful tags */
#define DT_RELACOUNT 0x6ffffff9 /* if present, number of RELATIVE */
#define DT_RELCOUNT 0x6ffffffa  /* relocs, which must come first */
#define DT_FLAGS_1 0x6ffffffb

/* Dynamic Flags - DT_FLAGS_1 .dynamic entry */
#define DF_1_NOW 0x00000001
#define DF_1_GLOBAL 0x00000002
#define DF_1_GROUP 0x00000004
#define DF_1_NODELETE 0x00000008
#define DF_1_LOADFLTR 0x00000010
#define DF_1_INITFIRST 0x00000020
#define DF_1_NOOPEN 0x00000040
#define DF_1_ORIGIN 0x00000080
#define DF_1_DIRECT 0x00000100
#define DF_1_TRANS 0x00000200
#define DF_1_INTERPOSE 0x00000400
#define DF_1_NODEFLIB 0x00000800
#define DF_1_NODUMP 0x00001000
#define DF_1_CONLFAT 0x00002000

/* ld.so: number of low tags that are used saved internally (0 .. DT_NUM-1) */
#define DT_NUM (DT_JMPREL + 1)

/*
 * Note Definitions
 */
typedef struct
{
    Elf32_Word namesz;
    Elf32_Word descsz;
    Elf32_Word type;
} Elf32_Note;

typedef struct
{
    Elf64_Half namesz;
    Elf64_Half descsz;
    Elf64_Half type;
} Elf64_Note;

#if defined(ELFSIZE) && (ELFSIZE == 32)
#define Elf_Ehdr Elf32_Ehdr
#define Elf_Phdr Elf32_Phdr
#define Elf_Shdr Elf32_Shdr
#define Elf_Sym Elf32_Sym
#define Elf_Rel Elf32_Rel
#define Elf_RelA Elf32_Rela
#define Elf_Dyn Elf32_Dyn
#define Elf_Half Elf32_Half
#define Elf_Word Elf32_Word
#define Elf_Sword Elf32_Sword
#define Elf_Addr Elf32_Addr
#define Elf_Off Elf32_Off
#define Elf_Nhdr Elf32_Nhdr
#define Elf_Note Elf32_Note

#define ELF_R_SYM ELF32_R_SYM
#define ELF_R_TYPE ELF32_R_TYPE
#define ELF_R_INFO ELF32_R_INFO
#define ELFCLASS ELFCLASS32

#define ELF_ST_BIND ELF32_ST_BIND
#define ELF_ST_TYPE ELF32_ST_TYPE
#define ELF_ST_INFO ELF32_ST_INFO

#elif defined(ELFSIZE) && (ELFSIZE == 64)

#define Elf_Ehdr Elf64_Ehdr
#define Elf_Phdr Elf64_Phdr
#define Elf_Shdr Elf64_Shdr
#define Elf_Sym Elf64_Sym
#define Elf_Rel Elf64_Rel
#define Elf_RelA Elf64_Rela
#define Elf_Dyn Elf64_Dyn
#define Elf_Half Elf64_Half
#define Elf_Word Elf64_Word
#define Elf_Sword Elf64_Sword
#define Elf_Addr Elf64_Addr
#define Elf_Off Elf64_Off
#define Elf_Nhdr Elf64_Nhdr
#define Elf_Note Elf64_Note

#define ELF_R_SYM ELF64_R_SYM
#define ELF_R_TYPE ELF64_R_TYPE
#define ELF_R_INFO ELF64_R_INFO
#define ELFCLASS ELFCLASS64

#define ELF_ST_BIND ELF64_ST_BIND
#define ELF_ST_TYPE ELF64_ST_TYPE
#define ELF_ST_INFO ELF64_ST_INFO

#endif

#endif


================================================
FILE: argon-first-stage/include/libs/elfload/elfarch.h
================================================
/*
 * Copyright © 2014, Owen Shepherd
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
 * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
 * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
 * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
 * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 * PERFORMANCE OF THIS SOFTWARE.
 */

#ifndef ELFARCH_H
#define ELFARCH_H

#if defined(__i386__)
#define EM_THIS EM_386
#define EL_ARCH_USES_REL
#elif defined(__amd64__)
#define EM_THIS EM_AMD64
#define EL_ARCH_USES_RELA
#elif defined(__arm__)
#define EM_THIS EM_ARM
#define EL_ARCH_USES_REL
#elif defined(__aarch64__)
#define EM_THIS EM_AARCH64
#define EL_ARCH_USES_RELA
#define EL_ARCH_USES_REL
#else
#error specify your ELF architecture
#endif

#if defined(__LP64__) || defined(__LLP64__)
#define ELFSIZE 64
#else
#define ELFSIZE 32
#endif

#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
#define ELFDATATHIS ELFDATA2LSB
#else
#define ELFDATATHIS ELFDATA2MSB
#endif

#endif


================================================
FILE: argon-first-stage/include/libs/elfload/elfload.h
================================================
/*
 * Copyright © 2018, M4xw
 * Copyright © 2014, Owen Shepherd
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
 * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
 * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
 * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
 * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 * PERFORMANCE OF THIS SOFTWARE.
 */

#ifndef ELFLOAD_H
#define ELFLOAD_H
#include <stddef.h>

#include "elfarch.h"
#include "elf.h"

#include "utils/types.h"

#ifdef DEBUG
#include "gfx/gfx.h"
extern gfx_con_t g_gfx_con;
#define EL_DEBUG(format, ...) \
	gfx_printf(format __VA_OPT__(, ) __VA_ARGS__)
#else
#define EL_DEBUG(...) \
	do                \
	{                 \
	} while (0)
#endif

typedef enum
{
	EL_OK = 0,

	EL_EIO,
	EL_ENOMEM,

	EL_NOTELF,
	EL_WRONGBITS,
	EL_WRONGENDIAN,
	EL_WRONGARCH,
	EL_WRONGOS,
	EL_NOTEXEC,
	EL_NODYN,
	EL_BADREL,

} el_status;

typedef struct el_ctx
{
	bool (*pread)(struct el_ctx *ctx, void *dest, size_t nb, size_t offset);

	/* base_load_* -> address we are actually going to load at
	 */
	Elf_Addr
		base_load_paddr,
		base_load_vaddr;

	/* size in memory of binary */
	Elf_Addr memsz;

	/* required alignment */
	Elf_Addr align;

	/* ELF header */
	Elf_Ehdr ehdr;

	// Section Header Str Table
	Elf_Shdr shstr;
	Elf_Shdr symtab;
	
	/* Offset of dynamic table (0 if not ET_DYN) */
	Elf_Off dynoff;
	/* Size of dynamic table (0 if not ET_DYN) */
	Elf_Addr dynsize;
} el_ctx;

el_status el_pread(el_ctx *ctx, void *def, size_t nb, size_t offset);

el_status el_init(el_ctx *ctx);
typedef void *(*el_alloc_cb)(
	el_ctx *ctx,
	Elf_Addr phys,
	Elf_Addr virt,
	Elf_Addr size);

el_status el_load(el_ctx *ctx, el_alloc_cb alloccb);

/* find the next phdr of type \p type, starting at \p *i.
 * On success, returns EL_OK with *i set to the phdr number, and the phdr loaded
 * in *phdr.
 *
 * If the end of the phdrs table was reached, *i is set to -1 and the contents
 * of *phdr are undefined
 */
el_status el_findphdr(el_ctx *ctx, Elf_Phdr *phdr, uint32_t type, unsigned *i);

/* Relocate the loaded executable */
el_status el_relocate(el_ctx *ctx);

/* find a dynamic table entry
 * returns the entry on success, dyn->d_tag = DT_NULL on failure
 */
el_status el_finddyn(el_ctx *ctx, Elf_Dyn *dyn, uint32_t type);

typedef struct
{
	Elf_Off tableoff;
	Elf_Addr tablesize;
	Elf_Addr entrysize;
} el_relocinfo;

/* find all information regarding relocations of a specific type.
 *
 * pass DT_REL or DT_RELA for type
 * sets ri->entrysize = 0 if not found
 */
el_status el_findrelocs(el_ctx *ctx, el_relocinfo *ri, uint32_t type);

#endif


================================================
FILE: argon-first-stage/include/libs/fatfs/diskio.h
================================================
/*-----------------------------------------------------------------------/
/  Low level disk interface modlue include file   (C)ChaN, 2014          /
/-----------------------------------------------------------------------*/

#ifndef _DISKIO_DEFINED
#define _DISKIO_DEFINED

#ifdef __cplusplus
extern "C" {
#endif

#include "../../utils/types.h"

/* Status of Disk Functions */
typedef BYTE	DSTATUS;

/* Results of Disk Functions */
typedef enum {
	RES_OK = 0,		/* 0: Successful */
	RES_ERROR,		/* 1: R/W Error */
	RES_WRPRT,		/* 2: Write Protected */
	RES_NOTRDY,		/* 3: Not Ready */
	RES_PARERR		/* 4: Invalid Parameter */
} DRESULT;


/*---------------------------------------*/
/* Prototypes for disk control functions */


DSTATUS disk_initialize (BYTE pdrv);
DSTATUS disk_status (BYTE pdrv);
DRESULT disk_read (BYTE pdrv, BYTE* buff, DWORD sector, UINT count);
DRESULT disk_write (BYTE pdrv, const BYTE* buff, DWORD sector, UINT count);
DRESULT disk_ioctl (BYTE pdrv, BYTE cmd, void* buff);


/* Disk Status Bits (DSTATUS) */

#define STA_NOINIT		0x01	/* Drive not initialized */
#define STA_NODISK		0x02	/* No medium in the drive */
#define STA_PROTECT		0x04	/* Write protected */


/* Command code for disk_ioctrl fucntion */

/* Generic command (Used by FatFs) */
#define CTRL_SYNC			0	/* Complete pending write process (needed at FF_FS_READONLY == 0) */
#define GET_SECTOR_COUNT	1	/* Get media size (needed at FF_USE_MKFS == 1) */
#define GET_SECTOR_SIZE		2	/* Get sector size (needed at FF_MAX_SS != FF_MIN_SS) */
#define GET_BLOCK_SIZE		3	/* Get erase block size (needed at FF_USE_MKFS == 1) */
#define CTRL_TRIM			4	/* Inform device that the data on the block of sectors is no longer used (needed at FF_USE_TRIM == 1) */

/* Generic command (Not used by FatFs) */
#define CTRL_POWER			5	/* Get/Set power status */
#define CTRL_LOCK			6	/* Lock/Unlock media removal */
#define CTRL_EJECT			7	/* Eject media */
#define CTRL_FORMAT			8	/* Create physical format on the media */

/* MMC/SDC specific ioctl command */
#define MMC_GET_TYPE		10	/* Get card type */
#define MMC_GET_CSD			11	/* Get CSD */
#define MMC_GET_CID			12	/* Get CID */
#define MMC_GET_OCR			13	/* Get OCR */
#define MMC_GET_SDSTAT		14	/* Get SD status */
#define ISDIO_READ			55	/* Read data form SD iSDIO register */
#define ISDIO_WRITE			56	/* Write data to SD iSDIO register */
#define ISDIO_MRITE			57	/* Masked write data to SD iSDIO register */

/* ATA/CF specific ioctl command */
#define ATA_GET_REV			20	/* Get F/W revision */
#define ATA_GET_MODEL		21	/* Get model name */
#define ATA_GET_SN			22	/* Get serial number */

#ifdef __cplusplus
}
#endif

#endif

================================================
FILE: argon-first-stage/include/libs/fatfs/ff.h
================================================
/*----------------------------------------------------------------------------/
/  FatFs - Generic FAT Filesystem module  R0.13c                              /
/-----------------------------------------------------------------------------/
/
/ Copyright (C) 2018, ChaN, all right reserved.
/
/ FatFs module is an open source software. Redistribution and use of FatFs in
/ source and binary forms, with or without modification, are permitted provided
/ that the following condition is met:
/ 1. Redistributions of source code must retain the above copyright notice,
/    this condition and the following disclaimer.
/
/ This software is provided by the copyright holder and contributors "AS IS"
/ and any warranties related to this software are DISCLAIMED.
/ The copyright owner or contributors be NOT LIABLE for any damages caused
/ by use of this software.
/
/----------------------------------------------------------------------------*/


#ifndef FF_DEFINED
#define FF_DEFINED	86604	/* Revision ID */

#ifdef __cplusplus
extern "C" {
#endif

#include "../../utils/types.h"	/* Basic integer types */
#include "ffconf.h"		/* FatFs configuration options */

#if FF_DEFINED != FFCONF_DEF
#error Wrong configuration file (ffconf.h).
#endif



/* Definitions of volume management */

#if FF_MULTI_PARTITION		/* Multiple partition configuration */
typedef struct {
	BYTE pd;	/* Physical drive number */
	BYTE pt;	/* Partition: 0:Auto detect, 1-4:Forced partition) */
} PARTITION;
extern PARTITION VolToPart[];	/* Volume - Partition resolution table */
#endif

#if FF_STR_VOLUME_ID
#ifndef FF_VOLUME_STRS
extern const char* VolumeStr[FF_VOLUMES];	/* User defied volume ID */
#endif
#endif



/* Type of path name strings on FatFs API */

#ifndef _INC_TCHAR
#define _INC_TCHAR

#if FF_USE_LFN && FF_LFN_UNICODE == 1 	/* Unicode in UTF-16 encoding */
typedef WCHAR TCHAR;
#define _T(x) L ## x
#define _TEXT(x) L ## x
#elif FF_USE_LFN && FF_LFN_UNICODE == 2	/* Unicode in UTF-8 encoding */
typedef char TCHAR;
#define _T(x) u8 ## x
#define _TEXT(x) u8 ## x
#elif FF_USE_LFN && FF_LFN_UNICODE == 3	/* Unicode in UTF-32 encoding */
typedef DWORD TCHAR;
#define _T(x) U ## x
#define _TEXT(x) U ## x
#elif FF_USE_LFN && (FF_LFN_UNICODE < 0 || FF_LFN_UNICODE > 3)
#error Wrong FF_LFN_UNICODE setting
#else									/* ANSI/OEM code in SBCS/DBCS */
typedef char TCHAR;
#define _T(x) x
#define _TEXT(x) x
#endif

#endif



/* Type of file size variables */

#if FF_FS_EXFAT
typedef QWORD FSIZE_t;
#else
typedef DWORD FSIZE_t;
#endif



/* Filesystem object structure (FATFS) */

typedef struct {
	BYTE	fs_type;		/* Filesystem type (0:not mounted) */
	BYTE	pdrv;			/* Associated physical drive */
	BYTE	n_fats;			/* Number of FATs (1 or 2) */
	BYTE	wflag;			/* win[] flag (b0:dirty) */
	BYTE	fsi_flag;		/* FSINFO flags (b7:disabled, b0:dirty) */
	WORD	id;				/* Volume mount ID */
	WORD	n_rootdir;		/* Number of root directory entries (FAT12/16) */
	WORD	csize;			/* Cluster size [sectors] */
#if FF_MAX_SS != FF_MIN_SS
	WORD	ssize;			/* Sector size (512, 1024, 2048 or 4096) */
#endif
#if FF_USE_LFN
	WCHAR*	lfnbuf;			/* LFN working buffer */
#endif
#if FF_FS_EXFAT
	BYTE*	dirbuf;			/* Directory entry block scratchpad buffer for exFAT */
#endif
#if FF_FS_REENTRANT
	FF_SYNC_t	sobj;		/* Identifier of sync object */
#endif
#if !FF_FS_READONLY
	DWORD	last_clst;		/* Last allocated cluster */
	DWORD	free_clst;		/* Number of free clusters */
#endif
#if FF_FS_RPATH
	DWORD	cdir;			/* Current directory start cluster (0:root) */
#if FF_FS_EXFAT
	DWORD	cdc_scl;		/* Containing directory start cluster (invalid when cdir is 0) */
	DWORD	cdc_size;		/* b31-b8:Size of containing directory, b7-b0: Chain status */
	DWORD	cdc_ofs;		/* Offset in the containing directory (invalid when cdir is 0) */
#endif
#endif
	DWORD	n_fatent;		/* Number of FAT entries (number of clusters + 2) */
	DWORD	fsize;			/* Size of an FAT [sectors] */
	DWORD	volbase;		/* Volume base sector */
	DWORD	fatbase;		/* FAT base sector */
	DWORD	dirbase;		/* Root directory base sector/cluster */
	DWORD	database;		/* Data base sector */
#if FF_FS_EXFAT
	DWORD	bitbase;		/* Allocation bitmap base sector */
#endif
	DWORD	winsect;		/* Current sector appearing in the win[] */
	BYTE	win[FF_MAX_SS];	/* Disk access window for Directory, FAT (and file data at tiny cfg) */
} FATFS;



/* Object ID and allocation information (FFOBJID) */

typedef struct {
	FATFS*	fs;				/* Pointer to the hosting volume of this object */
	WORD	id;				/* Hosting volume mount ID */
	BYTE	attr;			/* Object attribute */
	BYTE	stat;			/* Object chain status (b1-0: =0:not contiguous, =2:contiguous, =3:fragmented in this session, b2:sub-directory stretched) */
	DWORD	sclust;			/* Object data start cluster (0:no cluster or root directory) */
	FSIZE_t	objsize;		/* Object size (valid when sclust != 0) */
#if FF_FS_EXFAT
	DWORD	n_cont;			/* Size of first fragment - 1 (valid when stat == 3) */
	DWORD	n_frag;			/* Size of last fragment needs to be written to FAT (valid when not zero) */
	DWORD	c_scl;			/* Containing directory start cluster (valid when sclust != 0) */
	DWORD	c_size;			/* b31-b8:Size of containing directory, b7-b0: Chain status (valid when c_scl != 0) */
	DWORD	c_ofs;			/* Offset in the containing directory (valid when file object and sclust != 0) */
#endif
#if FF_FS_LOCK
	UINT	lockid;			/* File lock ID origin from 1 (index of file semaphore table Files[]) */
#endif
} FFOBJID;



/* File object structure (FIL) */

typedef struct {
	FFOBJID	obj;			/* Object identifier (must be the 1st member to detect invalid object pointer) */
	BYTE	flag;			/* File status flags */
	BYTE	err;			/* Abort flag (error code) */
	FSIZE_t	fptr;			/* File read/write pointer (Zeroed on file open) */
	DWORD	clust;			/* Current cluster of fpter (invalid when fptr is 0) */
	DWORD	sect;			/* Sector number appearing in buf[] (0:invalid) */
#if !FF_FS_READONLY
	DWORD	dir_sect;		/* Sector number containing the directory entry (not used at exFAT) */
	BYTE*	dir_ptr;		/* Pointer to the directory entry in the win[] (not used at exFAT) */
#endif
#if !FF_FS_TINY
	BYTE	buf[FF_MAX_SS];	/* File private data read/write window */
#endif
#if FF_USE_FASTSEEK
	DWORD*	cltbl;			/* Pointer to the cluster link map table (nulled on open, set by application) */
#endif
} FIL;



/* Directory object structure (DIR) */

typedef struct {
	FFOBJID	obj;			/* Object identifier */
	DWORD	dptr;			/* Current read/write offset */
	DWORD	clust;			/* Current cluster */
	DWORD	sect;			/* Current sector (0:Read operation has terminated) */
	BYTE*	dir;			/* Pointer to the directory item in the win[] */
	BYTE	fn[12];			/* SFN (in/out) {body[8],ext[3],status[1]} */
#if FF_USE_LFN
	DWORD	blk_ofs;		/* Offset of current entry block being processed (0xFFFFFFFF:Invalid) */
#endif
#if FF_USE_FIND
	const TCHAR* pat;		/* Pointer to the name matching pattern */
#endif
} DIR;



/* File information structure (FILINFO) */

typedef struct {
	FSIZE_t	fsize;			/* File size */
	WORD	fdate;			/* Modified date */
	WORD	ftime;			/* Modified time */
	BYTE	fattrib;		/* File attribute */
#if FF_USE_LFN
	TCHAR	altname[FF_SFN_BUF + 1];/* Altenative file name */
	TCHAR	fname[FF_LFN_BUF + 1];	/* Primary file name */
#else
	TCHAR	fname[12 + 1];	/* File name */
#endif
} FILINFO;



/* File function return code (FRESULT) */

typedef enum {
	FR_OK = 0,				/* (0) Succeeded */
	FR_DISK_ERR,			/* (1) A hard error occurred in the low level disk I/O layer */
	FR_INT_ERR,				/* (2) Assertion failed */
	FR_NOT_READY,			/* (3) The physical drive cannot work */
	FR_NO_FILE,				/* (4) Could not find the file */
	FR_NO_PATH,				/* (5) Could not find the path */
	FR_INVALID_NAME,		/* (6) The path name format is invalid */
	FR_DENIED,				/* (7) Access denied due to prohibited access or directory full */
	FR_EXIST,				/* (8) Access denied due to prohibited access */
	FR_INVALID_OBJECT,		/* (9) The file/directory object is invalid */
	FR_WRITE_PROTECTED,		/* (10) The physical drive is write protected */
	FR_INVALID_DRIVE,		/* (11) The logical drive number is invalid */
	FR_NOT_ENABLED,			/* (12) The volume has no work area */
	FR_NO_FILESYSTEM,		/* (13) There is no valid FAT volume */
	FR_MKFS_ABORTED,		/* (14) The f_mkfs() aborted due to any problem */
	FR_TIMEOUT,				/* (15) Could not get a grant to access the volume within defined period */
	FR_LOCKED,				/* (16) The operation is rejected according to the file sharing policy */
	FR_NOT_ENOUGH_CORE,		/* (17) LFN working buffer could not be allocated */
	FR_TOO_MANY_OPEN_FILES,	/* (18) Number of open files > FF_FS_LOCK */
#ifdef FF_FASTFS
	FR_INVALID_PARAMETER,	/* (19) Given parameter is invalid */
	FR_CLTBL_NO_INIT	    /* (20) The cluster table for fast seek/read/write was not created */
#else
	FR_INVALID_PARAMETER	/* (19) Given parameter is invalid */
#endif
} FRESULT;



/*--------------------------------------------------------------*/
/* FatFs module application interface                           */

FRESULT f_open (FIL* fp, const TCHAR* path, BYTE mode);				/* Open or create a file */
FRESULT f_close (FIL* fp);											/* Close an open file object */
FRESULT f_read (FIL* fp, void* buff, UINT btr, UINT* br);			/* Read data from the file */
FRESULT f_write (FIL* fp, const void* buff, UINT btw, UINT* bw);	/* Write data to the file */
#ifdef FF_FASTFS
FRESULT f_read_fast (FIL* fp, const void* buff, UINT btr);			/* Fast read data from the file */
FRESULT f_write_fast (FIL* fp, const void* buff, UINT btw);         /* Fast write data to the file */
#endif
FRESULT f_lseek (FIL* fp, FSIZE_t ofs);								/* Move file pointer of the file object */
FRESULT f_truncate (FIL* fp);										/* Truncate the file */
FRESULT f_sync (FIL* fp);											/* Flush cached data of the writing file */
FRESULT f_opendir (DIR* dp, const TCHAR* path);						/* Open a directory */
FRESULT f_closedir (DIR* dp);										/* Close an open directory */
FRESULT f_readdir (DIR* dp, FILINFO* fno);							/* Read a directory item */
FRESULT f_findfirst (DIR* dp, FILINFO* fno, const TCHAR* path, const TCHAR* pattern);	/* Find first file */
FRESULT f_findnext (DIR* dp, FILINFO* fno);							/* Find next file */
FRESULT f_mkdir (const TCHAR* path);								/* Create a sub directory */
FRESULT f_unlink (const TCHAR* path);								/* Delete an existing file or directory */
FRESULT f_rename (const TCHAR* path_old, const TCHAR* path_new);	/* Rename/Move a file or directory */
FRESULT f_stat (const TCHAR* path, FILINFO* fno);					/* Get file status */
FRESULT f_chmod (const TCHAR* path, BYTE attr, BYTE mask);			/* Change attribute of a file/dir */
FRESULT f_utime (const TCHAR* path, const FILINFO* fno);			/* Change timestamp of a file/dir */
FRESULT f_chdir (const TCHAR* path);								/* Change current directory */
FRESULT f_chdrive (const TCHAR* path);								/* Change current drive */
FRESULT f_getcwd (TCHAR* buff, UINT len);							/* Get current directory */
FRESULT f_getfree (const TCHAR* path, DWORD* nclst, FATFS** fatfs);	/* Get number of free clusters on the drive */
FRESULT f_getlabel (const TCHAR* path, TCHAR* label, DWORD* vsn);	/* Get volume label */
FRESULT f_setlabel (const TCHAR* label);							/* Set volume label */
FRESULT f_forward (FIL* fp, UINT(*func)(const BYTE*,UINT), UINT btf, UINT* bf);	/* Forward data to the stream */
#ifdef FF_FASTFS
DWORD  *f_expand_cltbl (FIL* fp, UINT tblsz, FSIZE_t ofs);			/* Expand file and populate cluster table */
#endif
FRESULT f_expand (FIL* fp, FSIZE_t szf, BYTE opt);					/* Allocate a contiguous block to the file */
FRESULT f_mount (FATFS* fs, const TCHAR* path, BYTE opt);			/* Mount/Unmount a logical drive */
FRESULT f_mkfs (const TCHAR* path, BYTE opt, DWORD au, void* work, UINT len);	/* Create a FAT volume */
FRESULT f_fdisk (BYTE pdrv, const DWORD* szt, void* work);			/* Divide a physical drive into some partitions */
FRESULT f_setcp (WORD cp);											/* Set current code page */
int f_putc (TCHAR c, FIL* fp);										/* Put a character to the file */
int f_puts (const TCHAR* str, FIL* cp);								/* Put a string to the file */
int f_printf (FIL* fp, const TCHAR* str, ...);						/* Put a formatted string to the file */
TCHAR* f_gets (TCHAR* buff, int len, FIL* fp);						/* Get a string from the file */

#define f_eof(fp) ((int)((fp)->fptr == (fp)->obj.objsize))
#define f_error(fp) ((fp)->err)
#define f_tell(fp) ((fp)->fptr)
#define f_size(fp) ((fp)->obj.objsize)
#define f_rewind(fp) f_lseek((fp), 0)
#define f_rewinddir(dp) f_readdir((dp), 0)
#define f_rmdir(path) f_unlink(path)
#define f_unmount(path) f_mount(0, path, 0)

#ifndef EOF
#define EOF (-1)
#endif




/*--------------------------------------------------------------*/
/* Additional user defined functions                            */

/* RTC function */
#if !FF_FS_READONLY && !FF_FS_NORTC
DWORD get_fattime (void);
#endif

/* LFN support functions */
#if FF_USE_LFN >= 1						/* Code conversion (defined in unicode.c) */
WCHAR ff_oem2uni (WCHAR oem, WORD cp);	/* OEM code to Unicode conversion */
WCHAR ff_uni2oem (DWORD uni, WORD cp);	/* Unicode to OEM code conversion */
DWORD ff_wtoupper (DWORD uni);			/* Unicode upper-case conversion */
#endif
#if FF_USE_LFN == 3						/* Dynamic memory allocation */
void* ff_memalloc (UINT msize);			/* Allocate memory block */
void ff_memfree (void* mblock);			/* Free memory block */
#endif

/* Sync functions */
#if FF_FS_REENTRANT
int ff_cre_syncobj (BYTE vol, FF_SYNC_t* sobj);	/* Create a sync object */
int ff_req_grant (FF_SYNC_t sobj);		/* Lock sync object */
void ff_rel_grant (FF_SYNC_t sobj);		/* Unlock sync object */
int ff_del_syncobj (FF_SYNC_t sobj);	/* Delete a sync object */
#endif




/*--------------------------------------------------------------*/
/* Flags and offset address                                     */


/* File access mode and open method flags (3rd argument of f_open) */
#define	FA_READ				0x01
#define	FA_WRITE			0x02
#define	FA_OPEN_EXISTING	0x00
#define	FA_CREATE_NEW		0x04
#define	FA_CREATE_ALWAYS	0x08
#define	FA_OPEN_ALWAYS		0x10
#define	FA_OPEN_APPEND		0x30

/* Fast seek controls (2nd argument of f_lseek) */
#define CREATE_LINKMAP	((FSIZE_t)0 - 1)

/* Format options (2nd argument of f_mkfs) */
#define FM_FAT		0x01
#define FM_FAT32	0x02
#define FM_EXFAT	0x04
#define FM_ANY		0x07
#define FM_SFD		0x08

/* Filesystem type (FATFS.fs_type) */
#define FS_FAT12	1
#define FS_FAT16	2
#define FS_FAT32	3
#define FS_EXFAT	4

/* File attribute bits for directory entry (FILINFO.fattrib) */
#define	AM_RDO	0x01	/* Read only */
#define	AM_HID	0x02	/* Hidden */
#define	AM_SYS	0x04	/* System */
#define AM_DIR	0x10	/* Directory */
#define AM_ARC	0x20	/* Archive */


#ifdef __cplusplus
}
#endif
#endif /* FF_DEFINED */

================================================
FILE: argon-first-stage/include/libs/fatfs/ffconf.h
================================================
/*---------------------------------------------------------------------------/
/  FatFs Functional Configurations
/---------------------------------------------------------------------------*/

#define FFCONF_DEF	86604	/* Revision ID */

/*---------------------------------------------------------------------------/
/ Function Configurations
/---------------------------------------------------------------------------*/

#define FF_FS_READONLY	0
/* This option switches read-only configuration. (0:Read/Write or 1:Read-only)
/  Read-only configuration removes writing API functions, f_write(), f_sync(),
/  f_unlink(), f_mkdir(), f_chmod(), f_rename(), f_truncate(), f_getfree()
/  and optional writing functions as well. */


#define FF_FS_MINIMIZE	0
/* This option defines minimization level to remove some basic API functions.
/
/   0: Basic functions are fully enabled.
/   1: f_stat(), f_getfree(), f_unlink(), f_mkdir(), f_truncate() and f_rename()
/      are removed.
/   2: f_opendir(), f_readdir() and f_closedir() are removed in addition to 1.
/   3: f_lseek() function is removed in addition to 2. */


#define FF_USE_STRFUNC	2
/* This option switches string functions, f_gets(), f_putc(), f_puts() and f_printf().
/
/  0: Disable string functions.
/  1: Enable without LF-CRLF conversion.
/  2: Enable with LF-CRLF conversion. */


#define FF_USE_FIND		1
/* This option switches filtered directory read functions, f_findfirst() and
/  f_findnext(). (0:Disable, 1:Enable 2:Enable with matching altname[] too) */


#define FF_USE_MKFS		0
/* This option switches f_mkfs() function. (0:Disable or 1:Enable) */

#define FF_FASTFS 1

#ifdef FF_FASTFS
#define FF_USE_FASTSEEK	1
#else
#define FF_USE_FASTSEEK	0
#endif
/* This option switches fast seek function. (0:Disable or 1:Enable) */


#define FF_USE_EXPAND	0
/* This option switches f_expand function. (0:Disable or 1:Enable) */


#define FF_USE_CHMOD	1
/* This option switches attribute manipulation functions, f_chmod() and f_utime().
/  (0:Disable or 1:Enable) Also FF_FS_READONLY needs to be 0 to enable this option. */


#define FF_USE_LABEL	0
/* This option switches volume label functions, f_getlabel() and f_setlabel().
/  (0:Disable or 1:Enable) */


#define FF_USE_FORWARD	0
/* This option switches f_forward() function. (0:Disable or 1:Enable) */


/*---------------------------------------------------------------------------/
/ Locale and Namespace Configurations
/---------------------------------------------------------------------------*/

#define FF_CODE_PAGE	850
/* This option specifies the OEM code page to be used on the target system.
/  Incorrect code page setting can cause a file open failure.
/
/   437 - U.S.
/   720 - Arabic
/   737 - Greek
/   771 - KBL
/   775 - Baltic
/   850 - Latin 1
/   852 - Latin 2
/   855 - Cyrillic
/   857 - Turkish
/   860 - Portuguese
/   861 - Icelandic
/   862 - Hebrew
/   863 - Canadian French
/   864 - Arabic
/   865 - Nordic
/   866 - Russian
/   869 - Greek 2
/   932 - Japanese (DBCS)
/   936 - Simplified Chinese (DBCS)
/   949 - Korean (DBCS)
/   950 - Traditional Chinese (DBCS)
/     0 - Include all code pages above and configured by f_setcp()
*/


#define FF_USE_LFN		3
#define FF_MAX_LFN		255
/* The FF_USE_LFN switches the support for LFN (long file name).
/
/   0: Disable LFN. FF_MAX_LFN has no effect.
/   1: Enable LFN with static working buffer on the BSS. Always NOT thread-safe.
/   2: Enable LFN with dynamic working buffer on the STACK.
/   3: Enable LFN with dynamic working buffer on the HEAP.
/
/  To enable the LFN, ffunicode.c needs to be added to the project. The LFN function
/  requiers certain internal working buffer occupies (FF_MAX_LFN + 1) * 2 bytes and
/  additional (FF_MAX_LFN + 44) / 15 * 32 bytes when exFAT is enabled.
/  The FF_MAX_LFN defines size of the working buffer in UTF-16 code unit and it can
/  be in range of 12 to 255. It is recommended to be set 255 to fully support LFN
/  specification.
/  When use stack for the working buffer, take care on stack overflow. When use heap
/  memory for the working buffer, memory management functions, ff_memalloc() and
/  ff_memfree() in ffsystem.c, need to be added to the project. */


#define FF_LFN_UNICODE	0
/* This option switches the character encoding on the API when LFN is enabled.
/
/   0: ANSI/OEM in current CP (TCHAR = char)
/   1: Unicode in UTF-16 (TCHAR = WCHAR)
/   2: Unicode in UTF-8 (TCHAR = char)
/   3: Unicode in UTF-32 (TCHAR = DWORD)
/
/  Also behavior of string I/O functions will be affected by this option.
/  When LFN is not enabled, this option has no effect. */


#define FF_LFN_BUF		255
#define FF_SFN_BUF		12
/* This set of options defines size of file name members in the FILINFO structure
/  which is used to read out directory items. These values should be suffcient for
/  the file names to read. The maximum possible length of the read file name depends
/  on character encoding. When LFN is not enabled, these options have no effect. */


#define FF_STRF_ENCODE	0
/* When FF_LFN_UNICODE >= 1 with LFN enabled, string I/O functions, f_gets(),
/  f_putc(), f_puts and f_printf() convert the character encoding in it.
/  This option selects assumption of character encoding ON THE FILE to be
/  read/written via those functions.
/
/   0: ANSI/OEM in current CP
/   1: Unicode in UTF-16LE
/   2: Unicode in UTF-16BE
/   3: Unicode in UTF-8
*/


#define FF_FS_RPATH		0
/* This option configures support for relative path.
/
/   0: Disable relative path and remove related functions.
/   1: Enable relative path. f_chdir() and f_chdrive() are available.
/   2: f_getcwd() function is available in addition to 1.
*/


/*---------------------------------------------------------------------------/
/ Drive/Volume Configurations
/---------------------------------------------------------------------------*/

#define FF_VOLUMES		1
/* Number of volumes (logical drives) to be used. (1-10) */


#define FF_STR_VOLUME_ID	0
#define FF_VOLUME_STRS		"sd"
/* FF_STR_VOLUME_ID switches support for volume ID in arbitrary strings.
/  When FF_STR_VOLUME_ID is set to 1 or 2, arbitrary strings can be used as drive
/  number in the path name. FF_VOLUME_STRS defines the volume ID strings for each
/  logical drives. Number of items must not be less than FF_VOLUMES. Valid
/  characters for the volume ID strings are A-Z, a-z and 0-9, however, they are
/  compared in case-insensitive. If FF_STR_VOLUME_ID >= 1 and FF_VOLUME_STRS is
/  not defined, a user defined volume string table needs to be defined as:
/
/  const char* VolumeStr[FF_VOLUMES] = {"ram","flash","sd","usb",...
*/


#define FF_MULTI_PARTITION	0
/* This option switches support for multiple volumes on the physical drive.
/  By default (0), each logical drive number is bound to the same physical drive
/  number and only an FAT volume found on the physical drive will be mounted.
/  When this function is enabled (1), each logical drive number can be bound to
/  arbitrary physical drive and partition listed in the VolToPart[]. Also f_fdisk()
/  funciton will be available. */


#define FF_MIN_SS		512
#define FF_MAX_SS		512
/* This set of options configures the range of sector size to be supported. (512,
/  1024, 2048 or 4096) Always set both 512 for most systems, generic memory card and
/  harddisk. But a larger value may be required for on-board flash memory and some
/  type of optical media. When FF_MAX_SS is larger than FF_MIN_SS, FatFs is configured
/  for variable sector size mode and disk_ioctl() function needs to implement
/  GET_SECTOR_SIZE command. */


#define FF_USE_TRIM		0
/* This option switches support for ATA-TRIM. (0:Disable or 1:Enable)
/  To enable Trim function, also CTRL_TRIM command should be implemented to the
/  disk_ioctl() function. */


#define FF_FS_NOFSINFO	1
/* If you need to know correct free space on the FAT32 volume, set bit 0 of this
/  option, and f_getfree() function at first time after volume mount will force
/  a full FAT scan. Bit 1 controls the use of last allocated cluster number.
/
/  bit0=0: Use free cluster count in the FSINFO if available.
/  bit0=1: Do not trust free cluster count in the FSINFO.
/  bit1=0: Use last allocated cluster number in the FSINFO if available.
/  bit1=1: Do not trust last allocated cluster number in the FSINFO.
*/



/*---------------------------------------------------------------------------/
/ System Configurations
/---------------------------------------------------------------------------*/

#define FF_FS_TINY		0
/* This option switches tiny buffer configuration. (0:Normal or 1:Tiny)
/  At the tiny configuration, size of file object (FIL) is shrinked FF_MAX_SS bytes.
/  Instead of private sector buffer eliminated from the file object, common sector
/  buffer in the filesystem object (FATFS) is used for the file data transfer. */


#define FF_FS_EXFAT		1
/* This option switches support for exFAT filesystem. (0:Disable or 1:Enable)
/  To enable exFAT, also LFN needs to be enabled. (FF_USE_LFN >= 1)
/  Note that enabling exFAT discards ANSI C (C89) compatibility. */


#define FF_FS_NORTC		1
#define FF_NORTC_MON	1
#define FF_NORTC_MDAY	1
#define FF_NORTC_YEAR	2019
/* The option FF_FS_NORTC switches timestamp function. If the system does not have
/  any RTC function or valid timestamp is not needed, set FF_FS_NORTC = 1 to disable
/  the timestamp function. Every object modified by FatFs will have a fixed timestamp
/  defined by FF_NORTC_MON, FF_NORTC_MDAY and FF_NORTC_YEAR in local time.
/  To enable timestamp function (FF_FS_NORTC = 0), get_fattime() function need to be
/  added to the project to read current time form real-time clock. FF_NORTC_MON,
/  FF_NORTC_MDAY and FF_NORTC_YEAR have no effect.
/  These options have no effect at read-only configuration (FF_FS_READONLY = 1). */


#define FF_FS_LOCK		0
/* The option FF_FS_LOCK switches file lock function to control duplicated file open
/  and illegal operation to open objects. This option must be 0 when FF_FS_READONLY
/  is 1.
/
/  0:  Disable file lock function. To avoid volume corruption, application program
/      should avoid illegal open, remove and rename to the open objects.
/  >0: Enable file lock function. The value defines how many files/sub-directories
/      can be opened simultaneously under file lock control. Note that the file
/      lock control is independent of re-entrancy. */


/* #include <somertos.h>	// O/S definitions */
#define FF_FS_REENTRANT	0
#define FF_FS_TIMEOUT	1000
#define FF_SYNC_t		HANDLE
/* The option FF_FS_REENTRANT switches the re-entrancy (thread safe) of the FatFs
/  module itself. Note that regardless of this option, file access to different
/  volume is always re-entrant and volume control functions, f_mount(), f_mkfs()
/  and f_fdisk() function, are always not re-entrant. Only file/directory access
/  to the same volume is under control of this function.
/
/   0: Disable re-entrancy. FF_FS_TIMEOUT and FF_SYNC_t have no effect.
/   1: Enable re-entrancy. Also user provided synchronization handlers,
/      ff_req_grant(), ff_rel_grant(), ff_del_syncobj() and ff_cre_syncobj()
/      function, must be added to the project. Samples are available in
/      option/syscall.c.
/
/  The FF_FS_TIMEOUT defines timeout period in unit of time tick.
/  The FF_SYNC_t defines O/S dependent sync object type. e.g. HANDLE, ID, OS_EVENT*,
/  SemaphoreHandle_t and etc. A header file for O/S definitions needs to be
/  included somewhere in the scope of ff.h. */



/*--- End of configuration options ---*/

================================================
FILE: argon-first-stage/include/mem/emc.h
================================================
/*
 * arch/arm/mach-tegra/tegra21_emc.h
 *
 * Copyright (c) 2014-2015, NVIDIA CORPORATION.  All rights reserved.
 * Copyright (c) 2018 Atmosphère-NX
 *
 * 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 program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 *
 */
 
#ifndef FUSEE_EMC_H_
#define FUSEE_EMC_H_

#define EMC_BASE 0x7001B000
#define EMC0_BASE 0x7001E000
#define EMC1_BASE 0x7001F000
#define MAKE_EMC_REG(n) MAKE_REG32(EMC_BASE + n)
#define MAKE_EMC0_REG(n) MAKE_REG32(EMC0_BASE + n)
#define MAKE_EMC1_REG(n) MAKE_REG32(EMC1_BASE + n)

#define EMC_INTSTATUS                       0x0
#define EMC_INTSTATUS_MRR_DIVLD                 (0x1 << 5)
#define EMC_INTSTATUS_CLKCHANGE_COMPLETE            (0x1 << 4)

#define EMC_INTMASK                     0x4
#define EMC_DBG                         0x8
#define EMC_DBG_WRITE_MUX_ACTIVE                (1 << 1)
#define EMC_DBG_CFG_SWAP_SHIFT                  26
#define EMC_DBG_CFG_SWAP_MASK                   \
    (0x3 << EMC_DBG_CFG_SWAP_SHIFT)
#define EMC_DBG_WRITE_ACTIVE_ONLY               (1 << 30)

#define EMC_CONFIG_SAMPLE_DELAY                 0x5f0
#define EMC_CFG_UPDATE                      0x5f4
#define EMC_CFG_UPDATE_UPDATE_DLL_IN_UPDATE_SHIFT       9
#define EMC_CFG_UPDATE_UPDATE_DLL_IN_UPDATE_MASK        \
    (0x3 << EMC_CFG_UPDATE_UPDATE_DLL_IN_UPDATE_SHIFT)
#define EMC_CFG                         0xc
#define EMC_CFG_DRAM_CLKSTOP_PD                 (1 << 31)
#define EMC_CFG_DRAM_CLKSTOP_SR                 (1 << 30)
#define EMC_CFG_DRAM_ACPD                   (1 << 29)
#define EMC_CFG_DYN_SELF_REF                    (1 << 28)
#define EMC_CFG_REQACT_ASYNC                    (1 << 26)
#define EMC_CFG_AUTO_PRE_WR                 (1 << 25)
#define EMC_CFG_AUTO_PRE_RD                 (1 << 24)
#define EMC_CFG_MAM_PRE_WR                  (1 << 23)
#define EMC_CFG_MAN_PRE_RD                  (1 << 22)
#define EMC_CFG_PERIODIC_QRST                   (1 << 21)
#define EMC_CFG_PERIODIC_QRST_SHIFT             (21)
#define EMC_CFG_EN_DYNAMIC_PUTERM               (1 << 20)
#define EMC_CFG_DLY_WR_DQ_HALF_CLOCK                (1 << 19)
#define EMC_CFG_DSR_VTTGEN_DRV_EN               (1 << 18)
#define EMC_CFG_EMC2MC_CLK_RATIO                (3 << 16)
#define EMC_CFG_WAIT_FOR_ISP2B_READY_B4_CC          (1 << 9)
#define EMC_CFG_WAIT_FOR_VI2_READY_B4_CC            (1 << 8)
#define EMC_CFG_WAIT_FOR_ISP2_READY_B4_CC           (1 << 7)
#define EMC_CFG_INVERT_DQM                  (1 << 6)
#define EMC_CFG_WAIT_FOR_DISPLAYB_READY_B4_CC           (1 << 5)
#define EMC_CFG_WAIT_FOR_DISPLAY_READY_B4_CC            (1 << 4)
#define EMC_CFG_EMC2PMACRO_CFG_BYPASS_DATAPIPE2         (1 << 3)
#define EMC_CFG_EMC2PMACRO_CFG_BYPASS_DATAPIPE1         (1 << 2)
#define EMC_CFG_EMC2PMACRO_CFG_BYPASS_ADDRPIPE          (1 << 1)

#define EMC_ADR_CFG                     0x10
#define EMC_REFCTRL                     0x20
#define EMC_REFCTRL_DEV_SEL_SHIFT               0
#define EMC_REFCTRL_DEV_SEL_MASK                \
    (0x3 << EMC_REFCTRL_DEV_SEL_SHIFT)
#define EMC_REFCTRL_ENABLE                  (0x1 << 31)
#define EMC_REFCTRL_ENABLE_ALL(num)             \
    (((((num) > 1) ? 0 : 2) << EMC_REFCTRL_DEV_SEL_SHIFT)   \
     | EMC_REFCTRL_ENABLE)
#define EMC_REFCTRL_DISABLE_ALL(num)                \
    ((((num) > 1) ? 0 : 2) << EMC_REFCTRL_DEV_SEL_SHIFT)

#define EMC_PIN                         0x24
#define EMC_PIN_PIN_CKE_PER_DEV                 (1 << 2)
#define EMC_PIN_PIN_CKEB                    (1 << 1)
#define EMC_PIN_PIN_CKE                     (1 << 0)

#define EMC_CLK_FORCE_CC_TRIGGER                (1 << 27)

#define EMC_TIMING_CONTROL                  0x28
#define EMC_RC                          0x2c
#define EMC_RFC                         0x30
#define EMC_RFCPB                       0x590
#define EMC_RAS                         0x34
#define EMC_RP                          0x38
#define EMC_R2W                         0x3c
#define EMC_W2R                         0x40
#define EMC_R2P                         0x44
#define EMC_W2P                         0x48
#define EMC_CCDMW                       0x5c0
#define EMC_RD_RCD                      0x4c
#define EMC_WR_RCD                      0x50
#define EMC_RRD                         0x54
#define EMC_REXT                        0x58
#define EMC_WDV                         0x5c
#define EMC_QUSE                        0x60
#define EMC_QRST                        0x64
#define EMC_ISSUE_QRST                      0x428
#define EMC_QSAFE                       0x68
#define EMC_RDV                         0x6c
#define EMC_REFRESH                     0x70
#define EMC_BURST_REFRESH_NUM                   0x74
#define EMC_PDEX2WR                     0x78
#define EMC_PDEX2RD                     0x7c
#define EMC_PDEX2CKE                        0x118
#define EMC_PCHG2PDEN                       0x80
#define EMC_ACT2PDEN                        0x84
#define EMC_AR2PDEN                     0x88
#define EMC_RW2PDEN                     0x8c
#define EMC_CKE2PDEN                        0x11c
#define EMC_TXSR                        0x90
#define EMC_TCKE                        0x94
#define EMC_TFAW                        0x98
#define EMC_TRPAB                       0x9c
#define EMC_TCLKSTABLE                      0xa0
#define EMC_TCLKSTOP                        0xa4
#define EMC_TREFBW                      0xa8
#define EMC_TPPD                        0xac
#define EMC_PDEX2MRR                        0xb4
#define EMC_ODT_WRITE                       0xb0
#define EMC_WEXT                        0xb8
#define EMC_RFC_SLR                     0xc0
#define EMC_MRS_WAIT_CNT2                   0xc4
#define EMC_MRS_WAIT_CNT2_MRS_EXT2_WAIT_CNT_SHIFT       16
#define EMC_MRS_WAIT_CNT2_MRS_EXT2_WAIT_CNT_MASK        \
    (0x7ff << EMC_MRS_WAIT_CNT2_MRS_EXT2_WAIT_CNT_SHIFT)
#define EMC_MRS_WAIT_CNT2_MRS_EXT1_WAIT_CNT_SHIFT       0
#define EMC_MRS_WAIT_CNT2_MRS_EXT1_WAIT_CNT_MASK        \
    (0x3ff << EMC_MRS_WAIT_CNT2_MRS_EXT1_WAIT_CNT_SHIFT)

#define EMC_MRS_WAIT_CNT                    0xc8
#define EMC_MRS_WAIT_CNT_SHORT_WAIT_SHIFT           0
#define EMC_MRS_WAIT_CNT_SHORT_WAIT_MASK            \
    (0x3FF << EMC_MRS_WAIT_CNT_SHORT_WAIT_SHIFT)
#define EMC_MRS_WAIT_CNT_LONG_WAIT_SHIFT            16
#define EMC_MRS_WAIT_CNT_LONG_WAIT_MASK             \
    (0x3FF << EMC_MRS_WAIT_CNT_LONG_WAIT_SHIFT)

#define EMC_MRS                         0xcc
#define EMC_MODE_SET_DLL_RESET                  (1 << 8)
#define EMC_MRS_USE_MRS_LONG_CNT                (1 << 26)

#define EMC_EMRS                        0xd0
#define EMC_EMRS_USE_EMRS_LONG_CNT              (1 << 26)

#define EMC_REF                         0xd4
#define EMC_REF_FORCE_CMD                   1

#define EMC_PRE                         0xd8
#define EMC_NOP                         0xdc
#define EMC_SELF_REF                            0xe0
#define EMC_SELF_REF_CMD_ENABLED                (1 << 0)
#define EMC_SELF_REF_ACTIVE_SELF_REF                (1 << 8)
#define EMC_SELF_REF_DEV_SEL_SHIFT              30
#define EMC_SELF_REF_DEV_SEL_MASK               \
    (0x3 << EMC_SELF_REF_DEV_SEL_SHIFT)

#define EMC_DPD                         0xe4
#define EMC_MRW                         0xe8
#define EMC_MRW_MRW_OP_SHIFT                    0
#define EMC_MRW_MRW_OP_MASK                 \
    (0xff << EMC_MRW_MRW_OP_SHIFT)
#define EMC_MRW_MRW_MA_SHIFT                    16
#define EMC_MRW_MRW_MA_MASK                 \
    (0xff << EMC_MRW_MRW_MA_SHIFT)
#define EMC_MRW_USE_MRW_LONG_CNT                26
#define EMC_MRW_USE_MRW_EXT_CNT                 27
#define EMC_MRW_MRW_DEV_SELECTN_SHIFT               30
#define EMC_MRW_MRW_DEV_SELECTN_MASK                \
    (0x3 << EMC_MRW_MRW_DEV_SELECTN_SHIFT)

#define EMC_MRR                         0xec
#define EMC_MRR_DEV_SEL_SHIFT                   30
#define EMC_MRR_DEV_SEL_MASK                    \
    (0x3 << EMC_SELF_REF_DEV_SEL_SHIFT)
#define EMC_MRR_MA_SHIFT                    16
#define EMC_MRR_MA_MASK                     \
    (0xff << EMC_MRR_MA_SHIFT)
#define EMC_MRR_DATA_SHIFT                  0
#define EMC_MRR_DATA_MASK                   \
    (0xffff << EMC_MRR_DATA_SHIFT)
#define LPDDR2_MR4_TEMP_SHIFT                   0
#define LPDDR2_MR4_TEMP_MASK                    \
    (0x7 << LPDDR2_MR4_TEMP_SHIFT)

#define EMC_CMDQ                        0xf0
#define EMC_MC2EMCQ                     0xf4
#define EMC_FBIO_SPARE                      0x100
#define EMC_FBIO_CFG5                       0x104
#define EMC_FBIO_CFG5_DRAM_TYPE_SHIFT               0
#define EMC_FBIO_CFG5_DRAM_TYPE_MASK                \
    (0x3 << EMC_FBIO_CFG5_DRAM_TYPE_SHIFT)
#define EMC_FBIO_CFG5_CMD_TX_DIS                (1 << 8)
#define EMC_FBIO_CFG5_CMD_BUS_RETURN_TO_ZERO            (1 << 27)

#define EMC_CFG5_QUSE_MODE_SHIFT                13
#define EMC_CFG5_QUSE_MODE_MASK                 \
    (0x7 << EMC_CFG5_QUSE_MODE_SHIFT)

#define EMC_CFG_RSV                     0x120
#define EMC_ACPD_CONTROL                    0x124
#define EMC_MPC                         0x128
#define EMC_EMRS2                       0x12c
#define EMC_EMRS2_USE_EMRS2_LONG_CNT                (1 << 26)

#define EMC_EMRS3                       0x130
#define EMC_MRW2                        0x134
#define EMC_MRW3                        0x138
#define EMC_MRW4                        0x13c
#define EMC_MRW5                        0x4a0
#define EMC_MRW6                        0x4a4
#define EMC_MRW7                        0x4a8
#define EMC_MRW8                        0x4ac
#define EMC_MRW9                        0x4b0
#define EMC_MRW10                       0x4b4
#define EMC_MRW11                       0x4b8
#define EMC_MRW12                       0x4bc
#define EMC_MRW13                       0x4c0
#define EMC_MRW14                       0x4c4
#define EMC_MRW15                       0x4d0
#define EMC_CFG_SYNC                        0x4d4
#define EMC_CLKEN_OVERRIDE                  0x140
#define EMC_R2R                         0x144
#define EMC_W2W                         0x148
#define EMC_EINPUT                      0x14c
#define EMC_EINPUT_DURATION                     0x150
#define EMC_PUTERM_EXTRA                    0x154
#define EMC_TCKESR                      0x158
#define EMC_TPD                         0x15c
#define EMC_STAT_CONTROL                    0x160
#define EMC_STAT_STATUS                     0x164
#define EMC_STAT_DRAM_CLOCK_LIMIT_LO                0x19c
#define EMC_STAT_DRAM_CLOCK_LIMIT_HI                0x1a0
#define EMC_STAT_DRAM_CLOCKS_LO                 0x1a4
#define EMC_STAT_DRAM_CLOCKS_HI                 0x1a8
#define EMC_STAT_DRAM_DEV0_ACTIVATE_CNT_LO          0x1ac
#define EMC_STAT_DRAM_DEV0_ACTIVATE_CNT_HI          0x1b0
#define EMC_STAT_DRAM_DEV0_READ_CNT_LO              0x1b4
#define EMC_STAT_DRAM_DEV0_READ_CNT_HI              0x1b8
#define EMC_STAT_DRAM_DEV0_READ8_CNT_LO             0x1bc
#define EMC_STAT_DRAM_DEV0_READ8_CNT_HI             0x1c0
#define EMC_STAT_DRAM_DEV0_WRITE_CNT_LO             0x1c4
#define EMC_STAT_DRAM_DEV0_WRITE_CNT_HI             0x1c8
#define EMC_STAT_DRAM_DEV0_WRITE8_CNT_LO            0x1cc
#define EMC_STAT_DRAM_DEV0_WRITE8_CNT_HI            0x1d0
#define EMC_STAT_DRAM_DEV0_REF_CNT_LO               0x1d4
#define EMC_STAT_DRAM_DEV0_REF_CNT_HI               0x1d8
#define EMC_STAT_DRAM_DEV0_EXTCLKS_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_LO  0x1dc
#define EMC_STAT_DRAM_DEV0_EXTCLKS_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_HI  0x1e0
#define EMC_STAT_DRAM_DEV0_CLKSTOP_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_LO  0x1e4
#define EMC_STAT_DRAM_DEV0_CLKSTOP_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_HI  0x1e8
#define EMC_STAT_DRAM_DEV0_EXTCLKS_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_LO  0x1ec
#define EMC_STAT_DRAM_DEV0_EXTCLKS_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_HI  0x1f0
#define EMC_STAT_DRAM_DEV0_CLKSTOP_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_LO  0x1f4
#define EMC_STAT_DRAM_DEV0_CLKSTOP_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_HI  0x1f8
#define EMC_STAT_DRAM_DEV0_EXTCLKS_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_LO    0x1fc
#define EMC_STAT_DRAM_DEV0_EXTCLKS_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_HI    0x200
#define EMC_STAT_DRAM_DEV0_CLKSTOP_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_LO    0x204
#define EMC_STAT_DRAM_DEV0_CLKSTOP_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_HI    0x208
#define EMC_STAT_DRAM_DEV0_EXTCLKS_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_LO    0x20c
#define EMC_STAT_DRAM_DEV0_EXTCLKS_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_HI    0x210
#define EMC_STAT_DRAM_DEV0_CLKSTOP_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_LO    0x214
#define EMC_STAT_DRAM_DEV0_CLKSTOP_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_HI    0x218
#define EMC_STAT_DRAM_DEV0_SR_CKE_EQ0_CLKS_LO               0x21c
#define EMC_STAT_DRAM_DEV0_SR_CKE_EQ0_CLKS_HI               0x220
#define EMC_STAT_DRAM_DEV0_DSR                      0x224
#define EMC_STAT_DRAM_DEV1_ACTIVATE_CNT_LO              0x228
#define EMC_STAT_DRAM_DEV1_ACTIVATE_CNT_HI              0x22c
#define EMC_STAT_DRAM_DEV1_READ_CNT_LO                  0x230
#define EMC_STAT_DRAM_DEV1_READ_CNT_HI                  0x234
#define EMC_STAT_DRAM_DEV1_READ8_CNT_LO                 0x238
#define EMC_STAT_DRAM_DEV1_READ8_CNT_HI                 0x23c
#define EMC_STAT_DRAM_DEV1_WRITE_CNT_LO                 0x240
#define EMC_STAT_DRAM_DEV1_WRITE_CNT_HI                 0x244
#define EMC_STAT_DRAM_DEV1_WRITE8_CNT_LO                0x248
#define EMC_STAT_DRAM_DEV1_WRITE8_CNT_HI                0x24c
#define EMC_STAT_DRAM_DEV1_REF_CNT_LO                   0x250
#define EMC_STAT_DRAM_DEV1_REF_CNT_HI                   0x254
#define EMC_STAT_DRAM_DEV1_EXTCLKS_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_LO  0x258
#define EMC_STAT_DRAM_DEV1_EXTCLKS_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_HI  0x25c
#define EMC_STAT_DRAM_DEV1_CLKSTOP_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_LO  0x260
#define EMC_STAT_DRAM_DEV1_CLKSTOP_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_HI  0x264
#define EMC_STAT_DRAM_DEV1_EXTCLKS_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_LO  0x268
#define EMC_STAT_DRAM_DEV1_EXTCLKS_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_HI  0x26c
#define EMC_STAT_DRAM_DEV1_CLKSTOP_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_LO  0x270
#define EMC_STAT_DRAM_DEV1_CLKSTOP_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_HI  0x274
#define EMC_STAT_DRAM_DEV1_EXTCLKS_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_LO    0x278
#define EMC_STAT_DRAM_DEV1_EXTCLKS_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_HI    0x27c
#define EMC_STAT_DRAM_DEV1_CLKSTOP_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_LO    0x280
#define EMC_STAT_DRAM_DEV1_CLKSTOP_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_HI    0x284
#define EMC_STAT_DRAM_DEV1_EXTCLKS_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_LO    0x288
#define EMC_STAT_DRAM_DEV1_EXTCLKS_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_HI    0x28c
#define EMC_STAT_DRAM_DEV1_CLKSTOP_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_LO    0x290
#define EMC_STAT_DRAM_DEV1_CLKSTOP_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_HI    0x294
#define EMC_STAT_DRAM_DEV1_SR_CKE_EQ0_CLKS_LO               0x298
#define EMC_STAT_DRAM_DEV1_SR_CKE_EQ0_CLKS_HI               0x29c
#define EMC_STAT_DRAM_DEV1_DSR                      0x2a0
#define EMC_STAT_DRAM_IO_EXTCLKS_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_LO    0xc8c
#define EMC_STAT_DRAM_IO_EXTCLKS_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_HI    0xc90
#define EMC_STAT_DRAM_IO_CLKSTOP_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_LO    0xc94
#define EMC_STAT_DRAM_IO_CLKSTOP_CKE_EQ0_NO_BANKS_ACTIVE_CLKS_HI    0xc98
#define EMC_STAT_DRAM_IO_EXTCLKS_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_LO    0xc9c
#define EMC_STAT_DRAM_IO_EXTCLKS_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_HI    0xca0
#define EMC_STAT_DRAM_IO_CLKSTOP_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_LO    0xca4
#define EMC_STAT_DRAM_IO_CLKSTOP_CKE_EQ1_NO_BANKS_ACTIVE_CLKS_HI    0xca8
#define EMC_STAT_DRAM_IO_EXTCLKS_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_LO  0xcac
#define EMC_STAT_DRAM_IO_EXTCLKS_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_HI  0xcb0
#define EMC_STAT_DRAM_IO_CLKSTOP_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_LO  0xcb4
#define EMC_STAT_DRAM_IO_CLKSTOP_CKE_EQ0_SOME_BANKS_ACTIVE_CLKS_HI  0xcb8
#define EMC_STAT_DRAM_IO_EXTCLKS_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_LO  0xcbc
#define EMC_STAT_DRAM_IO_EXTCLKS_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_HI  0xcc0
#define EMC_STAT_DRAM_IO_CLKSTOP_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_LO  0xcc4
#define EMC_STAT_DRAM_IO_CLKSTOP_CKE_EQ1_SOME_BANKS_ACTIVE_CLKS_HI  0xcc8
#define EMC_STAT_DRAM_IO_SR_CKE_EQ0_CLKS_LO         0xccc
#define EMC_STAT_DRAM_IO_SR_CKE_EQ0_CLKS_HI         0xcd0
#define EMC_STAT_DRAM_IO_DSR                    0xcd4
#define EMC_AUTO_CAL_CONFIG                 0x2a4
#define EMC_AUTO_CAL_CONFIG_AUTO_CAL_COMPUTE_START      (1 << 0)
#define EMC_AUTO_CAL_CONFIG_AUTO_CAL_MEASURE_STALL      (1 << 9)
#define EMC_AUTO_CAL_CONFIG_AUTO_CAL_UPDATE_STALL       (1 << 10)
#define EMC_AUTO_CAL_CONFIG_AUTO_CAL_ENABLE         (1 << 29)
#define EMC_AUTO_CAL_CONFIG_AUTO_CAL_START          (1 << 31)

#define EMC_AUTO_CAL_CONFIG2                    0x458
#define EMC_AUTO_CAL_CONFIG3                    0x45c
#define EMC_AUTO_CAL_CONFIG4                    0x5b0
#define EMC_AUTO_CAL_CONFIG5                    0x5b4
#define EMC_AUTO_CAL_CONFIG6                    0x5cc
#define EMC_AUTO_CAL_CONFIG7                    0x574
#define EMC_AUTO_CAL_CONFIG8                    0x2dc
#define EMC_AUTO_CAL_VREF_SEL_0                 0x2f8
#define EMC_AUTO_CAL_VREF_SEL_1                 0x300
#define EMC_AUTO_CAL_INTERVAL                   0x2a8
#define EMC_AUTO_CAL_STATUS                 0x2ac
#define EMC_AUTO_CAL_STATUS2                    0x3d4
#define EMC_AUTO_CAL_CHANNEL                    0x464
#define EMC_PMACRO_RX_TERM                  0xc48
#define EMC_PMACRO_DQ_TX_DRV                    0xc70
#define EMC_PMACRO_CA_TX_DRV                    0xc74
#define EMC_PMACRO_CMD_TX_DRV                   0xc4c
#define EMC_PMACRO_AUTOCAL_CFG_0                0x700
#define EMC_PMACRO_AUTOCAL_CFG_1                0x704
#define EMC_PMACRO_AUTOCAL_CFG_2                0x708
#define EMC_PMACRO_AUTOCAL_CFG_COMMON               0xc78
#define EMC_PMACRO_AUTOCAL_CFG_COMMON_E_CAL_BYPASS_DVFS     (1 << 16)

#define EMC_PMACRO_ZCTRL                    0xc44
#define EMC_XM2COMPPADCTRL                  0x30c
#define EMC_XM2COMPPADCTRL_VREF_CAL_ENABLE          (1 << 10)

#define EMC_XM2COMPPADCTRL2                 0x578
#define EMC_XM2COMPPADCTRL3                 0x2f4
#define EMC_COMP_PAD_SW_CTRL                    0x57c
#define EMC_REQ_CTRL                        0x2b0
#define EMC_EMC_STATUS                      0x2b4
#define EMC_EMC_STATUS_MRR_DIVLD                (1 << 20)
#define EMC_EMC_STATUS_TIMING_UPDATE_STALLED            (1 << 23)
#define EMC_EMC_STATUS_DRAM_IN_POWERDOWN_SHIFT          4
#define EMC_EMC_STATUS_DRAM_IN_POWERDOWN_MASK           \
    (0x3 << EMC_EMC_STATUS_DRAM_IN_POWERDOWN_SHIFT)
#define EMC_EMC_STATUS_DRAM_IN_SELF_REFRESH_SHIFT       8
#define EMC_EMC_STATUS_DRAM_IN_SELF_REFRESH_MASK        \
    (0x3 << EMC_EMC_STATUS_DRAM_IN_SELF_REFRESH_SHIFT)

#define EMC_CFG_2                       0x2b8
#define EMC_CFG_DIG_DLL                     0x2bc
#define EMC_CFG_DIG_DLL_CFG_DLL_EN              (1 << 0)
#define EMC_CFG_DIG_DLL_CFG_DLL_STALL_ALL_UNTIL_LOCK        (1 << 1)
#define EMC_CFG_DIG_DLL_CFG_DLL_STALL_ALL_TRAFFIC       (1 << 3)
#define EMC_CFG_DIG_DLL_CFG_DLL_STALL_RW_UNTIL_LOCK     (1 << 4)
#define EMC_CFG_DIG_DLL_CFG_DLL_MODE_SHIFT          6
#define EMC_CFG_DIG_DLL_CFG_DLL_MODE_MASK           \
    (0x3 << EMC_CFG_DIG_DLL_CFG_DLL_MODE_SHIFT)
#define EMC_CFG_DIG_DLL_CFG_DLL_LOCK_LIMIT_SHIFT        8
#define EMC_CFG_DIG_DLL_CFG_DLL_LOCK_LIMIT_MASK         \
    (0x7 << EMC_CFG_DIG_DLL_CFG_DLL_LOCK_LIMIT_SHIFT)

#define EMC_CFG_DIG_DLL_PERIOD                  0x2c0
#define EMC_DIG_DLL_STATUS                  0x2c4
#define EMC_DIG_DLL_STATUS_DLL_LOCK             (1 << 15)
#define EMC_DIG_DLL_STATUS_DLL_PRIV_UPDATED         (1 << 17)
#define EMC_DIG_DLL_STATUS_DLL_OUT_SHIFT            0
#define EMC_DIG_DLL_STATUS_DLL_OUT_MASK             \
    (0x7ff << EMC_DIG_DLL_STATUS_DLL_OUT_SHIFT)

#define EMC_CFG_DIG_DLL_1                   0x2c8
#define EMC_RDV_MASK                        0x2cc
#define EMC_WDV_MASK                        0x2d0
#define EMC_RDV_EARLY_MASK                  0x2d4
#define EMC_RDV_EARLY                       0x2d8
#define EMC_WDV_CHK                     0x4e0
#define EMC_ZCAL_INTERVAL                   0x2e0
#define EMC_ZCAL_WAIT_CNT                   0x2e4
#define EMC_ZCAL_WAIT_CNT_ZCAL_WAIT_CNT_MASK            0x7ff
#define EMC_ZCAL_WAIT_CNT_ZCAL_WAIT_CNT_SHIFT           0

#define EMC_ZCAL_MRW_CMD                    0x2e8
#define EMC_ZQ_CAL                      0x2ec
#define EMC_ZQ_CAL_DEV_SEL_SHIFT                30
#define EMC_ZQ_CAL_DEV_SEL_MASK                 \
    (0x3 << EMC_SELF_REF_DEV_SEL_SHIFT)
#define EMC_ZQ_CAL_LONG                     (1 << 4)
#define EMC_ZQ_CAL_ZQ_LATCH_CMD                 (1 << 1)
#define EMC_ZQ_CAL_ZQ_CAL_CMD                   (1 << 0)
#define EMC_ZQ_CAL_LONG_CMD_DEV0                \
    (DRAM_DEV_SEL_0 | EMC_ZQ_CAL_LONG | EMC_ZQ_CAL_CMD)
#define EMC_ZQ_CAL_LONG_CMD_DEV1                \
    (DRAM_DEV_SEL_1 | EMC_ZQ_CAL_LONG | EMC_ZQ_CAL_CMD)

#define EMC_SCRATCH0                        0x324
#define EMC_STALL_THEN_EXE_BEFORE_CLKCHANGE         0x3c8
#define EMC_STALL_THEN_EXE_AFTER_CLKCHANGE          0x3cc
#define EMC_UNSTALL_RW_AFTER_CLKCHANGE              0x3d0
#define EMC_FDPD_CTRL_CMD_NO_RAMP               0x4d8
#define EMC_FDPD_CTRL_CMD_NO_RAMP_CMD_DPD_NO_RAMP_ENABLE    (1 << 0)

#define EMC_SEL_DPD_CTRL                    0x3d8
#define EMC_SEL_DPD_CTRL_DATA_SEL_DPD_EN            (1 << 8)
#define EMC_SEL_DPD_CTRL_ODT_SEL_DPD_EN             (1 << 5)
#define EMC_SEL_DPD_CTRL_RESET_SEL_DPD_EN           (1 << 4)
#define EMC_SEL_DPD_CTRL_CA_SEL_DPD_EN              (1 << 3)
#define EMC_SEL_DPD_CTRL_CLK_SEL_DPD_EN             (1 << 2)
#define EMC_SEL_DPD_CTRL_DDR3_MASK              \
    ((0xf << 2) | (0x1 << 8))
#define EMC_SEL_DPD_CTRL_MAS                    \
    ((0x3 << 2) | (0x1 << 5) | (0x1 << 8))

#define EMC_FDPD_CTRL_DQ                    0x310
#define EMC_FDPD_CTRL_CMD                   0x314
#define EMC_PRE_REFRESH_REQ_CNT                 0x3dc
#define EMC_REFCTRL2                        0x580
#define EMC_FBIO_CFG7                       0x584
#define EMC_FBIO_CFG7_CH0_ENABLE                (1 << 1)
#define EMC_FBIO_CFG7_CH1_ENABLE                (1 << 2)

#define EMC_DATA_BRLSHFT_0                  0x588
#define EMC_DATA_BRLSHFT_0_RANK0_BYTE7_DATA_BRLSHFT_SHIFT   21
#define EMC_DATA_BRLSHFT_0_RANK0_BYTE7_DATA_BRLSHFT_MASK    \
    (0x7 << EMC_DATA_BRLSHFT_0_RANK0_BYTE7_DATA_BRLSHFT_SHIFT)
#define EMC_DATA_BRLSHFT_0_RANK0_BYTE6_DATA_BRLSHFT_SHIFT   18
#define EMC_DATA_BRLSHFT_0_RANK0_BYTE6_DATA_BRLSHFT_MASK    \
    (0x7 << EMC_DATA_BRLSHFT_0_RANK0_BYTE6_DATA_BRLSHFT_SHIFT)
#define EMC_DATA_BRLSHFT_0_RANK0_BYTE5_DATA_BRLSHFT_SHIFT   15
#define EMC_DATA_BRLSHFT_0_RANK0_BYTE5_DATA_BRLSHFT_MASK    \
    (0x7 << EMC_DATA_BRLSHFT_0_RANK0_BYTE5_DATA_BRLSHFT_SHIFT)
#define EMC_DATA_BRLSHFT_0_RANK0_BYTE4_DATA_BRLSHFT_SHIFT   12
#define EMC_DATA_BRLSHFT_0_RANK0_BYTE4_DATA_BRLSHFT_MASK    \
    (0x7 << EMC_DATA_BRLSHFT_0_RANK0_BYTE4_DATA_BRLSHFT_SHIFT)
#define EMC_DATA_BRLSHFT_0_RANK0_BYTE3_DATA_BRLSHFT_SHIFT   9
#define EMC_DATA_BRLSHFT_0_RANK0_BYTE3_DATA_BRLSHFT_MASK    \
    (0x7 << EMC_DATA_BRLSHFT_0_RANK0_BYTE3_DATA_BRLSHFT_SHIFT)
#define EMC_DATA_BRLSHFT_0_RANK0_BYTE2_DATA_BRLSHFT_SHIFT   6
#define EMC_DATA_BRLSHFT_0_RANK0_BYTE2_DATA_BRLSHFT_MASK    \
    (0x7 << EMC_DATA_BRLSHFT_0_RANK0_BYTE2_DATA_BRLSHFT_SHIFT)
#define EMC_DATA_BRLSHFT_0_RANK0_BYTE1_DATA_BRLSHFT_SHIFT   3
#define EMC_DATA_BRLSHFT_0_RANK0_BYTE1_DATA_BRLSHFT_MASK    \
    (0x7 << EMC_DATA_BRLSHFT_0_RANK0_BYTE1_DATA_BRLSHFT_SHIFT)
#define EMC_DATA_BRLSHFT_0_RANK0_BYTE0_DATA_BRLSHFT_SHIFT   0
#define EMC_DATA_BRLSHFT_0_RANK0_BYTE0_DATA_BRLSHFT_MASK    \
    (0x7 << EMC_DATA_BRLSHFT_0_RANK0_BYTE0_DATA_BRLSHFT_SHIFT)

#define EMC_DATA_BRLSHFT_1                  0x58c
#define EMC_DATA_BRLSHFT_1_RANK1_BYTE7_DATA_BRLSHFT_SHIFT   21
#define EMC_DATA_BRLSHFT_1_RANK1_BYTE7_DATA_BRLSHFT_MASK    \
    (0x7 << EMC_DATA_BRLSHFT_1_RANK1_BYTE7_DATA_BRLSHFT_SHIFT)
#define EMC_DATA_BRLSHFT_1_RANK1_BYTE6_DATA_BRLSHFT_SHIFT   18
#define EMC_DATA_BRLSHFT_1_RANK1_BYTE6_DATA_BRLSHFT_MASK    \
    (0x7 << EMC_DATA_BRLSHFT_1_RANK1_BYTE6_DATA_BRLSHFT_SHIFT)
#define EMC_DATA_BRLSHFT_1_RANK1_BYTE5_DATA_BRLSHFT_SHIFT   15
#define EMC_DATA_BRLSHFT_1_RANK1_BYTE5_DATA_BRLSHFT_MASK    \
    (0x7 << EMC_DATA_BRLSHFT_1_RANK1_BYTE5_DATA_BRLSHFT_SHIFT)
#define EMC_DATA_BRLSHFT_1_RANK1_BYTE4_DATA_BRLSHFT_SHIFT   12
#define EMC_DATA_BRLSHFT_1_RANK1_BYTE4_DATA_BRLSHFT_MASK    \
    (0x7 << EMC_DATA_BRLSHFT_1_RANK1_BYTE4_DATA_BRLSHFT_SHIFT)
#define EMC_DATA_BRLSHFT_1_RANK1_BYTE3_DATA_BRLSHFT_SHIFT   9
#define EMC_DATA_BRLSHFT_1_RANK1_BYTE3_DATA_BRLSHFT_MASK    \
    (0x7 << EMC_DATA_BRLSHFT_1_RANK1_BYTE3_DATA_BRLSHFT_SHIFT)
#define EMC_DATA_BRLSHFT_1_RANK1_BYTE2_DATA_BRLSHFT_SHIFT   6
#define EMC_DATA_BRLSHFT_1_RANK1_BYTE2_DATA_BRLSHFT_MASK    \
    (0x7 << EMC_DATA_BRLSHFT_1_RANK1_BYTE2_DATA_BRLSHFT_SHIFT)
#define EMC_DATA_BRLSHFT_1_RANK1_BYTE1_DATA_BRLSHFT_SHIFT   3
#define EMC_DATA_BRLSHFT_1_RANK1_BYTE1_DATA_BRLSHFT_MASK    \
    (0x7 << EMC_DATA_BRLSHFT_1_RANK1_BYTE1_DATA_BRLSHFT_SHIFT)
#define EMC_DATA_BRLSHFT_1_RANK1_BYTE0_DATA_BRLSHFT_SHIFT   0
#define EMC_DATA_BRLSHFT_1_RANK1_BYTE0_DATA_BRLSHFT_MASK    \
    (0x7 << EMC_DATA_BRLSHFT_1_RANK1_BYTE0_DATA_BRLSHFT_SHIFT)

#define EMC_DQS_BRLSHFT_0                   0x594
#define EMC_DQS_BRLSHFT_1                   0x598
#define EMC_CMD_BRLSHFT_0                   0x59c
#define EMC_CMD_BRLSHFT_1                   0x5a0
#define EMC_CMD_BRLSHFT_2                   0x5a4
#define EMC_CMD_BRLSHFT_3                   0x5a8
#define EMC_QUSE_BRLSHFT_0                  0x5ac
#define EMC_QUSE_BRLSHFT_1                  0x5b8
#define EMC_QUSE_BRLSHFT_2                  0x5bc
#define EMC_QUSE_BRLSHFT_3                  0x5c4
#define EMC_FBIO_CFG8                       0x5c8
#define EMC_CMD_MAPPING_CMD0_0                  0x380
#define EMC_CMD_MAPPING_CMD0_1                  0x384
#define EMC_CMD_MAPPING_CMD0_2                  0x388
#define EMC_CMD_MAPPING_CMD1_0                  0x38c
#define EMC_CMD_MAPPING_CMD1_1                  0x390
#define EMC_CMD_MAPPING_CMD1_2                  0x394
#define EMC_CMD_MAPPING_CMD2_0                  0x398
#define EMC_CMD_MAPPING_CMD2_1                  0x39c
#define EMC_CMD_MAPPING_CMD2_2                  0x3a0
#define EMC_CMD_MAPPING_CMD3_0                  0x3a4
#define EMC_CMD_MAPPING_CMD3_1                  0x3a8
#define EMC_CMD_MAPPING_CMD3_2                  0x3ac
#define EMC_CMD_MAPPING_BYTE                    0x3b0
#define EMC_DYN_SELF_REF_CONTROL                0x3e0
#define EMC_TXSRDLL                     0x3e4
#define EMC_CCFIFO_ADDR                     0x3e8
#define EMC_CCFIFO_DATA                     0x3ec
#define EMC_CCFIFO_STATUS                   0x3f0
#define EMC_SWIZZLE_RANK0_BYTE0                 0x404
#define EMC_SWIZZLE_RANK0_BYTE1                 0x408
#define EMC_SWIZZLE_RANK0_BYTE2                 0x40c
#define EMC_SWIZZLE_RANK0_BYTE3                 0x410
#define EMC_SWIZZLE_RANK1_BYTE0                 0x418
#define EMC_SWIZZLE_RANK1_BYTE1                 0x41c
#define EMC_SWIZZLE_RANK1_BYTE2                 0x420
#define EMC_SWIZZLE_RANK1_BYTE3                 0x424
#define EMC_TR_TIMING_0                     0x3b4
#define EMC_TR_CTRL_0                       0x3b8
#define EMC_TR_CTRL_1                       0x3bc
#define EMC_TR_DVFS                     0x460
#define EMC_TR_DVFS_TRAINING_DVFS               (1 << 0)

#define EMC_SWITCH_BACK_CTRL                    0x3c0
#define EMC_TR_RDV                      0x3c4
#define EMC_TR_QPOP                     0x3f4
#define EMC_TR_RDV_MASK                     0x3f8
#define EMC_TR_QSAFE                        0x3fc
#define EMC_TR_QRST                     0x400
#define EMC_IBDLY                       0x468
#define EMC_OBDLY                       0x46c
#define EMC_TXDSRVTTGEN                     0x480
#define EMC_WE_DURATION                     0x48c
#define EMC_WS_DURATION                     0x490
#define EMC_WEV                         0x494
#define EMC_WSV                         0x498
#define EMC_CFG_3                       0x49c
#define EMC_CFG_PIPE_2                      0x554
#define EMC_CFG_PIPE_CLK                    0x558
#define EMC_CFG_PIPE_CLK_CLK_ALWAYS_ON              (1 << 0)

#define EMC_CFG_PIPE_1                      0x55c
#define EMC_CFG_PIPE                        0x560
#define EMC_QPOP                        0x564
#define EMC_QUSE_WIDTH                      0x568
#define EMC_PUTERM_WIDTH                    0x56c
#define EMC_PROTOBIST_CONFIG_ADR_1              0x5d0
#define EMC_PROTOBIST_CONFIG_ADR_2              0x5d4
#define EMC_PROTOBIST_MISC                  0x5d8
#define EMC_PROTOBIST_WDATA_LOWER               0x5dc
#define EMC_PROTOBIST_WDATA_UPPER               0x5e0
#define EMC_PROTOBIST_RDATA                 0x5ec
#define EMC_DLL_CFG_0                       0x5e4
#define EMC_DLL_CFG_0_DDLLCAL_CTRL_IGNORE_START         (1 << 29)
#define EMC_DLL_CFG_0_DDLLCAL_CTRL_DUAL_PASS_LOCK       (1 << 28)
#define EMC_DLL_CFG_0_DDLLCAL_CTRL_STEP_SIZE_SHIFT      24
#define EMC_DLL_CFG_0_DDLLCAL_CTRL_STEP_SIZE_MASK       \
    (0xf << EMC_DLL_CFG_0_DDLLCAL_CTRL_STEP_SIZE_SHIFT)
#define EMC_DLL_CFG_0_DDLLCAL_CTRL_END_COUNT_SHIFT      20
#define EMC_DLL_CFG_0_DDLLCAL_CTRL_END_COUNT_MASK       \
    (0xf << EMC_DLL_CFG_0_DDLLCAL_CTRL_END_COUNT_SHIFT)
#define EMC_DLL_CFG_0_DDLLCAL_CTRL_FILTER_BITS_SHIFT        16
#define EMC_DLL_CFG_0_DDLLCAL_CTRL_FILTER_BITS_MASK     \
    (0xf << EMC_DLL_CFG_0_DDLLCAL_CTRL_FILTER_BITS_SHIFT)
#define EMC_DLL_CFG_0_DDLLCAL_CTRL_SAMPLE_COUNT_SHIFT       12
#define EMC_DLL_CFG_0_DDLLCAL_CTRL_SAMPLE_COUNT_MASK        \
    (0xf << EMC_DLL_CFG_0_DDLLCAL_CTRL_SAMPLE_COUNT_SHIFT)
#define EMC_DLL_CFG_0_DDLLCAL_CTRL_SAMPLE_DELAY_SHIFT       4
#define EMC_DLL_CFG_0_DDLLCAL_CTRL_SAMPLE_DELAY_MASK        \
    (0xff << EMC_DLL_CFG_0_DDLLCAL_CTRL_SAMPLE_DELAY_SHIFT)
#define EMC_DLL_CFG_0_DDLLCAL_UPDATE_CNT_LIMIT_SHIFT        0
#define EMC_DLL_CFG_0_DDLLCAL_UPDATE_CNT_LIMIT_MASK     \
    (0xf << EMC_DLL_CFG_0_DDLLCAL_UPDATE_CNT_LIMIT_SHIFT)

#define EMC_DLL_CFG_1                       0x5e8
#define EMC_DLL_CFG_1_DDLLCAL_CTRL_START_TRIM_SHIFT     10
#define EMC_DLL_CFG_1_DDLLCAL_CTRL_START_TRIM_MASK      \
    (0x7ff << EMC_DLL_CFG_1_DDLLCAL_CTRL_START_TRIM_SHIFT)

#define EMC_TRAINING_CMD                    0xe00
#define EMC_TRAINING_CMD_PRIME                  (1 << 0)
#define EMC_TRAINING_CMD_CA                 (1 << 1)
#define EMC_TRAINING_CMD_RD                 (1 << 2)
#define EMC_TRAINING_CMD_WR                 (1 << 3)
#define EMC_TRAINING_CMD_QUSE                   (1 << 4)
#define EMC_TRAINING_CMD_CA_VREF                (1 << 5)
#define EMC_TRAINING_CMD_RD_VREF                (1 << 6)
#define EMC_TRAINING_CMD_WR_VREF                (1 << 7)
#define EMC_TRAINING_CMD_QUSE_VREF              (1 << 8)
#define EMC_TRAINING_CMD_GO                 (1 << 31)

#define EMC_TRAINING_CTRL                   0xe04
#define EMC_TRAINING_CTRL_SWAP_RANK             (1 << 14)

#define EMC_TRAINING_STATUS                 0xe08
#define EMC_TRAINING_QUSE_CORS_CTRL             0xe0c
#define EMC_TRAINING_QUSE_FINE_CTRL             0xe10
#define EMC_TRAINING_QUSE_CTRL_MISC             0xe14
#define EMC_TRAINING_WRITE_FINE_CTRL                0xe18
#define EMC_TRAINING_WRITE_CTRL_MISC                0xe1c
#define EMC_TRAINING_WRITE_VREF_CTRL                0xe20
#define EMC_TRAINING_READ_FINE_CTRL             0xe24
#define EMC_TRAINING_READ_CTRL_MISC             0xe28
#define EMC_TRAINING_READ_VREF_CTRL             0xe2c
#define EMC_TRAINING_CA_FINE_CTRL               0xe30
#define EMC_TRAINING_CA_CTRL_MISC               0xe34
#define EMC_TRAINING_CA_CTRL_MISC1              0xe38
#define EMC_TRAINING_CA_VREF_CTRL               0xe3c
#define EMC_TRAINING_CA_TADR_CTRL               0xe40
#define EMC_TRAINING_SETTLE                 0xe44
#define EMC_TRAINING_DEBUG_CTRL                 0xe48
#define EMC_TRAINING_DEBUG_DQ0                  0xe4c
#define EMC_TRAINING_DEBUG_DQ1                  0xe50
#define EMC_TRAINING_DEBUG_DQ2                  0xe54
#define EMC_TRAINING_DEBUG_DQ3                  0xe58
#define EMC_TRAINING_MPC                    0xe5c
#define EMC_TRAINING_PATRAM_CTRL                0xe60
#define EMC_TRAINING_PATRAM_DQ                  0xe64
#define EMC_TRAINING_PATRAM_DMI                 0xe68
#define EMC_TRAINING_VREF_SETTLE                0xe6c
#define EMC_TRAINING_RW_EYE_CENTER_IB_BYTE0         0xe70
#define EMC_TRAINING_RW_EYE_CENTER_IB_BYTE1         0xe74
#define EMC_TRAINING_RW_EYE_CENTER_IB_BYTE2         0xe78
#define EMC_TRAINING_RW_EYE_CENTER_IB_BYTE3         0xe7c
#define EMC_TRAINING_RW_EYE_CENTER_IB_MISC          0xe80
#define EMC_TRAINING_RW_EYE_CENTER_OB_BYTE0         0xe84
#define EMC_TRAINING_RW_EYE_CENTER_OB_BYTE1         0xe88
#define EMC_TRAINING_RW_EYE_CENTER_OB_BYTE2         0xe8c
#define EMC_TRAINING_RW_EYE_CENTER_OB_BYTE3         0xe90
#define EMC_TRAINING_RW_EYE_CENTER_OB_MISC          0xe94
#define EMC_TRAINING_RW_OFFSET_IB_BYTE0             0xe98
#define EMC_TRAINING_RW_OFFSET_IB_BYTE1             0xe9c
#define EMC_TRAINING_RW_OFFSET_IB_BYTE2             0xea0
#define EMC_TRAINING_RW_OFFSET_IB_BYTE3             0xea4
#define EMC_TRAINING_RW_OFFSET_IB_MISC              0xea8
#define EMC_TRAINING_RW_OFFSET_OB_BYTE0             0xeac
#define EMC_TRAINING_RW_OFFSET_OB_BYTE1             0xeb0
#define EMC_TRAINING_RW_OFFSET_OB_BYTE2             0xeb4
#define EMC_TRAINING_RW_OFFSET_OB_BYTE3             0xeb8
#define EMC_TRAINING_RW_OFFSET_OB_MISC              0xebc
#define EMC_TRAINING_OPT_CA_VREF                0xec0
#define EMC_TRAINING_OPT_DQ_OB_VREF             0xec4
#define EMC_TRAINING_OPT_DQ_IB_VREF_RANK0           0xec8
#define EMC_TRAINING_OPT_DQ_IB_VREF_RANK1           0xecc
#define EMC_TRAINING_QUSE_VREF_CTRL             0xed0
#define EMC_TRAINING_OPT_DQS_IB_VREF_RANK0          0xed4
#define EMC_TRAINING_OPT_DQS_IB_VREF_RANK1          0xed8
#define EMC_TRAINING_DRAMC_TIMING               0xedc
#define EMC_PMACRO_QUSE_DDLL_RANK0_0                0x600
#define EMC_PMACRO_QUSE_DDLL_RANK0_1                0x604
#define EMC_PMACRO_QUSE_DDLL_RANK0_2                0x608
#define EMC_PMACRO_QUSE_DDLL_RANK0_3                0x60c
#define EMC_PMACRO_QUSE_DDLL_RANK0_4                0x610
#define EMC_PMACRO_QUSE_DDLL_RANK0_5                0x614
#define EMC_PMACRO_QUSE_DDLL_RANK1_0                0x620
#define EMC_PMACRO_QUSE_DDLL_RANK1_1                0x624
#define EMC_PMACRO_QUSE_DDLL_RANK1_2                0x628
#define EMC_PMACRO_QUSE_DDLL_RANK1_3                0x62c
#define EMC_PMACRO_QUSE_DDLL_RANK1_4                0x630
#define EMC_PMACRO_QUSE_DDLL_RANK1_5                0x634
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_0          0x640
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_0_OB_DDLL_LONG_DQ_RANK0_BYTE1_SHIFT \
    16
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_0_OB_DDLL_LONG_DQ_RANK0_BYTE1_MASK  \
    0x3ff <<                                 \
    EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_0_OB_DDLL_LONG_DQ_RANK0_BYTE1_SHIFT
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_0_OB_DDLL_LONG_DQ_RANK0_BYTE0_SHIFT \
    0
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_0_OB_DDLL_LONG_DQ_RANK0_BYTE0_MASK \
    0x3ff <<                                \
    EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_0_OB_DDLL_LONG_DQ_RANK0_BYTE0_SHIFT

#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_1          0x644
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_1_OB_DDLL_LONG_DQ_RANK0_BYTE3_SHIFT \
    16
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_1_OB_DDLL_LONG_DQ_RANK0_BYTE3_MASK  \
    0x3ff <<                                 \
    EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_1_OB_DDLL_LONG_DQ_RANK0_BYTE3_SHIFT
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_1_OB_DDLL_LONG_DQ_RANK0_BYTE2_SHIFT \
    0
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_1_OB_DDLL_LONG_DQ_RANK0_BYTE2_MASK  \
    0x3ff <<                                 \
    EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_1_OB_DDLL_LONG_DQ_RANK0_BYTE2_SHIFT

#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_2          0x648
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_2_OB_DDLL_LONG_DQ_RANK0_BYTE5_SHIFT  \
    16
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_2_OB_DDLL_LONG_DQ_RANK0_BYTE5_MASK  \
    0x3ff <<                                 \
    EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_2_OB_DDLL_LONG_DQ_RANK0_BYTE5_SHIFT
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_2_OB_DDLL_LONG_DQ_RANK0_BYTE4_SHIFT \
    0
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_2_OB_DDLL_LONG_DQ_RANK0_BYTE4_MASK  \
    0x3ff <<                                 \
    EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_2_OB_DDLL_LONG_DQ_RANK0_BYTE4_SHIFT

#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_3          0x64c
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_3_OB_DDLL_LONG_DQ_RANK0_BYTE7_SHIFT \
    16
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_3_OB_DDLL_LONG_DQ_RANK0_BYTE7_MASK  \
    0x3ff <<                                 \
    EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_3_OB_DDLL_LONG_DQ_RANK0_BYTE7_SHIFT
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_3_OB_DDLL_LONG_DQ_RANK0_BYTE6_SHIFT \
    0
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_3_OB_DDLL_LONG_DQ_RANK0_BYTE6_MASK  \
    0x3ff <<                                 \
    EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_3_OB_DDLL_LONG_DQ_RANK0_BYTE6_SHIFT

#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_4          0x650
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK0_5          0x654

#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_0          0x660
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_0_OB_DDLL_LONG_DQ_RANK1_BYTE1_SHIFT \
    16
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_0_OB_DDLL_LONG_DQ_RANK1_BYTE1_MASK  \
    0x3ff <<                                 \
    EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_0_OB_DDLL_LONG_DQ_RANK1_BYTE1_SHIFT
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_0_OB_DDLL_LONG_DQ_RANK1_BYTE0_SHIFT \
    0
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_0_OB_DDLL_LONG_DQ_RANK1_BYTE0_MASK  \
    0x3ff <<                                 \
    EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_0_OB_DDLL_LONG_DQ_RANK1_BYTE0_SHIFT

#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_1          0x664
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_1_OB_DDLL_LONG_DQ_RANK1_BYTE3_SHIFT \
    16
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_1_OB_DDLL_LONG_DQ_RANK1_BYTE3_MASK  \
    0x3ff <<                                 \
    EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_1_OB_DDLL_LONG_DQ_RANK1_BYTE3_SHIFT
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_1_OB_DDLL_LONG_DQ_RANK1_BYTE2_SHIFT \
    0
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_1_OB_DDLL_LONG_DQ_RANK1_BYTE2_MASK  \
    0x3ff <<                                 \
    EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_1_OB_DDLL_LONG_DQ_RANK1_BYTE2_SHIFT

#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_2          0x668
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_2_OB_DDLL_LONG_DQ_RANK1_BYTE5_SHIFT \
    16
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_2_OB_DDLL_LONG_DQ_RANK1_BYTE5_MASK  \
    0x3ff <<                                 \
    EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_2_OB_DDLL_LONG_DQ_RANK1_BYTE5_SHIFT
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_2_OB_DDLL_LONG_DQ_RANK1_BYTE4_SHIFT \
    0
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_2_OB_DDLL_LONG_DQ_RANK1_BYTE4_MASK  \
    0x3ff <<                                 \
    EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_2_OB_DDLL_LONG_DQ_RANK1_BYTE4_SHIFT

#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_3          0x66c
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_3_OB_DDLL_LONG_DQ_RANK1_BYTE7_SHIFT \
    16
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_3_OB_DDLL_LONG_DQ_RANK1_BYTE7_MASK  \
    0x3ff <<                                 \
    EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_3_OB_DDLL_LONG_DQ_RANK1_BYTE7_SHIFT
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_3_OB_DDLL_LONG_DQ_RANK1_BYTE6_SHIFT \
    0
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_3_OB_DDLL_LONG_DQ_RANK1_BYTE6_MASK  \
    0x3ff <<                                 \
    EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_3_OB_DDLL_LONG_DQ_RANK1_BYTE6_SHIFT

#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_4          0x670
#define EMC_PMACRO_OB_DDLL_LONG_DQ_RANK1_5          0x674
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK0_0         0x680
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK0_1         0x684
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK0_2         0x688
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK0_3         0x68c
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK0_4         0x690
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK0_5         0x694
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK1_0         0x6a0
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK1_1         0x6a4
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK1_2         0x6a8
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK1_3         0x6ac
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK1_4         0x6b0
#define EMC_PMACRO_OB_DDLL_LONG_DQS_RANK1_5         0x6b4
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK0_0         0x6c0
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK0_1         0x6c4
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK0_2         0x6c8
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK0_3         0x6cc
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK0_4         0x6d0
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK0_5         0x6d4
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK1_0         0x6e0
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK1_1         0x6e4
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK1_2         0x6e8
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK1_3         0x6ec
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK1_4         0x6f0
#define EMC_PMACRO_IB_DDLL_LONG_DQS_RANK1_5         0x6f4
#define EMC_PMACRO_TX_PWRD_0                    0x720
#define EMC_PMACRO_TX_PWRD_1                    0x724
#define EMC_PMACRO_TX_PWRD_2                    0x728
#define EMC_PMACRO_TX_PWRD_3                    0x72c
#define EMC_PMACRO_TX_PWRD_4                    0x730
#define EMC_PMACRO_TX_PWRD_5                    0x734
#define EMC_PMACRO_TX_SEL_CLK_SRC_0             0x740
#define EMC_PMACRO_TX_SEL_CLK_SRC_1             0x744
#define EMC_PMACRO_TX_SEL_CLK_SRC_3             0x74c
#define EMC_PMACRO_TX_SEL_CLK_SRC_2             0x748
#define EMC_PMACRO_TX_SEL_CLK_SRC_4             0x750
#define EMC_PMACRO_TX_SEL_CLK_SRC_5             0x754
#define EMC_PMACRO_DDLL_BYPASS                  0x760
#define EMC_PMACRO_DDLL_PWRD_0                  0x770
#define EMC_PMACRO_DDLL_PWRD_1                  0x774
#define EMC_PMACRO_DDLL_PWRD_2                  0x778
#define EMC_PMACRO_CMD_CTRL_0                   0x780
#define EMC_PMACRO_CMD_CTRL_1                   0x784
#define EMC_PMACRO_CMD_CTRL_2                   0x788
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE0_0       0x800
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE0_1       0x804
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE0_2       0x808
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE0_3       0x80c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE1_0       0x810
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE1_1       0x814
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE1_2       0x818
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE1_3       0x81c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE2_0       0x820
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE2_1       0x824
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE2_2       0x828
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE2_3       0x82c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE3_0       0x830
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE3_1       0x834
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE3_2       0x838
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE3_3       0x83c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE4_0       0x840
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE4_1       0x844
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE4_2       0x848
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE4_3       0x84c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE5_0       0x850
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE5_1       0x854
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE5_2       0x858
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE5_3       0x85c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE6_0       0x860
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE6_1       0x864
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE6_2       0x868
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE6_3       0x86c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE7_0       0x870
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE7_1       0x874
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE7_2       0x878
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_BYTE7_3       0x87c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD0_0        0x880
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD0_1        0x884
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD0_2        0x888
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD0_3        0x88c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD1_0        0x890
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD1_1        0x894
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD1_2        0x898
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD1_3        0x89c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD2_0        0x8a0
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD2_1        0x8a4
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD2_2        0x8a8
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD2_3        0x8ac
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD3_0        0x8b0
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD3_1        0x8b4
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD3_2        0x8b8
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK0_CMD3_3        0x8bc
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE0_0       0x900
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE0_1       0x904
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE0_2       0x908
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE0_3       0x90c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE1_0       0x910
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE1_1       0x914
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE1_2       0x918
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE1_3       0x91c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE2_0       0x920
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE2_1       0x924
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE2_2       0x928
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE2_3       0x92c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE3_0       0x930
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE3_1       0x934
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE3_2       0x938
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE3_3       0x93c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE4_0       0x940
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE4_1       0x944
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE4_2       0x948
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE4_3       0x94c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE5_0       0x950
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE5_1       0x954
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE5_2       0x958
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE5_3       0x95c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE6_0       0x960
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE6_1       0x964
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE6_2       0x968
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE6_3       0x96c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE7_0       0x970
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE7_1       0x974
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE7_2       0x978
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_BYTE7_3       0x97c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD0_0        0x980
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD0_1        0x984
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD0_2        0x988
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD0_3        0x98c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD1_0        0x990
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD1_1        0x994
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD1_2        0x998
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD1_3        0x99c
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD2_0        0x9a0
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD2_1        0x9a4
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD2_2        0x9a8
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD2_3        0x9ac
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD3_0        0x9b0
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD3_1        0x9b4
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD3_2        0x9b8
#define EMC_PMACRO_OB_DDLL_SHORT_DQ_RANK1_CMD3_3        0x9bc
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE0_0       0xa00
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE0_1       0xa04
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE0_2       0xa08
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE1_0       0xa10
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE1_1       0xa14
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE1_2       0xa18
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE2_0       0xa20
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE2_1       0xa24
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE2_2       0xa28
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE3_0       0xa30
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE3_1       0xa34
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE3_2       0xa38
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE4_0       0xa40
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE4_1       0xa44
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE4_2       0xa48
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE5_0       0xa50
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE5_1       0xa54
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE5_2       0xa58
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE6_0       0xa60
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE6_1       0xa64
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE6_2       0xa68
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE7_0       0xa70
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE7_1       0xa74
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_BYTE7_2       0xa78
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD0_0        0xa80
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD0_1        0xa84
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD0_2        0xa88
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD1_0        0xa90
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD1_1        0xa94
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD1_2        0xa98
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD2_0        0xaa0
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD2_1        0xaa4
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD2_2        0xaa8
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD3_0        0xab0
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD3_1        0xab4
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK0_CMD3_2        0xab8
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE0_0       0xb00
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE0_1       0xb04
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE0_2       0xb08
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE1_0       0xb10
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE1_1       0xb14
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE1_2       0xb18
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE2_0       0xb20
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE2_1       0xb24
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE2_2       0xb28
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE3_0       0xb30
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE3_1       0xb34
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE3_2       0xb38
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE4_0       0xb40
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE4_1       0xb44
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE4_2       0xb48
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE5_0       0xb50
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE5_1       0xb54
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE5_2       0xb58
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE6_0       0xb60
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE6_1       0xb64
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE6_2       0xb68
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE7_0       0xb70
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE7_1       0xb74
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_BYTE7_2       0xb78
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD0_0        0xb80
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD0_1        0xb84
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD0_2        0xb88
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD1_0        0xb90
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD1_1        0xb94
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD1_2        0xb98
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD2_0        0xba0
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD2_1        0xba4
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD2_2        0xba8
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD3_0        0xbb0
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD3_1        0xbb4
#define EMC_PMACRO_IB_DDLL_SHORT_DQ_RANK1_CMD3_2        0xbb8
#define EMC_PMACRO_IB_VREF_DQ_0                 0xbe0
#define EMC_PMACRO_IB_VREF_DQ_1                 0xbe4
#define EMC_PMACRO_IB_VREF_DQ_2                 0xbe8
#define EMC_PMACRO_IB_VREF_DQS_0                0xbf0
#define EMC_PMACRO_IB_VREF_DQS_1                0xbf4
#define EMC_PMACRO_IB_VREF_DQS_2                0xbf8
#define EMC_PMACRO_IB_RXRT                  0xcf4
#define EMC_PMACRO_DDLL_LONG_CMD_0              0xc00
#define EMC_PMACRO_DDLL_LONG_CMD_1              0xc04
#define EMC_PMACRO_DDLL_LONG_CMD_2              0xc08
#define EMC_PMACRO_DDLL_LONG_CMD_3              0xc0c
#define EMC_PMACRO_DDLL_LONG_CMD_4              0xc10
#define EMC_PMACRO_DDLL_LONG_CMD_5              0xc14
#define EMC_PMACRO_DDLL_SHORT_CMD_0             0xc20
#define EMC_PMACRO_DDLL_SHORT_CMD_1             0xc24
#define EMC_PMACRO_DDLL_SHORT_CMD_2             0xc28
#define EMC_PMACRO_CFG_PM_GLOBAL_0              0xc30
#define EMC_PMACRO_CFG_PM_GLOBAL_0_DISABLE_CFG_BYTE0        (1 << 16)
#define EMC_PMACRO_CFG_PM_GLOBAL_0_DISABLE_CFG_BYTE1        (1 << 17)
#define EMC_PMACRO_CFG_PM_GLOBAL_0_DISABLE_CFG_BYTE2        (1 << 18)
#define EMC_PMACRO_CFG_PM_GLOBAL_0_DISABLE_CFG_BYTE3        (1 << 19)
#define EMC_PMACRO_CFG_PM_GLOBAL_0_DISABLE_CFG_BYTE4        (1 << 20)
#define EMC_PMACRO_CFG_PM_GLOBAL_0_DISABLE_CFG_BYTE5        (1 << 21)
#define EMC_PMACRO_CFG_PM_GLOBAL_0_DISABLE_CFG_BYTE6        (1 << 22)
#define EMC_PMACRO_CFG_PM_GLOBAL_0_DISABLE_CFG_BYTE7        (1 << 23)
#define EMC_PMACRO_CFG_PM_GLOBAL_0_DISABLE_CFG_CMD0     (1 << 24)
#define EMC_PMACRO_CFG_PM_GLOBAL_0_DISABLE_CFG_CMD1     (1 << 25)
#define EMC_PMACRO_CFG_PM_GLOBAL_0_DISABLE_CFG_CMD2     (1 << 26)
#define EMC_PMACRO_CFG_PM_GLOBAL_0_DISABLE_CFG_CMD3     (1 << 27)

#define EMC_PMACRO_VTTGEN_CTRL_0                0xc34
#define EMC_PMACRO_VTTGEN_CTRL_1                0xc38
#define EMC_PMACRO_VTTGEN_CTRL_2                0xcf0
#define EMC_PMACRO_BG_BIAS_CTRL_0               0xc3c
#define EMC_PMACRO_BG_BIAS_CTRL_0_BG_E_PWRD         (1 << 0)
#define EMC_PMACRO_BG_BIAS_CTRL_0_BG_MODE           (1 << 1)
#define EMC_PMACRO_BG_BIAS_CTRL_0_BGLP_E_PWRD           (1 << 2)

#define EMC_PMACRO_PAD_CFG_CTRL                 0xc40
#define EMC_PMACRO_CMD_PAD_RX_CTRL              0xc50
#define EMC_PMACRO_DATA_PAD_RX_CTRL             0xc54
#define EMC_PMACRO_CMD_RX_TERM_MODE             0xc58
#define EMC_PMACRO_DATA_RX_TERM_MODE                0xc5c
#define EMC_PMACRO_DATA_RX_TERM_MODE_DATA_DQSN_RX_TERM_MODE_SHIFT 8
#define EMC_PMACRO_DATA_RX_TERM_MODE_DATA_DQSN_RX_TERM_MODE_MASK (0x3 << \
    EMC_PMACRO_DATA_RX_TERM_MODE_DATA_DQSN_RX_TERM_MODE_SHIFT)
#define EMC_PMACRO_DATA_RX_TERM_MODE_DATA_DQSP_RX_TERM_MODE_SHIFT 4
#define EMC_PMACRO_DATA_RX_TERM_MODE_DATA_DQSP_RX_TERM_MODE_MASK (0x3 << \
    EMC_PMACRO_DATA_RX_TERM_MODE_DATA_DQSP_RX_TERM_MODE_SHIFT)
#define EMC_PMACRO_DATA_RX_TERM_MODE_DATA_DQ_RX_TERM_MODE_SHIFT   0
#define EMC_PMACRO_DATA_RX_TERM_MODE_DATA_DQ_RX_TERM_MODE_MASK   (0x3 << \
    EMC_PMACRO_DATA_RX_TERM_MODE_DATA_DQ_RX_TERM_MODE_SHIFT)

#define RX_TERM_MODE                            \
    ~(EMC_PMACRO_DATA_RX_TERM_MODE_DATA_DQSN_RX_TERM_MODE_MASK |    \
      EMC_PMACRO_DATA_RX_TERM_MODE_DATA_DQSP_RX_TERM_MODE_MASK |    \
      EMC_PMACRO_DATA_RX_TERM_MODE_DATA_DQ_RX_TERM_MODE_MASK)

#define EMC_PMACRO_CMD_PAD_TX_CTRL              0xc60
#define EMC_PMACRO_CMD_PAD_TX_CTRL_CMD_DQ_TX_E_DCC      (1 << 1)
#define EMC_PMACRO_CMD_PAD_TX_CTRL_CMD_DQSP_TX_E_DCC        (1 << 9)
#define EMC_PMACRO_CMD_PAD_TX_CTRL_CMD_DQSN_TX_E_DCC        (1 << 16)
#define EMC_PMACRO_CMD_PAD_TX_CTRL_CMD_CMD_TX_E_DCC     (1 << 24)
#define EMC_PMACRO_CMD_PAD_TX_CTRL_CMD_DQ_TX_DRVFORCEON     (1 << 26)

#define EMC_PMACRO_DATA_PAD_TX_CTRL             0xc64
#define EMC_PMACRO_DATA_PAD_TX_CTRL_DATA_DQ_E_IVREF     (1 << 0)
#define EMC_PMACRO_DATA_PAD_TX_CTRL_DATA_DQ_TX_E_DCC        (1 << 1)
#define EMC_PMACRO_DATA_PAD_TX_CTRL_DATA_DQS_E_IVREF        (1 << 8)
#define EMC_PMACRO_DATA_PAD_TX_CTRL_DATA_DQSP_TX_E_DCC      (1 << 9)
#define EMC_PMACRO_DATA_PAD_TX_CTRL_DATA_DQSN_TX_E_DCC      (1 << 16)
#define EMC_PMACRO_DATA_PAD_TX_CTRL_DATA_CMD_TX_E_DCC       (1 << 24)

#define EMC_PMACRO_COMMON_PAD_TX_CTRL               0xc68
#define EMC_PMACRO_BRICK_MAPPING_0              0xc80
#define EMC_PMACRO_BRICK_MAPPING_1              0xc84
#define EMC_PMACRO_BRICK_MAPPING_2              0xc88
#define EMC_PMACRO_DDLLCAL_CAL                  0xce0
#define EMC_PMACRO_DDLL_OFFSET                  0xce4
#define EMC_PMACRO_DDLL_PERIODIC_OFFSET             0xce8
#define EMC_PMACRO_BRICK_CTRL_RFU1              0x330
#define EMC_PMACRO_BRICK_CTRL_RFU2              0x334
#define EMC_PMACRO_CMD_BRICK_CTRL_FDPD              0x318
#define EMC_PMACRO_DATA_BRICK_CTRL_FDPD             0x31c
#define EMC_PMACRO_TRAINING_CTRL_0              0xcf8
#define EMC_PMACRO_TRAINING_CTRL_0_CH0_TRAINING_E_WRPTR     (1 << 3)

#define EMC_PMACRO_TRAINING_CTRL_1              0xcfc
#define EMC_PMACRO_TRAINING_CTRL_1_CH1_TRAINING_E_WRPTR     (1 << 3)

#define EMC_PMC_SCRATCH1                    0x440
#define EMC_PMC_SCRATCH2                    0x444
#define EMC_PMC_SCRATCH3                    0x448

#endif

================================================
FILE: argon-first-stage/include/mem/heap.h
================================================
/*
 * Copyright (c) 2018 naehrwert
 * Copyright (c) 2018 Guillem96
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms and conditions of the GNU General Public License,
 * version 2, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef _HEAP_H_
#define _HEAP_H_

#include "utils/types.h"

typedef struct _hnode
{
	int used;
	u32 size;
	struct _hnode *prev;
	struct _hnode *next;
} hnode_t;

typedef struct _heap
{
	u32 start;
	hnode_t *first;
} heap_t;

void heap_init(u32 base);
void *malloc(u32 size);
void *calloc(u32 num, u32 size);
void free(void *buf);
void *memalign(u32 align, u32 size);
void *m_realloc(void* ptr, u32 current_size, u32 new_size);

#endif


================================================
FILE: argon-first-stage/include/mem/mc.h
================================================
#ifndef _MC_H_
#define _MC_H_

#include "utils/types.h"
#include "mem/mc_t210.h"

#define MAKE_MC_REG(n) MAKE_REG32(MC_BASE + n)

void mc_config_tsec_carveout(u32 bom, u32 size1mb, bool lock);
void mc_config_carveout();
void mc_config_carveout_finalize();
void mc_enable_ahb_redirect();
void mc_disable_ahb_redirect();
void mc_enable();

#endif


================================================
FILE: argon-first-stage/include/mem/mc_t210.h
================================================
/*
 * Copyright (c) 2014, NVIDIA Corporation. All rights reserved.
 *
 * This software is licensed under the terms of the GNU General Public
 * License version 2, as published by the Free Software Foundation, and
 * may be copied, distributed, and modified under those terms.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#ifndef _MC_T210_H_
#define _MC_T210_H_

#define MC_INTSTATUS                                            0x0
#define MC_INTMASK                                              0x4
#define MC_ERR_STATUS                                           0x8
#define MC_ERR_ADR                                              0xc
#define MC_PCFIFO_CLIENT_CONFIG0                                0xdd0
#define MC_PCFIFO_CLIENT_CONFIG1                                0xdd4
#define MC_PCFIFO_CLIENT_CONFIG2                                0xdd8
#define MC_PCFIFO_CLIENT_CONFIG3                                0xddc
#define MC_PCFIFO_CLIENT_CONFIG4                                0xde0
#define MC_EMEM_CFG                                             0x50
#define MC_EMEM_ADR_CFG                                         0x54
#define MC_EMEM_ADR_CFG_DEV0                                    0x58
#define MC_EMEM_ADR_CFG_DEV1                                    0x5c
#define MC_EMEM_ADR_CFG_CHANNEL_MASK                            0x60
#define MC_EMEM_ADR_CFG_BANK_MASK_0                             0x64
#define MC_EMEM_ADR_CFG_BANK_MASK_1                             0x68
#define MC_EMEM_ADR_CFG_BANK_MASK_2                             0x6c
#define MC_SECURITY_CFG0                                        0x70
#define MC_SECURITY_CFG1                                        0x74
#define MC_SECURITY_CFG3                                        0x9bc
#define MC_SECURITY_RSV                                         0x7c
#define MC_EMEM_ARB_CFG                                         0x90
#define MC_EMEM_ARB_OUTSTANDING_REQ                             0x94
#define MC_EMEM_ARB_TIMING_RCD                                  0x98
#define MC_EMEM_ARB_TIMING_RP                                   0x9c
#define MC_EMEM_ARB_TIMING_RC                                   0xa0
#define MC_EMEM_ARB_TIMING_RAS                                  0xa4
#define MC_EMEM_ARB_TIMING_FAW                                  0xa8
#define MC_EMEM_ARB_TIMING_RRD                                  0xac
#define MC_EMEM_ARB_TIMING_RAP2PRE                              0xb0
#define MC_EMEM_ARB_TIMING_WAP2PRE                              0xb4
#define MC_EMEM_ARB_TIMING_R2R                                  0xb8
#define MC_EMEM_ARB_TIMING_W2W                                  0xbc
#define MC_EMEM_ARB_TIMING_R2W                                  0xc0
#define MC_EMEM_ARB_TIMING_W2R                                  0xc4
#define MC_EMEM_ARB_TIMING_RFCPB                                0x6c0
#define MC_EMEM_ARB_TIMING_CCDMW                                0x6c4
#define MC_EMEM_ARB_REFPB_HP_CTRL                               0x6f0
#define MC_EMEM_ARB_REFPB_BANK_CTRL                             0x6f4
#define MC_EMEM_ARB_DA_TURNS                                    0xd0
#define MC_EMEM_ARB_DA_COVERS                                   0xd4
#define MC_EMEM_ARB_MISC0                                       0xd8
#define MC_EMEM_ARB_MISC1                                       0xdc
#define MC_EMEM_ARB_MISC2                                       0xc8
#define MC_EMEM_ARB_RING1_THROTTLE                              0xe0
#define MC_EMEM_ARB_RING3_THROTTLE                              0xe4
#define MC_EMEM_ARB_NISO_THROTTLE                               0x6b0
#define MC_EMEM_ARB_OVERRIDE                                    0xe8
#define MC_EMEM_ARB_RSV                                         0xec
#define MC_CLKEN_OVERRIDE                                       0xf4
#define MC_TIMING_CONTROL_DBG                                   0xf8
#define MC_TIMING_CONTROL                                       0xfc
#define MC_STAT_CONTROL                                         0x100
#define MC_STAT_STATUS                                          0x104
#define MC_STAT_EMC_CLOCK_LIMIT                                 0x108
#define MC_STAT_EMC_CLOCK_LIMIT_MSBS                            0x10c
#define MC_STAT_EMC_CLOCKS                                      0x110
#define MC_STAT_EMC_CLOCKS_MSBS                                 0x114
#define MC_STAT_EMC_FILTER_SET0_ADR_LIMIT_LO                    0x118
#define MC_STAT_EMC_FILTER_SET1_ADR_LIMIT_LO                    0x158
#define MC_STAT_EMC_FILTER_SET0_ADR_LIMIT_HI                    0x11c
#define MC_STAT_EMC_FILTER_SET1_ADR_LIMIT_HI                    0x15c
#define MC_STAT_EMC_FILTER_SET0_ADR_LIMIT_UPPER                 0xa20
#define MC_STAT_EMC_FILTER_SET1_ADR_LIMIT_UPPER                 0xa24
#define MC_STAT_EMC_FILTER_SET0_VIRTUAL_ADR_LIMIT_LO            0x198
#define MC_STAT_EMC_FILTER_SET1_VIRTUAL_ADR_LIMIT_LO            0x1a8
#define MC_STAT_EMC_FILTER_SET0_VIRTUAL_ADR_LIMIT_HI            0x19c
#define MC_STAT_EMC_FILTER_SET1_VIRTUAL_ADR_LIMIT_HI            0x1ac
#define MC_STAT_EMC_FILTER_SET0_VIRTUAL_ADR_LIMIT_UPPER         0xa28
#define MC_STAT_EMC_FILTER_SET1_VIRTUAL_ADR_LIMIT_UPPER         0xa2c
#define MC_STAT_EMC_FILTER_SET0_ASID                            0x1a0
#define MC_STAT_EMC_FILTER_SET1_ASID                            0x1b0
#define MC_STAT_EMC_FILTER_SET0_SLACK_LIMIT                     0x120
#define MC_STAT_EMC_FILTER_SET1_SLACK_LIMIT                     0x160
#define MC_STAT_EMC_FILTER_SET0_CLIENT_0                        0x128
#define MC_STAT_EMC_FILTER_SET1_CLIENT_0                        0x168
#define MC_STAT_EMC_FILTER_SET0_CLIENT_1                        0x12c
#define MC_STAT_EMC_FILTER_SET1_CLIENT_1                        0x16c
#define MC_STAT_EMC_FILTER_SET0_CLIENT_2                        0x130
#define MC_STAT_EMC_FILTER_SET1_CLIENT_2                        0x170
#define MC_STAT_EMC_FILTER_SET0_CLIENT_3                        0x134
#define MC_STAT_EMC_FILTER_SET0_CLIENT_4                        0xb88
#define MC_STAT_EMC_FILTER_SET1_CLIENT_3                        0x174
#define MC_STAT_EMC_FILTER_SET1_CLIENT_4                        0xb8c
#define MC_STAT_EMC_SET0_COUNT                                  0x138
#define MC_STAT_EMC_SET0_COUNT_MSBS                             0x13c
#define MC_STAT_EMC_SET1_COUNT                                  0x178
#define MC_STAT_EMC_SET1_COUNT_MSBS                             0x17c
#define MC_STAT_EMC_SET0_SLACK_ACCUM                            0x140
#define MC_STAT_EMC_SET0_SLACK_ACCUM_MSBS                       0x144
#define MC_STAT_EMC_SET1_SLACK_ACCUM                            0x180
#define MC_STAT_EMC_SET1_SLACK_ACCUM_MSBS                       0x184
#define MC_STAT_EMC_SET0_HISTO_COUNT                            0x148
#define MC_STAT_EMC_SET0_HISTO_COUNT_MSBS                       0x14c
#define MC_STAT_EMC_SET1_HISTO_COUNT                            0x188
#define MC_STAT_EMC_SET1_HISTO_COUNT_MSBS                       0x18c
#define MC_STAT_EMC_SET0_MINIMUM_SLACK_OBSERVED                 0x150
#define MC_STAT_EMC_SET1_MINIMUM_SLACK_OBSERVED                 0x190
#define MC_STAT_EMC_SET0_IDLE_CYCLE_COUNT                       0x1b8
#define MC_STAT_EMC_SET0_IDLE_CYCL_COUNT_MSBS                   0x1bc
#define MC_STAT_EMC_SET1_IDLE_CYCLE_COUNT                       0x1c8
#define MC_STAT_EMC_SET1_IDLE_CYCL_COUNT_MSBS                   0x1cc
#define MC_STAT_EMC_SET0_IDLE_CYCLE_PARTITION_SELECT            0x1c0
#define MC_STAT_EMC_SET1_IDLE_CYCLE_PARTITION_SELECT            0x1d0
#define MC_CLIENT_HOTRESET_CTRL                                 0x200
#define MC_CLIENT_HOTRESET_CTRL_1                               0x970
#define MC_CLIENT_HOTRESET_STATUS                               0x204
#define MC_CLIENT_HOTRESET_STATUS_1                             0x974
#define MC_EMEM_ARB_ISOCHRONOUS_0                               0x208
#define MC_EMEM_ARB_ISOCHRONOUS_1                               0x20c
#define MC_EMEM_ARB_ISOCHRONOUS_2                               0x210
#define MC_EMEM_ARB_ISOCHRONOUS_3                               0x214
#define MC_EMEM_ARB_ISOCHRONOUS_4                               0xb94
#define MC_EMEM_ARB_HYSTERESIS_0                                0x218
#define MC_EMEM_ARB_HYSTERESIS_1                                0x21c
#define MC_EMEM_ARB_HYSTERESIS_2                                0x220
#define MC_EMEM_ARB_HYSTERESIS_3                                0x224
#define MC_EMEM_ARB_HYSTERESIS_4                                0xb84
#define MC_EMEM_ARB_DHYSTERESIS_0                               0xbb0
#define MC_EMEM_ARB_DHYSTERESIS_1                               0xbb4
#define MC_EMEM_ARB_DHYSTERESIS_2                               0xbb8
#define MC_EMEM_ARB_DHYSTERESIS_3                               0xbbc
#define MC_EMEM_ARB_DHYSTERESIS_4                               0xbc0
#define MC_EMEM_ARB_DHYST_CTRL                                  0xbcc
#define MC_EMEM_ARB_DHYST_TIMEOUT_UTIL_0                        0xbd0
#define MC_EMEM_ARB_DHYST_TIMEOUT_UTIL_1                        0xbd4
#define MC_EMEM_ARB_DHYST_TIMEOUT_UTIL_2                        0xbd8
#define MC_EMEM_ARB_DHYST_TIMEOUT_UTIL_3                        0xbdc
#define MC_EMEM_ARB_DHYST_TIMEOUT_UTIL_4                        0xbe0
#define MC_EMEM_ARB_DHYST_TIMEOUT_UTIL_5                        0xbe4
#define MC_EMEM_ARB_DHYST_TIMEOUT_UTIL_6                        0xbe8
#define MC_EMEM_ARB_DHYST_TIMEOUT_UTIL_7                        0xbec
#define MC_RESERVED_RSV                                         0x3fc
#define MC_DISB_EXTRA_SNAP_LEVELS                               0x408
#define MC_APB_EXTRA_SNAP_LEVELS          
Download .txt
gitextract_8az_imlq/

├── .gitignore
├── Changelog.md
├── LICENSE
├── Makefile
├── README.md
├── argon-first-stage/
│   ├── Dockerfile
│   ├── Makefile
│   ├── include/
│   │   ├── core/
│   │   │   └── launcher.h
│   │   ├── gfx/
│   │   │   ├── di.h
│   │   │   ├── di.inl
│   │   │   └── gfx.h
│   │   ├── ianos/
│   │   │   └── ianos.h
│   │   ├── libs/
│   │   │   ├── compr/
│   │   │   │   ├── blz.h
│   │   │   │   └── lz.h
│   │   │   ├── elfload/
│   │   │   │   ├── elf.h
│   │   │   │   ├── elfarch.h
│   │   │   │   └── elfload.h
│   │   │   └── fatfs/
│   │   │       ├── diskio.h
│   │   │       ├── ff.h
│   │   │       └── ffconf.h
│   │   ├── mem/
│   │   │   ├── emc.h
│   │   │   ├── heap.h
│   │   │   ├── mc.h
│   │   │   ├── mc_t210.h
│   │   │   ├── sdram.h
│   │   │   ├── sdram_config_lz.inl
│   │   │   └── sdram_param_t210.h
│   │   ├── power/
│   │   │   ├── bq24193.h
│   │   │   ├── max17050.h
│   │   │   ├── max77620.h
│   │   │   └── max7762x.h
│   │   ├── sec/
│   │   │   ├── se.h
│   │   │   └── se_t210.h
│   │   ├── soc/
│   │   │   ├── bpmp.h
│   │   │   ├── clock.h
│   │   │   ├── cluster.h
│   │   │   ├── fuse.h
│   │   │   ├── gpio.h
│   │   │   ├── hw_init.h
│   │   │   ├── i2c.h
│   │   │   ├── pinmux.h
│   │   │   ├── pmc.h
│   │   │   ├── pmc_lp0_t210.h
│   │   │   ├── smmu.h
│   │   │   ├── t210.h
│   │   │   └── uart.h
│   │   ├── storage/
│   │   │   ├── mmc.h
│   │   │   ├── sd.h
│   │   │   ├── sdmmc.h
│   │   │   ├── sdmmc_driver.h
│   │   │   └── sdmmc_t210.h
│   │   └── utils/
│   │       ├── aarch64_util.h
│   │       ├── btn.h
│   │       ├── dirlist.h
│   │       ├── fs_utils.h
│   │       ├── types.h
│   │       └── util.h
│   └── src/
│       ├── LICENSE
│       ├── core/
│       │   └── launcher.c
│       ├── gfx/
│       │   ├── di.c
│       │   └── gfx.c
│       ├── ianos/
│       │   └── ianos.c
│       ├── libs/
│       │   ├── compr/
│       │   │   ├── blz.c
│       │   │   └── lz.c
│       │   ├── elfload/
│       │   │   ├── elfload.c
│       │   │   ├── elfreloc_aarch64.c
│       │   │   └── elfreloc_arm.c
│       │   └── fatfs/
│       │       ├── diskio.c
│       │       ├── ff.c
│       │       ├── ffsystem.c
│       │       └── ffunicode.c
│       ├── link.ld
│       ├── main.c
│       ├── mem/
│       │   ├── heap.c
│       │   ├── mc.c
│       │   └── sdram.c
│       ├── power/
│       │   ├── bq24193.c
│       │   ├── max17050.c
│       │   └── max7762x.c
│       ├── sec/
│       │   └── se.c
│       ├── soc/
│       │   ├── bpmp.c
│       │   ├── clock.c
│       │   ├── cluster.c
│       │   ├── fuse.c
│       │   ├── gpio.c
│       │   ├── hw_init.c
│       │   ├── i2c.c
│       │   ├── pinmux.c
│       │   ├── smmu.c
│       │   └── uart.c
│       ├── start.s
│       ├── storage/
│       │   ├── sdmmc.c
│       │   └── sdmmc_driver.c
│       └── utils/
│           ├── btn.c
│           ├── dirlist.c
│           ├── fs_utils.c
│           └── util.c
├── argon-nx-gui/
│   ├── Dockerfile
│   ├── Makefile
│   ├── include/
│   │   ├── core/
│   │   │   ├── argon-ctxt.h
│   │   │   ├── argon-resources.h
│   │   │   ├── custom-gui.h
│   │   │   ├── launcher.h
│   │   │   └── payloads.h
│   │   ├── gfx/
│   │   │   ├── di.h
│   │   │   ├── di.inl
│   │   │   ├── gfx.h
│   │   │   └── lvgl_adapter.h
│   │   ├── ianos/
│   │   │   └── ianos.h
│   │   ├── libs/
│   │   │   ├── compr/
│   │   │   │   ├── blz.h
│   │   │   │   └── lz.h
│   │   │   ├── elfload/
│   │   │   │   ├── elf.h
│   │   │   │   ├── elfarch.h
│   │   │   │   └── elfload.h
│   │   │   ├── fatfs/
│   │   │   │   ├── diskio.h
│   │   │   │   ├── ff.h
│   │   │   │   └── ffconf.h
│   │   │   └── lvgl/
│   │   │       ├── lv_conf.h
│   │   │       ├── lv_conf_checker.h
│   │   │       ├── lv_core/
│   │   │       │   ├── lv_core.mk
│   │   │       │   ├── lv_disp.h
│   │   │       │   ├── lv_group.h
│   │   │       │   ├── lv_indev.h
│   │   │       │   ├── lv_obj.h
│   │   │       │   ├── lv_refr.h
│   │   │       │   └── lv_style.h
│   │   │       ├── lv_draw/
│   │   │       │   ├── lv_draw.h
│   │   │       │   ├── lv_draw.mk
│   │   │       │   ├── lv_draw_arc.h
│   │   │       │   ├── lv_draw_basic.h
│   │   │       │   ├── lv_draw_img.h
│   │   │       │   ├── lv_draw_label.h
│   │   │       │   ├── lv_draw_line.h
│   │   │       │   ├── lv_draw_rect.h
│   │   │       │   ├── lv_draw_triangle.h
│   │   │       │   ├── lv_img_cache.h
│   │   │       │   └── lv_img_decoder.h
│   │   │       ├── lv_font/
│   │   │       │   ├── lv_font.h
│   │   │       │   ├── lv_font.mk
│   │   │       │   ├── lv_font_fmt_txt.h
│   │   │       │   └── lv_symbol_def.h
│   │   │       ├── lv_hal/
│   │   │       │   ├── lv_hal.h
│   │   │       │   ├── lv_hal.mk
│   │   │       │   ├── lv_hal_disp.h
│   │   │       │   ├── lv_hal_indev.h
│   │   │       │   └── lv_hal_tick.h
│   │   │       ├── lv_misc/
│   │   │       │   ├── lv_anim.h
│   │   │       │   ├── lv_area.h
│   │   │       │   ├── lv_async.h
│   │   │       │   ├── lv_circ.h
│   │   │       │   ├── lv_color.h
│   │   │       │   ├── lv_fs.h
│   │   │       │   ├── lv_gc.h
│   │   │       │   ├── lv_ll.h
│   │   │       │   ├── lv_log.h
│   │   │       │   ├── lv_math.h
│   │   │       │   ├── lv_mem.h
│   │   │       │   ├── lv_misc.mk
│   │   │       │   ├── lv_task.h
│   │   │       │   ├── lv_templ.h
│   │   │       │   ├── lv_txt.h
│   │   │       │   ├── lv_types.h
│   │   │       │   └── lv_utils.h
│   │   │       ├── lv_objx/
│   │   │       │   ├── lv_arc.h
│   │   │       │   ├── lv_bar.h
│   │   │       │   ├── lv_btn.h
│   │   │       │   ├── lv_btnm.h
│   │   │       │   ├── lv_calendar.h
│   │   │       │   ├── lv_canvas.h
│   │   │       │   ├── lv_cb.h
│   │   │       │   ├── lv_chart.h
│   │   │       │   ├── lv_cont.h
│   │   │       │   ├── lv_ddlist.h
│   │   │       │   ├── lv_gauge.h
│   │   │       │   ├── lv_img.h
│   │   │       │   ├── lv_imgbtn.h
│   │   │       │   ├── lv_kb.h
│   │   │       │   ├── lv_label.h
│   │   │       │   ├── lv_led.h
│   │   │       │   ├── lv_line.h
│   │   │       │   ├── lv_list.h
│   │   │       │   ├── lv_lmeter.h
│   │   │       │   ├── lv_mbox.h
│   │   │       │   ├── lv_objx.mk
│   │   │       │   ├── lv_objx_templ.h
│   │   │       │   ├── lv_page.h
│   │   │       │   ├── lv_preload.h
│   │   │       │   ├── lv_roller.h
│   │   │       │   ├── lv_slider.h
│   │   │       │   ├── lv_spinbox.h
│   │   │       │   ├── lv_sw.h
│   │   │       │   ├── lv_ta.h
│   │   │       │   ├── lv_table.h
│   │   │       │   ├── lv_tabview.h
│   │   │       │   ├── lv_tileview.h
│   │   │       │   └── lv_win.h
│   │   │       ├── lv_themes/
│   │   │       │   ├── lv_theme.h
│   │   │       │   ├── lv_theme_argon.h
│   │   │       │   ├── lv_theme_default.h
│   │   │       │   └── lv_themes.mk
│   │   │       ├── lv_version.h
│   │   │       ├── lvgl.h
│   │   │       └── lvgl.mk
│   │   ├── mem/
│   │   │   ├── emc.h
│   │   │   ├── heap.h
│   │   │   ├── mc.h
│   │   │   ├── mc_t210.h
│   │   │   ├── sdram.h
│   │   │   ├── sdram_config_lz.inl
│   │   │   └── sdram_param_t210.h
│   │   ├── menu/
│   │   │   └── gui/
│   │   │       ├── gui_menu.h
│   │   │       ├── gui_menu_controllers.h
│   │   │       └── gui_menu_pool.h
│   │   ├── minerva/
│   │   │   ├── minerva.h
│   │   │   └── mtc_table.h
│   │   ├── power/
│   │   │   ├── battery.h
│   │   │   ├── bq24193.h
│   │   │   ├── max17050.h
│   │   │   ├── max77620.h
│   │   │   └── max7762x.h
│   │   ├── sec/
│   │   │   ├── se.h
│   │   │   └── se_t210.h
│   │   ├── soc/
│   │   │   ├── bpmp.h
│   │   │   ├── clock.h
│   │   │   ├── cluster.h
│   │   │   ├── fuse.h
│   │   │   ├── gpio.h
│   │   │   ├── hw_init.h
│   │   │   ├── i2c.h
│   │   │   ├── pinmux.h
│   │   │   ├── pmc.h
│   │   │   ├── pmc_lp0_t210.h
│   │   │   ├── smmu.h
│   │   │   ├── t210.h
│   │   │   └── uart.h
│   │   ├── storage/
│   │   │   ├── mmc.h
│   │   │   ├── sd.h
│   │   │   ├── sdmmc.h
│   │   │   ├── sdmmc_driver.h
│   │   │   └── sdmmc_t210.h
│   │   └── utils/
│   │       ├── aarch64_util.h
│   │       ├── btn.h
│   │       ├── dirlist.h
│   │       ├── fs_utils.h
│   │       ├── touch.h
│   │       ├── types.h
│   │       └── util.h
│   └── src/
│       ├── LICENSE
│       ├── core/
│       │   ├── argon-ctxt.c
│       │   ├── argon-resources.c
│       │   ├── custom-gui.c
│       │   ├── launcher.c
│       │   └── payloads.c
│       ├── gfx/
│       │   ├── di.c
│       │   ├── gfx.c
│       │   └── lvgl_adapter.c
│       ├── ianos/
│       │   └── ianos.c
│       ├── libs/
│       │   ├── compr/
│       │   │   ├── blz.c
│       │   │   └── lz.c
│       │   ├── elfload/
│       │   │   ├── elfload.c
│       │   │   ├── elfreloc_aarch64.c
│       │   │   └── elfreloc_arm.c
│       │   ├── fatfs/
│       │   │   ├── diskio.c
│       │   │   ├── ff.c
│       │   │   ├── ffsystem.c
│       │   │   └── ffunicode.c
│       │   └── lvgl/
│       │       ├── lv_core/
│       │       │   ├── lv_core.mk
│       │       │   ├── lv_disp.c
│       │       │   ├── lv_group.c
│       │       │   ├── lv_indev.c
│       │       │   ├── lv_obj.c
│       │       │   ├── lv_refr.c
│       │       │   └── lv_style.c
│       │       ├── lv_draw/
│       │       │   ├── lv_draw.c
│       │       │   ├── lv_draw.mk
│       │       │   ├── lv_draw_arc.c
│       │       │   ├── lv_draw_basic.c
│       │       │   ├── lv_draw_img.c
│       │       │   ├── lv_draw_label.c
│       │       │   ├── lv_draw_line.c
│       │       │   ├── lv_draw_rect.c
│       │       │   ├── lv_draw_triangle.c
│       │       │   ├── lv_img_cache.c
│       │       │   └── lv_img_decoder.c
│       │       ├── lv_font/
│       │       │   ├── lv_font.c
│       │       │   ├── lv_font.mk
│       │       │   ├── lv_font_fmt_txt.c
│       │       │   ├── lv_font_ma_110.c
│       │       │   ├── lv_font_ma_20.c
│       │       │   ├── lv_font_ma_30.c
│       │       │   ├── lv_font_ma_80.c
│       │       │   ├── lv_font_montserrat_12.c
│       │       │   └── lv_font_unscii_8.c
│       │       ├── lv_hal/
│       │       │   ├── lv_hal.mk
│       │       │   ├── lv_hal_disp.c
│       │       │   ├── lv_hal_indev.c
│       │       │   └── lv_hal_tick.c
│       │       ├── lv_misc/
│       │       │   ├── lv_anim.c
│       │       │   ├── lv_area.c
│       │       │   ├── lv_async.c
│       │       │   ├── lv_circ.c
│       │       │   ├── lv_color.c
│       │       │   ├── lv_fs.c
│       │       │   ├── lv_gc.c
│       │       │   ├── lv_ll.c
│       │       │   ├── lv_log.c
│       │       │   ├── lv_math.c
│       │       │   ├── lv_mem.c
│       │       │   ├── lv_misc.mk
│       │       │   ├── lv_task.c
│       │       │   ├── lv_templ.c
│       │       │   ├── lv_txt.c
│       │       │   └── lv_utils.c
│       │       ├── lv_objx/
│       │       │   ├── lv_arc.c
│       │       │   ├── lv_bar.c
│       │       │   ├── lv_btn.c
│       │       │   ├── lv_btnm.c
│       │       │   ├── lv_calendar.c
│       │       │   ├── lv_canvas.c
│       │       │   ├── lv_cb.c
│       │       │   ├── lv_chart.c
│       │       │   ├── lv_cont.c
│       │       │   ├── lv_ddlist.c
│       │       │   ├── lv_gauge.c
│       │       │   ├── lv_img.c
│       │       │   ├── lv_imgbtn.c
│       │       │   ├── lv_kb.c
│       │       │   ├── lv_label.c
│       │       │   ├── lv_led.c
│       │       │   ├── lv_line.c
│       │       │   ├── lv_list.c
│       │       │   ├── lv_lmeter.c
│       │       │   ├── lv_mbox.c
│       │       │   ├── lv_objx.mk
│       │       │   ├── lv_objx_templ.c
│       │       │   ├── lv_page.c
│       │       │   ├── lv_preload.c
│       │       │   ├── lv_roller.c
│       │       │   ├── lv_slider.c
│       │       │   ├── lv_spinbox.c
│       │       │   ├── lv_sw.c
│       │       │   ├── lv_ta.c
│       │       │   ├── lv_table.c
│       │       │   ├── lv_tabview.c
│       │       │   ├── lv_tileview.c
│       │       │   └── lv_win.c
│       │       ├── lv_themes/
│       │       │   ├── lv_theme.c
│       │       │   ├── lv_theme_argon.c
│       │       │   ├── lv_theme_default.c
│       │       │   └── lv_themes.mk
│       │       └── lvgl.mk
│       ├── link.ld
│       ├── main.c
│       ├── mem/
│       │   ├── heap.c
│       │   ├── mc.c
│       │   └── sdram.c
│       ├── menu/
│       │   └── gui/
│       │       ├── gui_menu.c
│       │       ├── gui_menu_controllers.c
│       │       └── gui_menu_pool.c
│       ├── minerva/
│       │   └── minerva.c
│       ├── power/
│       │   ├── battery.c
│       │   ├── bq24193.c
│       │   ├── max17050.c
│       │   └── max7762x.c
│       ├── sec/
│       │   └── se.c
│       ├── soc/
│       │   ├── bpmp.c
│       │   ├── clock.c
│       │   ├── cluster.c
│       │   ├── fuse.c
│       │   ├── gpio.c
│       │   ├── hw_init.c
│       │   ├── i2c.c
│       │   ├── pinmux.c
│       │   ├── smmu.c
│       │   └── uart.c
│       ├── start.s
│       ├── storage/
│       │   ├── sdmmc.c
│       │   └── sdmmc_driver.c
│       └── utils/
│           ├── btn.c
│           ├── dirlist.c
│           ├── fs_utils.c
│           ├── touch.c
│           └── util.c
├── docker-compose.yml
├── modules/
│   ├── minerva/
│   │   ├── Dockerfile
│   │   ├── Makefile
│   │   ├── common.h
│   │   ├── gfx.h
│   │   ├── heap.h
│   │   ├── mtc.h
│   │   ├── mtc_mc_emc_regs.h
│   │   ├── mtc_switch_tables.h
│   │   ├── mtc_table.h
│   │   ├── sys_sdrammtc.c
│   │   └── types.h
│   └── resources.argon
└── scripts/
    ├── argon.py
    └── requirements.txt
Download .txt
Showing preview only (243K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2614 symbols across 265 files)

FILE: argon-first-stage/include/gfx/gfx.h
  type gfx_ctxt_t (line 36) | typedef struct _gfx_ctxt_t
  type gfx_con_t (line 45) | typedef struct _gfx_con_t
  type bmp_data_t (line 60) | typedef struct

FILE: argon-first-stage/include/ianos/ianos.h
  type elfType_t (line 24) | typedef enum

FILE: argon-first-stage/include/libs/compr/blz.h
  type blz_footer (line 22) | typedef struct _blz_footer

FILE: argon-first-stage/include/libs/elfload/elf.h
  type Elf_Byte (line 34) | typedef uint8_t Elf_Byte;
  type Elf32_Addr (line 36) | typedef uint32_t Elf32_Addr;
  type Elf32_Off (line 37) | typedef uint32_t Elf32_Off;
  type Elf32_Sword (line 38) | typedef int32_t Elf32_Sword;
  type Elf32_Word (line 39) | typedef uint32_t Elf32_Word;
  type Elf32_Half (line 40) | typedef uint16_t Elf32_Half;
  type Elf64_Addr (line 42) | typedef uint64_t Elf64_Addr;
  type Elf64_Off (line 43) | typedef uint64_t Elf64_Off;
  type Elf64_Shalf (line 44) | typedef int32_t Elf64_Shalf;
  type Elf64_Sword (line 47) | typedef int64_t Elf64_Sword;
  type Elf64_Word (line 48) | typedef uint64_t Elf64_Word;
  type Elf64_Sword (line 50) | typedef int32_t Elf64_Sword;
  type Elf64_Word (line 51) | typedef uint32_t Elf64_Word;
  type Elf64_Sxword (line 54) | typedef int64_t Elf64_Sxword;
  type Elf64_Xword (line 55) | typedef uint64_t Elf64_Xword;
  type Elf64_Half (line 57) | typedef uint32_t Elf64_Half;
  type Elf64_Quarter (line 58) | typedef uint16_t Elf64_Quarter;
  type Elf32_Ehdr (line 120) | typedef struct
  type Elf64_Ehdr (line 139) | typedef struct
  type Elf32_Shdr (line 205) | typedef struct
  type Elf64_Shdr (line 220) | typedef struct
  type Elf32_Sym (line 294) | typedef struct elf32_sym
  type Elf64_Sym (line 304) | typedef struct
  type Elf32_Rel (line 345) | typedef struct
  type Elf32_Rela (line 352) | typedef struct
  type Elf64_Rel (line 364) | typedef struct
  type Elf64_Rela (line 370) | typedef struct
  type Elf32_Phdr (line 396) | typedef struct
  type Elf64_Phdr (line 408) | typedef struct
  type Elf32_Dyn (line 445) | typedef struct
  type Elf64_Dyn (line 454) | typedef struct
  type Elf32_Note (line 522) | typedef struct
  type Elf64_Note (line 529) | typedef struct

FILE: argon-first-stage/include/libs/elfload/elfload.h
  type el_status (line 39) | typedef enum
  type el_ctx (line 57) | typedef struct el_ctx
  type el_relocinfo (line 114) | typedef struct

FILE: argon-first-stage/include/libs/fatfs/diskio.h
  type BYTE (line 15) | typedef BYTE	DSTATUS;
  type DRESULT (line 18) | typedef enum {

FILE: argon-first-stage/include/libs/fatfs/ff.h
  type PARTITION (line 40) | typedef struct {
  type WCHAR (line 61) | typedef WCHAR TCHAR;
  type TCHAR (line 65) | typedef char TCHAR;
  type DWORD (line 69) | typedef DWORD TCHAR;
  type TCHAR (line 75) | typedef char TCHAR;
  type QWORD (line 87) | typedef QWORD FSIZE_t;
  type DWORD (line 89) | typedef DWORD FSIZE_t;
  type FATFS (line 96) | typedef struct {
  type FFOBJID (line 146) | typedef struct {
  type FIL (line 169) | typedef struct {
  type DIR (line 192) | typedef struct {
  type FILINFO (line 211) | typedef struct {
  type FRESULT (line 228) | typedef enum {

FILE: argon-first-stage/include/mem/heap.h
  type hnode_t (line 23) | typedef struct _hnode
  type heap_t (line 31) | typedef struct _heap

FILE: argon-first-stage/include/mem/sdram_param_t210.h
  type sdram_params_t (line 40) | typedef struct _sdram_params

FILE: argon-first-stage/include/power/bq24193.h
  type BQ24193_reg (line 88) | enum BQ24193_reg {
  type BQ24193_reg_prop (line 102) | enum BQ24193_reg_prop {
  type BQ24193_reg_prop (line 116) | enum BQ24193_reg_prop

FILE: argon-first-stage/include/power/max17050.h
  type MAX17050_reg (line 37) | enum MAX17050_reg {
  type MAX17050_reg (line 124) | enum MAX17050_reg

FILE: argon-first-stage/include/power/max77620.h
  type max77620_fps_src (line 316) | enum max77620_fps_src {
  type max77620_chip_id (line 324) | enum max77620_chip_id {

FILE: argon-first-stage/include/soc/bpmp.h
  type bpmp_mmu_entry_t (line 28) | typedef struct _bpmp_mmu_entry_t
  type bpmp_freq_t (line 36) | typedef enum

FILE: argon-first-stage/include/soc/clock.h
  type clock_t (line 127) | typedef struct _clock_t

FILE: argon-first-stage/include/soc/pmc_lp0_t210.h
  type tegra_pmc_regs (line 19) | struct tegra_pmc_regs

FILE: argon-first-stage/include/soc/uart.h
  type uart_t (line 46) | typedef struct _uart_t

FILE: argon-first-stage/include/storage/sdmmc.h
  type mmc_cid_t (line 24) | typedef struct _mmc_cid
  type mmc_csd_t (line 38) | typedef struct _mmc_csd
  type mmc_ext_csd_t (line 54) | typedef struct _mmc_ext_csd
  type sd_scr_t (line 68) | typedef struct _sd_scr
  type sd_ssr_t (line 76) | typedef struct _sd_ssr
  type sdmmc_storage_t (line 86) | typedef struct _sdmmc_storage_t

FILE: argon-first-stage/include/storage/sdmmc_driver.h
  type sdmmc_t (line 75) | typedef struct _sdmmc_t
  type sdmmc_cmd_t (line 92) | typedef struct _sdmmc_cmd_t
  type sdmmc_req_t (line 101) | typedef struct _sdmmc_req_t

FILE: argon-first-stage/include/storage/sdmmc_t210.h
  type t210_sdmmc_t (line 66) | typedef struct _t210_sdmmc_t

FILE: argon-first-stage/include/utils/types.h
  type s8 (line 29) | typedef signed char s8;
  type s16 (line 30) | typedef short s16;
  type SHORT (line 31) | typedef short SHORT;
  type s32 (line 32) | typedef int s32;
  type INT (line 33) | typedef int INT;
  type LONG (line 34) | typedef long LONG;
  type s64 (line 35) | typedef long long int s64;
  type u8 (line 36) | typedef unsigned char u8;
  type BYTE (line 37) | typedef unsigned char BYTE;
  type u16 (line 38) | typedef unsigned short u16;
  type WORD (line 39) | typedef unsigned short WORD;
  type WCHAR (line 40) | typedef unsigned short WCHAR;
  type u32 (line 41) | typedef unsigned int u32;
  type UINT (line 42) | typedef unsigned int UINT;
  type DWORD (line 43) | typedef unsigned long DWORD;
  type QWORD (line 44) | typedef unsigned long long QWORD;
  type u64 (line 45) | typedef unsigned long long int u64;
  type vu8 (line 46) | typedef volatile unsigned char vu8;
  type vu16 (line 47) | typedef volatile unsigned short vu16;
  type vu32 (line 48) | typedef volatile unsigned int vu32;
  type boot_cfg_t (line 62) | typedef struct __attribute__((__packed__)) _boot_cfg_t
  type ipl_ver_meta_t (line 71) | typedef struct __attribute__((__packed__)) _ipl_ver_meta_t
  type reloc_meta_t (line 79) | typedef struct __attribute__((__packed__)) _reloc_meta_t

FILE: argon-first-stage/include/utils/util.h
  type cfg_op_t (line 29) | typedef struct _cfg_op_t

FILE: argon-first-stage/src/core/launcher.c
  function reloc_patcher (line 47) | void reloc_patcher(u32 payload_size)
  function launch_payload (line 66) | int launch_payload(char *path)

FILE: argon-first-stage/src/gfx/di.c
  function _display_dsi_wait (line 36) | static void _display_dsi_wait(u32 timeout, u32 off, u32 mask)
  function display_init (line 44) | void display_init()
  function display_backlight_pwm_init (line 142) | void display_backlight_pwm_init()
  function display_backlight (line 153) | void display_backlight(bool enable)
  function display_backlight_brightness (line 158) | void display_backlight_brightness(u32 brightness, u32 step_delay)
  function display_end (line 187) | void display_end()
  function display_color_screen (line 237) | void display_color_screen(u32 color)
  function u32 (line 253) | u32 *display_init_framebuffer()

FILE: argon-first-stage/src/gfx/gfx.c
  function gfx_init_ctxt (line 121) | void gfx_init_ctxt(u32 *fb, u32 width, u32 height, u32 stride)
  function gfx_clear_grey (line 129) | void gfx_clear_grey(u8 color)
  function gfx_clear_color (line 134) | void gfx_clear_color(u32 color)
  function gfx_clear_partial_grey (line 140) | void gfx_clear_partial_grey(u8 color, u32 pos_x, u32 height)
  function gfx_con_init (line 145) | void gfx_con_init()
  function gfx_con_setcol (line 159) | void gfx_con_setcol(u32 fgcol, int fillbg, u32 bgcol)
  function gfx_con_getpos (line 166) | void gfx_con_getpos(u32 *x, u32 *y)
  function gfx_con_setpos (line 172) | void gfx_con_setpos(u32 x, u32 y)
  function gfx_putc (line 178) | void gfx_putc(char c)
  function gfx_puts (line 261) | void gfx_puts(const char *s)
  function _gfx_putn (line 270) | static void _gfx_putn(u32 v, int base, char fill, int fcnt)
  function gfx_put_small_sep (line 301) | void gfx_put_small_sep()
  function gfx_put_big_sep (line 309) | void gfx_put_big_sep()
  function gfx_printf (line 317) | void gfx_printf(const char *fmt, ...)
  function gfx_hexdump (line 393) | void gfx_hexdump(u32 base, const u8 *buf, u32 len)
  function abs (line 446) | static int abs(int x)
  function gfx_set_pixel (line 453) | void gfx_set_pixel(u32 x, u32 y, u32 color)
  function gfx_line (line 458) | void gfx_line(int x0, int y0, int x1, int y1, u32 color)
  function gfx_set_rect_grey (line 483) | void gfx_set_rect_grey(const u8 *buf, u32 size_x, u32 size_y, u32 pos_x,...
  function gfx_set_rect_rgb (line 497) | void gfx_set_rect_rgb(const u8 *buf, u32 size_x, u32 size_y, u32 pos_x, ...
  function gfx_set_rect_argb (line 510) | void gfx_set_rect_argb(const u32 *buf, u32 size_x, u32 size_y, u32 pos_x...
  function gfx_render_bmp_argb (line 518) | void gfx_render_bmp_argb(const u32 *buf, u32 size_x, u32 size_y, u32 pos...
  function gfx_render_splash (line 527) | void gfx_render_splash(u8 *bitmap)

FILE: argon-first-stage/src/ianos/ianos.c
  type _bdkParams_t (line 34) | struct _bdkParams_t
  function _ianos_call_ep (line 55) | static void _ianos_call_ep(moduleEntrypoint_t entrypoint, void *moduleCo...
  function _ianos_read_cb (line 75) | static bool _ianos_read_cb(el_ctx *ctx, void *dest, size_t numberBytes, ...
  function ianos_loader (line 85) | uintptr_t ianos_loader(bool sdmount, char *path, elfType_t type, void *m...

FILE: argon-first-stage/src/libs/compr/blz.c
  function blz_footer (line 23) | const blz_footer *blz_get_footer(const unsigned char *compData, unsigned...
  function blz_uncompress_inplace (line 36) | int blz_uncompress_inplace(unsigned char *dataBuf, unsigned int compSize...
  function blz_uncompress_srcdest (line 85) | int blz_uncompress_srcdest(const unsigned char *compData, unsigned int c...

FILE: argon-first-stage/src/libs/compr/lz.c
  function _LZ_ReadVarSize (line 91) | static int _LZ_ReadVarSize( unsigned int * x, const unsigned char * buf )
  function LZ_Uncompress (line 128) | void LZ_Uncompress( const unsigned char *in, unsigned char *out,

FILE: argon-first-stage/src/libs/elfload/elfload.c
  function el_status (line 22) | el_status el_pread(el_ctx *ctx, void *def, size_t nb, size_t offset)
  function el_status (line 28) | el_status el_findphdr(el_ctx *ctx, Elf_Phdr *phdr, uint32_t type, unsign...
  function el_status (line 47) | el_status el_findshdr(el_ctx *ctx, Elf_Shdr *shdr, uint32_t type, unsign...
  function el_status (line 68) | el_status el_init(el_ctx *ctx)
  function el_status (line 173) | el_status el_load(el_ctx *ctx, el_alloc_cb alloc)
  function el_status (line 216) | el_status el_finddyn(el_ctx *ctx, Elf_Dyn *dyn, uint32_t tag)
  function el_status (line 234) | el_status el_findrelocs(el_ctx *ctx, el_relocinfo *ri, uint32_t type)
  function el_status (line 268) | el_status el_relocate(el_ctx *ctx)

FILE: argon-first-stage/src/libs/elfload/elfreloc_aarch64.c
  function el_status (line 25) | el_status el_applyrela(el_ctx *ctx, Elf_RelA *rel)
  function el_status (line 55) | el_status el_applyrel(el_ctx *ctx, Elf_Rel *rel)

FILE: argon-first-stage/src/libs/elfload/elfreloc_arm.c
  function el_status (line 22) | el_status el_applyrel(el_ctx *ctx, Elf_Rel *rel)

FILE: argon-first-stage/src/libs/fatfs/diskio.c
  function DSTATUS (line 22) | DSTATUS disk_status (
  function DSTATUS (line 32) | DSTATUS disk_initialize (
  function DRESULT (line 42) | DRESULT disk_read (
  function DRESULT (line 63) | DRESULT disk_write (
  function DRESULT (line 82) | DRESULT disk_ioctl (

FILE: argon-first-stage/src/libs/fatfs/ff.c
  type FILESEM (line 283) | typedef struct {
  function print_error (line 602) | void print_error()
  function WORD (line 612) | static WORD ld_word (const BYTE* ptr)	/*	 Load a 2-byte little-endian wo...
  function DWORD (line 621) | static DWORD ld_dword (const BYTE* ptr)	/* Load a 4-byte little-endian w...
  function QWORD (line 633) | static QWORD ld_qword (const BYTE* ptr)	/* Load an 8-byte little-endian ...
  function st_word (line 650) | static void st_word (BYTE* ptr, WORD val)	/* Store a 2-byte word in litt...
  function st_dword (line 656) | static void st_dword (BYTE* ptr, DWORD val)	/* Store a 4-byte word in li...
  function st_qword (line 665) | static void st_qword (BYTE* ptr, QWORD val)	/* Store an 8-byte word in l...
  function mem_cpy (line 686) | static void mem_cpy (void* dst, const void* src, UINT cnt)
  function mem_set (line 700) | static void mem_set (void* dst, int val, UINT cnt)
  function mem_cmp (line 711) | static int mem_cmp (const void* dst, const void* src, UINT cnt)	/* ZR:sa...
  function chk_chr (line 725) | static int chk_chr (const char* str, int chr)	/* NZ:contained, ZR:not co...
  function dbc_1st (line 733) | static int dbc_1st (BYTE c)
  function dbc_2nd (line 753) | static int dbc_2nd (BYTE c)
  function DWORD (line 777) | static DWORD tchar2uni (	/* Returns character in UTF-16 encoding (>=0x10...
  function BYTE (line 850) | static BYTE put_utf (	/* Returns number of encoding units written (0:buf...
  function lock_fs (line 939) | static int lock_fs (		/* 1:Ok, 0:timeout */
  function unlock_fs (line 947) | static void unlock_fs (
  function FRESULT (line 966) | static FRESULT chk_lock (	/* Check if the file can be accessed */
  function enq_lock (line 993) | static int enq_lock (void)	/* Check if an entry is available for a new o...
  function UINT (line 1002) | static UINT inc_lock (	/* Increment object open counter and returns its ...
  function FRESULT (line 1033) | static FRESULT dec_lock (	/* Decrement object open counter */
  function clear_lock (line 1055) | static void clear_lock (	/* Clear lock entries of the volume */
  function FRESULT (line 1074) | static FRESULT sync_window (	/* Returns FR_OK or FR_DISK_ERR */
  function FRESULT (line 1096) | static FRESULT move_window (	/* Returns FR_OK or FR_DISK_ERR */
  function FRESULT (line 1127) | static FRESULT sync_fs (	/* Returns FR_OK or FR_DISK_ERR */
  function DWORD (line 1164) | static DWORD clst2sect (	/* !=0:Sector number, 0:Failed (invalid cluster...
  function DWORD (line 1181) | static DWORD get_fat (		/* 0xFFFFFFFF:Disk error, 1:Internal error, 2..0...
  function FRESULT (line 1258) | static FRESULT put_fat (	/* FR_OK(0):succeeded, !=0:error */
  function DWORD (line 1323) | static DWORD find_bitmap (	/* 0:Not found, 2..:Cluster block found, 0xFF...
  function FRESULT (line 1363) | static FRESULT change_bitmap (
  function FRESULT (line 1399) | static FRESULT fill_first_frag (
  function FRESULT (line 1422) | static FRESULT fill_last_frag (
  function FRESULT (line 1448) | static FRESULT remove_chain (	/* FR_OK(0):succeeded, !=0:error */
  function DWORD (line 1543) | static DWORD create_chain (	/* 0:No free cluster, 1:Internal error, 0xFF...
  function DWORD (line 1646) | static DWORD clmt_clust (	/* <2:Error, >=2:Cluster number */
  function FRESULT (line 1676) | static FRESULT dir_clear (	/* Returns FR_OK or FR_DISK_ERR */
  function FRESULT (line 1715) | static FRESULT dir_sdi (	/* FR_OK(0):succeeded, !=0:error */
  function FRESULT (line 1763) | static FRESULT dir_next (	/* FR_OK(0):succeeded, FR_NO_FILE:End of table...
  function DWORD (line 1866) | static DWORD ld_clust (	/* Returns the top cluster value of the SFN entr...
  function st_clust (line 1883) | static void st_clust (
  function cmp_lfn (line 1903) | static int cmp_lfn (		/* 1:matched, 0:not matched */
  function pick_lfn (line 1939) | static int pick_lfn (	/* 1:succeeded, 0:buffer overflow or invalid LFN e...
  function put_lfn (line 1977) | static void put_lfn (
  function gen_numname (line 2014) | static void gen_numname (
  function BYTE (line 2072) | static BYTE sum_sfn (
  function WORD (line 2094) | static WORD xdir_sum (	/* Get checksum of the directoly entry block */
  function WORD (line 2115) | static WORD xname_sum (	/* Get check sum (to be used as hash) of the fil...
  function DWORD (line 2133) | static DWORD xsum32 (	/* Returns 32-bit checksum */
  function get_xfileinfo (line 2149) | static void get_xfileinfo (
  function FRESULT (line 2190) | static FRESULT load_xdir (	/* FR_INT_ERR: invalid entry block */
  function init_alloc_info (line 2241) | static void init_alloc_info (
  function FRESULT (line 2259) | static FRESULT load_obj_xdir (
  function FRESULT (line 2288) | static FRESULT store_xdir (
  function create_xdir (line 2320) | static void create_xdir (
  function FRESULT (line 2366) | static FRESULT dir_read (
  function FRESULT (line 2444) | static FRESULT dir_find (	/* FR_OK(0):succeeded, !=0:error */
  function FRESULT (line 2525) | static FRESULT dir_register (	/* FR_OK:succeeded, FR_DENIED:no free entr...
  function FRESULT (line 2631) | static FRESULT dir_remove (	/* FR_OK:Succeeded, FR_DISK_ERR:A disk error */
  function get_fileinfo (line 2677) | static void get_fileinfo (
  function DWORD (line 2783) | static DWORD get_achar (	/* Get a character and advances ptr */
  function pattern_matching (line 2814) | static int pattern_matching (	/* 0:not matched, 1:matched */
  function FRESULT (line 2861) | static FRESULT create_name (	/* FR_OK: successful, FR_INVALID_NAME: coul...
  function FRESULT (line 3058) | static FRESULT follow_path (	/* FR_OK(0): successful, !=0: error code */
  function get_ldnumber (line 3145) | static int get_ldnumber (	/* Returns logical drive number (-1:invalid dr...
  function BYTE (line 3219) | static BYTE check_fs (	/* 0:FAT, 1:exFAT, 2:Valid BS but not FAT, 3:Not ...
  function FRESULT (line 3246) | static FRESULT find_volume (	/* FR_OK(0): successful, !=0: an error occu...
  function FRESULT (line 3512) | static FRESULT validate (	/* Returns FR_OK or FR_INVALID_OBJECT */
  function FRESULT (line 3556) | FRESULT f_mount (
  function FRESULT (line 3607) | FRESULT f_open (
  function FRESULT (line 3797) | FRESULT f_read (
  function FRESULT (line 3917) | FRESULT f_read_fast (
  function FRESULT (line 4004) | FRESULT f_write (
  function FRESULT (line 4143) | FRESULT f_write_fast (
  function FRESULT (line 4234) | FRESULT f_sync (
  function FRESULT (line 4315) | FRESULT f_close (
  function FRESULT (line 4351) | FRESULT f_chdrive (
  function FRESULT (line 4368) | FRESULT f_chdir (
  function FRESULT (line 4430) | FRESULT f_getcwd (
  function FRESULT (line 4530) | FRESULT f_lseek (
  function DWORD (line 4692) | DWORD *f_expand_cltbl (
  function FRESULT (line 4724) | FRESULT f_opendir (
  function FRESULT (line 4790) | FRESULT f_closedir (
  function FRESULT (line 4820) | FRESULT f_readdir (
  function FRESULT (line 4856) | FRESULT f_findnext (
  function FRESULT (line 4881) | FRESULT f_findfirst (
  function FRESULT (line 4908) | FRESULT f_stat (
  function FRESULT (line 4943) | FRESULT f_getfree (
  function FRESULT (line 5032) | FRESULT f_truncate (
  function FRESULT (line 5082) | FRESULT f_unlink (
  function FRESULT (line 5176) | FRESULT f_mkdir (
  function FRESULT (line 5260) | FRESULT f_rename (
  function FRESULT (line 5370) | FRESULT f_chmod (
  function FRESULT (line 5417) | FRESULT f_utime (
  function FRESULT (line 5464) | FRESULT f_getlabel (
  function FRESULT (line 5559) | FRESULT f_setlabel (
  function FRESULT (line 5679) | FRESULT f_expand (
  function FRESULT (line 5769) | FRESULT f_forward (
  function FRESULT (line 5840) | FRESULT f_mkfs (
  function FRESULT (line 6305) | FRESULT f_fdisk (
  function TCHAR (line 6388) | TCHAR* f_gets (
  type putbuff (line 6516) | typedef struct {	/* Putchar output buffer and work area */
  function putc_bfd (line 6529) | static void putc_bfd (		/* Buffered write with code conversion */
  function putc_flush (line 6660) | static int putc_flush (		/* Flush left characters in the buffer */
  function putc_init (line 6673) | static void putc_init (		/* Initialize write buffer */
  function f_putc (line 6684) | int f_putc (
  function f_puts (line 6704) | int f_puts (
  function f_printf (line 6724) | int f_printf (
  function FRESULT (line 6842) | FRESULT f_setcp (

FILE: argon-first-stage/src/libs/fatfs/ffsystem.c
  function ff_memfree (line 31) | void ff_memfree (

FILE: argon-first-stage/src/libs/fatfs/ffunicode.c
  function WCHAR (line 259) | WCHAR ff_uni2oem (	/* Returns OEM code character, zero on error */
  function WCHAR (line 281) | WCHAR ff_oem2uni (	/* Returns Unicode character, zero on error */
  function WCHAR (line 312) | WCHAR ff_uni2oem (	/* Returns OEM code character, zero on error */
  function WCHAR (line 348) | WCHAR ff_oem2uni (	/* Returns Unicode character, zero on error */
  function WCHAR (line 395) | WCHAR ff_uni2oem (	/* Returns OEM code character, zero on error */
  function WCHAR (line 447) | WCHAR ff_oem2uni (	/* Returns Unicode character, zero on error */
  function DWORD (line 501) | DWORD ff_wtoupper (	/* Returns up-converted code point */

FILE: argon-first-stage/src/main.c
  function setup_gfx (line 38) | static inline void setup_gfx()
  function error_end (line 45) | static void error_end(const char* error_msg)
  function ipl_main (line 56) | void ipl_main()

FILE: argon-first-stage/src/mem/heap.c
  function _heap_create (line 22) | static void _heap_create(heap_t *heap, u32 start)
  function u32 (line 28) | static u32 _heap_alloc(heap_t *heap, u32 size, u32 alignment)
  function _heap_free (line 80) | static void _heap_free(heap_t *heap, u32 addr)
  function heap_init (line 103) | void heap_init(u32 base)
  function free (line 125) | void free(void *buf)

FILE: argon-first-stage/src/mem/mc.c
  function mc_config_tsec_carveout (line 6) | void mc_config_tsec_carveout(u32 bom, u32 size1mb, bool lock)
  function mc_config_carveout (line 14) | void mc_config_carveout()
  function mc_enable_ahb_redirect (line 108) | void mc_enable_ahb_redirect()
  function mc_disable_ahb_redirect (line 117) | void mc_disable_ahb_redirect()
  function mc_enable (line 127) | void mc_enable()

FILE: argon-first-stage/src/mem/sdram.c
  function u32 (line 37) | u32 get_sdram_id()
  function _sdram_config (line 42) | static void _sdram_config(const sdram_params_t *params)
  function sdram_init (line 505) | void sdram_init()

FILE: argon-first-stage/src/power/bq24193.c
  function bq24193_get_property (line 23) | int bq24193_get_property(enum BQ24193_reg_prop prop, int *value)
  function bq24193_fake_battery_removal (line 149) | void bq24193_fake_battery_removal()

FILE: argon-first-stage/src/power/max17050.c
  function max17050_get_property (line 46) | int max17050_get_property(enum MAX17050_reg reg, int *value)
  function _max17050_write_verify_reg (line 122) | static int _max17050_write_verify_reg(u8 reg, u16 value)
  function _max17050_override_por (line 142) | static void _max17050_override_por(u8 reg, u16 value)
  function _max17050_load_new_capacity_params (line 148) | static void _max17050_load_new_capacity_params()
  function _max17050_reset_vfsoc0_reg (line 170) | static void _max17050_reset_vfsoc0_reg()
  function _max17050_update_capacity_regs (line 184) | static void _max17050_update_capacity_regs()
  function _max17050_write_config_regs (line 192) | static void _max17050_write_config_regs()
  function _max17050_override_por_values (line 210) | static void _max17050_override_por_values()
  function _max17050_set_por_bit (line 225) | static void _max17050_set_por_bit(u16 value)
  function max17050_fix_configuration (line 230) | int max17050_fix_configuration()

FILE: argon-first-stage/src/power/max7762x.c
  type max77620_regulator_t (line 26) | typedef struct _max77620_regulator_t
  function max77620_regulator_get_status (line 67) | int max77620_regulator_get_status(u32 id)
  function max77620_regulator_config_fps (line 79) | int max77620_regulator_config_fps(u32 id)
  function max77620_regulator_set_voltage (line 92) | int max77620_regulator_set_voltage(u32 id, u32 mv)
  function max77620_regulator_enable (line 111) | int max77620_regulator_enable(u32 id, int enable)
  function max77620_regulator_set_volt_and_flags (line 130) | int max77620_regulator_set_volt_and_flags(u32 id, u32 mv, u8 flags)
  function max77620_config_default (line 148) | void max77620_config_default()
  function max77620_low_battery_monitor_config (line 161) | void max77620_low_battery_monitor_config()

FILE: argon-first-stage/src/sec/se.c
  type se_ll_t (line 27) | typedef struct _se_ll_t
  function _gf256_mul_x (line 34) | static void _gf256_mul_x(void *block)
  function _se_ll_init (line 50) | static void _se_ll_init(se_ll_t *ll, u32 addr, u32 size)
  function _se_ll_set (line 57) | static void _se_ll_set(se_ll_t *dst, se_ll_t *src)
  function _se_wait (line 63) | static int _se_wait()
  function _se_execute (line 74) | static int _se_execute(u32 op, void *dst, u32 dst_size, const void *src,...
  function _se_execute_one_block (line 106) | static int _se_execute_one_block(u32 op, void *dst, u32 dst_size, const ...
  function _se_aes_ctr_set (line 124) | static void _se_aes_ctr_set(void *ctr)
  function se_rsa_acc_ctrl (line 131) | void se_rsa_acc_ctrl(u32 rs, u32 flags)
  function se_key_acc_ctrl (line 139) | void se_key_acc_ctrl(u32 ks, u32 flags)
  function se_aes_key_set (line 147) | void se_aes_key_set(u32 ks, void *key, u32 size)
  function se_aes_key_clear (line 157) | void se_aes_key_clear(u32 ks)
  function se_aes_unwrap_key (line 166) | int se_aes_unwrap_key(u32 ks_dst, u32 ks_src, const void *input)
  function se_aes_crypt_block_ecb (line 176) | int se_aes_crypt_block_ecb(u32 ks, u32 enc, void *dst, const void *src)
  function se_aes_crypt_ctr (line 192) | int se_aes_crypt_ctr(u32 ks, void *dst, u32 dst_size, const void *src, u...
  function se_aes_xts_crypt_sec (line 218) | int se_aes_xts_crypt_sec(u32 ks1, u32 ks2, u32 enc, u64 sec, void *dst, ...
  function se_aes_xts_crypt (line 255) | int se_aes_xts_crypt(u32 ks1, u32 ks2, u32 enc, u64 sec, void *dst, void...
  function se_calc_sha256 (line 268) | int se_calc_sha256(void *dst, const void *src, u32 src_size)

FILE: argon-first-stage/src/soc/bpmp.c
  function bpmp_mmu_maintenance (line 84) | void bpmp_mmu_maintenance(u32 op)
  function bpmp_mmu_set_entry (line 100) | void bpmp_mmu_set_entry(int idx, bpmp_mmu_entry_t *entry, bool apply)
  function bpmp_mmu_enable (line 120) | void bpmp_mmu_enable()
  function bpmp_mmu_disable (line 147) | void bpmp_mmu_disable()
  function bpmp_clk_rate_set (line 172) | void bpmp_clk_rate_set(bpmp_freq_t fid)

FILE: argon-first-stage/src/soc/clock.c
  function clock_enable (line 82) | void clock_enable(const clock_t *clk)
  function clock_disable (line 97) | void clock_disable(const clock_t *clk)
  function clock_enable_fuse (line 105) | void clock_enable_fuse(bool enable)
  function clock_enable_uart (line 110) | void clock_enable_uart(u32 idx)
  function clock_enable_i2c (line 115) | void clock_enable_i2c(u32 idx)
  function clock_disable_i2c (line 120) | void clock_disable_i2c(u32 idx)
  function clock_enable_se (line 125) | void clock_enable_se()
  function clock_enable_tzram (line 130) | void clock_enable_tzram()
  function clock_enable_host1x (line 135) | void clock_enable_host1x()
  function clock_disable_host1x (line 140) | void clock_disable_host1x()
  function clock_enable_tsec (line 145) | void clock_enable_tsec()
  function clock_disable_tsec (line 150) | void clock_disable_tsec()
  function clock_enable_sor_safe (line 155) | void clock_enable_sor_safe()
  function clock_disable_sor_safe (line 160) | void clock_disable_sor_safe()
  function clock_enable_sor0 (line 165) | void clock_enable_sor0()
  function clock_disable_sor0 (line 170) | void clock_disable_sor0()
  function clock_enable_sor1 (line 175) | void clock_enable_sor1()
  function clock_disable_sor1 (line 180) | void clock_disable_sor1()
  function clock_enable_kfuse (line 185) | void clock_enable_kfuse()
  function clock_disable_kfuse (line 196) | void clock_disable_kfuse()
  function clock_enable_cl_dvfs (line 201) | void clock_enable_cl_dvfs()
  function clock_disable_cl_dvfs (line 206) | void clock_disable_cl_dvfs()
  function clock_enable_coresight (line 211) | void clock_enable_coresight()
  function clock_disable_coresight (line 216) | void clock_disable_coresight()
  function clock_enable_pwm (line 221) | void clock_enable_pwm()
  function clock_disable_pwm (line 226) | void clock_disable_pwm()
  function _clock_sdmmc_is_reset (line 261) | static int _clock_sdmmc_is_reset(u32 id)
  function _clock_sdmmc_set_reset (line 277) | static void _clock_sdmmc_set_reset(u32 id)
  function _clock_sdmmc_clear_reset (line 296) | static void _clock_sdmmc_clear_reset(u32 id)
  function _clock_sdmmc_is_enabled (line 315) | static int _clock_sdmmc_is_enabled(u32 id)
  function _clock_sdmmc_set_enable (line 331) | static void _clock_sdmmc_set_enable(u32 id)
  function _clock_sdmmc_clear_enable (line 350) | static void _clock_sdmmc_clear_enable(u32 id)
  function _clock_sdmmc_config_clock_source_inner (line 373) | static int _clock_sdmmc_config_clock_source_inner(u32 *pout, u32 id, u32...
  function clock_sdmmc_config_clock_source (line 439) | void clock_sdmmc_config_clock_source(u32 *pout, u32 id, u32 val)
  function clock_sdmmc_get_params (line 457) | void clock_sdmmc_get_params(u32 *pout, u16 *pdivisor, u32 type)
  function clock_sdmmc_is_not_reset_and_enabled (line 507) | int clock_sdmmc_is_not_reset_and_enabled(u32 id)
  function clock_sdmmc_enable (line 512) | void clock_sdmmc_enable(u32 id, u32 val)
  function clock_sdmmc_disable (line 527) | void clock_sdmmc_disable(u32 id)

FILE: argon-first-stage/src/soc/cluster.c
  function _cluster_enable_power (line 26) | void _cluster_enable_power()
  function _cluster_pmc_enable_partition (line 43) | int _cluster_pmc_enable_partition(u32 part, u32 toggle, bool enable)
  function cluster_boot_cpu0 (line 72) | void cluster_boot_cpu0(u32 entry)

FILE: argon-first-stage/src/soc/fuse.c
  function fuse_disable_program (line 52) | void fuse_disable_program()
  function u32 (line 57) | u32 fuse_read_odm(u32 idx)
  function fuse_wait_idle (line 62) | void fuse_wait_idle()
  function u32 (line 71) | u32 parity32_even(u32 *words, u32 count)
  function patch_hash_one (line 88) | int patch_hash_one(u32 *word)
  function patch_hash_multi (line 124) | int patch_hash_multi(u32 *words, u32 count)
  function fuse_read_ipatch (line 187) | int fuse_read_ipatch(void (*ipatch)(u32 offset, u32 value))
  function fuse_read_evp_thunk (line 245) | int fuse_read_evp_thunk(u32 *iram_evp_thunks, u32 *iram_evp_thunks_len)
  function read_raw_ipatch_fuses (line 316) | void read_raw_ipatch_fuses(u32 *words)

FILE: argon-first-stage/src/soc/gpio.c
  function gpio_config (line 64) | void gpio_config(u32 port, u32 pins, int mode)
  function gpio_output_enable (line 73) | void gpio_output_enable(u32 port, u32 pins, int enable)
  function gpio_write (line 82) | void gpio_write(u32 port, u32 pins, int high)
  function gpio_read (line 91) | int gpio_read(u32 port, u32 pins)

FILE: argon-first-stage/src/soc/hw_init.c
  function _config_oscillators (line 48) | void _config_oscillators()
  function _config_gpios (line 66) | void _config_gpios()
  function _config_pmc_scratch (line 98) | void _config_pmc_scratch()
  function _mbist_workaround (line 105) | void _mbist_workaround()
  function _config_se_brom (line 153) | void _config_se_brom()
  function config_hw (line 181) | void config_hw()

FILE: argon-first-stage/src/soc/i2c.c
  function _i2c_wait (line 27) | static void _i2c_wait(vu32 *base)
  function _i2c_send_pkt (line 38) | static int _i2c_send_pkt(u32 idx, u32 x, u8 *buf, u32 size)
  function _i2c_recv_pkt (line 62) | static int _i2c_recv_pkt(u32 idx, u8 *buf, u32 size, u32 x)
  function i2c_init (line 92) | void i2c_init(u32 idx)
  function i2c_send_buf_small (line 111) | int i2c_send_buf_small(u32 idx, u32 x, u32 y, u8 *buf, u32 size)
  function i2c_recv_buf_small (line 124) | int i2c_recv_buf_small(u8 *buf, u32 size, u32 idx, u32 x, u32 y)
  function i2c_send_byte (line 132) | int i2c_send_byte(u32 idx, u32 x, u32 y, u8 b)
  function u8 (line 137) | u8 i2c_recv_byte(u32 idx, u32 x, u32 y)

FILE: argon-first-stage/src/soc/pinmux.c
  function pinmux_config_uart (line 20) | void pinmux_config_uart(u32 idx)
  function pinmux_config_i2c (line 28) | void pinmux_config_i2c(u32 idx)

FILE: argon-first-stage/src/soc/smmu.c
  function u32 (line 56) | u32 *smmu_alloc_pdir()
  function smmu_flush_regs (line 64) | void smmu_flush_regs()
  function smmu_flush_all (line 69) | void smmu_flush_all()
  function smmu_init (line 77) | void smmu_init(u32 secmon_base)
  function smmu_enable (line 90) | void smmu_enable()
  function smmu_is_used (line 102) | bool smmu_is_used()
  function smmu_exit (line 107) | void smmu_exit()
  function u32 (line 112) | u32 *smmu_init_domain4(u32 dev_base, u32 asid)
  function u32 (line 126) | u32 *smmu_get_pte(u32 *pdir, u32 iova)
  function smmu_map (line 147) | void smmu_map(u32 *pdir, u32 addr, u32 page, int cnt, u32 attr)
  function u32 (line 159) | u32 *smmu_init_for_tsec()
  function smmu_deinit_for_tsec (line 164) | void smmu_deinit_for_tsec()

FILE: argon-first-stage/src/soc/uart.c
  function uart_init (line 24) | void uart_init(u32 idx, u32 baud)
  function uart_wait_idle (line 46) | void uart_wait_idle(u32 idx, u32 which)
  function uart_send (line 61) | void uart_send(u32 idx, u8 *buf, u32 len)
  function uart_recv (line 73) | void uart_recv(u32 idx, u8 *buf, u32 len)

FILE: argon-first-stage/src/storage/sdmmc.c
  function u32 (line 31) | static inline u32 unstuff_bits(u32 *resp, u32 start, u32 size)
  function _sdmmc_storage_check_result (line 46) | static int _sdmmc_storage_check_result(u32 res)
  function _sdmmc_storage_execute_cmd_type1_ex (line 60) | static int _sdmmc_storage_execute_cmd_type1_ex(sdmmc_storage_t *storage,...
  function _sdmmc_storage_execute_cmd_type1 (line 77) | static int _sdmmc_storage_execute_cmd_type1(sdmmc_storage_t *storage, u3...
  function _sdmmc_storage_go_idle_state (line 83) | static int _sdmmc_storage_go_idle_state(sdmmc_storage_t *storage)
  function _sdmmc_storage_get_cid (line 90) | static int _sdmmc_storage_get_cid(sdmmc_storage_t *storage, void *buf)
  function _sdmmc_storage_select_card (line 100) | static int _sdmmc_storage_select_card(sdmmc_storage_t *storage)
  function _sdmmc_storage_get_csd (line 105) | static int _sdmmc_storage_get_csd(sdmmc_storage_t *storage, void *buf)
  function _sdmmc_storage_set_blocklen (line 115) | static int _sdmmc_storage_set_blocklen(sdmmc_storage_t *storage, u32 blo...
  function _sdmmc_storage_get_status (line 120) | static int _sdmmc_storage_get_status(sdmmc_storage_t *storage, u32 *resp...
  function _sdmmc_storage_check_status (line 125) | static int _sdmmc_storage_check_status(sdmmc_storage_t *storage)
  function _sdmmc_storage_readwrite_ex (line 131) | static int _sdmmc_storage_readwrite_ex(sdmmc_storage_t *storage, u32 *bl...
  function sdmmc_storage_end (line 154) | int sdmmc_storage_end(sdmmc_storage_t *storage)
  function _sdmmc_storage_readwrite (line 162) | static int _sdmmc_storage_readwrite(sdmmc_storage_t *storage, u32 sector...
  function sdmmc_storage_read (line 191) | int sdmmc_storage_read(sdmmc_storage_t *storage, u32 sector, u32 num_sec...
  function sdmmc_storage_write (line 196) | int sdmmc_storage_write(sdmmc_storage_t *storage, u32 sector, u32 num_se...
  function _mmc_storage_get_op_cond_inner (line 205) | static int _mmc_storage_get_op_cond_inner(sdmmc_storage_t *storage, u32 ...
  function _mmc_storage_get_op_cond (line 229) | static int _mmc_storage_get_op_cond(sdmmc_storage_t *storage, u32 power)
  function _mmc_storage_set_relative_addr (line 252) | static int _mmc_storage_set_relative_addr(sdmmc_storage_t *storage)
  function _mmc_storage_parse_cid (line 257) | static void _mmc_storage_parse_cid(sdmmc_storage_t *storage)
  function _mmc_storage_parse_csd (line 300) | static void _mmc_storage_parse_csd(sdmmc_storage_t *storage)
  function _mmc_storage_parse_ext_csd (line 311) | static void _mmc_storage_parse_ext_csd(sdmmc_storage_t *storage, u8 *buf)
  function _mmc_storage_get_ext_csd (line 327) | static int _mmc_storage_get_ext_csd(sdmmc_storage_t *storage, void *buf)
  function _mmc_storage_switch (line 350) | static int _mmc_storage_switch(sdmmc_storage_t *storage, u32 arg)
  function _mmc_storage_switch_buswidth (line 355) | static int _mmc_storage_switch_buswidth(sdmmc_storage_t *storage, u32 bu...
  function _mmc_storage_enable_HS (line 381) | static int _mmc_storage_enable_HS(sdmmc_storage_t *storage, int check)
  function _mmc_storage_enable_HS200 (line 396) | static int _mmc_storage_enable_HS200(sdmmc_storage_t *storage)
  function _mmc_storage_enable_HS400 (line 409) | static int _mmc_storage_enable_HS400(sdmmc_storage_t *storage)
  function _mmc_storage_enable_highspeed (line 427) | static int _mmc_storage_enable_highspeed(sdmmc_storage_t *storage, u32 c...
  function _mmc_storage_enable_bkops (line 451) | static int _mmc_storage_enable_bkops(sdmmc_storage_t *storage)
  function sdmmc_storage_init_mmc (line 458) | int sdmmc_storage_init_mmc(sdmmc_storage_t *storage, sdmmc_t *sdmmc, u32...
  function sdmmc_storage_set_mmc_partition (line 548) | int sdmmc_storage_set_mmc_partition(sdmmc_storage_t *storage, u32 partit...
  function _sd_storage_execute_app_cmd (line 562) | static int _sd_storage_execute_app_cmd(sdmmc_storage_t *storage, u32 exp...
  function _sd_storage_execute_app_cmd_type1 (line 570) | static int _sd_storage_execute_app_cmd_type1(sdmmc_storage_t *storage, u...
  function _sd_storage_send_if_cond (line 577) | static int _sd_storage_send_if_cond(sdmmc_storage_t *storage)
  function _sd_storage_get_op_cond_once (line 591) | static int _sd_storage_get_op_cond_once(sdmmc_storage_t *storage, u32 *c...
  function _sd_storage_get_op_cond (line 608) | static int _sd_storage_get_op_cond(sdmmc_storage_t *storage, int is_vers...
  function _sd_storage_get_rca (line 646) | static int _sd_storage_get_rca(sdmmc_storage_t *storage)
  function _sd_storage_parse_scr (line 676) | static void _sd_storage_parse_scr(sdmmc_storage_t *storage)
  function _sd_storage_get_scr (line 693) | int _sd_storage_get_scr(sdmmc_storage_t *storage, u8 *buf)
  function _sd_storage_switch_get (line 725) | int _sd_storage_switch_get(sdmmc_storage_t *storage, void *buf)
  function _sd_storage_switch (line 746) | int _sd_storage_switch(sdmmc_storage_t *storage, void *buf, int mode, in...
  function _sd_storage_set_current_limit (line 770) | void _sd_storage_set_current_limit(sdmmc_storage_t *storage, u8 *buf)
  function _sd_storage_enable_highspeed (line 801) | int _sd_storage_enable_highspeed(sdmmc_storage_t *storage, u32 hs_type, ...
  function _sd_storage_enable_highspeed_low_volt (line 822) | int _sd_storage_enable_highspeed_low_volt(sdmmc_storage_t *storage, u32 ...
  function _sd_storage_enable_highspeed_high_volt (line 878) | int _sd_storage_enable_highspeed_high_volt(sdmmc_storage_t *storage, u8 ...
  function _sd_storage_parse_ssr (line 893) | static void _sd_storage_parse_ssr(sdmmc_storage_t *storage)
  function _sd_storage_get_ssr (line 937) | static int _sd_storage_get_ssr(sdmmc_storage_t *storage, u8 *buf)
  function _sd_storage_parse_cid (line 975) | static void _sd_storage_parse_cid(sdmmc_storage_t *storage)
  function _sd_storage_parse_csd (line 993) | static void _sd_storage_parse_csd(sdmmc_storage_t *storage)
  function sdmmc_storage_init_sd (line 1014) | int sdmmc_storage_init_sd(sdmmc_storage_t *storage, sdmmc_t *sdmmc, u32 ...
  function _gc_storage_custom_cmd (line 1153) | int _gc_storage_custom_cmd(sdmmc_storage_t *storage, void *buf)
  function sdmmc_storage_init_gc (line 1180) | int sdmmc_storage_init_gc(sdmmc_storage_t *storage, sdmmc_t *sdmmc)

FILE: argon-first-stage/src/storage/sdmmc_driver.c
  function sdmmc_get_voltage (line 44) | int sdmmc_get_voltage(sdmmc_t *sdmmc)
  function _sdmmc_set_voltage (line 56) | static int _sdmmc_set_voltage(sdmmc_t *sdmmc, u32 power)
  function u32 (line 86) | u32 sdmmc_get_bus_width(sdmmc_t *sdmmc)
  function sdmmc_set_bus_width (line 96) | void sdmmc_set_bus_width(sdmmc_t *sdmmc, u32 bus_width)
  function sdmmc_get_venclkctl (line 109) | void sdmmc_get_venclkctl(sdmmc_t *sdmmc)
  function _sdmmc_config_ven_ceata_clk (line 115) | static int _sdmmc_config_ven_ceata_clk(sdmmc_t *sdmmc, u32 id)
  function _sdmmc_get_clkcon (line 138) | static int _sdmmc_get_clkcon(sdmmc_t *sdmmc)
  function _sdmmc_pad_config_fallback (line 143) | static void _sdmmc_pad_config_fallback(sdmmc_t *sdmmc, u32 power)
  function _sdmmc_wait_type4 (line 163) | static int _sdmmc_wait_type4(sdmmc_t *sdmmc)
  function sdmmc_setup_clock (line 202) | int sdmmc_setup_clock(sdmmc_t *sdmmc, u32 type)
  function _sdmmc_sd_clock_enable (line 276) | static void _sdmmc_sd_clock_enable(sdmmc_t *sdmmc)
  function _sdmmc_sd_clock_disable (line 286) | static void _sdmmc_sd_clock_disable(sdmmc_t *sdmmc)
  function sdmmc_sd_clock_ctrl (line 292) | void sdmmc_sd_clock_ctrl(sdmmc_t *sdmmc, int no_sd)
  function _sdmmc_cache_rsp (line 307) | static int _sdmmc_cache_rsp(sdmmc_t *sdmmc, u32 *rsp, u32 size, u32 type)
  function sdmmc_get_rsp (line 355) | int sdmmc_get_rsp(sdmmc_t *sdmmc, u32 *rsp, u32 size, u32 type)
  function _sdmmc_reset (line 386) | static void _sdmmc_reset(sdmmc_t *sdmmc)
  function _sdmmc_wait_prnsts_type0 (line 396) | static int _sdmmc_wait_prnsts_type0(sdmmc_t *sdmmc, u32 wait_dat)
  function _sdmmc_wait_prnsts_type1 (line 422) | static int _sdmmc_wait_prnsts_type1(sdmmc_t *sdmmc)
  function _sdmmc_setup_read_small_block (line 437) | static int _sdmmc_setup_read_small_block(sdmmc_t *sdmmc)
  function _sdmmc_parse_cmdbuf (line 456) | static int _sdmmc_parse_cmdbuf(sdmmc_t *sdmmc, sdmmc_cmd_t *cmd, bool is...
  function _sdmmc_parse_cmd_48 (line 496) | static void _sdmmc_parse_cmd_48(sdmmc_t *sdmmc, u32 cmd)
  function _sdmmc_config_tuning_once (line 506) | static int _sdmmc_config_tuning_once(sdmmc_t *sdmmc, u32 cmd)
  function sdmmc_config_tuning (line 543) | int sdmmc_config_tuning(sdmmc_t *sdmmc, u32 type, u32 cmd)
  function _sdmmc_enable_internal_clock (line 583) | static int _sdmmc_enable_internal_clock(sdmmc_t *sdmmc)
  function _sdmmc_autocal_config_offset (line 609) | static int _sdmmc_autocal_config_offset(sdmmc_t *sdmmc, u32 power)
  function _sdmmc_autocal_execute (line 644) | static void _sdmmc_autocal_execute(sdmmc_t *sdmmc, u32 power)
  function _sdmmc_enable_interrupts (line 682) | static void _sdmmc_enable_interrupts(sdmmc_t *sdmmc)
  function _sdmmc_mask_interrupts (line 690) | static void _sdmmc_mask_interrupts(sdmmc_t *sdmmc)
  function _sdmmc_check_mask_interrupt (line 696) | static int _sdmmc_check_mask_interrupt(sdmmc_t *sdmmc, u16 *pout, u16 mask)
  function _sdmmc_wait_request (line 721) | static int _sdmmc_wait_request(sdmmc_t *sdmmc)
  function _sdmmc_stop_transmission_inner (line 741) | static int _sdmmc_stop_transmission_inner(sdmmc_t *sdmmc, u32 *rsp)
  function sdmmc_stop_transmission (line 764) | int sdmmc_stop_transmission(sdmmc_t *sdmmc, u32 *rsp)
  function _sdmmc_config_dma (line 786) | static int _sdmmc_config_dma(sdmmc_t *sdmmc, u32 *blkcnt_out, sdmmc_req_...
  function _sdmmc_update_dma (line 826) | static int _sdmmc_update_dma(sdmmc_t *sdmmc)
  function _sdmmc_execute_cmd_inner (line 868) | static int _sdmmc_execute_cmd_inner(sdmmc_t *sdmmc, sdmmc_cmd_t *cmd, sd...
  function _sdmmc_config_sdmmc1 (line 923) | static int _sdmmc_config_sdmmc1()
  function sdmmc_init (line 979) | int sdmmc_init(sdmmc_t *sdmmc, u32 id, u32 power, u32 bus_width, u32 typ...
  function sdmmc_end (line 1032) | void sdmmc_end(sdmmc_t *sdmmc)
  function sdmmc_init_cmd (line 1054) | void sdmmc_init_cmd(sdmmc_cmd_t *cmdbuf, u16 cmd, u32 arg, u32 rsp_type,...
  function sdmmc_execute_cmd (line 1062) | int sdmmc_execute_cmd(sdmmc_t *sdmmc, sdmmc_cmd_t *cmd, sdmmc_req_t *req...
  function sdmmc_enable_low_voltage (line 1088) | int sdmmc_enable_low_voltage(sdmmc_t *sdmmc)

FILE: argon-first-stage/src/utils/btn.c
  function u32 (line 25) | u32 btn_read()
  function u32 (line 37) | u32 btn_wait()
  function u32 (line 62) | u32 btn_wait_timeout(u32 time_ms, u32 mask)

FILE: argon-first-stage/src/utils/fs_utils.c
  function sd_mount (line 26) | bool sd_mount()
  function sd_unmount (line 53) | void sd_unmount()
  function sd_save_to_file (line 91) | int sd_save_to_file(void *buf, u32 size, const char *filename)
  function sd_file_exists (line 109) | bool sd_file_exists(const char* filename)
  function flipVertically (line 123) | void flipVertically(unsigned char* pixels_buffer, const unsigned int wid...
  function _s_putc (line 147) | static void _s_putc(char c)
  function _s_puts (line 153) | static void _s_puts(const char *s)
  function _s_putn (line 159) | static void _s_putn(u32 v, int base, char fill, int fcnt)
  function _s_putp (line 190) | static void _s_putp(u32 *v, int base, char fill, int fcnt)
  function s_printf (line 195) | void s_printf(char *out_buf, const char *fmt, ...)

FILE: argon-first-stage/src/utils/util.c
  function u32 (line 38) | u32 get_tmr_s()
  function u32 (line 43) | u32 get_tmr_ms()
  function u32 (line 50) | u32 get_tmr_us()
  function msleep (line 55) | void msleep(u32 milliseconds)
  function usleep (line 62) | void usleep(u32 microseconds)
  function exec_cfg (line 70) | void exec_cfg(u32 *base, const cfg_op_t *ops, u32 num_ops)
  function u32 (line 77) | u32 crc32c(const void *buf, u32 len)
  function u32 (line 90) | u32 memcmp32sparse(const u32 *buf1, const u32 *buf2, u32 len)
  function wait_for_button_and_reboot (line 118) | __attribute__((noreturn)) void wait_for_button_and_reboot(void) {
  function reboot_normal (line 128) | void reboot_normal()
  function reboot_rcm (line 138) | void reboot_rcm()
  function power_off (line 150) | void power_off()
  function panic (line 206) | void panic(u32 val)

FILE: argon-nx-gui/include/core/argon-ctxt.h
  type argon_ctxt_t (line 7) | typedef struct

FILE: argon-nx-gui/include/core/custom-gui.h
  type custom_gui_t (line 24) | typedef struct {

FILE: argon-nx-gui/include/gfx/gfx.h
  type gfx_ctxt_t (line 36) | typedef struct _gfx_ctxt_t
  type gfx_con_t (line 45) | typedef struct _gfx_con_t
  type bmp_data_t (line 60) | typedef struct

FILE: argon-nx-gui/include/ianos/ianos.h
  type elfType_t (line 24) | typedef enum

FILE: argon-nx-gui/include/libs/compr/blz.h
  type blz_footer (line 22) | typedef struct _blz_footer

FILE: argon-nx-gui/include/libs/elfload/elf.h
  type Elf_Byte (line 34) | typedef uint8_t Elf_Byte;
  type Elf32_Addr (line 36) | typedef uint32_t Elf32_Addr;
  type Elf32_Off (line 37) | typedef uint32_t Elf32_Off;
  type Elf32_Sword (line 38) | typedef int32_t Elf32_Sword;
  type Elf32_Word (line 39) | typedef uint32_t Elf32_Word;
  type Elf32_Half (line 40) | typedef uint16_t Elf32_Half;
  type Elf64_Addr (line 42) | typedef uint64_t Elf64_Addr;
  type Elf64_Off (line 43) | typedef uint64_t Elf64_Off;
  type Elf64_Shalf (line 44) | typedef int32_t Elf64_Shalf;
  type Elf64_Sword (line 47) | typedef int64_t Elf64_Sword;
  type Elf64_Word (line 48) | typedef uint64_t Elf64_Word;
  type Elf64_Sword (line 50) | typedef int32_t Elf64_Sword;
  type Elf64_Word (line 51) | typedef uint32_t Elf64_Word;
  type Elf64_Sxword (line 54) | typedef int64_t Elf64_Sxword;
  type Elf64_Xword (line 55) | typedef uint64_t Elf64_Xword;
  type Elf64_Half (line 57) | typedef uint32_t Elf64_Half;
  type Elf64_Quarter (line 58) | typedef uint16_t Elf64_Quarter;
  type Elf32_Ehdr (line 120) | typedef struct
  type Elf64_Ehdr (line 139) | typedef struct
  type Elf32_Shdr (line 205) | typedef struct
  type Elf64_Shdr (line 220) | typedef struct
  type Elf32_Sym (line 294) | typedef struct elf32_sym
  type Elf64_Sym (line 304) | typedef struct
  type Elf32_Rel (line 345) | typedef struct
  type Elf32_Rela (line 352) | typedef struct
  type Elf64_Rel (line 364) | typedef struct
  type Elf64_Rela (line 370) | typedef struct
  type Elf32_Phdr (line 396) | typedef struct
  type Elf64_Phdr (line 408) | typedef struct
  type Elf32_Dyn (line 445) | typedef struct
  type Elf64_Dyn (line 454) | typedef struct
  type Elf32_Note (line 522) | typedef struct
  type Elf64_Note (line 529) | typedef struct

FILE: argon-nx-gui/include/libs/elfload/elfload.h
  type el_status (line 39) | typedef enum
  type el_ctx (line 57) | typedef struct el_ctx
  type el_relocinfo (line 114) | typedef struct

FILE: argon-nx-gui/include/libs/fatfs/diskio.h
  type BYTE (line 15) | typedef BYTE	DSTATUS;
  type DRESULT (line 18) | typedef enum {

FILE: argon-nx-gui/include/libs/fatfs/ff.h
  type PARTITION (line 40) | typedef struct {
  type WCHAR (line 61) | typedef WCHAR TCHAR;
  type TCHAR (line 65) | typedef char TCHAR;
  type DWORD (line 69) | typedef DWORD TCHAR;
  type TCHAR (line 75) | typedef char TCHAR;
  type QWORD (line 87) | typedef QWORD FSIZE_t;
  type DWORD (line 89) | typedef DWORD FSIZE_t;
  type FATFS (line 96) | typedef struct {
  type FFOBJID (line 146) | typedef struct {
  type FIL (line 169) | typedef struct {
  type DIR (line 192) | typedef struct {
  type FILINFO (line 211) | typedef struct {
  type FRESULT (line 228) | typedef enum {

FILE: argon-nx-gui/include/libs/lvgl/lv_conf.h
  type lv_coord_t (line 48) | typedef int16_t lv_coord_t;

FILE: argon-nx-gui/include/libs/lvgl/lv_core/lv_disp.h
  function lv_obj_t (line 97) | static inline lv_obj_t * lv_scr_act(void)
  function lv_obj_t (line 106) | static inline lv_obj_t * lv_layer_top(void)
  function lv_obj_t (line 115) | static inline lv_obj_t * lv_layer_sys(void)
  function lv_scr_load (line 120) | static inline void lv_scr_load(lv_obj_t * scr)

FILE: argon-nx-gui/include/libs/lvgl/lv_core/lv_group.h
  type lv_key_t (line 44) | typedef uint8_t lv_key_t;
  type _lv_group_t (line 50) | struct _lv_group_t
  type _lv_group_t (line 52) | struct _lv_group_t
  type _lv_group_t (line 53) | struct _lv_group_t
  type lv_group_t (line 59) | typedef struct _lv_group_t
  type lv_group_refocus_policy_t (line 83) | typedef uint8_t lv_group_refocus_policy_t;

FILE: argon-nx-gui/include/libs/lvgl/lv_core/lv_obj.h
  type _lv_obj_t (line 56) | struct _lv_obj_t
  type lv_design_mode_t (line 65) | typedef uint8_t lv_design_mode_t;
  type _lv_obj_t (line 71) | struct _lv_obj_t
  type lv_event_t (line 96) | typedef uint8_t lv_event_t;
  type _lv_obj_t (line 103) | struct _lv_obj_t
  type lv_signal_t (line 133) | typedef uint8_t lv_signal_t;
  type lv_res_t (line 135) | typedef lv_res_t (*lv_signal_cb_t)(struct _lv_obj_t * obj, lv_signal_t s...
  type lv_align_t (line 161) | typedef uint8_t lv_align_t;
  type lv_reailgn_t (line 164) | typedef struct
  type lv_drag_dir_t (line 182) | typedef uint8_t lv_drag_dir_t;
  type lv_obj_t (line 184) | typedef struct _lv_obj_t
  type lv_protect_t (line 250) | typedef uint8_t lv_protect_t;
  type lv_obj_type_t (line 253) | typedef struct
  type _lv_obj_t (line 294) | struct _lv_obj_t

FILE: argon-nx-gui/include/libs/lvgl/lv_core/lv_style.h
  type lv_border_part_t (line 41) | typedef uint8_t lv_border_part_t;
  type lv_shadow_type_t (line 48) | typedef uint8_t lv_shadow_type_t;
  type lv_style_t (line 57) | typedef struct
  type lv_style_anim_dsc_t (line 126) | typedef struct
  function lv_style_anim_set_time (line 189) | static inline void lv_style_anim_set_time(lv_anim_t * a, uint16_t durati...
  function lv_style_anim_set_ready_cb (line 199) | static inline void lv_style_anim_set_ready_cb(lv_anim_t * a, lv_anim_rea...
  function lv_style_anim_set_playback (line 210) | static inline void lv_style_anim_set_playback(lv_anim_t * a, uint16_t wa...
  function lv_style_anim_clear_playback (line 219) | static inline void lv_style_anim_clear_playback(lv_anim_t * a)
  function lv_style_anim_set_repeat (line 229) | static inline void lv_style_anim_set_repeat(lv_anim_t * a, uint16_t wait...
  function lv_style_anim_clear_repeat (line 238) | static inline void lv_style_anim_clear_repeat(lv_anim_t * a)
  function lv_style_anim_create (line 247) | static inline void lv_style_anim_create(lv_anim_t * a)

FILE: argon-nx-gui/include/libs/lvgl/lv_draw/lv_draw_label.h
  type lv_draw_label_hint_t (line 31) | typedef struct {

FILE: argon-nx-gui/include/libs/lvgl/lv_draw/lv_img_cache.h
  type lv_img_cache_entry_t (line 31) | typedef struct

FILE: argon-nx-gui/include/libs/lvgl/lv_draw/lv_img_decoder.h
  type lv_img_src_t (line 53) | typedef uint8_t lv_img_src_t;
  type lv_img_header_t (line 57) | typedef struct
  type lv_img_cf_t (line 116) | typedef uint8_t lv_img_cf_t;
  type lv_img_dsc_t (line 120) | typedef struct
  type _lv_img_decoder (line 129) | struct _lv_img_decoder
  type _lv_img_decoder_dsc (line 130) | struct _lv_img_decoder_dsc
  type lv_res_t (line 139) | typedef lv_res_t (*lv_img_decoder_info_f_t)(struct _lv_img_decoder * dec...
  type lv_res_t (line 147) | typedef lv_res_t (*lv_img_decoder_open_f_t)(struct _lv_img_decoder * dec...
  type lv_res_t (line 160) | typedef lv_res_t (*lv_img_decoder_read_line_f_t)(struct _lv_img_decoder ...
  type _lv_img_decoder (line 168) | struct _lv_img_decoder
  type _lv_img_decoder_dsc (line 168) | struct _lv_img_decoder_dsc
  type lv_img_decoder_t (line 170) | typedef struct _lv_img_decoder
  type lv_img_decoder_dsc_t (line 183) | typedef struct _lv_img_decoder_dsc

FILE: argon-nx-gui/include/libs/lvgl/lv_font/lv_font.h
  type lv_font_glyph_dsc_t (line 46) | typedef struct
  type lv_font_t (line 57) | typedef struct _lv_font_struct
  function lv_font_get_line_height (line 110) | static inline uint8_t lv_font_get_line_height(const lv_font_t * font_p)

FILE: argon-nx-gui/include/libs/lvgl/lv_font/lv_font_fmt_txt.h
  type lv_font_fmt_txt_glyph_dsc_t (line 36) | typedef struct
  type lv_font_fmt_txt_cmap_type_t (line 60) | typedef uint8_t lv_font_fmt_txt_cmap_type_t;
  type lv_font_fmt_txt_cmap_t (line 67) | typedef struct {
  type lv_font_fmt_txt_kern_pair_t (line 120) | typedef struct {
  type lv_font_fmt_txt_kern_classes_t (line 135) | typedef struct {
  type lv_font_fmt_txt_bitmap_format_t (line 153) | typedef enum {
  type lv_font_fmt_txt_dsc_t (line 160) | typedef struct {

FILE: argon-nx-gui/include/libs/lvgl/lv_hal/lv_hal_disp.h
  type _disp_t (line 41) | struct _disp_t
  type _disp_drv_t (line 42) | struct _disp_drv_t
  type lv_disp_buf_t (line 47) | typedef struct
  type lv_disp_drv_t (line 62) | typedef struct _disp_drv_t
  type _lv_obj_t (line 121) | struct _lv_obj_t
  type lv_disp_t (line 127) | typedef struct _disp_t

FILE: argon-nx-gui/include/libs/lvgl/lv_hal/lv_hal_indev.h
  type _lv_obj_t (line 37) | struct _lv_obj_t
  type _disp_t (line 38) | struct _disp_t
  type _lv_indev_t (line 39) | struct _lv_indev_t
  type _lv_indev_drv_t (line 40) | struct _lv_indev_drv_t
  type lv_indev_type_t (line 51) | typedef uint8_t lv_indev_type_t;
  type lv_indev_state_t (line 55) | typedef uint8_t lv_indev_state_t;
  type lv_indev_data_t (line 58) | typedef struct
  type lv_indev_drv_t (line 69) | typedef struct _lv_indev_drv_t
  type lv_indev_proc_t (line 110) | typedef struct _lv_indev_proc_t
  type _lv_obj_t (line 148) | struct _lv_obj_t
  type _lv_group_t (line 149) | struct _lv_group_t
  type lv_indev_t (line 153) | typedef struct _lv_indev_t

FILE: argon-nx-gui/include/libs/lvgl/lv_misc/lv_anim.h
  type lv_anim_enable_t (line 40) | typedef uint8_t lv_anim_enable_t;
  type lv_coord_t (line 43) | typedef lv_coord_t lv_anim_value_t;
  type _lv_anim_t (line 47) | struct _lv_anim_t
  type _lv_anim_t (line 59) | struct _lv_anim_t
  type lv_anim_value_t (line 62) | typedef lv_anim_value_t (*lv_anim_path_cb_t)(const struct _lv_anim_t *);
  type _lv_anim_t (line 65) | struct _lv_anim_t
  type lv_anim_t (line 68) | typedef struct _lv_anim_t
  function lv_anim_set_exec_cb (line 120) | static inline void lv_anim_set_exec_cb(lv_anim_t * a, void * var, lv_ani...
  function lv_anim_set_time (line 132) | static inline void lv_anim_set_time(lv_anim_t * a, uint16_t duration, ui...
  function lv_anim_set_values (line 144) | static inline void lv_anim_set_values(lv_anim_t * a, lv_anim_value_t sta...
  function lv_anim_set_custom_exec_cb (line 158) | static inline void lv_anim_set_custom_exec_cb(lv_anim_t * a, lv_anim_cus...
  function lv_anim_set_path_cb (line 170) | static inline void lv_anim_set_path_cb(lv_anim_t * a, lv_anim_path_cb_t ...
  function lv_anim_set_ready_cb (line 180) | static inline void lv_anim_set_ready_cb(lv_anim_t * a, lv_anim_ready_cb_...
  function lv_anim_set_playback (line 190) | static inline void lv_anim_set_playback(lv_anim_t * a, uint16_t wait_time)
  function lv_anim_clear_playback (line 200) | static inline void lv_anim_clear_playback(lv_anim_t * a)
  function lv_anim_set_repeat (line 210) | static inline void lv_anim_set_repeat(lv_anim_t * a, uint16_t wait_time)
  function lv_anim_clear_repeat (line 220) | static inline void lv_anim_clear_repeat(lv_anim_t * a)
  function lv_anim_custom_del (line 251) | static inline bool lv_anim_custom_del(lv_anim_t * a, lv_anim_custom_exec...

FILE: argon-nx-gui/include/libs/lvgl/lv_misc/lv_area.h
  type lv_point_t (line 41) | typedef struct
  type lv_area_t (line 48) | typedef struct
  function lv_area_copy (line 75) | inline static void lv_area_copy(lv_area_t * dest, const lv_area_t * src)
  function lv_coord_t (line 85) | static inline lv_coord_t lv_area_get_width(const lv_area_t * area_p)
  function lv_coord_t (line 95) | static inline lv_coord_t lv_area_get_height(const lv_area_t * area_p)

FILE: argon-nx-gui/include/libs/lvgl/lv_misc/lv_async.h
  type lv_async_info_t (line 33) | typedef struct _lv_async_info_t {
  type _lv_obj_t (line 38) | struct _lv_obj_t

FILE: argon-nx-gui/include/libs/lvgl/lv_misc/lv_color.h
  type lv_color1_t (line 97) | typedef union
  type lv_color8_t (line 105) | typedef union
  type lv_color16_t (line 116) | typedef union
  type lv_color32_t (line 134) | typedef union
  type lv_color_int_t (line 147) | typedef uint8_t lv_color_int_t;
  type lv_color1_t (line 148) | typedef lv_color1_t lv_color_t;
  type lv_color_int_t (line 150) | typedef uint8_t lv_color_int_t;
  type lv_color8_t (line 151) | typedef lv_color8_t lv_color_t;
  type lv_color_int_t (line 153) | typedef uint16_t lv_color_int_t;
  type lv_color16_t (line 154) | typedef lv_color16_t lv_color_t;
  type lv_color_int_t (line 156) | typedef uint32_t lv_color_int_t;
  type lv_color32_t (line 157) | typedef lv_color32_t lv_color_t;
  type lv_opa_t (line 162) | typedef uint8_t lv_opa_t;
  type lv_color_hsv_t (line 164) | typedef struct
  function lv_color_to8 (line 219) | static inline uint8_t lv_color_to8(lv_color_t color)
  function lv_color_to16 (line 252) | static inline uint16_t lv_color_to16(lv_color_t color)
  function lv_color_to32 (line 291) | static inline uint32_t lv_color_to32(lv_color_t color)
  function lv_color_t (line 326) | static inline lv_color_t lv_color_mix(lv_color_t c1, lv_color_t c2, uint...
  function lv_color_brightness (line 359) | static inline uint8_t lv_color_brightness(lv_color_t color)
  function lv_color_t (line 370) | static inline lv_color_t lv_color_make(int r8, int g8, int b8)
  function lv_color_t (line 378) | static inline lv_color_t lv_color_make(uint8_t r8, int g8, int b8)
  function lv_color_t (line 389) | static inline lv_color_t lv_color_make(uint8_t r8, uint8_t g8, uint8_t b8)
  function lv_color_t (line 399) | static inline lv_color_t lv_color_make(uint8_t r8, uint8_t g8, uint8_t b8)
  function lv_color_t (line 411) | static inline lv_color_t lv_color_make(uint8_t r8, uint8_t g8, uint8_t b8)
  function lv_color_t (line 422) | static inline lv_color_t lv_color_hex(uint32_t c)
  function lv_color_t (line 427) | static inline lv_color_t lv_color_hex3(uint32_t c)

FILE: argon-nx-gui/include/libs/lvgl/lv_misc/lv_fs.h
  type lv_fs_res_t (line 54) | typedef uint8_t lv_fs_res_t;
  type lv_fs_mode_t (line 63) | typedef uint8_t lv_fs_mode_t;
  type lv_fs_drv_t (line 65) | typedef struct _lv_fs_drv_t
  type lv_fs_file_t (line 93) | typedef struct
  type lv_fs_dir_t (line 99) | typedef struct

FILE: argon-nx-gui/include/libs/lvgl/lv_misc/lv_ll.h
  type lv_ll_node_t (line 30) | typedef uint8_t lv_ll_node_t;
  type lv_ll_t (line 33) | typedef struct

FILE: argon-nx-gui/include/libs/lvgl/lv_misc/lv_log.h
  type lv_log_level_t (line 36) | typedef int8_t lv_log_level_t;

FILE: argon-nx-gui/include/libs/lvgl/lv_misc/lv_mem.h
  type lv_mem_monitor_t (line 48) | typedef struct

FILE: argon-nx-gui/include/libs/lvgl/lv_misc/lv_task.h
  type _lv_task_t (line 38) | struct _lv_task_t
  type _lv_task_t (line 43) | struct _lv_task_t
  type lv_task_prio_t (line 57) | typedef uint8_t lv_task_prio_t;
  type lv_task_t (line 62) | typedef struct _lv_task_t

FILE: argon-nx-gui/include/libs/lvgl/lv_misc/lv_txt.h
  type lv_txt_flag_t (line 48) | typedef uint8_t lv_txt_flag_t;
  type lv_txt_cmd_state_t (line 57) | typedef uint8_t lv_txt_cmd_state_t;

FILE: argon-nx-gui/include/libs/lvgl/lv_misc/lv_types.h
  type lv_res_t (line 33) | typedef uint8_t lv_res_t;
  type lv_uintptr_t (line 35) | typedef unsigned long int lv_uintptr_t;

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_arc.h
  type lv_arc_ext_t (line 34) | typedef struct
  type lv_arc_style_t (line 45) | typedef uint8_t lv_arc_style_t;

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_bar.h
  type lv_bar_ext_t (line 51) | typedef struct
  type lv_bar_style_t (line 74) | typedef uint8_t lv_bar_style_t;

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_btn.h
  type lv_btn_state_t (line 61) | typedef uint8_t lv_btn_state_t;
  type lv_btn_ext_t (line 64) | typedef struct
  type lv_btn_style_t (line 108) | typedef uint8_t lv_btn_style_t;
  function lv_btn_set_layout (line 151) | static inline void lv_btn_set_layout(lv_obj_t * btn, lv_layout_t layout)
  function lv_btn_set_fit4 (line 165) | static inline void lv_btn_set_fit4(lv_obj_t * btn, lv_fit_t left, lv_fit...
  function lv_btn_set_fit2 (line 177) | static inline void lv_btn_set_fit2(lv_obj_t * btn, lv_fit_t hor, lv_fit_...
  function lv_btn_set_fit (line 188) | static inline void lv_btn_set_fit(lv_obj_t * btn, lv_fit_t fit)
  function lv_layout_t (line 245) | static inline lv_layout_t lv_btn_get_layout(const lv_obj_t * btn)
  function lv_fit_t (line 255) | static inline lv_fit_t lv_btn_get_fit_left(const lv_obj_t * btn)
  function lv_fit_t (line 265) | static inline lv_fit_t lv_btn_get_fit_right(const lv_obj_t * btn)
  function lv_fit_t (line 275) | static inline lv_fit_t lv_btn_get_fit_top(const lv_obj_t * btn)
  function lv_fit_t (line 285) | static inline lv_fit_t lv_btn_get_fit_bottom(const lv_obj_t * btn)

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_btnm.h
  type lv_btnm_ctrl_t (line 47) | typedef uint16_t lv_btnm_ctrl_t;
  type lv_btnm_ext_t (line 50) | typedef struct
  type lv_btnm_style_t (line 73) | typedef uint8_t lv_btnm_style_t;

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_calendar.h
  type lv_calendar_date_t (line 37) | typedef struct
  type lv_calendar_ext_t (line 45) | typedef struct
  type lv_calendar_style_t (line 80) | typedef uint8_t lv_calendar_style_t;

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_canvas.h
  type lv_canvas_ext_t (line 35) | typedef struct
  type lv_canvas_style_t (line 46) | typedef uint8_t lv_canvas_style_t;

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_cb.h
  type lv_cb_ext_t (line 46) | typedef struct
  type lv_cb_style_t (line 63) | typedef uint8_t lv_cb_style_t;
  function lv_cb_set_checked (line 102) | static inline void lv_cb_set_checked(lv_obj_t * cb, bool checked)
  function lv_cb_set_inactive (line 111) | static inline void lv_cb_set_inactive(lv_obj_t * cb)
  function lv_cb_is_checked (line 140) | static inline bool lv_cb_is_checked(const lv_obj_t * cb)
  function lv_cb_is_inactive (line 150) | static inline bool lv_cb_is_inactive(const lv_obj_t * cb)

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_chart.h
  type lv_chart_type_t (line 50) | typedef uint8_t lv_chart_type_t;
  type lv_chart_update_mode_t (line 57) | typedef uint8_t lv_chart_update_mode_t;
  type lv_chart_series_t (line 59) | typedef struct
  type lv_chart_axis_options_t (line 71) | typedef uint8_t lv_chart_axis_options_t;
  type lv_chart_axis_cfg_t (line 73) | typedef struct
  type lv_chart_ext_t (line 83) | typedef struct
  type lv_chart_style_t (line 110) | typedef uint8_t lv_chart_style_t;
  function lv_chart_set_style (line 236) | static inline void lv_chart_set_style(lv_obj_t * chart, lv_chart_style_t...
  function lv_style_t (line 336) | static inline const lv_style_t * lv_chart_get_style(const lv_obj_t * cha...

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_cont.h
  type lv_layout_t (line 48) | typedef uint8_t lv_layout_t;
  type lv_fit_t (line 61) | typedef uint8_t lv_fit_t;
  type lv_cont_ext_t (line 63) | typedef struct
  type lv_cont_style_t (line 78) | typedef uint8_t lv_cont_style_t;
  function lv_cont_set_fit2 (line 121) | static inline void lv_cont_set_fit2(lv_obj_t * cont, lv_fit_t hor, lv_fi...
  function lv_cont_set_fit (line 132) | static inline void lv_cont_set_fit(lv_obj_t * cont, lv_fit_t fit)
  function lv_cont_set_style (line 143) | static inline void lv_cont_set_style(lv_obj_t * cont, lv_cont_style_t ty...
  function lv_style_t (line 194) | static inline const lv_style_t * lv_cont_get_style(const lv_obj_t * cont...

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_ddlist.h
  type lv_ddlist_ext_t (line 45) | typedef struct
  type lv_ddlist_style_t (line 66) | typedef uint8_t lv_ddlist_style_t;
  function lv_ddlist_set_sb_mode (line 132) | static inline void lv_ddlist_set_sb_mode(lv_obj_t * ddlist, lv_sb_mode_t...
  function lv_ddlist_set_anim_time (line 141) | static inline void lv_ddlist_set_anim_time(lv_obj_t * ddlist, uint16_t a...
  function lv_sb_mode_t (line 211) | static inline lv_sb_mode_t lv_ddlist_get_sb_mode(const lv_obj_t * ddlist)
  function lv_ddlist_get_anim_time (line 221) | static inline uint16_t lv_ddlist_get_anim_time(const lv_obj_t * ddlist)

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_gauge.h
  type lv_gauge_ext_t (line 43) | typedef struct
  type lv_gauge_style_t (line 57) | typedef uint8_t lv_gauge_style_t;
  function lv_gauge_set_range (line 97) | static inline void lv_gauge_set_range(lv_obj_t * gauge, int16_t min, int...
  function lv_gauge_set_critical_value (line 107) | static inline void lv_gauge_set_critical_value(lv_obj_t * gauge, int16_t...
  function lv_gauge_set_style (line 129) | static inline void lv_gauge_set_style(lv_obj_t * gauge, lv_gauge_style_t...
  function lv_gauge_get_min_value (line 159) | static inline int16_t lv_gauge_get_min_value(const lv_obj_t * lmeter)
  function lv_gauge_get_max_value (line 169) | static inline int16_t lv_gauge_get_max_value(const lv_obj_t * lmeter)
  function lv_gauge_get_critical_value (line 179) | static inline int16_t lv_gauge_get_critical_value(const lv_obj_t * gauge)
  function lv_gauge_get_line_count (line 196) | static inline uint8_t lv_gauge_get_line_count(const lv_obj_t * gauge)
  function lv_gauge_get_scale_angle (line 206) | static inline uint16_t lv_gauge_get_scale_angle(const lv_obj_t * gauge)
  function lv_style_t (line 217) | static inline const lv_style_t * lv_gauge_get_style(const lv_obj_t * gau...

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_img.h
  type lv_img_ext_t (line 37) | typedef struct
  type lv_img_style_t (line 54) | typedef uint8_t lv_img_style_t;
  function lv_img_set_style (line 109) | static inline void lv_img_set_style(lv_obj_t * img, lv_img_style_t type,...
  function lv_style_t (line 160) | static inline const lv_style_t * lv_img_get_style(const lv_obj_t * img, ...

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_imgbtn.h
  type lv_imgbtn_ext_t (line 41) | typedef struct
  type lv_imgbtn_style_t (line 63) | typedef uint8_t lv_imgbtn_style_t;
  function lv_imgbtn_set_toggle (line 116) | static inline void lv_imgbtn_set_toggle(lv_obj_t * imgbtn, bool tgl)
  function lv_imgbtn_set_state (line 126) | static inline void lv_imgbtn_set_state(lv_obj_t * imgbtn, lv_btn_state_t...
  function lv_imgbtn_toggle (line 135) | static inline void lv_imgbtn_toggle(lv_obj_t * imgbtn)
  function lv_btn_state_t (line 193) | static inline lv_btn_state_t lv_imgbtn_get_state(const lv_obj_t * imgbtn)
  function lv_imgbtn_get_toggle (line 203) | static inline bool lv_imgbtn_get_toggle(const lv_obj_t * imgbtn)

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_kb.h
  type lv_kb_mode_t (line 49) | typedef uint8_t lv_kb_mode_t;
  type lv_kb_ext_t (line 52) | typedef struct
  type lv_kb_style_t (line 69) | typedef uint8_t lv_kb_style_t;
  function lv_kb_set_map (line 114) | static inline void lv_kb_set_map(lv_obj_t * kb, const char * map[])
  function lv_kb_set_ctrl_map (line 127) | static inline void lv_kb_set_ctrl_map(lv_obj_t * kb, const lv_btnm_ctrl_...

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_label.h
  type lv_label_long_mode_t (line 51) | typedef uint8_t lv_label_long_mode_t;
  type lv_label_align_t (line 59) | typedef uint8_t lv_label_align_t;
  type lv_label_ext_t (line 62) | typedef struct
  type lv_label_style_t (line 102) | typedef uint8_t lv_label_style_t;
  function lv_label_set_style (line 187) | static inline void lv_label_set_style(lv_obj_t * label, lv_label_style_t...
  function lv_style_t (line 285) | static inline const lv_style_t * lv_label_get_style(const lv_obj_t * lab...

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_led.h
  type lv_led_ext_t (line 35) | typedef struct
  type lv_led_style_t (line 46) | typedef uint8_t lv_led_style_t;
  function lv_led_set_style (line 91) | static inline void lv_led_set_style(lv_obj_t * led, lv_led_style_t type,...
  function lv_style_t (line 110) | static inline const lv_style_t * lv_led_get_style(const lv_obj_t * led, ...

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_line.h
  type lv_line_ext_t (line 35) | typedef struct
  type lv_line_style_t (line 48) | typedef uint8_t lv_line_style_t;
  function lv_line_set_style (line 101) | static inline void lv_line_set_style(lv_obj_t * line, lv_line_style_t ty...
  function lv_style_t (line 131) | static inline const lv_style_t * lv_line_get_style(const lv_obj_t * line...

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_list.h
  type lv_list_ext_t (line 51) | typedef struct
  type lv_list_style_t (line 79) | typedef uint8_t lv_list_style_t;
  function lv_list_set_sb_mode (line 148) | static inline void lv_list_set_sb_mode(lv_obj_t * list, lv_sb_mode_t mode)
  function lv_list_set_scroll_propagation (line 159) | static inline void lv_list_set_scroll_propagation(lv_obj_t * list, bool en)
  function lv_list_set_edge_flash (line 169) | static inline void lv_list_set_edge_flash(lv_obj_t * list, bool en)
  function lv_list_set_anim_time (line 179) | static inline void lv_list_set_anim_time(lv_obj_t * list, uint16_t anim_...
  function lv_sb_mode_t (line 267) | static inline lv_sb_mode_t lv_list_get_sb_mode(const lv_obj_t * list)
  function lv_list_get_scroll_propagation (line 277) | static inline bool lv_list_get_scroll_propagation(lv_obj_t * list)
  function lv_list_get_edge_flash (line 287) | static inline bool lv_list_get_edge_flash(lv_obj_t * list)
  function lv_list_get_anim_time (line 297) | static inline uint16_t lv_list_get_anim_time(const lv_obj_t * list)

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_lmeter.h
  type lv_lmeter_ext_t (line 34) | typedef struct
  type lv_lmeter_style_t (line 49) | typedef uint8_t lv_lmeter_style_t;
  function lv_lmeter_set_style (line 97) | static inline void lv_lmeter_set_style(lv_obj_t * lmeter, lv_lmeter_styl...
  function lv_style_t (line 148) | static inline const lv_style_t * lv_lmeter_get_style(const lv_obj_t * lm...

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_mbox.h
  type lv_mbox_ext_t (line 51) | typedef struct
  type lv_mbox_style_t (line 72) | typedef uint8_t lv_mbox_style_t;

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_objx_templ.h
  type lv_templ_ext_t (line 41) | typedef struct
  type lv_templ_style_t (line 52) | typedef uint8_t lv_templ_style_t;

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_page.h
  type lv_sb_mode_t (line 50) | typedef uint8_t lv_sb_mode_t;
  type lv_page_edge_t (line 54) | typedef uint8_t lv_page_edge_t;
  type lv_page_ext_t (line 57) | typedef struct
  type lv_page_style_t (line 100) | typedef uint8_t lv_page_style_t;
  function lv_page_set_scrl_fit4 (line 176) | static inline void lv_page_set_scrl_fit4(lv_obj_t * page, lv_fit_t left,...
  function lv_page_set_scrl_fit2 (line 188) | static inline void lv_page_set_scrl_fit2(lv_obj_t * page, lv_fit_t hor, ...
  function lv_page_set_scrl_fit (line 199) | static inline void lv_page_set_scrl_fit(lv_obj_t * page, lv_fit_t fit)
  function lv_page_set_scrl_width (line 209) | static inline void lv_page_set_scrl_width(lv_obj_t * page, lv_coord_t w)
  function lv_page_set_scrl_height (line 219) | static inline void lv_page_set_scrl_height(lv_obj_t * page, lv_coord_t h)
  function lv_page_set_scrl_layout (line 229) | static inline void lv_page_set_scrl_layout(lv_obj_t * page, lv_layout_t ...
  function lv_coord_t (line 286) | static inline lv_coord_t lv_page_get_scrl_width(const lv_obj_t * page)
  function lv_coord_t (line 296) | static inline lv_coord_t lv_page_get_scrl_height(const lv_obj_t * page)
  function lv_layout_t (line 306) | static inline lv_layout_t lv_page_get_scrl_layout(const lv_obj_t * page)
  function lv_fit_t (line 316) | static inline lv_fit_t lv_page_get_scrl_fit_left(const lv_obj_t * page)
  function lv_fit_t (line 326) | static inline lv_fit_t lv_page_get_scrl_fit_right(const lv_obj_t * page)
  function lv_fit_t (line 336) | static inline lv_fit_t lv_page_get_scrl_fit_top(const lv_obj_t * page)
  function lv_fit_t (line 346) | static inline lv_fit_t lv_page_get_scrl_fit_bottom(const lv_obj_t * page)

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_preload.h
  type lv_preload_type_t (line 52) | typedef uint8_t lv_preload_type_t;
  type lv_preload_dir_t (line 61) | typedef uint8_t lv_preload_dir_t;
  type lv_preload_ext_t (line 64) | typedef struct
  type lv_preload_style_t (line 78) | typedef uint8_t lv_preload_style_t;

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_roller.h
  type lv_roller_mode_t (line 47) | typedef uint8_t lv_roller_mode_t;
  type lv_roller_ext_t (line 52) | typedef struct
  type lv_roller_style_t (line 63) | typedef uint8_t lv_roller_style_t;
  function lv_roller_set_fix_width (line 116) | static inline void lv_roller_set_fix_width(lv_obj_t * roller, lv_coord_t w)
  function lv_roller_set_anim_time (line 126) | static inline void lv_roller_set_anim_time(lv_obj_t * roller, uint16_t a...
  function lv_roller_get_selected_str (line 155) | static inline void lv_roller_get_selected_str(const lv_obj_t * roller, c...
  function lv_roller_get_anim_time (line 182) | static inline uint16_t lv_roller_get_anim_time(const lv_obj_t * roller)

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_slider.h
  type lv_slider_ext_t (line 40) | typedef struct
  type lv_slider_style_t (line 55) | typedef uint8_t lv_slider_style_t;
  function lv_slider_set_value (line 79) | static inline void lv_slider_set_value(lv_obj_t * slider, int16_t value,...
  function lv_slider_set_range (line 90) | static inline void lv_slider_set_range(lv_obj_t * slider, int16_t min, i...
  function lv_slider_set_anim_time (line 100) | static inline void lv_slider_set_anim_time(lv_obj_t * slider, uint16_t a...
  function lv_slider_get_min_value (line 137) | static inline int16_t lv_slider_get_min_value(const lv_obj_t * slider)
  function lv_slider_get_max_value (line 147) | static inline int16_t lv_slider_get_max_value(const lv_obj_t * slider)

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_spinbox.h
  type lv_spinbox_ext_t (line 42) | typedef struct
  type lv_spinbox_style_t (line 61) | typedef uint8_t lv_spinbox_style_t;
  function lv_spinbox_set_style (line 85) | static inline void lv_spinbox_set_style(lv_obj_t * spinbox, lv_spinbox_s...
  function lv_style_t (line 138) | static inline const lv_style_t * lv_spinbox_get_style(lv_obj_t * spinbox...

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_sw.h
  type lv_sw_ext_t (line 41) | typedef struct
  type lv_sw_style_t (line 64) | typedef uint8_t lv_sw_style_t;
  function lv_sw_get_state (line 129) | static inline bool lv_sw_get_state(const lv_obj_t * sw)

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_ta.h
  type lv_cursor_type_t (line 55) | typedef uint8_t lv_cursor_type_t;
  type lv_ta_ext_t (line 58) | typedef struct
  type lv_ta_style_t (line 100) | typedef uint8_t lv_ta_style_t;
  function lv_ta_set_sb_mode (line 238) | static inline void lv_ta_set_sb_mode(lv_obj_t * ta, lv_sb_mode_t mode)
  function lv_ta_set_scroll_propagation (line 249) | static inline void lv_ta_set_scroll_propagation(lv_obj_t * ta, bool en)
  function lv_ta_set_edge_flash (line 259) | static inline void lv_ta_set_edge_flash(lv_obj_t * ta, bool en)
  function lv_sb_mode_t (line 372) | static inline lv_sb_mode_t lv_ta_get_sb_mode(const lv_obj_t * ta)
  function lv_ta_get_scroll_propagation (line 382) | static inline bool lv_ta_get_scroll_propagation(lv_obj_t * ta)
  function lv_ta_get_edge_flash (line 392) | static inline bool lv_ta_get_edge_flash(lv_obj_t * ta)

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_table.h
  type lv_table_cell_format_t (line 49) | typedef union
  type lv_table_ext_t (line 62) | typedef struct
  type lv_table_style_t (line 80) | typedef uint8_t lv_table_style_t;

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_tabview.h
  type lv_tabview_btns_pos_t (line 47) | typedef uint8_t lv_tabview_btns_pos_t;
  type lv_tabview_ext_t (line 50) | typedef struct
  type lv_tabview_style_t (line 81) | typedef uint8_t lv_tabview_style_t;

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_tileview.h
  type lv_tileview_ext_t (line 35) | typedef struct
  type lv_tileview_style_t (line 57) | typedef uint8_t lv_tileview_style_t;
  function lv_tileview_set_edge_flash (line 109) | static inline void lv_tileview_set_edge_flash(lv_obj_t * tileview, bool en)
  function lv_tileview_set_anim_time (line 119) | static inline void lv_tileview_set_anim_time(lv_obj_t * tileview, uint16...
  function lv_tileview_get_edge_flash (line 141) | static inline bool lv_tileview_get_edge_flash(lv_obj_t * tileview)
  function lv_tileview_get_anim_time (line 151) | static inline uint16_t lv_tileview_get_anim_time(lv_obj_t * tileview)

FILE: argon-nx-gui/include/libs/lvgl/lv_objx/lv_win.h
  type lv_win_ext_t (line 57) | typedef struct
  type lv_win_style_t (line 78) | typedef uint8_t lv_win_style_t;
  function lv_win_get_drag (line 245) | static inline bool lv_win_get_drag(const lv_obj_t * win)
  function lv_win_scroll_hor (line 267) | static inline void lv_win_scroll_hor(lv_obj_t * win, lv_coord_t dist)
  function lv_win_scroll_ver (line 277) | static inline void lv_win_scroll_ver(lv_obj_t * win, lv_coord_t dist)

FILE: argon-nx-gui/include/libs/lvgl/lv_themes/lv_theme.h
  type lv_theme_t (line 39) | typedef struct

FILE: argon-nx-gui/include/mem/heap.h
  type hnode_t (line 23) | typedef struct _hnode
  type heap_t (line 31) | typedef struct _heap

FILE: argon-nx-gui/include/mem/sdram_param_t210.h
  type sdram_params_t (line 40) | typedef struct _sdram_params

FILE: argon-nx-gui/include/menu/gui/gui_menu_pool.h
  type gui_menu_pool_t (line 22) | typedef struct {

FILE: argon-nx-gui/include/minerva/minerva.h
  type mtc_config_t (line 8) | typedef struct
  type train_mode_t (line 23) | enum train_mode_t
  type minerva_freq_t (line 32) | typedef enum

FILE: argon-nx-gui/include/minerva/mtc_table.h
  type pllm_clk_config_t (line 25) | typedef struct
  type burst_regs_t (line 34) | typedef struct
  type burst_regs_table_t (line 260) | typedef struct
  type ptfv_list_table_t (line 269) | typedef struct
  type burst_reg_per_ch_t (line 285) | typedef struct
  type trim_regs_t (line 297) | typedef struct
  type trim_perch_regs_t (line 439) | typedef struct
  type dram_timings_t (line 453) | typedef struct
  type vref_perch_regs_t (line 462) | typedef struct
  type trim_regs_table_t (line 470) | typedef struct
  type emc_table_t (line 477) | typedef struct

FILE: argon-nx-gui/include/power/battery.h
  type charge_status_t (line 24) | typedef enum
  type battery_status_t (line 33) | typedef struct {

FILE: argon-nx-gui/include/power/bq24193.h
  type BQ24193_reg (line 88) | enum BQ24193_reg {
  type BQ24193_reg_prop (line 102) | enum BQ24193_reg_prop {
  type BQ24193_reg_prop (line 116) | enum BQ24193_reg_prop

FILE: argon-nx-gui/include/power/max17050.h
  type MAX17050_reg (line 37) | enum MAX17050_reg {
  type MAX17050_reg (line 124) | enum MAX17050_reg

FILE: argon-nx-gui/include/power/max77620.h
  type max77620_fps_src (line 316) | enum max77620_fps_src {
  type max77620_chip_id (line 324) | enum max77620_chip_id {

FILE: argon-nx-gui/include/soc/bpmp.h
  type bpmp_mmu_entry_t (line 28) | typedef struct _bpmp_mmu_entry_t
  type bpmp_freq_t (line 36) | typedef enum

FILE: argon-nx-gui/include/soc/clock.h
  type clock_t (line 127) | typedef struct _clock_t

FILE: argon-nx-gui/include/soc/pmc_lp0_t210.h
  type tegra_pmc_regs (line 19) | struct tegra_pmc_regs

FILE: argon-nx-gui/include/soc/uart.h
  type uart_t (line 46) | typedef struct _uart_t

FILE: argon-nx-gui/include/storage/sdmmc.h
  type mmc_cid_t (line 24) | typedef struct _mmc_cid
  type mmc_csd_t (line 38) | typedef struct _mmc_csd
  type mmc_ext_csd_t (line 54) | typedef struct _mmc_ext_csd
  type sd_scr_t (line 68) | typedef struct _sd_scr
  type sd_ssr_t (line 76) | typedef struct _sd_ssr
  type sdmmc_storage_t (line 86) | typedef struct _sdmmc_storage_t

FILE: argon-nx-gui/include/storage/sdmmc_driver.h
  type sdmmc_t (line 75) | typedef struct _sdmmc_t
  type sdmmc_cmd_t (line 92) | typedef struct _sdmmc_cmd_t
  type sdmmc_req_t (line 101) | typedef struct _sdmmc_req_t

FILE: argon-nx-gui/include/storage/sdmmc_t210.h
  type t210_sdmmc_t (line 66) | typedef struct _t210_sdmmc_t

FILE: argon-nx-gui/include/utils/touch.h
  type touch_event_t (line 85) | typedef struct _touch_event {
  type touch_info_t (line 95) | typedef struct _touch_info {

FILE: argon-nx-gui/include/utils/types.h
  type s8 (line 29) | typedef signed char s8;
  type s16 (line 30) | typedef short s16;
  type SHORT (line 31) | typedef short SHORT;
  type s32 (line 32) | typedef int s32;
  type INT (line 33) | typedef int INT;
  type LONG (line 34) | typedef long LONG;
  type s64 (line 35) | typedef long long int s64;
  type u8 (line 36) | typedef unsigned char u8;
  type BYTE (line 37) | typedef unsigned char BYTE;
  type u16 (line 38) | typedef unsigned short u16;
  type WORD (line 39) | typedef unsigned short WORD;
  type WCHAR (line 40) | typedef unsigned short WCHAR;
  type u32 (line 41) | typedef unsigned int u32;
  type UINT (line 42) | typedef unsigned int UINT;
  type DWORD (line 43) | typedef unsigned long DWORD;
  type QWORD (line 44) | typedef unsigned long long QWORD;
  type u64 (line 45) | typedef unsigned long long int u64;
  type vu8 (line 46) | typedef volatile unsigned char vu8;
  type vu16 (line 47) | typedef volatile unsigned short vu16;
  type vu32 (line 48) | typedef volatile unsigned int vu32;
  type boot_cfg_t (line 62) | typedef struct __attribute__((__packed__)) _boot_cfg_t
  type ipl_ver_meta_t (line 71) | typedef struct __attribute__((__packed__)) _ipl_ver_meta_t
  type reloc_meta_t (line 79) | typedef struct __attribute__((__packed__)) _reloc_meta_t

FILE: argon-nx-gui/include/utils/util.h
  type cfg_op_t (line 29) | typedef struct _cfg_op_t

FILE: argon-nx-gui/src/core/argon-ctxt.c
  function argon_ctxt_init (line 5) | void argon_ctxt_init(argon_ctxt_t* argon_ctxt)
  function argon_ctxt_destroy (line 19) | void argon_ctxt_destroy(argon_ctxt_t* argon_ctxt)

FILE: argon-nx-gui/src/core/argon-resources.c
  function argon_resources_init (line 4) | void argon_resources_init()

FILE: argon-nx-gui/src/core/custom-gui.c
  function custom_gui_t (line 29) | custom_gui_t* custom_gui_load()
  function custom_gui_end (line 36) | void custom_gui_end(custom_gui_t* cg)
  function render_custom_background (line 42) | bool render_custom_background(custom_gui_t* cg, lv_obj_t* par)
  function take_screenshot (line 54) | void take_screenshot()

FILE: argon-nx-gui/src/core/launcher.c
  function reloc_patcher (line 47) | void reloc_patcher(u32 payload_size)
  function launch_payload (line 66) | int launch_payload(argon_ctxt_t* argon_ctxt, char *path)

FILE: argon-nx-gui/src/core/payloads.c
  function payload_full_path (line 8) | void payload_full_path(const char* payload, char* result)
  function payload_logo_path (line 15) | void payload_logo_path(const char* payload, char* result)

FILE: argon-nx-gui/src/gfx/di.c
  function _display_dsi_wait (line 40) | static void _display_dsi_wait(u32 timeout, u32 off, u32 mask)
  function display_init (line 48) | void display_init()
  function display_backlight_pwm_init (line 146) | void display_backlight_pwm_init()
  function display_backlight (line 157) | void display_backlight(bool enable)
  function display_backlight_brightness (line 162) | void display_backlight_brightness(u32 brightness, u32 step_delay)
  function display_end (line 191) | void display_end()
  function display_color_screen (line 241) | void display_color_screen(u32 color)
  function u32 (line 257) | u32 *display_init_framebuffer()
  function u32 (line 269) | u32 *display_init_framebuffer2()

FILE: argon-nx-gui/src/gfx/gfx.c
  function gfx_init_ctxt (line 124) | void gfx_init_ctxt(u32 *fb, u32 width, u32 height, u32 stride)
  function gfx_clear_grey (line 132) | void gfx_clear_grey(u8 color)
  function gfx_clear_color (line 137) | void gfx_clear_color(u32 color)
  function gfx_clear_partial_grey (line 143) | void gfx_clear_partial_grey(u8 color, u32 pos_x, u32 height)
  function gfx_con_init (line 148) | void gfx_con_init()
  function gfx_con_setcol (line 162) | void gfx_con_setcol(u32 fgcol, int fillbg, u32 bgcol)
  function gfx_con_getpos (line 169) | void gfx_con_getpos(u32 *x, u32 *y)
  function gfx_con_setpos (line 175) | void gfx_con_setpos(u32 x, u32 y)
  function gfx_putc (line 181) | void gfx_putc(char c)
  function gfx_puts (line 264) | void gfx_puts(const char *s)
  function _gfx_putn (line 273) | static void _gfx_putn(u32 v, int base, char fill, int fcnt)
  function gfx_put_small_sep (line 304) | void gfx_put_small_sep()
  function gfx_put_big_sep (line 312) | void gfx_put_big_sep()
  function gfx_printf (line 320) | void gfx_printf(const char *fmt, ...)
  function gfx_hexdump (line 396) | void gfx_hexdump(u32 base, const u8 *buf, u32 len)
  function abs (line 449) | static int abs(int x)
  function gfx_set_pixel (line 456) | void gfx_set_pixel(u32 x, u32 y, u32 color)
  function gfx_line (line 461) | void gfx_line(int x0, int y0, int x1, int y1, u32 color)
  function gfx_set_rect_grey (line 488) | void gfx_set_rect_grey(const u8 *buf, u32 size_x, u32 size_y, u32 pos_x,...
  function gfx_set_rect_rgb (line 502) | void gfx_set_rect_rgb(const u8 *buf, u32 size_x, u32 size_y, u32 pos_x, ...
  function gfx_set_rect_argb (line 515) | void gfx_set_rect_argb(const u32 *buf, u32 size_x, u32 size_y, u32 pos_x...
  function gfx_set_rect_argb_land (line 523) | void gfx_set_rect_argb_land(const u32 *buf, u32 size_x, u32 size_y, u32 ...
  function gfx_fill_rect_argb (line 536) | void gfx_fill_rect_argb(const u32 color, u32 size_x, u32 size_y, u32 pos...
  function gfx_render_bmp_argb (line 543) | void gfx_render_bmp_argb(const u32 *buf, u32 size_x, u32 size_y, u32 pos...
  function gfx_set_rect_land_pitch (line 552) | __attribute__((target("arm"))) void gfx_set_rect_land_pitch(u32 *fb, con...
  function gfx_set_rect_land_block (line 583) | __attribute__((target("arm"))) void gfx_set_rect_land_block(const u32 *b...

FILE: argon-nx-gui/src/gfx/lvgl_adapter.c
  function display_flush (line 18) | void display_flush(lv_disp_drv_t *disp,
  function handle_touch (line 37) | bool handle_touch(lv_indev_drv_t *indev, lv_indev_data_t *data)
  function lvgl_adapter_init (line 77) | void lvgl_adapter_init(argon_ctxt_t *argon_ctxt)
  function lv_img_dsc_t (line 111) | lv_img_dsc_t *bmp_to_lvimg_obj(const char *path)

FILE: argon-nx-gui/src/ianos/ianos.c
  type _bdkParams_t (line 34) | struct _bdkParams_t
  function _ianos_call_ep (line 55) | static void _ianos_call_ep(moduleEntrypoint_t entrypoint, void *moduleCo...
  function _ianos_read_cb (line 75) | static bool _ianos_read_cb(el_ctx *ctx, void *dest, size_t numberBytes, ...
  function ianos_loader (line 85) | uintptr_t ianos_loader(bool sdmount, char *path, elfType_t type, void *m...

FILE: argon-nx-gui/src/libs/compr/blz.c
  function blz_footer (line 23) | const blz_footer *blz_get_footer(const unsigned char *compData, unsigned...
  function blz_uncompress_inplace (line 36) | int blz_uncompress_inplace(unsigned char *dataBuf, unsigned int compSize...
  function blz_uncompress_srcdest (line 85) | int blz_uncompress_srcdest(const unsigned char *compData, unsigned int c...

FILE: argon-nx-gui/src/libs/compr/lz.c
  function _LZ_ReadVarSize (line 91) | static int _LZ_ReadVarSize( unsigned int * x, const unsigned char * buf )
  function LZ_Uncompress (line 128) | void LZ_Uncompress( const unsigned char *in, unsigned char *out,

FILE: argon-nx-gui/src/libs/elfload/elfload.c
  function el_status (line 22) | el_status el_pread(el_ctx *ctx, void *def, size_t nb, size_t offset)
  function el_status (line 28) | el_status el_findphdr(el_ctx *ctx, Elf_Phdr *phdr, uint32_t type, unsign...
  function el_status (line 47) | el_status el_findshdr(el_ctx *ctx, Elf_Shdr *shdr, uint32_t type, unsign...
  function el_status (line 68) | el_status el_init(el_ctx *ctx)
  function el_status (line 173) | el_status el_load(el_ctx *ctx, el_alloc_cb alloc)
  function el_status (line 216) | el_status el_finddyn(el_ctx *ctx, Elf_Dyn *dyn, uint32_t tag)
  function el_status (line 234) | el_status el_findrelocs(el_ctx *ctx, el_relocinfo *ri, uint32_t type)
  function el_status (line 268) | el_status el_relocate(el_ctx *ctx)

FILE: argon-nx-gui/src/libs/elfload/elfreloc_aarch64.c
  function el_status (line 25) | el_status el_applyrela(el_ctx *ctx, Elf_RelA *rel)
  function el_status (line 55) | el_status el_applyrel(el_ctx *ctx, Elf_Rel *rel)

FILE: argon-nx-gui/src/libs/elfload/elfreloc_arm.c
  function el_status (line 22) | el_status el_applyrel(el_ctx *ctx, Elf_Rel *rel)

FILE: argon-nx-gui/src/libs/fatfs/diskio.c
  function DSTATUS (line 22) | DSTATUS disk_status (
  function DSTATUS (line 32) | DSTATUS disk_initialize (
  function DRESULT (line 42) | DRESULT disk_read (
  function DRESULT (line 63) | DRESULT disk_write (
  function DRESULT (line 82) | DRESULT disk_ioctl (

FILE: argon-nx-gui/src/libs/fatfs/ff.c
  type FILESEM (line 283) | typedef struct {
  function print_error (line 602) | void print_error()
  function WORD (line 612) | static WORD ld_word (const BYTE* ptr)	/*	 Load a 2-byte little-endian wo...
  function DWORD (line 621) | static DWORD ld_dword (const BYTE* ptr)	/* Load a 4-byte little-endian w...
  function QWORD (line 633) | static QWORD ld_qword (const BYTE* ptr)	/* Load an 8-byte little-endian ...
  function st_word (line 650) | static void st_word (BYTE* ptr, WORD val)	/* Store a 2-byte word in litt...
  function st_dword (line 656) | static void st_dword (BYTE* ptr, DWORD val)	/* Store a 4-byte word in li...
  function st_qword (line 665) | static void st_qword (BYTE* ptr, QWORD val)	/* Store an 8-byte word in l...
  function mem_cpy (line 686) | static void mem_cpy (void* dst, const void* src, UINT cnt)
  function mem_set (line 700) | static void mem_set (void* dst, int val, UINT cnt)
  function mem_cmp (line 711) | static int mem_cmp (const void* dst, const void* src, UINT cnt)	/* ZR:sa...
  function chk_chr (line 725) | static int chk_chr (const char* str, int chr)	/* NZ:contained, ZR:not co...
  function dbc_1st (line 733) | static int dbc_1st (BYTE c)
  function dbc_2nd (line 753) | static int dbc_2nd (BYTE c)
  function DWORD (line 777) | static DWORD tchar2uni (	/* Returns character in UTF-16 encoding (>=0x10...
  function BYTE (line 850) | static BYTE put_utf (	/* Returns number of encoding units written (0:buf...
  function lock_fs (line 939) | static int lock_fs (		/* 1:Ok, 0:timeout */
  function unlock_fs (line 947) | static void unlock_fs (
  function FRESULT (line 966) | static FRESULT chk_lock (	/* Check if the file can be accessed */
  function enq_lock (line 993) | static int enq_lock (void)	/* Check if an entry is available for a new o...
  function UINT (line 1002) | static UINT inc_lock (	/* Increment object open counter and returns its ...
  function FRESULT (line 1033) | static FRESULT dec_lock (	/* Decrement object open counter */
  function clear_lock (line 1055) | static void clear_lock (	/* Clear lock entries of the volume */
  function FRESULT (line 1074) | static FRESULT sync_window (	/* Returns FR_OK or FR_DISK_ERR */
  function FRESULT (line 1096) | static FRESULT move_window (	/* Returns FR_OK or FR_DISK_ERR */
  function FRESULT (line 1127) | static FRESULT sync_fs (	/* Returns FR_OK or FR_DISK_ERR */
  function DWORD (line 1164) | static DWORD clst2sect (	/* !=0:Sector number, 0:Failed (invalid cluster...
  function DWORD (line 1181) | static DWORD get_fat (		/* 0xFFFFFFFF:Disk error, 1:Internal error, 2..0...
  function FRESULT (line 1258) | static FRESULT put_fat (	/* FR_OK(0):succeeded, !=0:error */
  function DWORD (line 1323) | static DWORD find_bitmap (	/* 0:Not found, 2..:Cluster block found, 0xFF...
  function FRESULT (line 1363) | static FRESULT change_bitmap (
  function FRESULT (line 1399) | static FRESULT fill_first_frag (
  function FRESULT (line 1422) | static FRESULT fill_last_frag (
  function FRESULT (line 1448) | static FRESULT remove_chain (	/* FR_OK(0):succeeded, !=0:error */
  function DWORD (line 1543) | static DWORD create_chain (	/* 0:No free cluster, 1:Internal error, 0xFF...
  function DWORD (line 1646) | static DWORD clmt_clust (	/* <2:Error, >=2:Cluster number */
  function FRESULT (line 1676) | static FRESULT dir_clear (	/* Returns FR_OK or FR_DISK_ERR */
  function FRESULT (line 1715) | static FRESULT dir_sdi (	/* FR_OK(0):succeeded, !=0:error */
  function FRESULT (line 1763) | static FRESULT dir_next (	/* FR_OK(0):succeeded, FR_NO_FILE:End of table...
  function DWORD (line 1866) | static DWORD ld_clust (	/* Returns the top cluster value of the SFN entr...
  function st_clust (line 1883) | static void st_clust (
  function cmp_lfn (line 1903) | static int cmp_lfn (		/* 1:matched, 0:not matched */
  function pick_lfn (line 1939) | static int pick_lfn (	/* 1:succeeded, 0:buffer overflow or invalid LFN e...
  function put_lfn (line 1977) | static void put_lfn (
  function gen_numname (line 2014) | static void gen_numname (
  function BYTE (line 2072) | static BYTE sum_sfn (
  function WORD (line 2094) | static WORD xdir_sum (	/* Get checksum of the directoly entry block */
  function WORD (line 2115) | static WORD xname_sum (	/* Get check sum (to be used as hash) of the fil...
  function DWORD (line 2133) | static DWORD xsum32 (	/* Returns 32-bit checksum */
  function get_xfileinfo (line 2149) | static void get_xfileinfo (
  function FRESULT (line 2190) | static FRESULT load_xdir (	/* FR_INT_ERR: invalid entry block */
  function init_alloc_info (line 2241) | static void init_alloc_info (
  function FRESULT (line 2259) | static FRESULT load_obj_xdir (
  function FRESULT (line 2288) | static FRESULT store_xdir (
  function create_xdir (line 2320) | static void create_xdir (
  function FRESULT (line 2366) | static FRESULT dir_read (
  function FRESULT (line 2444) | static FRESULT dir_find (	/* FR_OK(0):succeeded, !=0:error */
  function FRESULT (line 2525) | static FRESULT dir_register (	/* FR_OK:succeeded, FR_DENIED:no free entr...
  function FRESULT (line 2631) | static FRESULT dir_remove (	/* FR_OK:Succeeded, FR_DISK_ERR:A disk error */
  function get_fileinfo (line 2677) | static void get_fileinfo (
  function DWORD (line 2783) | static DWORD get_achar (	/* Get a character and advances ptr */
  function pattern_matching (line 2814) | static int pattern_matching (	/* 0:not matched, 1:matched */
  function FRESULT (line 2861) | static FRESULT create_name (	/* FR_OK: successful, FR_INVALID_NAME: coul...
  function FRESULT (line 3058) | static FRESULT follow_path (	/* FR_OK(0): successful, !=0: error code */
  function get_ldnumber (line 3145) | static int get_ldnumber (	/* Returns logical drive number (-1:invalid dr...
  function BYTE (line 3219) | static BYTE check_fs (	/* 0:FAT, 1:exFAT, 2:Valid BS but not FAT, 3:Not ...
  function FRESULT (line 3246) | static FRESULT find_volume (	/* FR_OK(0): successful, !=0: an error occu...
  function FRESULT (line 3512) | static FRESULT validate (	/* Returns FR_OK or FR_INVALID_OBJECT */
  function FRESULT (line 3556) | FRESULT f_mount (
  function FRESULT (line 3607) | FRESULT f_open (
  function FRESULT (line 3797) | FRESULT f_read (
  function FRESULT (line 3917) | FRESULT f_read_fast (
  function FRESULT (line 4004) | FRESULT f_write (
  function FRESULT (line 4143) | FRESULT f_write_fast (
  function FRESULT (line 4234) | FRESULT f_sync (
  function FRESULT (line 4315) | FRESULT f_close (
  function FRESULT (line 4351) | FRESULT f_chdrive (
  function FRESULT (line 4368) | FRESULT f_chdir (
  function FRESULT (line 4430) | FRESULT f_getcwd (
  function FRESULT (line 4530) | FRESULT f_lseek (
  function DWORD (line 4692) | DWORD *f_expand_cltbl (
  function FRESULT (line 4724) | FRESULT f_opendir (
  function FRESULT (line 4790) | FRESULT f_closedir (
  function FRESULT (line 4820) | FRESULT f_readdir (
  function FRESULT (line 4856) | FRESULT f_findnext (
  function FRESULT (line 4881) | FRESULT f_findfirst (
  function FRESULT (line 4908) | FRESULT f_stat (
  function FRESULT (line 4943) | FRESULT f_getfree (
  function FRESULT (line 5032) | FRESULT f_truncate (
  function FRESULT (line 5082) | FRESULT f_unlink (
  function FRESULT (line 5176) | FRESULT f_mkdir (
  function FRESULT (line 5260) | FRESULT f_rename (
  function FRESULT (line 5370) | FRESULT f_chmod (
  function FRESULT (line 5417) | FRESULT f_utime (
  function FRESULT (line 5464) | FRESULT f_getlabel (
  function FRESULT (line 5559) | FRESULT f_setlabel (
  function FRESULT (line 5679) | FRESULT f_expand (
  function FRESULT (line 5769) | FRESULT f_forward (
  function FRESULT (line 5840) | FRESULT f_mkfs (
  function FRESULT (line 6305) | FRESULT f_fdisk (
  function TCHAR (line 6388) | TCHAR* f_gets (
  type putbuff (line 6516) | typedef struct {	/* Putchar output buffer and work area */
  function putc_bfd (line 6529) | static void putc_bfd (		/* Buffered write with code conversion */
  function putc_flush (line 6660) | static int putc_flush (		/* Flush left characters in the buffer */
  function putc_init (line 6673) | static void putc_init (		/* Initialize write buffer */
  function f_putc (line 6684) | int f_putc (
  function f_puts (line 6704) | int f_puts (
  function f_printf (line 6724) | int f_printf (
  function FRESULT (line 6842) | FRESULT f_setcp (

FILE: argon-nx-gui/src/libs/fatfs/ffsystem.c
  function ff_memfree (line 31) | void ff_memfree (

FILE: argon-nx-gui/src/libs/fatfs/ffunicode.c
  function WCHAR (line 259) | WCHAR ff_uni2oem (	/* Returns OEM code character, zero on error */
  function WCHAR (line 281) | WCHAR ff_oem2uni (	/* Returns Unicode character, zero on error */
  function WCHAR (line 312) | WCHAR ff_uni2oem (	/* Returns OEM code character, zero on error */
  function WCHAR (line 348) | WCHAR ff_oem2uni (	/* Returns Unicode character, zero on error */
  function WCHAR (line 395) | WCHAR ff_uni2oem (	/* Returns OEM code character, zero on error */
  function WCHAR (line 447) | WCHAR ff_oem2uni (	/* Returns Unicode character, zero on error */
  function DWORD (line 501) | DWORD ff_wtoupper (	/* Returns up-converted code point */

FILE: argon-nx-gui/src/libs/lvgl/lv_core/lv_disp.c
  function lv_obj_t (line 42) | lv_obj_t * lv_disp_get_scr_act(lv_disp_t * disp)
  function lv_disp_load_scr (line 57) | void lv_disp_load_scr(lv_obj_t * scr)
  function lv_obj_t (line 71) | lv_obj_t * lv_disp_get_layer_top(lv_disp_t * disp)
  function lv_obj_t (line 88) | lv_obj_t * lv_disp_get_layer_sys(lv_disp_t * disp)
  function lv_disp_assign_screen (line 104) | void lv_disp_assign_screen(lv_disp_t * disp, lv_obj_t * scr)
  function lv_task_t (line 124) | lv_task_t * lv_disp_get_refr_task(lv_disp_t * disp)
  function lv_disp_get_inactive_time (line 140) | uint32_t lv_disp_get_inactive_time(const lv_disp_t * disp)
  function lv_disp_trig_activity (line 165) | void lv_disp_trig_activity(lv_disp_t * disp)

FILE: argon-nx-gui/src/libs/lvgl/lv_core/lv_group.c
  function lv_group_init (line 53) | void lv_group_init(void)
  function lv_group_t (line 62) | lv_group_t * lv_group_create(void)
  function lv_group_del (line 91) | void lv_group_del(lv_group_t * group)
  function lv_group_add_obj (line 116) | void lv_group_add_obj(lv_group_t * group, lv_obj_t * obj)
  function lv_group_remove_obj (line 156) | void lv_group_remove_obj(lv_obj_t * obj)
  function lv_group_remove_all_objs (line 198) | void lv_group_remove_all_objs(lv_group_t * group)
  function lv_group_focus_obj (line 221) | void lv_group_focus_obj(lv_obj_t * obj)
  function lv_group_focus_next (line 264) | void lv_group_focus_next(lv_group_t * group)
  function lv_group_focus_prev (line 273) | void lv_group_focus_prev(lv_group_t * group)
  function lv_group_focus_freeze (line 283) | void lv_group_focus_freeze(lv_group_t * group, bool en)
  function lv_res_t (line 297) | lv_res_t lv_group_send_data(lv_group_t * group, uint32_t c)
  function lv_group_set_style_mod_cb (line 318) | void lv_group_set_style_mod_cb(lv_group_t * group, lv_group_style_mod_cb...
  function lv_group_set_style_mod_edit_cb (line 329) | void lv_group_set_style_mod_edit_cb(lv_group_t * group, lv_group_style_m...
  function lv_group_set_focus_cb (line 340) | void lv_group_set_focus_cb(lv_group_t * group, lv_group_focus_cb_t focus...
  function lv_group_set_editing (line 350) | void lv_group_set_editing(lv_group_t * group, bool edit)
  function lv_group_set_click_focus (line 373) | void lv_group_set_click_focus(lv_group_t * group, bool en)
  function lv_group_set_refocus_policy (line 378) | void lv_group_set_refocus_policy(lv_group_t * group, lv_group_refocus_po...
  function lv_group_set_wrap (line 388) | void lv_group_set_wrap(lv_group_t * group, bool en)
  function lv_style_t (line 399) | lv_style_t * lv_group_mod_style(lv_group_t * group, const lv_style_t * s...
  function lv_obj_t (line 417) | lv_obj_t * lv_group_get_focused(const lv_group_t * group)
  function lv_group_user_data_t (line 431) | lv_group_user_data_t * lv_group_get_user_data(lv_group_t * group)
  function lv_group_style_mod_cb_t (line 442) | lv_group_style_mod_cb_t lv_group_get_style_mod_cb(const lv_group_t * group)
  function lv_group_style_mod_cb_t (line 453) | lv_group_style_mod_cb_t lv_group_get_style_mod_edit_cb(const lv_group_t ...
  function lv_group_focus_cb_t (line 464) | lv_group_focus_cb_t lv_group_get_focus_cb(const lv_group_t * group)
  function lv_group_get_editing (line 475) | bool lv_group_get_editing(const lv_group_t * group)
  function lv_group_get_click_focus (line 486) | bool lv_group_get_click_focus(const lv_group_t * group)
  function lv_group_get_wrap (line 497) | bool lv_group_get_wrap(lv_group_t * group)
  function lv_group_report_style_mod (line 508) | void lv_group_report_style_mod(lv_group_t * group)
  function lv_group_refocus (line 528) | static void lv_group_refocus(lv_group_t * g)
  function style_mod_def (line 547) | static void style_mod_def(lv_group_t * group, lv_style_t * style)
  function style_mod_edit_def (line 583) | static void style_mod_edit_def(lv_group_t * group, lv_style_t * style)
  function refresh_theme (line 615) | static void refresh_theme(lv_group_t * g, lv_theme_t * th)
  function focus_next_core (line 625) | static void focus_next_core(lv_group_t * group, void * (*begin)(const lv...
  function obj_to_foreground (line 691) | static void obj_to_foreground(lv_obj_t * obj)

FILE: argon-nx-gui/src/libs/lvgl/lv_core/lv_indev.c
  function lv_indev_init (line 64) | void lv_indev_init(void)
  function lv_indev_read_task (line 73) | void lv_indev_read_task(lv_task_t * task)
  function lv_indev_t (line 131) | lv_indev_t * lv_indev_get_act(void)
  function lv_indev_type_t (line 141) | lv_indev_type_t lv_indev_get_type(const lv_indev_t * indev)
  function lv_indev_reset (line 151) | void lv_indev_reset(lv_indev_t * indev)
  function lv_indev_reset_long_press (line 169) | void lv_indev_reset_long_press(lv_indev_t * indev)
  function lv_indev_enable (line 181) | void lv_indev_enable(lv_indev_t * indev, bool en)
  function lv_indev_set_cursor (line 193) | void lv_indev_set_cursor(lv_indev_t * indev, lv_obj_t * cur_obj)
  function lv_indev_set_group (line 208) | void lv_indev_set_group(lv_indev_t * indev, lv_group_t * group)
  function lv_indev_set_button_points (line 222) | void lv_indev_set_button_points(lv_indev_t * indev, const lv_point_t * p...
  function lv_indev_get_point (line 234) | void lv_indev_get_point(const lv_indev_t * indev, lv_point_t * point)
  function lv_indev_get_key (line 250) | uint32_t lv_indev_get_key(const lv_indev_t * indev)
  function lv_indev_is_dragging (line 264) | bool lv_indev_is_dragging(const lv_indev_t * indev)
  function lv_indev_get_vect (line 277) | void lv_indev_get_vect(const lv_indev_t * indev, lv_point_t * point)
  function lv_indev_wait_release (line 298) | void lv_indev_wait_release(lv_indev_t * indev)
  function lv_task_t (line 309) | lv_task_t * lv_indev_get_read_task(lv_disp_t * indev)
  function lv_obj_t (line 323) | lv_obj_t * lv_indev_get_obj_act(void)
  function indev_pointer_proc (line 337) | static void indev_pointer_proc(lv_indev_t * i, lv_indev_data_t * data)
  function indev_keypad_proc (line 363) | static void indev_keypad_proc(lv_indev_t * i, lv_indev_data_t * data)
  function indev_encoder_proc (line 511) | static void indev_encoder_proc(lv_indev_t * i, lv_indev_data_t * data)
  function indev_button_proc (line 660) | static void indev_button_proc(lv_indev_t * i, lv_indev_data_t * data)
  function indev_proc_press (line 683) | static void indev_proc_press(lv_indev_proc_t * proc)
  function indev_proc_release (line 826) | static void indev_proc_release(lv_indev_proc_t * proc)
  function indev_proc_reset_query_handler (line 963) | static void indev_proc_reset_query_handler(lv_indev_t * indev)
  function indev_drag (line 1044) | static void indev_drag(lv_indev_proc_t * state)
  function indev_drag_throw (line 1145) | static void indev_drag_throw(lv_indev_proc_t * proc)
  function indev_reset_check (line 1226) | static bool indev_reset_check(lv_indev_proc_t * proc)

FILE: argon-nx-gui/src/libs/lvgl/lv_core/lv_obj.c
  type lv_event_temp_data_t (line 38) | typedef struct _lv_event_temp_data
  function lv_init (line 75) | void lv_init(void)
  function lv_obj_t (line 131) | lv_obj_t * lv_obj_create(lv_obj_t * parent, const lv_obj_t * copy)
  function lv_res_t (line 375) | lv_res_t lv_obj_del(lv_obj_t * obj)
  function lv_obj_del_async (line 459) | void lv_obj_del_async(lv_obj_t * obj)
  function lv_obj_clean (line 468) | void lv_obj_clean(lv_obj_t * obj)
  function lv_obj_invalidate (line 485) | void lv_obj_invalidate(const lv_obj_t * obj)
  function lv_obj_set_parent (line 532) | void lv_obj_set_parent(lv_obj_t * obj, lv_obj_t * parent)
  function lv_obj_move_foreground (line 569) | void lv_obj_move_foreground(lv_obj_t * obj)
  function lv_obj_move_background (line 590) | void lv_obj_move_background(lv_obj_t * obj)
  function lv_obj_set_pos (line 617) | void lv_obj_set_pos(lv_obj_t * obj, lv_coord_t x, lv_coord_t y)
  function lv_obj_set_x (line 664) | void lv_obj_set_x(lv_obj_t * obj, lv_coord_t x)
  function lv_obj_set_y (line 674) | void lv_obj_set_y(lv_obj_t * obj, lv_coord_t y)
  function lv_obj_set_size (line 685) | void lv_obj_set_size(lv_obj_t * obj, lv_coord_t w, lv_coord_t h)
  function lv_obj_set_width (line 734) | void lv_obj_set_width(lv_obj_t * obj, lv_coord_t w)
  function lv_obj_set_height (line 744) | void lv_obj_set_height(lv_obj_t * obj, lv_coord_t h)
  function lv_obj_align (line 757) | void lv_obj_align(lv_obj_t * obj, const lv_obj_t * base, lv_align_t alig...
  function lv_obj_align_origo (line 902) | void lv_obj_align_origo(lv_obj_t * obj, const lv_obj_t * base, lv_align_...
  function lv_obj_realign (line 1046) | void lv_obj_realign(lv_obj_t * obj)
  function lv_obj_set_auto_realign (line 1065) | void lv_obj_set_auto_realign(lv_obj_t * obj, bool en)
  function lv_obj_set_ext_click_area (line 1083) | void lv_obj_set_ext_click_area(lv_obj_t * obj, uint8_t w, uint8_t h)
  function lv_obj_set_ext_click_area (line 1100) | void lv_obj_set_ext_click_area(lv_obj_t * obj, lv_coord_t left, lv_coord...
  function lv_obj_set_style (line 1128) | void lv_obj_set_style(lv_obj_t * obj, const lv_style_t * style)
  function lv_obj_refresh_style (line 1143) | void lv_obj_refresh_style(lv_obj_t * obj)
  function lv_obj_report_style_mod (line 1155) | void lv_obj_report_style_mod(lv_style_t * style)
  function lv_obj_set_hidden (line 1182) | void lv_obj_set_hidden(lv_obj_t * obj, bool en)
  function lv_obj_set_click (line 1199) | void lv_obj_set_click(lv_obj_t * obj, bool en)
  function lv_obj_set_top (line 1210) | void lv_obj_set_top(lv_obj_t * obj, bool en)
  function lv_obj_set_drag (line 1220) | void lv_obj_set_drag(lv_obj_t * obj, bool en)
  function lv_obj_set_drag_dir (line 1231) | void lv_obj_set_drag_dir(lv_obj_t * obj, lv_drag_dir_t drag_dir)
  function lv_obj_set_drag_throw (line 1243) | void lv_obj_set_drag_throw(lv_obj_t * obj, bool en)
  function lv_obj_set_drag_parent (line 1254) | void lv_obj_set_drag_parent(lv_obj_t * obj, bool en)
  function lv_obj_set_parent_event (line 1264) | void lv_obj_set_parent_event(lv_obj_t * obj, bool en)
  function lv_obj_set_opa_scale_enable (line 1274) | void lv_obj_set_opa_scale_enable(lv_obj_t * obj, bool en)
  function lv_obj_set_opa_scale (line 1287) | void lv_obj_set_opa_scale(lv_obj_t * obj, lv_opa_t opa_scale)
  function lv_obj_set_protect (line 1298) | void lv_obj_set_protect(lv_obj_t * obj, uint8_t prot)
  function lv_obj_clear_protect (line 1308) | void lv_obj_clear_protect(lv_obj_t * obj, uint8_t prot)
  function lv_obj_set_event_cb (line 1320) | void lv_obj_set_event_cb(lv_obj_t * obj, lv_event_cb_t event_cb)
  function lv_res_t (line 1332) | lv_res_t lv_event_send(lv_obj_t * obj, lv_event_t event, const void * data)
  function lv_res_t (line 1351) | lv_res_t lv_event_send_func(lv_event_cb_t event_xcb, lv_obj_t * obj, lv_...
  function lv_obj_set_signal_cb (line 1415) | void lv_obj_set_signal_cb(lv_obj_t * obj, lv_signal_cb_t signal_cb)
  function lv_signal_send (line 1425) | void lv_signal_send(lv_obj_t * obj, lv_signal_t signal, void * param)
  function lv_obj_set_design_cb (line 1435) | void lv_obj_set_design_cb(lv_obj_t * obj, lv_design_cb_t design_cb)
  function lv_obj_refresh_ext_draw_pad (line 1461) | void lv_obj_refresh_ext_draw_pad(lv_obj_t * obj)
  function lv_obj_t (line 1478) | lv_obj_t * lv_obj_get_screen(const lv_obj_t * obj)
  function lv_disp_t (line 1496) | lv_disp_t * lv_obj_get_disp(const lv_obj_t * obj)
  function lv_obj_t (line 1528) | lv_obj_t * lv_obj_get_parent(const lv_obj_t * obj)
  function lv_obj_t (line 1540) | lv_obj_t * lv_obj_get_child(const lv_obj_t * obj, const lv_obj_t * child)
  function lv_obj_t (line 1560) | lv_obj_t * lv_obj_get_child_back(const lv_obj_t * obj, const lv_obj_t * ...
  function lv_obj_count_children (line 1578) | uint16_t lv_obj_count_children(const lv_obj_t * obj)
  function lv_obj_count_children_recursive (line 1592) | uint16_t lv_obj_count_children_recursive(const lv_obj_t * obj)
  function lv_obj_get_coords (line 1615) | void lv_obj_get_coords(const lv_obj_t * obj, lv_area_t * cords_p)
  function lv_obj_get_inner_coords (line 1625) | void lv_obj_get_inner_coords(const lv_obj_t * obj, lv_area_t * coords_p)
  function lv_coord_t (line 1642) | lv_coord_t lv_obj_get_x(const lv_obj_t * obj)
  function lv_coord_t (line 1656) | lv_coord_t lv_obj_get_y(const lv_obj_t * obj)
  function lv_coord_t (line 1670) | lv_coord_t lv_obj_get_width(const lv_obj_t * obj)
  function lv_coord_t (line 1680) | lv_coord_t lv_obj_get_height(const lv_obj_t * obj)
  function lv_coord_t (line 1690) | lv_coord_t lv_obj_get_width_fit(lv_obj_t * obj)
  function lv_coord_t (line 1702) | lv_coord_t lv_obj_get_height_fit(lv_obj_t * obj)
  function lv_obj_get_auto_realign (line 1714) | bool lv_obj_get_auto_realign(lv_obj_t * obj)
  function lv_coord_t (line 1729) | lv_coord_t lv_obj_get_ext_click_pad_left(const lv_obj_t * obj)
  function lv_coord_t (line 1746) | lv_coord_t lv_obj_get_ext_click_pad_right(const lv_obj_t * obj)
  function lv_coord_t (line 1763) | lv_coord_t lv_obj_get_ext_click_pad_top(const lv_obj_t * obj)
  function lv_coord_t (line 1780) | lv_coord_t lv_obj_get_ext_click_pad_bottom(const lv_obj_t * obj)
  function lv_coord_t (line 1797) | lv_coord_t lv_obj_get_ext_draw_pad(const lv_obj_t * obj)
  function lv_style_t (line 1811) | const lv_style_t * lv_obj_get_style(const lv_obj_t * obj)
  function lv_obj_get_hidden (line 1859) | bool lv_obj_get_hidden(const lv_obj_t * obj)
  function lv_obj_get_click (line 1869) | bool lv_obj_get_click(const lv_obj_t * obj)
  function lv_obj_get_top (line 1879) | bool lv_obj_get_top(const lv_obj_t * obj)
  function lv_obj_get_drag (line 1889) | bool lv_obj_get_drag(const lv_obj_t * obj)
  function lv_drag_dir_t (line 1899) | lv_drag_dir_t lv_obj_get_drag_dir(const lv_obj_t * obj)
  function lv_obj_get_drag_throw (line 1909) | bool lv_obj_get_drag_throw(const lv_obj_t * obj)
  function lv_obj_get_drag_parent (line 1919) | bool lv_obj_get_drag_parent(const lv_obj_t * obj)
  function lv_obj_get_parent_event (line 1929) | bool lv_obj_get_parent_event(const lv_obj_t * obj)
  function lv_opa_t (line 1939) | lv_opa_t lv_obj_get_opa_scale_enable(const lv_obj_t * obj)
  function lv_opa_t (line 1949) | lv_opa_t lv_obj_get_opa_scale(const lv_obj_t * obj)
  function lv_obj_get_protect (line 1966) | uint8_t lv_obj_get_protect(const lv_obj_t * obj)
  function lv_obj_is_protected (line 1977) | bool lv_obj_is_protected(const lv_obj_t * obj, uint8_t prot)
  function lv_signal_cb_t (line 1987) | lv_signal_cb_t lv_obj_get_signal_cb(const lv_obj_t * obj)
  function lv_design_cb_t (line 1997) | lv_design_cb_t lv_obj_get_design_cb(const lv_obj_t * obj)
  function lv_event_cb_t (line 2007) | lv_event_cb_t lv_obj_get_event_cb(const lv_obj_t * obj)
  function lv_obj_get_type (line 2033) | void lv_obj_get_type(lv_obj_t * obj, lv_obj_type_t * buf)
  function lv_obj_user_data_t (line 2061) | lv_obj_user_data_t lv_obj_get_user_data(lv_obj_t * obj)
  function lv_obj_user_data_t (line 2071) | lv_obj_user_data_t * lv_obj_get_user_data_ptr(lv_obj_t * obj)
  function lv_obj_set_user_data (line 2081) | void lv_obj_set_user_data(lv_obj_t * obj, lv_obj_user_data_t data)
  function lv_obj_is_focused (line 2103) | bool lv_obj_is_focused(const lv_obj_t * obj)
  function lv_obj_del_async_cb (line 2117) | static void lv_obj_del_async_cb(void * obj)
  function lv_obj_design (line 2131) | static bool lv_obj_design(lv_obj_t * obj, const lv_area_t * mask_p, lv_d...
  function lv_res_t (line 2177) | static lv_res_t lv_obj_signal(lv_obj_t * obj, lv_signal_t sign, void * p...
  function refresh_children_position (line 2206) | static void refresh_children_position(lv_obj_t * obj, lv_coord_t x_diff,...
  function report_style_mod_core (line 2225) | static void report_style_mod_core(void * style_p, lv_obj_t * obj)
  function refresh_children_style (line 2244) | static void refresh_children_style(lv_obj_t * obj)
  function delete_children (line 2263) | static void delete_children(lv_obj_t * obj)
  function lv_event_mark_deleted (line 2329) | static void lv_event_mark_deleted(lv_obj_t * obj)

FILE: argon-nx-gui/src/libs/lvgl/lv_core/lv_refr.c
  function lv_refr_init (line 62) | void lv_refr_init(void)
  function lv_refr_now (line 74) | void lv_refr_now(lv_disp_t * disp)
  function lv_inv_area (line 94) | void lv_inv_area(lv_disp_t * disp, const lv_area_t * area_p)
  function lv_disp_t (line 141) | lv_disp_t * lv_refr_get_disp_refreshing(void)
  function lv_refr_set_disp_refreshing (line 152) | void lv_refr_set_disp_refreshing(lv_disp_t * disp)
  function lv_disp_refr_task (line 161) | void lv_disp_refr_task(lv_task_t * task)
  function lv_refr_join_area (line 232) | static void lv_refr_join_area(void)
  function lv_refr_areas (line 269) | static void lv_refr_areas(void)
  function lv_refr_area (line 289) | static void lv_refr_area(const lv_area_t * area_p)
  function lv_refr_area_part (line 374) | static void lv_refr_area_part(const lv_area_t * area_p)
  function lv_obj_t (line 416) | static lv_obj_t * lv_refr_get_top_obj(const lv_area_t * area_p, lv_obj_t...
  function lv_refr_obj_and_children (line 451) | static void lv_refr_obj_and_children(lv_obj_t * top_p, const lv_area_t *...
  function lv_refr_obj (line 494) | static void lv_refr_obj(lv_obj_t * obj, const lv_area_t * mask_ori_p)
  function lv_refr_vdb_flush (line 560) | static void lv_refr_vdb_flush(void)

FILE: argon-nx-gui/src/libs/lvgl/lv_core/lv_style.c
  function lv_style_init (line 67) | void lv_style_init(void)
  function lv_style_copy (line 220) | void lv_style_copy(lv_style_t * dest, const lv_style_t * src)
  function lv_style_mix (line 232) | void lv_style_mix(const lv_style_t * start, const lv_style_t * end, lv_s...
  function lv_style_anim_init (line 279) | void lv_style_anim_init(lv_anim_t * a)
  function lv_style_anim_set_styles (line 300) | void lv_style_anim_set_styles(lv_anim_t * a, lv_style_t * to_anim, const...
  function style_animator (line 319) | static void style_animator(lv_style_anim_dsc_t * dsc, lv_anim_value_t val)
  function style_animation_common_end_cb (line 335) | static void style_animation_common_end_cb(lv_anim_t * a)

FILE: argon-nx-gui/src/libs/lvgl/lv_draw/lv_draw.c
  function lv_draw_free_buf (line 75) | void lv_draw_free_buf(void)
  function lv_opa_t (line 93) | lv_opa_t lv_draw_aa_get_opa(lv_coord_t seg, lv_coord_t px_id, lv_opa_t b...
  function lv_draw_aa_ver_seg (line 143) | void lv_draw_aa_ver_seg(lv_coord_t x, lv_coord_t y, lv_coord_t length, c...
  function lv_draw_aa_hor_seg (line 169) | void lv_draw_aa_hor_seg(lv_coord_t x, lv_coord_t y, lv_coord_t length, c...

FILE: argon-nx-gui/src/libs/lvgl/lv_draw/lv_draw_arc.c
  function lv_draw_arc (line 54) | void lv_draw_arc(lv_coord_t center_x, lv_coord_t center_y, uint16_t radi...
  function fast_atan2 (line 165) | static uint16_t fast_atan2(int x, int y)
  function ver_line (line 241) | static void ver_line(lv_coord_t x, lv_coord_t y, const lv_area_t * mask,...
  function hor_line (line 249) | static void hor_line(lv_coord_t x, lv_coord_t y, const lv_area_t * mask,...
  function deg_test_norm (line 257) | static bool deg_test_norm(uint16_t deg, uint16_t start, uint16_t end)
  function deg_test_inv (line 265) | static bool deg_test_inv(uint16_t deg, uint16_t start, uint16_t end)

FILE: argon-nx-gui/src/libs/lvgl/lv_draw/lv_draw_basic.c
  function lv_draw_px (line 72) | void lv_draw_px(lv_coord_t x, lv_coord_t y, const lv_area_t * mask_p, lv...
  function lv_draw_fill (line 123) | void lv_draw_fill(const lv_area_t * cords_p, const lv_area_t * mask_p, l...
  function lv_draw_letter (line 233) | void lv_draw_letter(const lv_point_t * pos_p, const lv_area_t * mask_p, ...
  function lv_draw_map (line 386) | void lv_draw_map(const lv_area_t * cords_p, const lv_area_t * mask_p, co...
  function sw_mem_blend (line 567) | static void sw_mem_blend(lv_color_t * dest, const lv_color_t * src, uint...
  function sw_color_fill (line 587) | static void sw_color_fill(lv_color_t * mem, lv_coord_t mem_width, const ...
  function lv_color_t (line 663) | static inline lv_color_t color_mix_2_alpha(lv_color_t bg_color, lv_opa_t...

FILE: argon-nx-gui/src/libs/lvgl/lv_draw/lv_draw_img.c
  function lv_draw_img (line 47) | void lv_draw_img(const lv_area_t * coords, const lv_area_t * mask, const...
  function lv_color_t (line 78) | lv_color_t lv_img_buf_get_px_color(lv_img_dsc_t * dsc, lv_coord_t x, lv_...
  function lv_opa_t (line 158) | lv_opa_t lv_img_buf_get_px_alpha(lv_img_dsc_t * dsc, lv_coord_t x, lv_co...
  function lv_img_buf_set_px_color (line 231) | void lv_img_buf_set_px_color(lv_img_dsc_t * dsc, lv_coord_t x, lv_coord_...
  function lv_img_buf_set_px_alpha (line 292) | void lv_img_buf_set_px_alpha(lv_img_dsc_t * dsc, lv_coord_t x, lv_coord_...
  function lv_img_buf_set_palette (line 349) | void lv_img_buf_set_palette(lv_img_dsc_t * dsc, uint8_t id, lv_color_t c)
  function lv_img_color_format_get_px_size (line 368) | uint8_t lv_img_color_format_get_px_size(lv_img_cf_t cf)
  function lv_img_color_format_is_chroma_keyed (line 397) | bool lv_img_color_format_is_chroma_keyed(lv_img_cf_t cf)
  function lv_img_color_format_has_alpha (line 419) | bool lv_img_color_format_has_alpha(lv_img_cf_t cf)
  function lv_img_src_t (line 444) | lv_img_src_t lv_img_src_get_type(const void * src)
  function lv_res_t (line 471) | static lv_res_t lv_img_draw_core(const lv_area_t * coords, const lv_area...

FILE: argon-nx-gui/src/libs/lvgl/lv_draw/lv_draw_label.c
  type cmd_state_t (line 26) | typedef uint8_t cmd_state_t;
  function lv_draw_label (line 57) | void lv_draw_label(const lv_area_t * coords, const lv_area_t * mask, con...
  function hex_char_to_num (line 262) | static uint8_t hex_char_to_num(char hex)

FILE: argon-nx-gui/src/libs/lvgl/lv_draw/lv_draw_line.c
  type line_draw_t (line 23) | typedef struct
  type line_width_t (line 37) | typedef struct
  function lv_draw_line (line 78) | void lv_draw_line(const lv_point_t * point1, const lv_point_t * point2, ...
  function line_draw_hor (line 183) | static void line_draw_hor(line_draw_t * main_line, const lv_area_t * mas...
  function line_draw_ver (line 204) | static void line_draw_ver(line_draw_t * main_line, const lv_area_t * mas...
  function line_draw_skew (line 225) | static void line_draw_skew(line_draw_t * main_line, bool dir_ori, const ...
  function line_init (line 573) | static void line_init(line_draw_t * line, const lv_point_t * p1, const l...
  function line_next (line 592) | static bool line_next(line_draw_t * line)
  function line_next_y (line 612) | static bool line_next_y(line_draw_t * line)
  function line_next_x (line 628) | static bool line_next_x(line_draw_t * line)

FILE: argon-nx-gui/src/libs/lvgl/lv_draw/lv_draw_rect.c
  function lv_draw_rect (line 79) | void lv_draw_rect(const lv_area_t * coords, const lv_area_t * mask, cons...
  function lv_draw_rect_main_mid (line 122) | static void lv_draw_rect_main_mid(const lv_area_t * coords, const lv_are...
  function lv_draw_rect_main_corner (line 194) | static void lv_draw_rect_main_corner(const lv_area_t * coords, const lv_...
  function lv_draw_rect_border_straight (line 505) | static void lv_draw_rect_border_straight(const lv_area_t * coords, const...
  function lv_draw_rect_border_corner (line 705) | static void lv_draw_rect_border_corner(const lv_area_t * coords, const l...
  function lv_draw_shadow (line 1115) | static void lv_draw_shadow(const lv_area_t * coords, const lv_area_t * m...
  function lv_draw_shadow_full (line 1144) | static void lv_draw_shadow_full(const lv_area_t * coords, const lv_area_...
  function lv_draw_shadow_bottom (line 1310) | static void lv_draw_shadow_bottom(const lv_area_t * coords, const lv_are...
  function lv_draw_shadow_full_straight (line 1404) | static void lv_draw_shadow_full_straight(const lv_area_t * coords, const...
  function lv_draw_cont_radius_corr (line 1465) | static uint16_t lv_draw_cont_radius_corr(uint16_t r, lv_coord_t w, lv_co...
  function lv_opa_t (line 1493) | static lv_opa_t antialias_get_opa_circ(lv_coord_t seg, lv_coord_t px_id,...

FILE: argon-nx-gui/src/libs/lvgl/lv_draw/lv_draw_triangle.c
  function lv_draw_triangle (line 46) | void lv_draw_triangle(const lv_point_t * points, const lv_area_t * mask,...
  function lv_draw_polygon (line 89) | void lv_draw_polygon(const lv_point_t * points, uint32_t point_cnt, cons...
  function tri_draw_flat (line 112) | void tri_draw_flat(const lv_point_t * points, const lv_area_t * mask, co...
  function tri_draw_tall (line 223) | void tri_draw_tall(const lv_point_t * points, const lv_area_t * mask, co...
  function point_swap (line 333) | static void point_swap(lv_point_t * p1, lv_point_t * p2)

FILE: argon-nx-gui/src/libs/lvgl/lv_draw/lv_img_cache.c
  function lv_img_cache_entry_t (line 62) | lv_img_cache_entry_t * lv_img_cache_open(const void * src, const lv_styl...
  function lv_img_cache_set_size (line 145) | void lv_img_cache_set_size(uint16_t new_entry_cnt)
  function lv_img_cache_invalidate_src (line 175) | void lv_img_cache_invalidate_src(const void * src)

FILE: argon-nx-gui/src/libs/lvgl/lv_draw/lv_img_decoder.c
  type lv_img_decoder_built_in_data_t (line 28) | typedef struct
  function lv_img_decoder_init (line 61) | void lv_img_decoder_init(void)
  function lv_res_t (line 88) | lv_res_t lv_img_decoder_get_info(const char * src, lv_img_header_t * hea...
  function lv_res_t (line 118) | lv_res_t lv_img_decoder_open(lv_img_decoder_dsc_t * dsc, const void * sr...
  function lv_res_t (line 162) | lv_res_t lv_img_decoder_read_line(lv_img_decoder_dsc_t * dsc, lv_coord_t...
  function lv_img_decoder_close (line 174) | void lv_img_decoder_close(lv_img_decoder_dsc_t * dsc)
  function lv_img_decoder_t (line 185) | lv_img_decoder_t * lv_img_decoder_create(void)
  function lv_img_decoder_delete (line 201) | void lv_img_decoder_delete(lv_img_decoder_t * decoder)
  function lv_img_decoder_set_info_cb (line 212) | void lv_img_decoder_set_info_cb(lv_img_decoder_t * decoder, lv_img_decod...
  function lv_img_decoder_set_open_cb (line 222) | void lv_img_decoder_set_open_cb(lv_img_decoder_t * decoder, lv_img_decod...
  function lv_img_decoder_set_read_line_cb (line 232) | void lv_img_decoder_set_read_line_cb(lv_img_decoder_t * decoder, lv_img_...
  function lv_img_decoder_set_close_cb (line 242) | void lv_img_decoder_set_close_cb(lv_img_decoder_t * decoder, lv_img_deco...
  function lv_res_t (line 254) | lv_res_t lv_img_decoder_built_in_info(lv_img_decoder_t * decoder, const ...
  function lv_res_t (line 303) | lv_res_t lv_img_decoder_built_in_open(lv_img_decoder_t * decoder, lv_img...
  function lv_res_t (line 443) | lv_res_t lv_img_decoder_built_in_read_line(lv_img_decoder_t * decoder, l...
  function lv_img_decoder_built_in_close (line 477) | void lv_img_decoder_built_in_close(lv_img_decoder_t * decoder, lv_img_de...
  function lv_res_t (line 502) | static lv_res_t lv_img_decoder_built_in_line_true_color(lv_img_decoder_d...
  function lv_res_t (line 532) | static lv_res_t lv_img_decoder_built_in_line_alpha(lv_img_decoder_dsc_t ...
  function lv_res_t (line 640) | static lv_res_t lv_img_decoder_built_in_line_indexed(lv_img_decoder_dsc_...

FILE: argon-nx-gui/src/libs/lvgl/lv_font/lv_font.c
  function lv_font_get_glyph_dsc (line 61) | bool lv_font_get_glyph_dsc(const lv_font_t * font_p, lv_font_glyph_dsc_t...
  function lv_font_get_glyph_width (line 73) | uint16_t lv_font_get_glyph_width(const lv_font_t * font, uint32_t letter...

FILE: argon-nx-gui/src/libs/lvgl/lv_font/lv_font_fmt_txt.c
  function lv_font_get_glyph_dsc_fmt_txt (line 76) | bool lv_font_get_glyph_dsc_fmt_txt(const lv_font_t * font, lv_font_glyph...
  function get_glyph_dsc_id (line 110) | static uint32_t get_glyph_dsc_id(const lv_font_t * font, uint32_t letter)
  function get_kern_value (line 165) | static int8_t get_kern_value(const lv_font_t * font, uint32_t gid_left, ...
  function kern_pair_8_compare (line 220) | static int32_t kern_pair_8_compare(const void * ref, const void * element)
  function kern_pair_16_compare (line 231) | static int32_t kern_pair_16_compare(const void * ref, const void * element)
  function unicode_list_compare (line 254) | static int32_t unicode_list_compare(const void * ref, const void * element)

FILE: argon-nx-gui/src/libs/lvgl/lv_hal/lv_hal_disp.c
  function lv_disp_drv_init (line 55) | void lv_disp_drv_init(lv_disp_drv_t * driver)
  function lv_disp_buf_init (line 101) | void lv_disp_buf_init(lv_disp_buf_t * disp_buf, void * buf1, void * buf2...
  function lv_disp_t (line 117) | lv_disp_t * lv_disp_drv_register(lv_disp_drv_t * driver)
  function lv_disp_drv_update (line 163) | void lv_disp_drv_update(lv_disp_t * disp, lv_disp_drv_t * new_drv)
  function lv_disp_remove (line 178) | void lv_disp_remove(lv_disp_t * disp)
  function lv_disp_set_default (line 203) | void lv_disp_set_default(lv_disp_t * disp)
  function lv_disp_t (line 212) | lv_disp_t * lv_disp_get_default(void)
  function lv_coord_t (line 222) | lv_coord_t lv_disp_get_hor_res(lv_disp_t * disp)
  function lv_coord_t (line 237) | lv_coord_t lv_disp_get_ver_res(lv_disp_t * disp)
  function lv_disp_get_antialiasing (line 252) | bool lv_disp_get_antialiasing(lv_disp_t * disp)
  function LV_ATTRIBUTE_FLUSH_READY (line 268) | LV_ATTRIBUTE_FLUSH_READY void lv_disp_flush_ready(lv_disp_drv_t * disp_drv)
  function lv_disp_t (line 285) | lv_disp_t * lv_disp_get_next(lv_disp_t * disp)
  function lv_disp_buf_t (line 298) | lv_disp_buf_t * lv_disp_get_buf(lv_disp_t * disp)
  function lv_disp_get_inv_buf_size (line 307) | uint16_t lv_disp_get_inv_buf_size(lv_disp_t * disp)
  function lv_disp_pop_from_inv_buf (line 316) | void lv_disp_pop_from_inv_buf(lv_disp_t * disp, uint16_t num)
  function lv_disp_is_double_buf (line 330) | bool lv_disp_is_double_buf(lv_disp_t * disp)
  function lv_disp_is_true_double_buf (line 344) | bool lv_disp_is_true_double_buf(lv_disp_t * disp)

FILE: argon-nx-gui/src/libs/lvgl/lv_hal/lv_hal_indev.c
  function lv_indev_drv_init (line 51) | void lv_indev_drv_init(lv_indev_drv_t * driver)
  function lv_indev_t (line 67) | lv_indev_t * lv_indev_drv_register(lv_indev_drv_t * driver)
  function lv_indev_drv_update (line 102) | void lv_indev_drv_update(lv_indev_t * indev, lv_indev_drv_t * new_drv)
  function lv_indev_t (line 113) | lv_indev_t * lv_indev_get_next(lv_indev_t * indev)
  function lv_indev_read (line 127) | bool lv_indev_read(lv_indev_t * indev, lv_indev_data_t * data)

FILE: argon-nx-gui/src/libs/lvgl/lv_hal/lv_hal_tick.c
  function LV_ATTRIBUTE_TICK_INC (line 52) | LV_ATTRIBUTE_TICK_INC void lv_tick_inc(uint32_t tick_period)
  function lv_tick_get (line 62) | uint32_t lv_tick_get(void)
  function lv_tick_elaps (line 83) | uint32_t lv_tick_elaps(uint32_t prev_tick)

FILE: argon-nx-gui/src/libs/lvgl/lv_misc/lv_anim.c
  function lv_anim_core_init (line 56) | void lv_anim_core_init(void)
  function lv_anim_init (line 72) | void lv_anim_init(lv_anim_t * a)
  function lv_anim_create (line 84) | void lv_anim_create(lv_anim_t * a)
  function lv_anim_del (line 116) | bool lv_anim_del(void * var, lv_anim_exec_xcb_t exec_cb)
  function lv_anim_count_running (line 144) | uint16_t lv_anim_count_running(void)
  function lv_anim_speed_to_time (line 160) | uint16_t lv_anim_speed_to_time(uint16_t speed, lv_anim_value_t start, lv...
  function lv_anim_value_t (line 179) | lv_anim_value_t lv_anim_path_linear(const lv_anim_t * a)
  function lv_anim_value_t (line 204) | lv_anim_value_t lv_anim_path_ease_in(const lv_anim_t * a)
  function lv_anim_value_t (line 228) | lv_anim_value_t lv_anim_path_ease_out(const lv_anim_t * a)
  function lv_anim_value_t (line 253) | lv_anim_value_t lv_anim_path_ease_in_out(const lv_anim_t * a)
  function lv_anim_value_t (line 278) | lv_anim_value_t lv_anim_path_overshoot(const lv_anim_t * a)
  function lv_anim_value_t (line 303) | lv_anim_value_t lv_anim_path_bounce(const lv_anim_t * a)
  function lv_anim_value_t (line 361) | lv_anim_value_t lv_anim_path_step(const lv_anim_t * a)
  function anim_task (line 377) | static void anim_task(lv_task_t * param)
  function anim_ready_handler (line 434) | static bool anim_ready_handler(lv_anim_t * a)

FILE: argon-nx-gui/src/libs/lvgl/lv_misc/lv_area.c
  function lv_area_set (line 50) | void lv_area_set(lv_area_t * area_p, lv_coord_t x1, lv_coord_t y1, lv_co...
  function lv_area_set_width (line 63) | void lv_area_set_width(lv_area_t * area_p, lv_coord_t w)
  function lv_area_set_height (line 73) | void lv_area_set_height(lv_area_t * area_p, lv_coord_t h)
  function lv_area_set_pos (line 84) | void lv_area_set_pos(lv_area_t * area_p, lv_coord_t x, lv_coord_t y)
  function lv_area_get_size (line 99) | uint32_t lv_area_get_size(const lv_area_t * area_p)
  function lv_area_intersect (line 115) | bool lv_area_intersect(lv_area_t * res_p, const lv_area_t * a1_p, const ...
  function lv_area_join (line 137) | void lv_area_join(lv_area_t * a_res_p, const lv_area_t * a1_p, const lv_...
  function lv_area_is_point_on (line 151) | bool lv_area_is_point_on(const lv_area_t * a_p, const lv_point_t * p_p)
  function lv_area_is_on (line 168) | bool lv_area_is_on(const lv_area_t * a1_p, const lv_area_t * a2_p)
  function lv_area_is_in (line 183) | bool lv_area_is_in(const lv_area_t * ain_p, const lv_area_t * aholder_p)

FILE: argon-nx-gui/src/libs/lvgl/lv_misc/lv_async.c
  function lv_res_t (line 38) | lv_res_t lv_async_call(lv_async_cb_t async_xcb, void * user_data)
  function lv_async_task_cb (line 68) | static void lv_async_task_cb(lv_task_t *task)

FILE: argon-nx-gui/src/libs/lvgl/lv_misc/lv_circ.c
  function lv_circ_init (line 43) | void lv_circ_init(lv_point_t * c, lv_coord_t * tmp, lv_coord_t radius)
  function lv_circ_cont (line 55) | bool lv_circ_cont(lv_point_t * c)
  function lv_circ_next (line 65) | void lv_circ_next(lv_point_t * c, lv_coord_t * tmp)

FILE: argon-nx-gui/src/libs/lvgl/lv_misc/lv_color.c
  function lv_color_t (line 46) | lv_color_t lv_color_hsv_to_rgb(uint16_t h, uint8_t s, uint8_t v)
  function lv_color_hsv_t (line 114) | lv_color_hsv_t lv_color_rgb_to_hsv(uint8_t r, uint8_t g, uint8_t b)

FILE: argon-nx-gui/src/libs/lvgl/lv_misc/lv_fs.c
  function lv_fs_init (line 56) | void lv_fs_init(void)
  function lv_fs_is_ready (line 67) | bool lv_fs_is_ready(char letter)
  function lv_fs_res_t (line 85) | lv_fs_res_t lv_fs_open(lv_fs_file_t * file_p, const char * path, lv_fs_m...
  function lv_fs_res_t (line 137) | lv_fs_res_t lv_fs_close(lv_fs_file_t * file_p)
  function lv_fs_res_t (line 162) | lv_fs_res_t lv_fs_remove(const char * path)
  function lv_fs_res_t (line 191) | lv_fs_res_t lv_fs_read(lv_fs_file_t * file_p, void * buf, uint32_t btr, ...
  function lv_fs_res_t (line 212) | lv_fs_res_t lv_fs_write(lv_fs_file_t * file_p, const void * buf, uint32_...
  function lv_fs_res_t (line 237) | lv_fs_res_t lv_fs_seek(lv_fs_file_t * file_p, uint32_t pos)
  function lv_fs_res_t (line 258) | lv_fs_res_t lv_fs_tell(lv_fs_file_t * file_p, uint32_t * pos)
  function lv_fs_res_t (line 281) | lv_fs_res_t lv_fs_trunc(lv_fs_file_t * file_p)
  function lv_fs_res_t (line 301) | lv_fs_res_t lv_fs_size(lv_fs_file_t * file_p, uint32_t * size)
  function lv_fs_res_t (line 322) | lv_fs_res_t lv_fs_rename(const char * oldname, const char * newname)
  function lv_fs_res_t (line 356) | lv_fs_res_t lv_fs_dir_open(lv_fs_dir_t * rddir_p, const char * path)
  function lv_fs_res_t (line 394) | lv_fs_res_t lv_fs_dir_read(lv_fs_dir_t * rddir_p, char * fn)
  function lv_fs_res_t (line 415) | lv_fs_res_t lv_fs_dir_close(lv_fs_dir_t * rddir_p)
  function lv_fs_res_t (line 444) | lv_fs_res_t lv_fs_free_space(char letter, uint32_t * total_p, uint32_t *...
  function lv_fs_drv_init (line 474) | void lv_fs_drv_init(lv_fs_drv_t * drv)
  function lv_fs_drv_register (line 484) | void lv_fs_drv_register(lv_fs_drv_t * drv_p)
  function lv_fs_drv_t (line 500) | lv_fs_drv_t * lv_fs_get_drv(char letter)

FILE: argon-nx-gui/src/libs/lvgl/lv_misc/lv_ll.c
  function lv_ll_init (line 50) | void lv_ll_init(lv_ll_t * ll_p, uint32_t node_size)
  function lv_ll_rem (line 163) | void lv_ll_rem(lv_ll_t * ll_p, void * node_p)
  function lv_ll_clear (line 194) | void lv_ll_clear(lv_ll_t * ll_p)
  function lv_ll_chg_list (line 220) | void lv_ll_chg_list(lv_ll_t * ll_ori_p, lv_ll_t * ll_new_p, void * node,...
  function lv_ll_get_len (line 326) | uint32_t lv_ll_get_len(const lv_ll_t * ll_p)
  function lv_ll_swap (line 338) | void lv_ll_swap(lv_ll_t * ll_p, void * n1_p, void * n2_p)
  function lv_ll_move_before (line 352) | void lv_ll_move_before(lv_ll_t * ll_p, void * n_act, void * n_after)
  function lv_ll_is_empty (line 385) | bool lv_ll_is_empty(lv_ll_t * ll_p)
  function node_set_prev (line 404) | static void node_set_prev(lv_ll_t * ll_p, lv_ll_node_t * act, lv_ll_node...
  function node_set_next (line 421) | static void node_set_next(lv_ll_t * ll_p, lv_ll_node_t * act, lv_ll_node...

FILE: argon-nx-gui/src/libs/lvgl/lv_misc/lv_log.c
  function lv_log_register_print_cb (line 46) | void lv_log_register_print_cb(lv_log_print_g_cb_t print_cb)
  function lv_log_add (line 58) | void lv_log_add(lv_log_level_t level, const char * file, int line, const...

FILE: argon-nx-gui/src/libs/lvgl/lv_misc/lv_math.c
  function lv_trigo_sin (line 49) | int16_t lv_trigo_sin(int16_t angle)
  function lv_bezier3 (line 81) | int32_t lv_bezier3(uint32_t t, int32_t u0, int32_t u1, int32_t u2, int32...

FILE: argon-nx-gui/src/libs/lvgl/lv_misc/lv_mem.c
  type lv_mem_header_t (line 37) | typedef union
  type lv_mem_ent_t (line 47) | typedef struct
  function lv_mem_init (line 84) | void lv_mem_init(void)
  function lv_mem_free (line 174) | void lv_mem_free(const void * data)
  function lv_mem_defrag (line 275) | void lv_mem_defrag(void)
  function lv_mem_monitor (line 319) | void lv_mem_monitor(lv_mem_monitor_t * mon_p)
  function lv_mem_get_size (line 357) | uint32_t lv_mem_get_size(const void * data)
  function lv_mem_get_size (line 369) | uint32_t lv_mem_get_size(const void * data)
  function lv_mem_ent_t (line 386) | static lv_mem_ent_t * ent_get_next(lv_mem_ent_t * act_e)
  function ent_trunc (line 431) | static void ent_trunc(lv_mem_ent_t * e, uint32_t size)

FILE: argon-nx-gui/src/libs/lvgl/lv_misc/lv_task.c
  function lv_task_core_init (line 54) | void lv_task_core_init(void)
  function LV_ATTRIBUTE_TASK_HANDLER (line 65) | LV_ATTRIBUTE_TASK_HANDLER void lv_task_handler(void)
  function lv_task_t (line 165) | lv_task_t * lv_task_create_basic(void)
  function lv_task_t (line 223) | lv_task_t * lv_task_create(lv_task_cb_t task_cb, uint32_t period, lv_tas...
  function lv_task_set_cb (line 242) | void lv_task_set_cb(lv_task_t * task, lv_task_cb_t task_cb)
  function lv_task_del (line 251) | void lv_task_del(lv_task_t * task)
  function lv_task_set_prio (line 265) | void lv_task_set_prio(lv_task_t * task, lv_task_prio_t prio)
  function lv_task_set_period (line 292) | void lv_task_set_period(lv_task_t * task, uint32_t period)
  function lv_task_ready (line 301) | void lv_task_ready(lv_task_t * task)
  function lv_task_once (line 310) | void lv_task_once(lv_task_t * task)
  function lv_task_reset (line 320) | void lv_task_reset(lv_task_t * task)
  function lv_task_enable (line 329) | void lv_task_enable(bool en)
  function lv_task_get_idle (line 338) | uint8_t lv_task_get_idle(void)
  function lv_task_exec (line 352) | static bool lv_task_exec(lv_task_t * task)

FILE: argon-nx-gui/src/libs/lvgl/lv_misc/lv_templ.c
  type keep_pedantic_happy (line 20) | typedef int keep_pedantic_happy;

FILE: argon-nx-gui/src/libs/lvgl/lv_misc/lv_txt.c
  function lv_txt_get_size (line 92) | void lv_txt_get_size(lv_point_t * size_res, const char * text, const lv_...
  function lv_txt_get_next_line (line 142) | uint16_t lv_txt_get_next_line(const char * txt, const lv_font_t * font, ...
  function lv_coord_t (line 226) | lv_coord_t lv_txt_get_width(const char * txt, uint16_t length, const lv_...
  function lv_txt_is_cmd (line 272) | bool lv_txt_is_cmd(lv_txt_cmd_state_t * state, uint32_t c)
  function lv_txt_ins (line 310) | void lv_txt_ins(char * txt_buf, uint32_t pos, const char * ins_txt)
  function lv_txt_cut (line 334) | void lv_txt_cut(char * txt, uint32_t pos, uint32_t len)
  function lv_txt_utf8_size (line 359) | static uint8_t lv_txt_utf8_size(const char * str)
  function lv_txt_unicode_to_utf8 (line 377) | static uint32_t lv_txt_unicode_to_utf8(uint32_t letter_uni)
  function lv_txt_utf8_conv_wc (line 408) | static uint32_t lv_txt_utf8_conv_wc(uint32_t c)
  function lv_txt_utf8_next (line 435) | static uint32_t lv_txt_utf8_next(const char * txt, uint32_t * i)
  function lv_txt_utf8_prev (line 508) | static uint32_t lv_txt_utf8_prev(const char * txt, uint32_t * i)
  function lv_txt_utf8_get_byte_id (line 541) | static uint32_t lv_txt_utf8_get_byte_id(const char * txt, uint32_t utf8_id)
  function lv_txt_utf8_get_char_id (line 559) | static uint32_t lv_txt_utf8_get_char_id(const char * txt, uint32_t byte_id)
  function lv_txt_utf8_get_length (line 578) | static uint32_t lv_txt_utf8_get_length(const char * txt)
  function lv_txt_iso8859_1_size (line 601) | static uint8_t lv_txt_iso8859_1_size(const char * str)
  function lv_txt_unicode_to_iso8859_1 (line 612) | static uint32_t lv_txt_unicode_to_iso8859_1(uint32_t letter_uni)
  function lv_txt_iso8859_1_conv_wc (line 626) | static uint32_t lv_txt_iso8859_1_conv_wc(uint32_t c)
  function lv_txt_iso8859_1_next (line 639) | static uint32_t lv_txt_iso8859_1_next(const char * txt, uint32_t * i)
  function lv_txt_iso8859_1_prev (line 654) | static uint32_t lv_txt_iso8859_1_prev(const char * txt, uint32_t * i)
  function lv_txt_iso8859_1_get_byte_id (line 671) | static uint32_t lv_txt_iso8859_1_get_byte_id(const char * txt, uint32_t ...
  function lv_txt_iso8859_1_get_char_id (line 684) | static uint32_t lv_txt_iso8859_1_get_char_id(const char * txt, uint32_t ...
  function lv_txt_iso8859_1_get_length (line 696) | static uint32_t lv_txt_iso8859_1_get_length(const char * txt)
  function is_break_char (line 715) | static inline bool is_break_char(uint32_t letter)

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_arc.c
  function lv_obj_t (line 50) | lv_obj_t * lv_arc_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_arc_set_angles (line 120) | void lv_arc_set_angles(lv_obj_t * arc, uint16_t start, uint16_t end)
  function lv_arc_set_style (line 139) | void lv_arc_set_style(lv_obj_t * arc, lv_arc_style_t type, const lv_styl...
  function lv_arc_get_angle_start (line 155) | uint16_t lv_arc_get_angle_start(lv_obj_t * arc)
  function lv_arc_get_angle_end (line 167) | uint16_t lv_arc_get_angle_end(lv_obj_t * arc)
  function lv_style_t (line 180) | const lv_style_t * lv_arc_get_style(const lv_obj_t * arc, lv_arc_style_t...
  function lv_arc_design (line 214) | static bool lv_arc_design(lv_obj_t * arc, const lv_area_t * mask, lv_des...
  function lv_res_t (line 276) | static lv_res_t lv_arc_signal(lv_obj_t * arc, lv_signal_t sign, void * p...

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_bar.c
  function lv_obj_t (line 58) | lv_obj_t * lv_bar_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_bar_set_value (line 131) | void lv_bar_set_value(lv_obj_t * bar, int16_t value, lv_anim_enable_t anim)
  function lv_bar_set_range (line 186) | void lv_bar_set_range(lv_obj_t * bar, int16_t min, int16_t max)
  function lv_bar_set_sym (line 210) | void lv_bar_set_sym(lv_obj_t * bar, bool en)
  function lv_bar_set_anim_time (line 221) | void lv_bar_set_anim_time(lv_obj_t * bar, uint16_t anim_time)
  function lv_bar_set_style (line 238) | void lv_bar_set_style(lv_obj_t * bar, lv_bar_style_t type, const lv_styl...
  function lv_bar_get_value (line 260) | int16_t lv_bar_get_value(const lv_obj_t * bar)
  function lv_bar_get_min_value (line 276) | int16_t lv_bar_get_min_value(const lv_obj_t * bar)
  function lv_bar_get_max_value (line 287) | int16_t lv_bar_get_max_value(const lv_obj_t * bar)
  function lv_bar_get_sym (line 298) | bool lv_bar_get_sym(lv_obj_t * bar)
  function lv_bar_get_anim_time (line 309) | uint16_t lv_bar_get_anim_time(lv_obj_t * bar)
  function lv_style_t (line 326) | const lv_style_t * lv_bar_get_style(const lv_obj_t * bar, lv_bar_style_t...
  function lv_bar_design (line 354) | static bool lv_bar_design(lv_obj_t * bar, const lv_area_t * mask, lv_des...
  function lv_res_t (line 491) | static lv_res_t lv_bar_signal(lv_obj_t * bar, lv_signal_t sign, void * p...
  function lv_bar_anim (line 515) | static void lv_bar_anim(void * bar, lv_anim_value_t value)
  function lv_bar_anim_ready (line 522) | static void lv_bar_anim_ready(lv_anim_t * a)

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_btn.c
  function lv_obj_t (line 72) | lv_obj_t * lv_btn_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_btn_set_toggle (line 159) | void lv_btn_set_toggle(lv_obj_t * btn, bool tgl)
  function lv_btn_set_state (line 171) | void lv_btn_set_state(lv_obj_t * btn, lv_btn_state_t state)
  function lv_btn_toggle (line 184) | void lv_btn_toggle(lv_obj_t * btn)
  function lv_btn_set_ink_in_time (line 201) | void lv_btn_set_ink_in_time(lv_obj_t * btn, uint16_t time)
  function lv_btn_set_ink_wait_time (line 219) | void lv_btn_set_ink_wait_time(lv_obj_t * btn, uint16_t time)
  function lv_btn_set_ink_out_time (line 238) | void lv_btn_set_ink_out_time(lv_obj_t * btn, uint16_t time)
  function lv_btn_set_style (line 257) | void lv_btn_set_style(lv_obj_t * btn, lv_btn_style_t type, const lv_styl...
  function lv_btn_state_t (line 282) | lv_btn_state_t lv_btn_get_state(const lv_obj_t * btn)
  function lv_btn_get_toggle (line 293) | bool lv_btn_get_toggle(const lv_obj_t * btn)
  function lv_btn_get_ink_in_time (line 305) | uint16_t lv_btn_get_ink_in_time(const lv_obj_t * btn)
  function lv_btn_get_ink_wait_time (line 321) | uint16_t lv_btn_get_ink_wait_time(const lv_obj_t * btn)
  function lv_btn_get_ink_out_time (line 336) | uint16_t lv_btn_get_ink_out_time(const lv_obj_t * btn)
  function lv_style_t (line 353) | const lv_style_t * lv_btn_get_style(const lv_obj_t * btn, lv_btn_style_t...
  function lv_btn_design (line 397) | static bool lv_btn_design(lv_obj_t * btn, const lv_area_t * mask, lv_des...
  function lv_res_t (line 479) | static lv_res_t lv_btn_signal(lv_obj_t * btn, lv_signal_t sign, void * p...
  function lv_btn_ink_effect_anim (line 656) | static void lv_btn_ink_effect_anim(lv_obj_t * btn, lv_anim_value_t val)
  function lv_btn_ink_effect_anim_ready (line 668) | static void lv_btn_ink_effect_anim_ready(lv_anim_t * a)

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_btnm.c
  function lv_obj_t (line 67) | lv_obj_t * lv_btnm_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_btnm_set_map (line 143) | void lv_btnm_set_map(const lv_obj_t * btnm, const char * map[])
  function lv_btnm_set_ctrl_map (line 266) | void lv_btnm_set_ctrl_map(const lv_obj_t * btnm, const lv_btnm_ctrl_t ct...
  function lv_btnm_set_pressed (line 280) | void lv_btnm_set_pressed(const lv_obj_t * btnm, uint16_t id)
  function lv_btnm_set_style (line 298) | void lv_btnm_set_style(lv_obj_t * btnm, lv_btnm_style_t type, const lv_s...
  function lv_btnm_set_recolor (line 332) | void lv_btnm_set_recolor(const lv_obj_t * btnm, bool en)
  function lv_btnm_set_btn_ctrl (line 345) | void lv_btnm_set_btn_ctrl(const lv_obj_t * btnm, uint16_t btn_id, lv_btn...
  function lv_btnm_clear_btn_ctrl (line 360) | void lv_btnm_clear_btn_ctrl(const lv_obj_t * btnm, uint16_t btn_id, lv_b...
  function lv_btnm_set_btn_ctrl_all (line 375) | void lv_btnm_set_btn_ctrl_all(lv_obj_t * btnm, lv_btnm_ctrl_t ctrl)
  function lv_btnm_clear_btn_ctrl_all (line 390) | void lv_btnm_clear_btn_ctrl_all(lv_obj_t * btnm, lv_btnm_ctrl_t ctrl)
  function lv_btnm_set_btn_width (line 408) | void lv_btnm_set_btn_width(const lv_obj_t * btnm, uint16_t btn_id, uint8...
  function lv_btnm_set_one_toggle (line 428) | void lv_btnm_set_one_toggle(lv_obj_t * btnm, bool one_toggle)
  function lv_btnm_get_recolor (line 457) | bool lv_btnm_get_recolor(const lv_obj_t * btnm)
  function lv_btnm_get_active_btn (line 470) | uint16_t lv_btnm_get_active_btn(const lv_obj_t * btnm)
  function lv_btnm_get_pressed_btn (line 498) | uint16_t lv_btnm_get_pressed_btn(const lv_obj_t * btnm)
  function lv_btnm_get_btn_ctrl (line 540) | bool lv_btnm_get_btn_ctrl(lv_obj_t * btnm, uint16_t btn_id, lv_btnm_ctrl...
  function lv_style_t (line 554) | const lv_style_t * lv_btnm_get_style(const lv_obj_t * btnm, lv_btnm_styl...
  function lv_btnm_get_one_toggle (line 577) | bool lv_btnm_get_one_toggle(const lv_obj_t * btnm)
  function lv_btnm_design (line 598) | static bool lv_btnm_design(lv_obj_t * btnm, const lv_area_t * mask, lv_d...
  function lv_res_t (line 709) | static lv_res_t lv_btnm_signal(lv_obj_t * btnm, lv_signal_t sign, void *...
  function allocate_btn_areas_and_controls (line 917) | static void allocate_btn_areas_and_controls(const lv_obj_t * btnm, const...
  function get_button_width (line 956) | static uint8_t get_button_width(lv_btnm_ctrl_t ctrl_bits)
  function button_is_hidden (line 962) | static bool button_is_hidden(lv_btnm_ctrl_t ctrl_bits)
  function button_is_repeat_disabled (line 967) | static bool button_is_repeat_disabled(lv_btnm_ctrl_t ctrl_bits)
  function button_is_inactive (line 972) | static bool button_is_inactive(lv_btnm_ctrl_t ctrl_bits)
  function button_is_click_trig (line 977) | static bool button_is_click_trig(lv_btnm_ctrl_t ctrl_bits)
  function button_is_tgl_enabled (line 982) | static bool button_is_tgl_enabled(lv_btnm_ctrl_t ctrl_bits)
  function button_get_tgl_state (line 987) | static bool button_get_tgl_state(lv_btnm_ctrl_t ctrl_bits)
  function get_button_from_point (line 998) | static uint16_t get_button_from_point(lv_obj_t * btnm, lv_point_t * p)
  function invalidate_button_area (line 1022) | static void invalidate_button_area(const lv_obj_t * btnm, uint16_t btn_idx)
  function maps_are_identical (line 1048) | static bool maps_are_identical(const char ** map1, const char ** map2)
  function make_one_button_toggled (line 1067) | static void make_one_button_toggled(lv_obj_t * btnm, uint16_t btn_idx)

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_calendar.c
  type day_draw_state_t (line 31) | typedef uint8_t day_draw_state_t;
  function lv_obj_t (line 74) | lv_obj_t * lv_calendar_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_calendar_set_today_date (line 196) | void lv_calendar_set_today_date(lv_obj_t * calendar, lv_calendar_date_t ...
  function lv_calendar_set_showed_date (line 212) | void lv_calendar_set_showed_date(lv_obj_t * calendar, lv_calendar_date_t...
  function lv_calendar_set_highlighted_dates (line 229) | void lv_calendar_set_highlighted_dates(lv_obj_t * calendar, lv_calendar_...
  function lv_calendar_set_day_names (line 245) | void lv_calendar_set_day_names(lv_obj_t * calendar, const char ** day_na...
  function lv_calendar_set_month_names (line 259) | void lv_calendar_set_month_names(lv_obj_t * calendar, const char ** day_...
  function lv_calendar_set_style (line 272) | void lv_calendar_set_style(lv_obj_t * calendar, lv_calendar_style_t type...
  function lv_calendar_date_t (line 299) | lv_calendar_date_t * lv_calendar_get_today_date(const lv_obj_t * calendar)
  function lv_calendar_date_t (line 310) | lv_calendar_date_t * lv_calendar_get_showed_date(const lv_obj_t * calendar)
  function lv_calendar_date_t (line 322) | lv_calendar_date_t * lv_calendar_get_pressed_date(const lv_obj_t * calen...
  function lv_calendar_date_t (line 333) | lv_calendar_date_t * lv_calendar_get_highlighted_dates(const lv_obj_t * ...
  function lv_calendar_get_highlighted_dates_num (line 344) | uint16_t lv_calendar_get_highlighted_dates_num(const lv_obj_t * calendar)
  function lv_style_t (line 378) | const lv_style_t * lv_calendar_get_style(const lv_obj_t * calendar, lv_c...
  function lv_calendar_design (line 420) | static bool lv_calendar_design(lv_obj_t * calendar, const lv_area_t * ma...
  function lv_res_t (line 450) | static lv_res_t lv_calendar_signal(lv_obj_t * calendar, lv_signal_t sign...
  function calculate_touched_day (line 565) | static bool calculate_touched_day(lv_obj_t * calendar, const lv_point_t ...
  function lv_coord_t (line 615) | static lv_coord_t get_header_height(lv_obj_t * calendar)
  function lv_coord_t (line 628) | static lv_coord_t get_day_names_height(lv_obj_t * calendar)
  function draw_header (line 641) | static void draw_header(lv_obj_t * calendar, const lv_area_t * mask)
  function draw_day_names (line 681) | static void draw_day_names(lv_obj_t * calendar, const lv_area_t * mask)
  function draw_days (line 707) | static void draw_days(lv_obj_t * calendar, const lv_area_t * mask)
  function is_highlighted (line 847) | static bool is_highlighted(lv_obj_t * calendar, int32_t year, int32_t mo...
  function get_month_length (line 906) | static uint8_t get_month_length(int32_t year, int32_t month)
  function is_leap_year (line 927) | static uint8_t is_leap_year(uint32_t year)
  function get_day_of_week (line 939) | static uint8_t get_day_of_week(uint32_t year, uint32_t month, uint32_t day)

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_canvas.c
  function lv_obj_t (line 50) | lv_obj_t * lv_canvas_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_canvas_set_buffer (line 112) | void lv_canvas_set_buffer(lv_obj_t * canvas, void * buf, lv_coord_t w, l...
  function lv_canvas_set_px (line 132) | void lv_canvas_set_px(lv_obj_t * canvas, lv_coord_t x, lv_coord_t y, lv_...
  function lv_canvas_set_palette (line 150) | void lv_canvas_set_palette(lv_obj_t * canvas, uint8_t id, lv_color_t c)
  function lv_canvas_set_style (line 164) | void lv_canvas_set_style(lv_obj_t * canvas, lv_canvas_style_t type, cons...
  function lv_color_t (line 182) | lv_color_t lv_canvas_get_px(lv_obj_t * canvas, lv_coord_t x, lv_coord_t y)
  function lv_img_dsc_t (line 195) | lv_img_dsc_t * lv_canvas_get_img(lv_obj_t * canvas)
  function lv_style_t (line 208) | const lv_style_t * lv_canvas_get_style(const lv_obj_t * canvas, lv_canva...
  function lv_canvas_copy_buf (line 234) | void lv_canvas_copy_buf(lv_obj_t * canvas, const void * to_copy, lv_coor...
  function lv_canvas_rotate (line 266) | void lv_canvas_rotate(lv_obj_t * canvas, lv_img_dsc_t * img, int16_t ang...
  function lv_canvas_fill_bg (line 431) | void lv_canvas_fill_bg(lv_obj_t * canvas, lv_color_t color)
  function lv_canvas_draw_rect (line 453) | void lv_canvas_draw_rect(lv_obj_t * canvas, lv_coord_t x, lv_coord_t y, ...
  function lv_canvas_draw_text (line 512) | void lv_canvas_draw_text(lv_obj_t * canvas, lv_coord_t x, lv_coord_t y, ...
  function lv_canvas_draw_img (line 567) | void lv_canvas_draw_img(lv_obj_t * canvas, lv_coord_t x, lv_coord_t y, c...
  function lv_canvas_draw_line (line 620) | void lv_canvas_draw_line(lv_obj_t * canvas, const lv_point_t * points, u...
  function lv_canvas_draw_polygon (line 672) | void lv_canvas_draw_polygon(lv_obj_t * canvas, const lv_point_t * points...
  function lv_canvas_draw_arc (line 724) | void lv_canvas_draw_arc(lv_obj_t * canvas, lv_coord_t x, lv_coord_t y, l...
  function lv_res_t (line 778) | static lv_res_t lv_canvas_signal(lv_obj_t * canvas, lv_signal_t sign, vo...

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_cb.c
  function lv_obj_t (line 51) | lv_obj_t * lv_cb_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_cb_set_text (line 127) | void lv_cb_set_text(lv_obj_t * cb, const char * txt)
  function lv_cb_set_static_text (line 139) | void lv_cb_set_static_text(lv_obj_t * cb, const char * txt)
  function lv_cb_set_style (line 151) | void lv_cb_set_style(lv_obj_t * cb, lv_cb_style_t type, const lv_style_t...
  function lv_style_t (line 192) | const lv_style_t * lv_cb_get_style(const lv_obj_t * cb, lv_cb_style_t type)
  function lv_cb_design (line 223) | static bool lv_cb_design(lv_obj_t * cb, const lv_area_t * mask, lv_desig...
  function lv_bullet_design (line 256) | static bool lv_bullet_design(lv_obj_t * bullet, const lv_area_t * mask, ...
  function lv_res_t (line 296) | static lv_res_t lv_cb_signal(lv_obj_t * cb, lv_signal_t sign, void * param)

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_chart.c
  function lv_obj_t (line 69) | lv_obj_t * lv_chart_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_chart_series_t (line 155) | lv_chart_series_t * lv_chart_add_series(lv_obj_t * chart, lv_color_t color)
  function lv_chart_clear_serie (line 194) | void lv_chart_clear_serie(lv_obj_t * chart, lv_chart_series_t * serie)
  function lv_chart_set_div_line_count (line 218) | void lv_chart_set_div_line_count(lv_obj_t * chart, uint8_t hdiv, uint8_t...
  function lv_chart_set_range (line 235) | void lv_chart_set_range(lv_obj_t * chart, lv_coord_t ymin, lv_coord_t ymax)
  function lv_chart_set_type (line 251) | void lv_chart_set_type(lv_obj_t * chart, lv_chart_type_t type)
  function lv_chart_set_point_count (line 266) | void lv_chart_set_point_count(lv_obj_t * chart, uint16_t point_cnt)
  function lv_chart_set_series_opa (line 328) | void lv_chart_set_series_opa(lv_obj_t * chart, lv_opa_t opa)
  function lv_chart_set_series_width (line 342) | void lv_chart_set_series_width(lv_obj_t * chart, lv_coord_t width)
  function lv_chart_set_series_darking (line 355) | void lv_chart_set_series_darking(lv_obj_t * chart, lv_opa_t dark_eff)
  function lv_chart_init_points (line 370) | void lv_chart_init_points(lv_obj_t * chart, lv_chart_series_t * ser, lv_...
  function lv_chart_set_points (line 387) | void lv_chart_set_points(lv_obj_t * chart, lv_chart_series_t * ser, lv_c...
  function lv_chart_set_next (line 401) | void lv_chart_set_next(lv_obj_t * chart, lv_chart_series_t * ser, lv_coo...
  function lv_chart_set_update_mode (line 427) | void lv_chart_set_update_mode(lv_obj_t * chart, lv_chart_update_mode_t u...
  function lv_chart_set_x_tick_length (line 444) | void lv_chart_set_x_tick_length(lv_obj_t * chart, uint8_t major_tick_len...
  function lv_chart_set_y_tick_length (line 459) | void lv_chart_set_y_tick_length(lv_obj_t * chart, uint8_t major_tick_len...
  function lv_chart_set_x_tick_texts (line 474) | void lv_chart_set_x_tick_texts(lv_obj_t * chart, const char * list_of_va...
  function lv_chart_set_y_tick_texts (line 491) | void lv_chart_set_y_tick_texts(lv_obj_t * chart, const char * list_of_va...
  function lv_chart_set_margin (line 505) | void lv_chart_set_margin(lv_obj_t * chart, uint16_t margin)
  function lv_chart_type_t (line 521) | lv_chart_type_t lv_chart_get_type(const lv_obj_t * chart)
  function lv_chart_get_point_cnt (line 532) | uint16_t lv_chart_get_point_cnt(const lv_obj_t * chart)
  function lv_opa_t (line 543) | lv_opa_t lv_chart_get_series_opa(const lv_obj_t * chart)
  function lv_coord_t (line 554) | lv_coord_t lv_chart_get_series_width(const lv_obj_t * chart)
  function lv_opa_t (line 565) | lv_opa_t lv_chart_get_series_darking(const lv_obj_t * chart)
  function lv_chart_refresh (line 579) | void lv_chart_refresh(lv_obj_t * chart)
  function lv_chart_get_margin (line 589) | uint16_t lv_chart_get_margin(lv_obj_t * chart)
  function lv_chart_design (line 609) | static bool lv_chart_design(lv_obj_t * chart, const lv_area_t * mask, lv...
  function lv_res_t (line 648) | static lv_res_t lv_chart_signal(lv_obj_t * chart, lv_signal_t sign, void...
  function lv_chart_draw_div (line 684) | static void lv_chart_draw_div(lv_obj_t * chart, const lv_area_t * mask)
  function lv_chart_draw_lines (line 745) | static void lv_chart_draw_lines(lv_obj_t * chart, const lv_area_t * mask)
  function lv_chart_draw_points (line 806) | static void lv_chart_draw_points(lv_obj_t * chart, const lv_area_t * mask)
  function lv_chart_draw_cols (line 862) | static void lv_chart_draw_cols(lv_obj_t * chart, const lv_area_t * mask)
  function lv_chart_draw_vertical_lines (line 924) | static void lv_chart_draw_vertical_lines(lv_obj_t * chart, const lv_area...
  function lv_chart_draw_areas (line 989) | static void lv_chart_draw_areas(lv_obj_t * chart, const lv_area_t * mask)
  function lv_chart_draw_y_ticks (line 1049) | static void lv_chart_draw_y_ticks(lv_obj_t * chart, const lv_area_t * mask)
  function lv_chart_draw_x_ticks (line 1158) | static void lv_chart_draw_x_ticks(lv_obj_t * chart, const lv_area_t * mask)
  function lv_chart_draw_axes (line 1265) | static void lv_chart_draw_axes(lv_obj_t * chart, const lv_area_t * mask)
  function lv_chart_inv_lines (line 1275) | static void lv_chart_inv_lines(lv_obj_t * chart, uint16_t i)
  function lv_chart_inv_points (line 1304) | static void lv_chart_inv_points(lv_obj_t * chart, uint16_t i)
  function lv_chart_inv_cols (line 1325) | static void lv_chart_inv_cols(lv_obj_t * chart, uint16_t i)

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_cont.c
  function lv_obj_t (line 63) | lv_obj_t * lv_cont_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_cont_set_layout (line 127) | void lv_cont_set_layout(lv_obj_t * cont, lv_layout_t layout)
  function lv_cont_set_fit4 (line 147) | void lv_cont_set_fit4(lv_obj_t * cont, lv_fit_t left, lv_fit_t right, lv...
  function lv_layout_t (line 173) | lv_layout_t lv_cont_get_layout(const lv_obj_t * cont)
  function lv_fit_t (line 184) | lv_fit_t lv_cont_get_fit_left(const lv_obj_t * cont)
  function lv_fit_t (line 195) | lv_fit_t lv_cont_get_fit_right(const lv_obj_t * cont)
  function lv_fit_t (line 206) | lv_fit_t lv_cont_get_fit_top(const lv_obj_t * cont)
  function lv_fit_t (line 217) | lv_fit_t lv_cont_get_fit_bottom(const lv_obj_t * cont)
  function lv_res_t (line 234) | static lv_res_t lv_cont_signal(lv_obj_t * cont, lv_signal_t sign, void *...
  function lv_cont_refr_layout (line 273) | static void lv_cont_refr_layout(lv_obj_t * cont)
  function lv_cont_layout_col (line 299) | static void lv_cont_layout_col(lv_obj_t * cont)
  function lv_cont_layout_row (line 348) | static void lv_cont_layout_row(lv_obj_t * cont)
  function lv_cont_layout_center (line 398) | static void lv_cont_layout_center(lv_obj_t * cont)
  function lv_cont_layout_pretty (line 438) | static void lv_cont_layout_pretty(lv_obj_t * cont)
  function lv_cont_layout_grid (line 534) | static void lv_cont_layout_grid(lv_obj_t * cont)
  function lv_cont_refr_autofit (line 585) | static void lv_cont_refr_autofit(lv_obj_t * cont)

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_ddlist.c
  function lv_obj_t (line 71) | lv_obj_t * lv_ddlist_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_ddlist_set_options (line 163) | void lv_ddlist_set_options(lv_obj_t * ddlist, const char * options)
  function lv_ddlist_set_selected (line 195) | void lv_ddlist_set_selected(lv_obj_t * ddlist, uint16_t sel_opt)
  function lv_ddlist_set_fix_height (line 216) | void lv_ddlist_set_fix_height(lv_obj_t * ddlist, lv_coord_t h)
  function lv_ddlist_set_fix_width (line 231) | void lv_ddlist_set_fix_width(lv_obj_t * ddlist, lv_coord_t w)
  function lv_ddlist_set_draw_arrow (line 248) | void lv_ddlist_set_draw_arrow(lv_obj_t * ddlist, bool en)
  function lv_ddlist_set_stay_open (line 261) | void lv_ddlist_set_stay_open(lv_obj_t * ddlist, bool en)
  function lv_ddlist_set_style (line 275) | void lv_ddlist_set_style(lv_obj_t * ddlist, lv_ddlist_style_t type, cons...
  function lv_ddlist_set_align (line 293) | void lv_ddlist_set_align(lv_obj_t * ddlist, lv_label_align_t align)
  function lv_ddlist_get_selected (line 324) | uint16_t lv_ddlist_get_selected(const lv_obj_t * ddlist)
  function lv_ddlist_get_selected_str (line 337) | void lv_ddlist_get_selected_str(const lv_obj_t * ddlist, char * buf, uin...
  function lv_coord_t (line 367) | lv_coord_t lv_ddlist_get_fix_height(const lv_obj_t * ddlist)
  function lv_ddlist_get_draw_arrow (line 377) | bool lv_ddlist_get_draw_arrow(lv_obj_t * ddlist)
  function lv_ddlist_get_stay_open (line 388) | bool lv_ddlist_get_stay_open(lv_obj_t * ddlist)
  function lv_style_t (line 401) | const lv_style_t * lv_ddlist_get_style(const lv_obj_t * ddlist, lv_ddlis...
  function lv_label_align_t (line 416) | lv_label_align_t lv_ddlist_get_align(const lv_obj_t * ddlist)
  function lv_ddlist_open (line 432) | void lv_ddlist_open(lv_obj_t * ddlist, lv_anim_enable_t anim)
  function lv_ddlist_close (line 448) | void lv_ddlist_close(lv_obj_t * ddlist, lv_anim_enable_t anim)
  function lv_txt_flag_t (line 468) | static lv_txt_flag_t lv_ddlist_get_txt_flag(const lv_obj_t * ddlist)
  function lv_ddlist_design (line 495) | static bool lv_ddlist_design(lv_obj_t * ddlist, const lv_area_t * mask, ...
  function lv_res_t (line 605) | static lv_res_t lv_ddlist_signal(lv_obj_t * ddlist, lv_signal_t sign, vo...
  function lv_res_t (line 708) | static lv_res_t lv_ddlist_scrl_signal(lv_obj_t * scrl, lv_signal_t sign,...
  function lv_res_t (line 742) | static lv_res_t release_handler(lv_obj_t * ddlist)
  function lv_ddlist_refr_size (line 810) | static void lv_ddlist_refr_size(lv_obj_t * ddlist, lv_anim_enable_t anim)
  function lv_ddlist_anim_ready_cb (line 879) | static void lv_ddlist_anim_ready_cb(lv_anim_t * a)
  function lv_ddlist_anim_finish (line 889) | static void lv_ddlist_anim_finish(lv_obj_t * ddlist)
  function lv_ddlist_adjust_height (line 904) | static void lv_ddlist_adjust_height(lv_obj_t * ddlist, lv_anim_value_t h...
  function lv_ddlist_pos_current_option (line 915) | static void lv_ddlist_pos_current_option(lv_obj_t * ddlist)
  function lv_ddlist_refr_width (line 936) | static void lv_ddlist_refr_width(lv_obj_t * ddlist)

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_gauge.c
  function lv_obj_t (line 62) | lv_obj_t * lv_gauge_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_gauge_set_needle_count (line 132) | void lv_gauge_set_needle_count(lv_obj_t * gauge, uint8_t needle_cnt, con...
  function lv_gauge_set_value (line 165) | void lv_gauge_set_value(lv_obj_t * gauge, uint8_t needle_id, int16_t value)
  function lv_gauge_set_scale (line 194) | void lv_gauge_set_scale(lv_obj_t * gauge, uint16_t angle, uint8_t line_c...
  function lv_gauge_get_value (line 213) | int16_t lv_gauge_get_value(const lv_obj_t * gauge, uint8_t needle)
  function lv_gauge_get_needle_count (line 228) | uint8_t lv_gauge_get_needle_count(const lv_obj_t * gauge)
  function lv_gauge_get_label_count (line 239) | uint8_t lv_gauge_get_label_count(const lv_obj_t * gauge)
  function lv_gauge_design (line 259) | static bool lv_gauge_design(lv_obj_t * gauge, const lv_area_t * mask, lv...
  function lv_res_t (line 313) | static lv_res_t lv_gauge_signal(lv_obj_t * gauge, lv_signal_t sign, void...
  function lv_gauge_draw_scale (line 342) | static void lv_gauge_draw_scale(lv_obj_t * gauge, const lv_area_t * mask)
  function lv_gauge_draw_needle (line 392) | static void lv_gauge_draw_needle(lv_obj_t * gauge, const lv_area_t * mask)

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_img.c
  function lv_obj_t (line 56) | lv_obj_t * lv_img_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_img_set_src (line 122) | void lv_img_set_src(lv_obj_t * img, const void * src_img)
  function lv_img_set_auto_size (line 202) | void lv_img_set_auto_size(lv_obj_t * img, bool en)
  function lv_img_set_offset_x (line 215) | void lv_img_set_offset_x(lv_obj_t * img, lv_coord_t x)
  function lv_img_set_offset_y (line 231) | void lv_img_set_offset_y(lv_obj_t * img, lv_coord_t y)
  function lv_img_get_auto_size (line 277) | bool lv_img_get_auto_size(const lv_obj_t * img)
  function lv_coord_t (line 289) | lv_coord_t lv_img_get_offset_x(lv_obj_t * img)
  function lv_coord_t (line 301) | lv_coord_t lv_img_get_offset_y(lv_obj_t * img)
  function lv_img_design (line 322) | static bool lv_img_design(lv_obj_t * img, const lv_area_t * mask, lv_des...
  function lv_res_t (line 380) | static lv_res_t lv_img_signal(lv_obj_t * img, lv_signal_t sign, void * p...

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_imgbtn.c
  function lv_obj_t (line 48) | lv_obj_t * lv_imgbtn_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_imgbtn_set_src (line 113) | void lv_imgbtn_set_src(lv_obj_t * imgbtn, lv_btn_state_t state, const vo...
  function lv_imgbtn_set_src (line 134) | void lv_imgbtn_set_src(lv_obj_t * imgbtn, lv_btn_state_t state, const vo...
  function lv_imgbtn_set_style (line 154) | void lv_imgbtn_set_style(lv_obj_t * imgbtn, lv_imgbtn_style_t type, cons...
  function lv_style_t (line 225) | const lv_style_t * lv_imgbtn_get_style(const lv_obj_t * imgbtn, lv_imgbt...
  function lv_imgbtn_design (line 252) | static bool lv_imgbtn_design(lv_obj_t * imgbtn, const lv_area_t * mask, ...
  function lv_res_t (line 339) | static lv_res_t lv_imgbtn_signal(lv_obj_t * imgbtn, lv_signal_t sign, vo...
  function refr_img (line 365) | static void refr_img(lv_obj_t * imgbtn)

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_kb.c
  function lv_obj_t (line 94) | lv_obj_t * lv_kb_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_kb_set_ta (line 171) | void lv_kb_set_ta(lv_obj_t * kb, lv_obj_t * ta)
  function lv_kb_set_mode (line 196) | void lv_kb_set_mode(lv_obj_t * kb, lv_kb_mode_t mode)
  function lv_kb_set_cursor_manage (line 216) | void lv_kb_set_cursor_manage(lv_obj_t * kb, bool en)
  function lv_kb_set_style (line 241) | void lv_kb_set_style(lv_obj_t * kb, lv_kb_style_t type, const lv_style_t...
  function lv_obj_t (line 262) | lv_obj_t * lv_kb_get_ta(const lv_obj_t * kb)
  function lv_kb_mode_t (line 273) | lv_kb_mode_t lv_kb_get_mode(const lv_obj_t * kb)
  function lv_kb_get_cursor_manage (line 284) | bool lv_kb_get_cursor_manage(const lv_obj_t * kb)
  function lv_style_t (line 296) | const lv_style_t * lv_kb_get_style(const lv_obj_t * kb, lv_kb_style_t type)
  function lv_kb_def_event_cb (line 324) | void lv_kb_def_event_cb(lv_obj_t * kb, lv_event_t event)
  function lv_res_t (line 415) | static lv_res_t lv_kb_signal(lv_obj_t * kb, lv_signal_t sign, void * param)

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_label.c
  function lv_obj_t (line 69) | lv_obj_t * lv_label_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_label_set_text (line 170) | void lv_label_set_text(lv_obj_t * label, const char * text)
  function lv_label_set_array_text (line 213) | void lv_label_set_array_text(lv_obj_t * label, const char * array, uint1...
  function lv_label_set_static_text (line 247) | void lv_label_set_static_text(lv_obj_t * label, const char * text)
  function lv_label_set_long_mode (line 270) | void lv_label_set_long_mode(lv_obj_t * label, lv_label_long_mode_t long_...
  function lv_label_set_align (line 303) | void lv_label_set_align(lv_obj_t * label, lv_label_align_t align)
  function lv_label_set_recolor (line 319) | void lv_label_set_recolor(lv_obj_t * label, bool en)
  function lv_label_set_body_draw (line 335) | void lv_label_set_body_draw(lv_obj_t * label, bool en)
  function lv_label_set_anim_speed (line 352) | void lv_label_set_anim_speed(lv_obj_t * label, uint16_t anim_speed)
  function lv_label_set_text_sel_start (line 369) | void lv_label_set_text_sel_start(lv_obj_t * label, uint16_t index)
  function lv_label_set_text_sel_end (line 381) | void lv_label_set_text_sel_end(lv_obj_t * label, uint16_t index)
  function lv_label_long_mode_t (line 414) | lv_label_long_mode_t lv_label_get_long_mode(const lv_obj_t * label)
  function lv_label_align_t (line 425) | lv_label_align_t lv_label_get_align(const lv_obj_t * label)
  function lv_label_get_recolor (line 436) | bool lv_label_get_recolor(const lv_obj_t * label)
  function lv_label_get_body_draw (line 447) | bool lv_label_get_body_draw(const lv_obj_t * label)
  function lv_label_get_anim_speed (line 458) | uint16_t lv_label_get_anim_speed(const lv_obj_t * label)
  function lv_label_get_letter_pos (line 476) | void lv_label_get_letter_pos(const lv_obj_t * label, uint16_t index, lv_...
  function lv_label_get_letter_on (line 545) | uint16_t lv_label_get_letter_on(const lv_obj_t * label, lv_point_t * pos)
  function lv_label_get_text_sel_start (line 626) | uint16_t lv_label_get_text_sel_start(const lv_obj_t * label)
  function lv_label_get_text_sel_end (line 643) | uint16_t lv_label_get_text_sel_end(const lv_obj_t * label)
  function lv_label_is_char_under_pos (line 660) | bool lv_label_is_char_under_pos(const lv_obj_t * label, lv_point_t * pos)
  function lv_label_ins_text (line 749) | void lv_label_ins_text(lv_obj_t * label, uint32_t pos, const char * txt)
  function lv_label_cut_text (line 782) | void lv_label_cut_text(lv_obj_t * label, uint32_t pos, uint32_t cnt)
  function lv_label_design (line 813) | static bool lv_label_design(lv_obj_t * label, const lv_area_t * mask, lv...
  function lv_res_t (line 914) | static lv_res_t lv_label_signal(lv_obj_t * label, lv_signal_t sign, void...
  function lv_label_refr_text (line 965) | static void lv_label_refr_text(lv_obj_t * label)
  function lv_label_revert_dots (line 1124) | static void lv_label_revert_dots(lv_obj_t * label)
  function lv_label_set_offset_x (line 1146) | static void lv_label_set_offset_x(lv_obj_t * label, lv_coord_t x)
  function lv_label_set_offset_y (line 1153) | static void lv_label_set_offset_y(lv_obj_t * label, lv_coord_t y)
  function lv_label_set_dot_tmp (line 1168) | static bool lv_label_set_dot_tmp(lv_obj_t * label, char * data, uint16_t...
  function lv_label_dot_tmp_free (line 1211) | static void lv_label_dot_tmp_free(lv_obj_t * label)

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_led.c
  function lv_obj_t (line 53) | lv_obj_t * lv_led_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_led_set_bright (line 110) | void lv_led_set_bright(lv_obj_t * led, uint8_t bright)
  function lv_led_on (line 126) | void lv_led_on(lv_obj_t * led)
  function lv_led_off (line 135) | void lv_led_off(lv_obj_t * led)
  function lv_led_toggle (line 144) | void lv_led_toggle(lv_obj_t * led)
  function lv_led_get_bright (line 162) | uint8_t lv_led_get_bright(const lv_obj_t * led)
  function lv_led_design (line 182) | static bool lv_led_design(lv_obj_t * led, const lv_area_t * mask, lv_des...
  function lv_res_t (line 226) | static lv_res_t lv_led_signal(lv_obj_t * led, lv_signal_t sign, void * p...

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_line.c
  function lv_obj_t (line 50) | lv_obj_t * lv_line_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_line_set_points (line 108) | void lv_line_set_points(lv_obj_t * line, const lv_point_t point_a[], uin...
  function lv_line_set_auto_size (line 136) | void lv_line_set_auto_size(lv_obj_t * line, bool en)
  function lv_line_set_y_invert (line 154) | void lv_line_set_y_invert(lv_obj_t * line, bool en)
  function lv_line_get_auto_size (line 173) | bool lv_line_get_auto_size(const lv_obj_t * line)
  function lv_line_get_y_invert (line 185) | bool lv_line_get_y_invert(const lv_obj_t * line)
  function lv_line_design (line 206) | static bool lv_line_design(lv_obj_t * line, const lv_area_t * mask, lv_d...
  function lv_res_t (line 278) | static lv_res_t lv_line_signal(lv_obj_t * line, lv_signal_t sign, void *...

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_list.c
  function lv_obj_t (line 70) | lv_obj_t * lv_list_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_list_clean (line 157) | void lv_list_clean(lv_obj_t * obj)
  function lv_obj_t (line 176) | lv_obj_t * lv_list_add_btn(lv_obj_t * list, const void * img_src, const ...
  function lv_list_remove (line 241) | bool lv_list_remove(const lv_obj_t * list, uint16_t index)
  function lv_list_set_single_mode (line 268) | void lv_list_set_single_mode(lv_obj_t * list, bool mode)
  function lv_list_set_btn_selected (line 283) | void lv_list_set_btn_selected(lv_obj_t * list, lv_obj_t * btn)
  function lv_list_set_style (line 322) | void lv_list_set_style(lv_obj_t * list, lv_list_style_t type, const lv_s...
  function lv_list_get_single_mode (line 377) | bool lv_list_get_single_mode(lv_obj_t * list)
  function lv_obj_t (line 401) | lv_obj_t * lv_list_get_btn_label(const lv_obj_t * btn)
  function lv_obj_t (line 419) | lv_obj_t * lv_list_get_btn_img(const lv_obj_t * btn)
  function lv_obj_t (line 442) | lv_obj_t * lv_list_get_prev_btn(const lv_obj_t * list, lv_obj_t * prev_btn)
  function lv_obj_t (line 467) | lv_obj_t * lv_list_get_next_btn(const lv_obj_t * list, lv_obj_t * prev_btn)
  function lv_list_get_btn_index (line 492) | int32_t lv_list_get_btn_index(const lv_obj_t * list, const lv_obj_t * btn)
  function lv_list_get_size (line 515) | uint16_t lv_list_get_size(const lv_obj_t * list)
  function lv_obj_t (line 527) | lv_obj_t * lv_list_get_btn_selected(const lv_obj_t * list)
  function lv_style_t (line 541) | const lv_style_t * lv_list_get_style(const lv_obj_t * list, lv_list_styl...
  function lv_list_up (line 569) | void lv_list_up(const lv_obj_t * list)
  function lv_list_down (line 614) | void lv_list_down(const lv_obj_t * list)
  function lv_list_focus (line 655) | void lv_list_focus(const lv_obj_t * btn, lv_anim_enable_t anim)
  function lv_res_t (line 678) | static lv_res_t lv_list_signal(lv_obj_t * list, lv_signal_t sign, void *...
  function lv_res_t (line 830) | static lv_res_t lv_list_btn_signal(lv_obj_t * btn, lv_signal_t sign, voi...
  function lv_list_btn_single_select (line 889) | static void lv_list_btn_single_select(lv_obj_t * btn)
  function lv_list_is_list_btn (line 908) | static bool lv_list_is_list_btn(lv_obj_t * list_btn)
  function lv_list_is_list_label (line 925) | static bool lv_list_is_list_label(lv_obj_t * list_label)
  function lv_list_is_list_img (line 942) | static bool lv_list_is_list_img(lv_obj_t * list_img)

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_lmeter.c
  function lv_obj_t (line 54) | lv_obj_t * lv_lmeter_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_lmeter_set_value (line 120) | void lv_lmeter_set_value(lv_obj_t * lmeter, int16_t value)
  function lv_lmeter_set_range (line 136) | void lv_lmeter_set_range(lv_obj_t * lmeter, int16_t min, int16_t max)
  function lv_lmeter_set_scale (line 160) | void lv_lmeter_set_scale(lv_obj_t * lmeter, uint16_t angle, uint8_t line...
  function lv_lmeter_get_value (line 180) | int16_t lv_lmeter_get_value(const lv_obj_t * lmeter)
  function lv_lmeter_get_min_value (line 191) | int16_t lv_lmeter_get_min_value(const lv_obj_t * lmeter)
  function lv_lmeter_get_max_value (line 202) | int16_t lv_lmeter_get_max_value(const lv_obj_t * lmeter)
  function lv_lmeter_get_line_count (line 213) | uint8_t lv_lmeter_get_line_count(const lv_obj_t * lmeter)
  function lv_lmeter_get_scale_angle (line 224) | uint16_t lv_lmeter_get_scale_angle(const lv_obj_t * lmeter)
  function lv_lmeter_design (line 244) | static bool lv_lmeter_design(lv_obj_t * lmeter, const lv_area_t * mask, ...
  function lv_res_t (line 331) | static lv_res_t lv_lmeter_signal(lv_obj_t * lmeter, lv_signal_t sign, vo...
  function lv_coord_t (line 363) | static lv_coord_t lv_lmeter_coord_round(int32_t x)

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_mbox.c
  function lv_obj_t (line 65) | lv_obj_t * lv_mbox_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_mbox_add_btns (line 140) | void lv_mbox_add_btns(lv_obj_t * mbox, const char ** btn_map)
  function lv_mbox_set_text (line 175) | void lv_mbox_set_text(lv_obj_t * mbox, const char * txt)
  function lv_mbox_set_anim_time (line 188) | void lv_mbox_set_anim_time(lv_obj_t * mbox, uint16_t anim_time)
  function lv_mbox_start_auto_close (line 205) | void lv_mbox_start_auto_close(lv_obj_t * mbox, uint16_t delay)
  function lv_mbox_stop_auto_close (line 259) | void lv_mbox_stop_auto_close(lv_obj_t * mbox)
  function lv_mbox_set_style (line 274) | void lv_mbox_set_style(lv_obj_t * mbox, lv_mbox_style_t type, const lv_s...
  function lv_mbox_set_recolor (line 296) | void lv_mbox_set_recolor(lv_obj_t * mbox, bool en)
  function lv_mbox_get_active_btn (line 325) | uint16_t lv_mbox_get_active_btn(lv_obj_t * mbox)
  function lv_mbox_get_anim_time (line 354) | uint16_t lv_mbox_get_anim_time(const lv_obj_t * mbox)
  function lv_style_t (line 371) | const lv_style_t * lv_mbox_get_style(const lv_obj_t * mbox, lv_mbox_styl...
  function lv_mbox_get_recolor (line 395) | bool lv_mbox_get_recolor(const lv_obj_t * mbox)
  function lv_obj_t (line 410) | lv_obj_t * lv_mbox_get_btnm(lv_obj_t * mbox)
  function lv_res_t (line 427) | static lv_res_t lv_mbox_signal(lv_obj_t * mbox, lv_signal_t sign, void *...
  function mbox_realign (line 495) | static void mbox_realign(lv_obj_t * mbox)
  function lv_mbox_close_ready_cb (line 517) | static void lv_mbox_close_ready_cb(lv_anim_t * a)
  function lv_mbox_default_event_cb (line 523) | static void lv_mbox_default_event_cb(lv_obj_t * mbox, lv_event_t event)
  function lv_mbox_btnm_event_cb (line 533) | static void lv_mbox_btnm_event_cb(lv_obj_t * btnm, lv_event_t event)

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_objx_templ.c
  function lv_obj_t (line 56) | lv_obj_t * lv_templ_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_templ_set_style (line 119) | void lv_templ_set_style(lv_obj_t * templ, lv_templ_style_t type, const l...
  function lv_style_t (line 143) | lv_style_t * lv_templ_get_style(const lv_obj_t * templ, lv_templ_style_t...
  function lv_templ_design (line 179) | static bool lv_templ_design(lv_obj_t * templ, const lv_area_t * mask, lv...
  function lv_res_t (line 203) | static lv_res_t lv_templ_signal(lv_obj_t * templ, lv_signal_t sign, void...
  type keep_pedantic_happy (line 228) | typedef int keep_pedantic_happy;

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_page.c
  function lv_obj_t (line 74) | lv_obj_t * lv_page_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_page_clean (line 176) | void lv_page_clean(lv_obj_t * obj)
  function lv_page_set_sb_mode (line 191) | void lv_page_set_sb_mode(lv_obj_t * page, lv_sb_mode_t sb_mode)
  function lv_page_set_anim_time (line 217) | void lv_page_set_anim_time(lv_obj_t * page, uint16_t anim_time)
  function lv_page_set_scroll_propagation (line 234) | void lv_page_set_scroll_propagation(lv_obj_t * page, bool en)
  function lv_page_set_edge_flash (line 245) | void lv_page_set_edge_flash(lv_obj_t * page, bool en)
  function lv_page_set_style (line 262) | void lv_page_set_style(lv_obj_t * page, lv_page_style_t type, const lv_s...
  function lv_obj_t (line 292) | lv_obj_t * lv_page_get_scrl(const lv_obj_t * page)
  function lv_page_get_anim_time (line 304) | uint16_t lv_page_get_anim_time(const lv_obj_t * page)
  function lv_sb_mode_t (line 320) | lv_sb_mode_t lv_page_get_sb_mode(const lv_obj_t * page)
  function lv_page_get_scroll_propagation (line 331) | bool lv_page_get_scroll_propagation(lv_obj_t * page)
  function lv_page_get_edge_flash (line 342) | bool lv_page_get_edge_flash(lv_obj_t * page)
  function lv_coord_t (line 358) | lv_coord_t lv_page_get_fit_width(lv_obj_t * page)
  function lv_coord_t (line 372) | lv_coord_t lv_page_get_fit_height(lv_obj_t * page)
  function lv_style_t (line 387) | const lv_style_t * lv_page_get_style(const lv_obj_t * page, lv_page_styl...
  function lv_page_on_edge (line 415) | bool lv_page_on_edge(lv_obj_t * page, lv_page_edge_t edge)
  function lv_page_glue_obj (line 438) | void lv_page_glue_obj(lv_obj_t * obj, bool glue)
  function lv_page_focus (line 450) | void lv_page_focus(lv_obj_t * page, const lv_obj_t * obj, lv_anim_enable...
  function lv_page_scroll_hor (line 543) | void lv_page_scroll_hor(lv_obj_t * page, lv_coord_t dist)
  function lv_page_scroll_ver (line 572) | void lv_page_scroll_ver(lv_obj_t * page, lv_coord_t dist)
  function lv_page_start_edge_flash (line 601) | void lv_page_start_edge_flash(lv_obj_t * page)
  function lv_page_design (line 640) | static bool lv_page_design(lv_obj_t * page, const lv_area_t * mask, lv_d...
  function lv_scrl_design (line 740) | static bool lv_scrl_design(lv_obj_t * scrl, const lv_area_t * mask, lv_d...
  function lv_res_t (line 788) | static lv_res_t lv_page_signal(lv_obj_t * page, lv_signal_t sign, void *...
  function lv_res_t (line 891) | static lv_res_t lv_page_scrollable_signal(lv_obj_t * scrl, lv_signal_t s...
  function scrl_def_event_cb (line 1077) | static void scrl_def_event_cb(lv_obj_t * scrl, lv_event_t event)
  function lv_page_sb_refresh (line 1095) | static void lv_page_sb_refresh(lv_obj_t * page)
  function edge_flash_anim (line 1212) | static void edge_flash_anim(void * page, lv_anim_value_t v)
  function edge_flash_anim_end (line 1219) | static void edge_flash_anim_end(lv_anim_t * a)

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_preload.c
  function lv_obj_t (line 63) | lv_obj_t * lv_preload_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_preload_set_arc_length (line 130) | void lv_preload_set_arc_length(lv_obj_t * preload, lv_anim_value_t deg)
  function lv_preload_set_spin_time (line 142) | void lv_preload_set_spin_time(lv_obj_t * preload, uint16_t time)
  function lv_preload_set_style (line 159) | void lv_preload_set_style(lv_obj_t * preload, lv_preload_style_t type, c...
  function lv_preload_set_type (line 171) | void lv_preload_set_type(lv_obj_t * preload, lv_preload_type_t type)
  function lv_preload_set_dir (line 251) | void lv_preload_set_dir(lv_obj_t * preload, lv_preload_dir_t dir)
  function lv_anim_value_t (line 267) | lv_anim_value_t lv_preload_get_arc_length(const lv_obj_t * preload)
  function lv_preload_get_spin_time (line 277) | uint16_t lv_preload_get_spin_time(const lv_obj_t * preload)
  function lv_style_t (line 289) | const lv_style_t * lv_preload_get_style(const lv_obj_t * preload, lv_pre...
  function lv_preload_type_t (line 306) | lv_preload_type_t lv_preload_get_type(lv_obj_t * preload)
  function lv_preload_dir_t (line 312) | lv_preload_dir_t lv_preload_get_dir(lv_obj_t * preload)
  function lv_preload_spinner_anim (line 327) | void lv_preload_spinner_anim(void * ptr, lv_anim_value_t val)
  function lv_preload_design (line 355) | static bool lv_preload_design(lv_obj_t * preload, const lv_area_t * mask...
  function lv_res_t (line 405) | static lv_res_t lv_preload_signal(lv_obj_t * preload, lv_signal_t sign, ...

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_roller.c
  function lv_obj_t (line 62) | lv_obj_t * lv_roller_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_roller_set_options (line 135) | void lv_roller_set_options(lv_obj_t * roller, const char * options, lv_r...
  function lv_roller_set_align (line 176) | void lv_roller_set_align(lv_obj_t * roller, lv_label_align_t align)
  function lv_roller_set_selected (line 190) | void lv_roller_set_selected(lv_obj_t * roller, uint16_t sel_opt, lv_anim...
  function lv_roller_set_visible_row_count (line 207) | void lv_roller_set_visible_row_count(lv_obj_t * roller, uint8_t row_cnt)
  function lv_roller_set_style (line 222) | void lv_roller_set_style(lv_obj_t * roller, lv_roller_style_t type, cons...
  function lv_roller_get_selected (line 239) | uint16_t lv_roller_get_selected(const lv_obj_t * roller)
  function lv_label_align_t (line 255) | lv_label_align_t lv_roller_get_align(const lv_obj_t * roller)
  function lv_roller_get_hor_fit (line 268) | bool lv_roller_get_hor_fit(const lv_obj_t * roller)
  function lv_style_t (line 279) | const lv_style_t * lv_roller_get_style(const lv_obj_t * roller, lv_rolle...
  function lv_roller_design (line 305) | static bool lv_roller_design(lv_obj_t * roller, const lv_area_t * mask, ...
  function lv_res_t (line 384) | static lv_res_t lv_roller_signal(lv_obj_t * roller, lv_signal_t sign, vo...
  function lv_res_t (line 479) | static lv_res_t lv_roller_scrl_signal(lv_obj_t * roller_scrl, lv_signal_...
  function draw_bg (line 546) | static void draw_bg(lv_obj_t * roller, const lv_area_t * mask)
  function refr_position (line 598) | static void refr_position(lv_obj_t * roller, lv_anim_enable_t anim_en)
  function refr_height (line 649) | static void refr_height(lv_obj_t * roller)
  function inf_normalize (line 673) | static void inf_normalize(void * scrl)
  function scroll_anim_ready_cb (line 700) | static void scroll_anim_ready_cb(lv_anim_t * a)

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_slider.c
  function lv_obj_t (line 54) | lv_obj_t * lv_slider_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_slider_set_knob_in (line 119) | void lv_slider_set_knob_in(lv_obj_t * slider, bool in)
  function lv_slider_set_style (line 134) | void lv_slider_set_style(lv_obj_t * slider, lv_slider_style_t type, cons...
  function lv_slider_get_value (line 157) | int16_t lv_slider_get_value(const lv_obj_t * slider)
  function lv_slider_is_dragged (line 172) | bool lv_slider_is_dragged(const lv_obj_t * slider)
  function lv_slider_get_knob_in (line 184) | bool lv_slider_get_knob_in(const lv_obj_t * slider)
  function lv_style_t (line 196) | const lv_style_t * lv_slider_get_style(const lv_obj_t * slider, lv_slide...
  function lv_slider_design (line 225) | static bool lv_slider_design(lv_obj_t * slider, const lv_area_t * mask, ...
  function lv_res_t (line 461) | static lv_res_t lv_slider_signal(lv_obj_t * slider, lv_signal_t sign, vo...

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_spinbox.c
  function lv_obj_t (line 50) | lv_obj_t * lv_spinbox_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_spinbox_set_value (line 122) | void lv_spinbox_set_value(lv_obj_t * spinbox, int32_t i)
  function lv_spinbox_set_digit_format (line 142) | void lv_spinbox_set_digit_format(lv_obj_t * spinbox, uint8_t digit_count...
  function lv_spinbox_set_step (line 162) | void lv_spinbox_set_step(lv_obj_t * spinbox, uint32_t step)
  function lv_spinbox_set_range (line 176) | void lv_spinbox_set_range(lv_obj_t * spinbox, int32_t range_min, int32_t...
  function lv_spinbox_set_padding_left (line 199) | void lv_spinbox_set_padding_left(lv_obj_t * spinbox, uint8_t padding)
  function lv_spinbox_get_value (line 215) | int32_t lv_spinbox_get_value(lv_obj_t * spinbox)
  function lv_spinbox_step_next (line 230) | void lv_spinbox_step_next(lv_obj_t * spinbox)
  function lv_spinbox_step_prev (line 247) | void lv_spinbox_step_prev(lv_obj_t * spinbox)
  function lv_spinbox_increment (line 262) | void lv_spinbox_increment(lv_obj_t * spinbox)
  function lv_spinbox_decrement (line 282) | void lv_spinbox_decrement(lv_obj_t * spinbox)
  function lv_res_t (line 308) | static lv_res_t lv_spinbox_signal(lv_obj_t * spinbox, lv_signal_t sign, ...
  function lv_spinbox_updatevalue (line 378) | static void lv_spinbox_updatevalue(lv_obj_t * spinbox)

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_sw.c
  function lv_obj_t (line 53) | lv_obj_t * lv_sw_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_sw_on (line 130) | void lv_sw_on(lv_obj_t * sw, lv_anim_enable_t anim)
  function lv_sw_off (line 145) | void lv_sw_off(lv_obj_t * sw, lv_anim_enable_t anim)
  function lv_sw_toggle (line 161) | bool lv_sw_toggle(lv_obj_t * sw, lv_anim_enable_t anim)
  function lv_sw_set_style (line 182) | void lv_sw_set_style(lv_obj_t * sw, lv_sw_style_t type, const lv_style_t...
  function lv_sw_set_anim_time (line 200) | void lv_sw_set_anim_time(lv_obj_t * sw, uint16_t anim_time)
  function lv_style_t (line 221) | const lv_style_t * lv_sw_get_style(const lv_obj_t * sw, lv_sw_style_t type)
  function lv_sw_get_anim_time (line 237) | uint16_t lv_sw_get_anim_time(const lv_obj_t * sw)
  function lv_res_t (line 260) | static lv_res_t lv_sw_signal(lv_obj_t * sw, lv_signal_t sign, void * param)

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_ta.c
  function lv_obj_t (line 82) | lv_obj_t * lv_ta_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_ta_add_char (line 208) | void lv_ta_add_char(lv_obj_t * ta, uint32_t c)
  function lv_ta_add_text (line 296) | void lv_ta_add_text(lv_obj_t * ta, const char * txt)
  function lv_ta_del_char (line 375) | void lv_ta_del_char(lv_obj_t * ta)
  function lv_ta_del_char_forward (line 429) | void lv_ta_del_char_forward(lv_obj_t * ta)
  function lv_ta_set_text (line 445) | void lv_ta_set_text(lv_obj_t * ta, const char * txt)
  function lv_ta_set_placeholder_text (line 510) | void lv_ta_set_placeholder_text(lv_obj_t * ta, const char * txt)
  function lv_ta_set_cursor_pos (line 537) | void lv_ta_set_cursor_pos(lv_obj_t * ta, int16_t pos)
  function lv_ta_set_cursor_type (line 613) | void lv_ta_set_cursor_type(lv_obj_t * ta, lv_cursor_type_t cur_type)
  function lv_ta_set_cursor_click_pos (line 628) | void lv_ta_set_cursor_click_pos(lv_obj_t * ta, bool en)
  function lv_ta_set_pwd_mode (line 639) | void lv_ta_set_pwd_mode(lv_obj_t * ta, bool en)
  function lv_ta_set_one_line (line 682) | void lv_ta_set_one_line(lv_obj_t * ta, bool en)
  function lv_ta_set_text_align (line 723) | void lv_ta_set_text_align(lv_obj_t * ta, lv_label_align_t align)
  function lv_ta_set_accepted_chars (line 755) | void lv_ta_set_accepted_chars(lv_obj_t * ta, const char * list)
  function lv_ta_set_max_length (line 767) | void lv_ta_set_max_length(lv_obj_t * ta, uint16_t num)
  function lv_ta_set_insert_replace (line 782) | void lv_ta_set_insert_replace(lv_obj_t * ta, const char * txt)
  function lv_ta_set_style (line 794) | void lv_ta_set_style(lv_obj_t * ta, lv_ta_style_t type, const lv_style_t...
  function lv_ta_set_text_sel (line 818) | void lv_ta_set_text_sel(lv_obj_t * ta, bool en)
  function lv_ta_set_pwd_show_time (line 837) | void lv_ta_set_pwd_show_time(lv_obj_t * ta, uint16_t time)
  function lv_ta_set_cursor_blink_time (line 852) | void lv_ta_set_cursor_blink_time(lv_obj_t * ta, uint16_t time)
  function lv_obj_t (line 930) | lv_obj_t * lv_ta_get_label(const lv_obj_t * ta)
  function lv_ta_get_cursor_pos (line 941) | uint16_t lv_ta_get_cursor_pos(const lv_obj_t * ta)
  function lv_cursor_type_t (line 952) | lv_cursor_type_t lv_ta_get_cursor_type(const lv_obj_t * ta)
  function lv_ta_get_cursor_click_pos (line 963) | bool lv_ta_get_cursor_click_pos(lv_obj_t * ta)
  function lv_ta_get_pwd_mode (line 974) | bool lv_ta_get_pwd_mode(const lv_obj_t * ta)
  function lv_ta_get_one_line (line 985) | bool lv_ta_get_one_line(const lv_obj_t * ta)
  function lv_ta_get_max_length (line 1008) | uint16_t lv_ta_get_max_length(lv_obj_t * ta)
  function lv_style_t (line 1020) | const lv_style_t * lv_ta_get_style(const lv_obj_t * ta, lv_ta_style_t type)
  function lv_ta_text_is_selected (line 1044) | bool lv_ta_text_is_selected(const lv_obj_t * ta)
  function lv_ta_get_text_sel_en (line 1066) | bool lv_ta_get_text_sel_en(lv_obj_t * ta)
  function lv_ta_get_pwd_show_time (line 1082) | uint16_t lv_ta_get_pwd_show_time(lv_obj_t * ta)
  function lv_ta_get_cursor_blink_time (line 1094) | uint16_t lv_ta_get_cursor_blink_time(lv_obj_t * ta)
  function lv_ta_clear_selection (line 1108) | void lv_ta_clear_selection(lv_obj_t * ta)
  function lv_ta_cursor_right (line 1127) | void lv_ta_cursor_right(lv_obj_t * ta)
  function lv_ta_cursor_left (line 1138) | void lv_ta_cursor_left(lv_obj_t * ta)
  function lv_ta_cursor_down (line 1151) | void lv_ta_cursor_down(lv_obj_t * ta)
  function lv_ta_cursor_up (line 1181) | void lv_ta_cursor_up(lv_obj_t * ta)
  function lv_ta_design (line 1217) | static bool lv_ta_design(lv_obj_t * ta, const lv_area_t * mask, lv_desig...
  function lv_ta_scrollable_design (line 1242) | static bool lv_ta_scrollable_design(lv_obj_t * scrl, const lv_area_t * m...
  function lv_res_t (line 1309) | static lv_res_t lv_ta_signal(lv_obj_t * ta, lv_signal_t sign, void * param)
  function lv_res_t (line 1439) | static lv_res_t lv_ta_scrollable_signal(lv_obj_t * scrl, lv_signal_t sig...
  function cursor_blink_anim (line 1484) | static void cursor_blink_anim(lv_obj_t * ta, lv_anim_value_t show)
  function pwd_char_hider_anim (line 1509) | static void pwd_char_hider_anim(lv_obj_t * ta, lv_anim_value_t x)
  function pwd_char_hider_anim_ready (line 1519) | static void pwd_char_hider_anim_ready(lv_anim_t * a)
  function pwd_char_hider (line 1530) | static void pwd_char_hider(lv_obj_t * ta)
  function char_is_accepted (line 1555) | static bool char_is_accepted(lv_obj_t * ta, uint32_t c)
  function get_cursor_style (line 1582) | static void get_cursor_style(lv_obj_t * ta, lv_style_t * style_res)
  function refr_cursor_area (line 1612) | static void refr_cursor_area(lv_obj_t * ta)
  function placeholder_update (line 1712) | static void placeholder_update(lv_obj_t * ta)
  function update_cursor_position_on_click (line 1735) | static void update_cursor_position_on_click(lv_obj_t * ta, lv_signal_t s...

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_table.c
  function lv_obj_t (line 53) | lv_obj_t * lv_table_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_table_set_cell_value (line 133) | void lv_table_set_cell_value(lv_obj_t * table, uint16_t row, uint16_t co...
  function lv_table_set_row_cnt (line 166) | void lv_table_set_row_cnt(lv_obj_t * table, uint16_t row_cnt)
  function lv_table_set_col_cnt (line 194) | void lv_table_set_col_cnt(lv_obj_t * table, uint16_t col_cnt)
  function lv_table_set_col_width (line 228) | void lv_table_set_col_width(lv_obj_t * table, uint16_t col_id, lv_coord_...
  function lv_table_set_cell_align (line 247) | void lv_table_set_cell_align(lv_obj_t * table, uint16_t row, uint16_t co...
  function lv_table_set_cell_type (line 275) | void lv_table_set_cell_type(lv_obj_t * table, uint16_t row, uint16_t col...
  function lv_table_set_cell_crop (line 306) | void lv_table_set_cell_crop(lv_obj_t * table, uint16_t row, uint16_t col...
  function lv_table_set_cell_merge_right (line 334) | void lv_table_set_cell_merge_right(lv_obj_t * table, uint16_t row, uint1...
  function lv_table_set_style (line 363) | void lv_table_set_style(lv_obj_t * table, lv_table_style_t type, const l...
  function lv_table_get_row_cnt (line 421) | uint16_t lv_table_get_row_cnt(lv_obj_t * table)
  function lv_table_get_col_cnt (line 432) | uint16_t lv_table_get_col_cnt(lv_obj_t * table)
  function lv_coord_t (line 444) | lv_coord_t lv_table_get_col_width(lv_obj_t * table, uint16_t col_id)
  function lv_label_align_t (line 463) | lv_label_align_t lv_table_get_cell_align(lv_obj_t * table, uint16_t row,...
  function lv_label_align_t (line 488) | lv_label_align_t lv_table_get_cell_type(lv_obj_t * table, uint16_t row, ...
  function lv_label_align_t (line 513) | lv_label_align_t lv_table_get_cell_crop(lv_obj_t * table, uint16_t row, ...
  function lv_table_get_cell_merge_right (line 538) | bool lv_table_get_cell_merge_right(lv_obj_t * table, uint16_t row, uint1...
  function lv_style_t (line 563) | const lv_style_t * lv_table_get_style(const lv_obj_t * table, lv_table_s...
  function lv_table_design (line 594) | static bool lv_table_design(lv_obj_t * table, const lv_area_t * mask, lv...
  function lv_res_t (line 737) | static lv_res_t lv_table_signal(lv_obj_t * table, lv_signal_t sign, void...
  function refr_size (line 767) | static void refr_size(lv_obj_t * table)
  function lv_coord_t (line 791) | static lv_coord_t get_row_height(lv_obj_t * table, uint16_t row_id)

FILE: argon-nx-gui/src/libs/lvgl/lv_objx/lv_tabview.c
  function lv_obj_t (line 68) | lv_obj_t * lv_tabview_create(lv_obj_t * par, const lv_obj_t * copy)
  function lv_tabview_clean (line 193) | void lv_tabview_clean(lv_obj_t * obj)
  function lv_obj_t (line 209) | lv_obj_t * lv_tabview_add_tab(lv_obj_t * tabview, const char * name)
  function lv_tabview_set_tab_act (line 329) | void lv_tabview_set_tab_act(lv_obj_t * tabview, uint16_t id, lv_anim_ena...
  function lv_tabview_set_sliding (line 453) | void lv_tabview_set_sliding(lv_obj_t * tabview, bool en)
  function lv_tabview_set_anim_time (line 464) | void lv_tabview_set_anim_time(lv_obj_t * tabview, uint16_t anim_time)
  function lv_tabview_set_style (line 481) | void lv_tabview_set_style(lv_obj_t * tabview, lv_tabview_style_t type, c...
  function lv_tabview_set_btns_pos (line 518) | void lv_tabview_set_btns_pos(lv_obj_t * tabview, lv_tabview_btns_pos_t b...
  
Condensed preview — 398 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,757K chars).
[
  {
    "path": ".gitignore",
    "chars": 153,
    "preview": "# Visual Studio Code\n.vs/\n.vscode/\n\n# Build files\nbuild/\noutput/\n\n# Cli files\nvenv/\nscripts/sd-files/\n\n# Release files\na"
  },
  {
    "path": "Changelog.md",
    "chars": 2276,
    "preview": "# Changelog\n\n## v0.2\n\n- Cancel autolaunch/autochainloading of `argon/payload.bin` by holding VOL_DOWN_BUTTON when ArgonN"
  },
  {
    "path": "LICENSE",
    "chars": 18092,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Fr"
  },
  {
    "path": "Makefile",
    "chars": 839,
    "preview": "\n.PHONY: all clean\n\n\nall: directories primary gui\n\t$(MAKE) -C modules/minerva\n\ndirectories:\n\t@mkdir -p output\n\ngui:\n\t$(M"
  },
  {
    "path": "README.md",
    "chars": 6300,
    "preview": "\n<img src=\"img/splash.jpg\" alt=\"banner\">\n\n![License badge](https://img.shields.io/badge/license-GPLv2-blue.svg)\n[![Homeb"
  },
  {
    "path": "argon-first-stage/Dockerfile",
    "chars": 252,
    "preview": "# Build Docker image using: docker build . -t argon-nx-builder\n# Run docker image using: docker run -a stdout -a stderr "
  },
  {
    "path": "argon-first-stage/Makefile",
    "chars": 2197,
    "preview": "ifeq ($(strip $(DEVKITARM)),)\n$(error \"Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM\")\ne"
  },
  {
    "path": "argon-first-stage/include/core/launcher.h",
    "chars": 713,
    "preview": "/*\n * Copyright (c) 2018 Guillem96\n * \n * This program is free software; you can redistribute it and/or modify it\n * und"
  },
  {
    "path": "argon-first-stage/include/gfx/di.h",
    "chars": 12148,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (C) 2018 CTCaer\n *\n * This program is free software; you can redistribut"
  },
  {
    "path": "argon-first-stage/include/gfx/di.inl",
    "chars": 21062,
    "preview": "/*\n* Copyright (c) 2018 naehrwert\n* Copyright (C) 2018 CTCaer\n*\n* This program is free software; you can redistribute it"
  },
  {
    "path": "argon-first-stage/include/gfx/gfx.h",
    "chars": 2552,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (C) 2018 CTCaer\n * Copyright (C) 2018 M4xw\n * Copyright (C) 2018 Guillem"
  },
  {
    "path": "argon-first-stage/include/ianos/ianos.h",
    "chars": 1087,
    "preview": "/*\n * Copyright (c) 2018 M4xw\n * Copyright (c) 2018 CTCaer\n *\n * This program is free software; you can redistribute it "
  },
  {
    "path": "argon-first-stage/include/libs/compr/blz.h",
    "chars": 1301,
    "preview": "/*\n * Copyright (c) 2018 rajkosto\n *\n * This program is free software; you can redistribute it and/or modify it\n * under"
  },
  {
    "path": "argon-first-stage/include/libs/compr/lz.h",
    "chars": 1693,
    "preview": "/*************************************************************************\n* Name:        lz.h\n* Author:      Marcus Gee"
  },
  {
    "path": "argon-first-stage/include/libs/elfload/elf.h",
    "chars": 22765,
    "preview": "/*    $OpenBSD: exec_elf.h,v 1.53 2014/01/03 03:00:39 guenther Exp $    */\n/*\n * Copyright (c) 1995, 1996 Erik Theisen. "
  },
  {
    "path": "argon-first-stage/include/libs/elfload/elfarch.h",
    "chars": 1385,
    "preview": "/*\n * Copyright © 2014, Owen Shepherd\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * "
  },
  {
    "path": "argon-first-stage/include/libs/elfload/elfload.h",
    "chars": 3009,
    "preview": "/*\n * Copyright © 2018, M4xw\n * Copyright © 2014, Owen Shepherd\n *\n * Permission to use, copy, modify, and/or distribute"
  },
  {
    "path": "argon-first-stage/include/libs/fatfs/diskio.h",
    "chars": 2647,
    "preview": "/*-----------------------------------------------------------------------/\n/  Low level disk interface modlue include fi"
  },
  {
    "path": "argon-first-stage/include/libs/fatfs/ff.h",
    "chars": 14704,
    "preview": "/*----------------------------------------------------------------------------/\n/  FatFs - Generic FAT Filesystem module"
  },
  {
    "path": "argon-first-stage/include/libs/fatfs/ffconf.h",
    "chars": 11535,
    "preview": "/*---------------------------------------------------------------------------/\n/  FatFs Functional Configurations\n/-----"
  },
  {
    "path": "argon-first-stage/include/mem/emc.h",
    "chars": 58544,
    "preview": "/*\n * arch/arm/mach-tegra/tegra21_emc.h\n *\n * Copyright (c) 2014-2015, NVIDIA CORPORATION.  All rights reserved.\n * Copy"
  },
  {
    "path": "argon-first-stage/include/mem/heap.h",
    "chars": 1104,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018 Guillem96\n *\n * This program is free software; you can redistri"
  },
  {
    "path": "argon-first-stage/include/mem/mc.h",
    "chars": 345,
    "preview": "#ifndef _MC_H_\n#define _MC_H_\n\n#include \"utils/types.h\"\n#include \"mem/mc_t210.h\"\n\n#define MAKE_MC_REG(n) MAKE_REG32(MC_B"
  },
  {
    "path": "argon-first-stage/include/mem/mc_t210.h",
    "chars": 31894,
    "preview": "/*\n * Copyright (c) 2014, NVIDIA Corporation. All rights reserved.\n *\n * This software is licensed under the terms of th"
  },
  {
    "path": "argon-first-stage/include/mem/sdram.h",
    "chars": 752,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n *\n * This program is free software; you can redistribute it and/or modify it\n * unde"
  },
  {
    "path": "argon-first-stage/include/mem/sdram_config_lz.inl",
    "chars": 8435,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018 balika011\n *\n * This program is free software; you can redistri"
  },
  {
    "path": "argon-first-stage/include/mem/sdram_param_t210.h",
    "chars": 27462,
    "preview": "/*\n * Copyright (c) 2015, NVIDIA CORPORATION.  All rights reserved.\n *\n * This program is free software; you can redistr"
  },
  {
    "path": "argon-first-stage/include/power/bq24193.h",
    "chars": 3813,
    "preview": "/*\n * Battery charger driver for Nintendo Switch's TI BQ24193\n *\n * Copyright (C) 2018 CTCaer\n *\n * This program is free"
  },
  {
    "path": "argon-first-stage/include/power/max17050.h",
    "chars": 3411,
    "preview": "/*\n * Fuel gauge driver for Nintendo Switch's Maxim 17050\n *  Note that Maxim 8966 and 8997 are mfd and this is its subd"
  },
  {
    "path": "argon-first-stage/include/power/max77620.h",
    "chars": 12994,
    "preview": "/*\n * Defining registers address and its bit definitions of MAX77620 and MAX20024\n *\n * Copyright (C) 2016 NVIDIA CORPOR"
  },
  {
    "path": "argon-first-stage/include/power/max7762x.h",
    "chars": 4224,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2019 CTCaer\n *\n * This program is free software; you can redistribut"
  },
  {
    "path": "argon-first-stage/include/sec/se.h",
    "chars": 1151,
    "preview": "/*\n* Copyright (c) 2018 naehrwert\n*\n* This program is free software; you can redistribute it and/or modify it\n* under th"
  },
  {
    "path": "argon-first-stage/include/sec/se_t210.h",
    "chars": 11466,
    "preview": "/*\n* Driver for Tegra Security Engine\n*\n* Copyright (c) 2011-2013, NVIDIA Corporation. All Rights Reserved.\n*\n* This pro"
  },
  {
    "path": "argon-first-stage/include/soc/bpmp.h",
    "chars": 1432,
    "preview": "/*\n * BPMP-Lite Cache/MMU and Frequency driver for Tegra X1\n *\n * Copyright (c) 2019 CTCaer\n *\n * This program is free s"
  },
  {
    "path": "argon-first-stage/include/soc/clock.h",
    "chars": 6786,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n *\n * This program is free software; you can redistribute it and/or modify it\n * unde"
  },
  {
    "path": "argon-first-stage/include/soc/cluster.h",
    "chars": 1183,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n *\n * This program is free software; you can redistribute it and/or modify it\n * unde"
  },
  {
    "path": "argon-first-stage/include/soc/fuse.h",
    "chars": 1835,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018 shuffle2\n * Copyright (c) 2018 balika011\n *\n * This program is "
  },
  {
    "path": "argon-first-stage/include/soc/gpio.h",
    "chars": 2039,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n *\n * This program is free software; you can redistribute it and/or modify it\n * unde"
  },
  {
    "path": "argon-first-stage/include/soc/hw_init.h",
    "chars": 758,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018 CTCaer\n *\n * This program is free software; you can redistribut"
  },
  {
    "path": "argon-first-stage/include/soc/i2c.h",
    "chars": 1360,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n *\n * This program is free software; you can redistribute it and/or modify it\n * unde"
  },
  {
    "path": "argon-first-stage/include/soc/pinmux.h",
    "chars": 3090,
    "preview": "#ifndef _PINMUX_H_\n#define _PINMUX_H_\n\n#include \"utils/types.h\"\n\n/*! APB MISC registers. */\n#define APB_MISC_GP_SDMMC1_C"
  },
  {
    "path": "argon-first-stage/include/soc/pmc.h",
    "chars": 2262,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018 st4rk\n *\n * This program is free software; you can redistribute"
  },
  {
    "path": "argon-first-stage/include/soc/pmc_lp0_t210.h",
    "chars": 11057,
    "preview": "/*\n * Copyright (c) 2010-2015, NVIDIA CORPORATION.  All rights reserved.\n *\n * This program is free software; you can re"
  },
  {
    "path": "argon-first-stage/include/soc/smmu.h",
    "chars": 3267,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n *\n * This program is free software; you can redistribute it and/or modify it\n * unde"
  },
  {
    "path": "argon-first-stage/include/soc/t210.h",
    "chars": 6221,
    "preview": "/*\n* Copyright (c) 2018 naehrwert\n*\n* This program is free software; you can redistribute it and/or modify it\n* under th"
  },
  {
    "path": "argon-first-stage/include/soc/uart.h",
    "chars": 1818,
    "preview": "/*\n* Copyright (c) 2018 naehrwert\n*\n* This program is free software; you can redistribute it and/or modify it\n* under th"
  },
  {
    "path": "argon-first-stage/include/storage/mmc.h",
    "chars": 16758,
    "preview": "/*\n * Header for MultiMediaCard (MMC)\n *\n * Copyright 2002 Hewlett-Packard Company\n *\n * Use consistent with the GNU GPL"
  },
  {
    "path": "argon-first-stage/include/storage/sd.h",
    "chars": 3694,
    "preview": "/*\n *  include/linux/mmc/sd.h\n *\n *  Copyright (C) 2005-2007 Pierre Ossman, All Rights Reserved.\n *  Copyright (C) 2018 "
  },
  {
    "path": "argon-first-stage/include/storage/sdmmc.h",
    "chars": 2648,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (C) 2018 CTCaer\n *\n * This program is free software; you can redistribut"
  },
  {
    "path": "argon-first-stage/include/storage/sdmmc_driver.h",
    "chars": 3466,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n *\n * This program is free software; you can redistribute it and/or modify it\n * unde"
  },
  {
    "path": "argon-first-stage/include/storage/sdmmc_t210.h",
    "chars": 3501,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n *\n * This program is free software; you can redistribute it and/or modify it\n * unde"
  },
  {
    "path": "argon-first-stage/include/utils/aarch64_util.h",
    "chars": 1254,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n *\n * This program is free software; you can redistribute it and/or modify it\n * unde"
  },
  {
    "path": "argon-first-stage/include/utils/btn.h",
    "chars": 880,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (C) 2018 CTCaer\n *\n * This program is free software; you can redistribut"
  },
  {
    "path": "argon-first-stage/include/utils/dirlist.h",
    "chars": 743,
    "preview": "/*\n * Copyright (c) 2018 CTCaer\n *\n * This program is free software; you can redistribute it and/or modify it\n * under t"
  },
  {
    "path": "argon-first-stage/include/utils/fs_utils.h",
    "chars": 476,
    "preview": "#ifndef _FS_UTILS_H_\n#define _FS_UTILS_H_\n\n#include \"utils/types.h\"\n#include \"libs/fatfs/ff.h\"\n#include \"storage/sdmmc.h"
  },
  {
    "path": "argon-first-stage/include/utils/types.h",
    "chars": 2167,
    "preview": "/*\n* Copyright (c) 2018 naehrwert\n*\n* This program is free software; you can redistribute it and/or modify it\n* under th"
  },
  {
    "path": "argon-first-stage/include/utils/util.h",
    "chars": 1693,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (C) 2018 CTCaer\n * Copyright (C) 2018 Guillem96\n * \n * This program is f"
  },
  {
    "path": "argon-first-stage/src/LICENSE",
    "chars": 18092,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Fr"
  },
  {
    "path": "argon-first-stage/src/core/launcher.c",
    "chars": 2412,
    "preview": "/*\n * Copyright (c) 2018 Guillem96\n * Copyright (c) 2018 CTCaer\n * \n * This program is free software; you can redistribu"
  },
  {
    "path": "argon-first-stage/src/gfx/di.c",
    "chars": 8402,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018 CTCaer\n *\n * This program is free software; you can redistribut"
  },
  {
    "path": "argon-first-stage/src/gfx/gfx.c",
    "chars": 16041,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (C) 2018-2019 CTCaer\n *\n * This program is free software; you can redist"
  },
  {
    "path": "argon-first-stage/src/ianos/ianos.c",
    "chars": 3290,
    "preview": "/*\n * Copyright (c) 2018 M4xw\n * Copyright (c) 2018-2019 CTCaer\n *\n * This program is free software; you can redistribut"
  },
  {
    "path": "argon-first-stage/src/libs/compr/blz.c",
    "chars": 3198,
    "preview": "/*\n * Copyright (c) 2018 rajkosto\n * Copyright (c) 2018 SciresM\n *\n * This program is free software; you can redistribut"
  },
  {
    "path": "argon-first-stage/src/libs/compr/lz.c",
    "chars": 6652,
    "preview": "/*************************************************************************\n* Name:        lz.c\n* Author:      Marcus Gee"
  },
  {
    "path": "argon-first-stage/src/libs/elfload/elfload.c",
    "chars": 6719,
    "preview": "/*\n * Copyright © 2018, M4xw\n * Copyright © 2014, Owen Shepherd\n *\n * Permission to use, copy, modify, and/or distribute"
  },
  {
    "path": "argon-first-stage/src/libs/elfload/elfreloc_aarch64.c",
    "chars": 2083,
    "preview": "\n/*\n * Copyright © 2014, Owen Shepherd\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n *"
  },
  {
    "path": "argon-first-stage/src/libs/elfload/elfreloc_arm.c",
    "chars": 1920,
    "preview": "\n/*\n * ----------------------------------------------------------------------------\n * \"THE BEER-WARE LICENSE\" (Revision"
  },
  {
    "path": "argon-first-stage/src/libs/fatfs/diskio.c",
    "chars": 3422,
    "preview": "/*-----------------------------------------------------------------------*/\n/* Low level disk I/O module skeleton for Fa"
  },
  {
    "path": "argon-first-stage/src/libs/fatfs/ff.c",
    "chars": 236051,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018-2019 CTCaer\n *\n * This program is free software; you can redist"
  },
  {
    "path": "argon-first-stage/src/libs/fatfs/ffsystem.c",
    "chars": 1353,
    "preview": "/*------------------------------------------------------------------------*/\n/* Sample Code of OS Dependent Functions fo"
  },
  {
    "path": "argon-first-stage/src/libs/fatfs/ffunicode.c",
    "chars": 32281,
    "preview": "/*------------------------------------------------------------------------*/\n/* Unicode handling functions for FatFs R0."
  },
  {
    "path": "argon-first-stage/src/link.ld",
    "chars": 313,
    "preview": "ENTRY(_start)\n\nSECTIONS {\n\tPROVIDE(__ipl_start = 0x40008000);\n\t. = __ipl_start;\n\t.text : {\n\t\t*(.text._start);\n\t\t*(._boot"
  },
  {
    "path": "argon-first-stage/src/main.c",
    "chars": 2304,
    "preview": "/*\n * Copyright (c) 2018 Guillem96\n *\n * This program is free software; you can redistribute it and/or modify it\n * unde"
  },
  {
    "path": "argon-first-stage/src/mem/heap.c",
    "chars": 3301,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018 M4xw\n * Copyright (c) 2018 Guillem96\n * \n * This program is fre"
  },
  {
    "path": "argon-first-stage/src/mem/mc.c",
    "chars": 5662,
    "preview": "#include \"mem/mc.h\"\n#include \"soc/t210.h\"\n#include \"soc/clock.h\"\n#include \"utils/util.h\"\n\nvoid mc_config_tsec_carveout(u"
  },
  {
    "path": "argon-first-stage/src/mem/sdram.c",
    "chars": 26510,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n *\n * This program is free software; you can redistribute it and/or modify it\n * unde"
  },
  {
    "path": "argon-first-stage/src/power/bq24193.c",
    "chars": 5160,
    "preview": "/*\n * Battery charger driver for Nintendo Switch's TI BQ24193\n *\n * Copyright (C) 2018 CTCaer\n *\n * This program is free"
  },
  {
    "path": "argon-first-stage/src/power/max17050.c",
    "chars": 8545,
    "preview": "/*\n * Fuel gauge driver for Nintendo Switch's Maxim 17050\n *\n * Copyright (C) 2011 Samsung Electronics\n * MyungJoo Ham <"
  },
  {
    "path": "argon-first-stage/src/power/max7762x.c",
    "chars": 7073,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2019 CTCaer\n *\n * This program is free software; you can redistribut"
  },
  {
    "path": "argon-first-stage/src/sec/se.c",
    "chars": 7404,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018 CTCaer\n * Copyright (c) 2018 Atmosphère-NX\n *\n * This program i"
  },
  {
    "path": "argon-first-stage/src/soc/bpmp.c",
    "chars": 7258,
    "preview": "/*\n * BPMP-Lite Cache/MMU and Frequency driver for Tegra X1\n *\n * Copyright (c) 2019 CTCaer\n *\n * This program is free s"
  },
  {
    "path": "argon-first-stage/src/soc/clock.c",
    "chars": 12521,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n *\n * This program is free software; you can redistribute it and/or modify it\n * unde"
  },
  {
    "path": "argon-first-stage/src/soc/cluster.c",
    "chars": 4415,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n *\n * This program is free software; you can redistribute it and/or modify it\n * unde"
  },
  {
    "path": "argon-first-stage/src/soc/fuse.c",
    "chars": 6888,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018 shuffle2\n * Copyright (c) 2018 balika011\n *\n * This program is "
  },
  {
    "path": "argon-first-stage/src/soc/gpio.c",
    "chars": 2321,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n *\n * This program is free software; you can redistribute it and/or modify it\n * unde"
  },
  {
    "path": "argon-first-stage/src/soc/hw_init.c",
    "chars": 9262,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018 CTCaer\n *\n * This program is free software; you can redistribut"
  },
  {
    "path": "argon-first-stage/src/soc/i2c.c",
    "chars": 3138,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n *\n * This program is free software; you can redistribute it and/or modify it\n * unde"
  },
  {
    "path": "argon-first-stage/src/soc/pinmux.c",
    "chars": 1127,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n *\n * This program is free software; you can redistribute it and/or modify it\n * unde"
  },
  {
    "path": "argon-first-stage/src/soc/smmu.c",
    "chars": 3985,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (c) 2018 balika011\n *\n * This program is free software; you can redistri"
  },
  {
    "path": "argon-first-stage/src/soc/uart.c",
    "chars": 2321,
    "preview": "/*\n* Copyright (c) 2018 naehrwert\n*\n* This program is free software; you can redistribute it and/or modify it\n* under th"
  },
  {
    "path": "argon-first-stage/src/start.s",
    "chars": 1709,
    "preview": "/*\n* Copyright (c) 2018 naehrwert\n*\n* This program is free software; you can redistribute it and/or modify it\n* under th"
  },
  {
    "path": "argon-first-stage/src/storage/sdmmc.c",
    "chars": 33083,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (C) 2018 CTCaer\n *\n * This program is free software; you can redistribut"
  },
  {
    "path": "argon-first-stage/src/storage/sdmmc_driver.c",
    "chars": 26994,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (C) 2018 CTCaer\n *\n * This program is free software; you can redistribut"
  },
  {
    "path": "argon-first-stage/src/utils/btn.c",
    "chars": 1666,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (C) 2018 CTCaer\n *\n * This program is free software; you can redistribut"
  },
  {
    "path": "argon-first-stage/src/utils/dirlist.c",
    "chars": 2760,
    "preview": "/*\n * Copyright (c) 2018 CTCaer\n *\n * This program is free software; you can redistribute it and/or modify it\n * under t"
  },
  {
    "path": "argon-first-stage/src/utils/fs_utils.c",
    "chars": 5060,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (C) 2018 CTCaer\n * Copyright (C) 2018 Guillem96\n * \n * This program is f"
  },
  {
    "path": "argon-first-stage/src/utils/util.c",
    "chars": 5450,
    "preview": "/*\n* Copyright (c) 2018 naehrwert\n* Copyright (C) 2018 CTCaer\n* Copyright (C) 2018 Guillem96\n*\n* This program is free so"
  },
  {
    "path": "argon-nx-gui/Dockerfile",
    "chars": 75,
    "preview": "FROM devkitpro/devkitarm\nWORKDIR /argon-nx-gui\nCOPY . .\nENTRYPOINT [\"make\"]"
  },
  {
    "path": "argon-nx-gui/Makefile",
    "chars": 2398,
    "preview": "ifeq ($(strip $(DEVKITARM)),)\n$(error \"Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM\")\ne"
  },
  {
    "path": "argon-nx-gui/include/core/argon-ctxt.h",
    "chars": 455,
    "preview": "#ifndef _ARGON_CTXT_H_\n#define _ARGON_CTXT_H_\n\n#include \"minerva/minerva.h\"\n#include \"menu/gui/gui_menu_pool.h\"\n\ntypedef"
  },
  {
    "path": "argon-nx-gui/include/core/argon-resources.h",
    "chars": 1187,
    "preview": "#ifndef _ARGON_RESOURCES_H_\n#define _ARGON_RESOURCES_H_\n\n#define ARGON_RES_ADDR 0xEE000000\n\n// Montserrat 12 font\n#defin"
  },
  {
    "path": "argon-nx-gui/include/core/custom-gui.h",
    "chars": 1092,
    "preview": "/*\n * Copyright (c) 2018 Guillem96\n * \n * This program is free software; you can redistribute it and/or modify it\n * und"
  },
  {
    "path": "argon-nx-gui/include/core/launcher.h",
    "chars": 753,
    "preview": "/*\n * Copyright (c) 2018 Guillem96\n * \n * This program is free software; you can redistribute it and/or modify it\n * und"
  },
  {
    "path": "argon-nx-gui/include/core/payloads.h",
    "chars": 963,
    "preview": "/*\n * Copyright (c) 2018 Guillem96\n * \n * This program is free software; you can redistribute it and/or modify it\n * und"
  },
  {
    "path": "argon-nx-gui/include/gfx/di.h",
    "chars": 11516,
    "preview": "#ifndef _DI_H_\n#define _DI_H_\n\n#include \"utils/types.h\"\n\n#define FB_ADDRESS 0xF0800000\n\n/*! Display registers. */\n#defin"
  },
  {
    "path": "argon-nx-gui/include/gfx/di.inl",
    "chars": 23341,
    "preview": "/*\n* Copyright (c) 2018 naehrwert\n* Copyright (C) 2018 CTCaer\n*\n* This program is free software; you can redistribute it"
  },
  {
    "path": "argon-nx-gui/include/gfx/gfx.h",
    "chars": 2859,
    "preview": "/*\n * Copyright (c) 2018 naehrwert\n * Copyright (C) 2018 CTCaer\n * Copyright (C) 2018 M4xw\n * Copyright (C) 2018 Guillem"
  },
  {
    "path": "argon-nx-gui/include/gfx/lvgl_adapter.h",
    "chars": 188,
    "preview": "#ifndef _LVGL_ADAPTER_H_\n#define _LVGL_ADAPTER_H_\n\n#include \"core/argon-ctxt.h\"\n\nvoid lvgl_adapter_init(argon_ctxt_t* ar"
  },
  {
    "path": "argon-nx-gui/include/ianos/ianos.h",
    "chars": 1087,
    "preview": "/*\n * Copyright (c) 2018 M4xw\n * Copyright (c) 2018 CTCaer\n *\n * This program is free software; you can redistribute it "
  },
  {
    "path": "argon-nx-gui/include/libs/compr/blz.h",
    "chars": 1301,
    "preview": "/*\n * Copyright (c) 2018 rajkosto\n *\n * This program is free software; you can redistribute it and/or modify it\n * under"
  },
  {
    "path": "argon-nx-gui/include/libs/compr/lz.h",
    "chars": 1693,
    "preview": "/*************************************************************************\n* Name:        lz.h\n* Author:      Marcus Gee"
  },
  {
    "path": "argon-nx-gui/include/libs/elfload/elf.h",
    "chars": 22765,
    "preview": "/*    $OpenBSD: exec_elf.h,v 1.53 2014/01/03 03:00:39 guenther Exp $    */\n/*\n * Copyright (c) 1995, 1996 Erik Theisen. "
  },
  {
    "path": "argon-nx-gui/include/libs/elfload/elfarch.h",
    "chars": 1385,
    "preview": "/*\n * Copyright © 2014, Owen Shepherd\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * "
  },
  {
    "path": "argon-nx-gui/include/libs/elfload/elfload.h",
    "chars": 3009,
    "preview": "/*\n * Copyright © 2018, M4xw\n * Copyright © 2014, Owen Shepherd\n *\n * Permission to use, copy, modify, and/or distribute"
  },
  {
    "path": "argon-nx-gui/include/libs/fatfs/diskio.h",
    "chars": 2647,
    "preview": "/*-----------------------------------------------------------------------/\n/  Low level disk interface modlue include fi"
  },
  {
    "path": "argon-nx-gui/include/libs/fatfs/ff.h",
    "chars": 14704,
    "preview": "/*----------------------------------------------------------------------------/\n/  FatFs - Generic FAT Filesystem module"
  },
  {
    "path": "argon-nx-gui/include/libs/fatfs/ffconf.h",
    "chars": 11535,
    "preview": "/*---------------------------------------------------------------------------/\n/  FatFs Functional Configurations\n/-----"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_conf.h",
    "chars": 14912,
    "preview": "#ifndef LV_CONF_H\n#define LV_CONF_H\n/* clang-format off */\n\n#include <stdint.h>\n\n/*====================\n   Graphical set"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_conf_checker.h",
    "chars": 18228,
    "preview": "/**\n * GENERATED FILE, DO NOT EDIT IT!\n * @file lv_conf_checker.h\n * Make sure all the defines of lv_conf.h have a defau"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_core/lv_core.mk",
    "chars": 251,
    "preview": "CSRCS += lv_group.c\nCSRCS += lv_indev.c\nCSRCS += lv_disp.c\nCSRCS += lv_obj.c\nCSRCS += lv_refr.c\nCSRCS += lv_style.c\n\nDEP"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_core/lv_disp.h",
    "chars": 3930,
    "preview": "/**\n * @file lv_disp.h\n *\n */\n\n#ifndef LV_DISP_H\n#define LV_DISP_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/***********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_core/lv_group.h",
    "chars": 8870,
    "preview": "/**\n * @file lv_group.h\n *\n */\n\n#ifndef LV_GROUP_H\n#define LV_GROUP_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_core/lv_indev.h",
    "chars": 4332,
    "preview": "/**\n * @file lv_indev.h\n *\n */\n\n#ifndef LV_INDEV_H\n#define LV_INDEV_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_core/lv_obj.h",
    "chars": 31061,
    "preview": "/**\n * @file lv_obj.h\n *\n */\n\n#ifndef LV_OBJ_H\n#define LV_OBJ_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**************"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_core/lv_refr.h",
    "chars": 2179,
    "preview": "/**\n * @file lv_refr.h\n *\n */\n\n#ifndef LV_REFR_H\n#define LV_REFR_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/***********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_core/lv_style.h",
    "chars": 7737,
    "preview": "/**\n * @file lv_style.h\n *\n */\n\n#ifndef LV_STYLE_H\n#define LV_STYLE_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_draw/lv_draw.h",
    "chars": 2624,
    "preview": "/**\n * @file lv_draw.h\n *\n */\n\n#ifndef LV_DRAW_H\n#define LV_DRAW_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/***********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_draw/lv_draw.mk",
    "chars": 375,
    "preview": "CSRCS += lv_draw_basic.c\nCSRCS += lv_draw.c\nCSRCS += lv_draw_rect.c\nCSRCS += lv_draw_label.c\nCSRCS += lv_draw_line.c\nCSR"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_draw/lv_draw_arc.h",
    "chars": 1317,
    "preview": "/**\n * @file lv_draw_arc.h\n *\n */\n\n#ifndef LV_DRAW_ARC_H\n#define LV_DRAW_ARC_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_draw/lv_draw_basic.h",
    "chars": 2324,
    "preview": "/**\n * @file lv_draw_basic.h\n *\n */\n\n#ifndef LV_DRAW_BASIC_H\n#define LV_DRAW_BASIC_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#e"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_draw/lv_draw_img.h",
    "chars": 4018,
    "preview": "/**\n * @file lv_draw_img.h\n *\n */\n\n#ifndef LV_DRAW_IMG_H\n#define LV_DRAW_IMG_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_draw/lv_draw_label.h",
    "chars": 2132,
    "preview": "/**\n * @file lv_draw_label.h\n *\n */\n\n#ifndef LV_DRAW_LABEL_H\n#define LV_DRAW_LABEL_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#e"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_draw/lv_draw_line.h",
    "chars": 952,
    "preview": "/**\n * @file lv_draw_line.h\n *\n */\n\n#ifndef LV_DRAW_LINE_H\n#define LV_DRAW_LINE_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endi"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_draw/lv_draw_rect.h",
    "chars": 897,
    "preview": "/**\n * @file lv_draw_rect.h\n *\n */\n\n#ifndef LV_DRAW_RECT_H\n#define LV_DRAW_RECT_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endi"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_draw/lv_draw_triangle.h",
    "chars": 1388,
    "preview": "/**\n * @file lv_draw_triangle.h\n *\n */\n\n#ifndef LV_DRAW_TRIANGLE_H\n#define LV_DRAW_TRIANGLE_H\n\n#ifdef __cplusplus\nextern"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_draw/lv_img_cache.h",
    "chars": 2233,
    "preview": "/**\n * @file lv_img_cache.h\n *\n */\n\n#ifndef LV_IMG_CACHE_H\n#define LV_IMG_CACHE_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endi"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_draw/lv_img_decoder.h",
    "chars": 13742,
    "preview": "/**\n * @file lv_img_decoder.h\n *\n */\n\n#ifndef LV_IMG_DEOCER_H\n#define LV_IMG_DEOCER_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_font/lv_font.h",
    "chars": 4056,
    "preview": "/**\n * @file lv_font.h\n *\n */\n\n#ifndef LV_FONT_H\n#define LV_FONT_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/***********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_font/lv_font.mk",
    "chars": 343,
    "preview": "CSRCS += lv_font.c\nCSRCS += lv_font_fmt_txt.c\nCSRCS += lv_font_unscii_8.c\nCSRCS += lv_font_montserrat_12.c\nCSRCS += lv_f"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_font/lv_font_fmt_txt.h",
    "chars": 7333,
    "preview": "/**\n * @file lv_font.h\n *\n */\n\n#ifndef LV_FONT_FMT_TXT_H\n#define LV_FONT_FMT_TXT_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#end"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_font/lv_symbol_def.h",
    "chars": 4497,
    "preview": "#ifndef LV_SYMBOL_DEF_H\n#define LV_SYMBOL_DEF_H\n/* clang-format off */\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n#ifdef LV"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_hal/lv_hal.h",
    "chars": 566,
    "preview": "/**\n * @file lv_hal.h\n *\n */\n\n#ifndef LV_HAL_H\n#define LV_HAL_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**************"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_hal/lv_hal.mk",
    "chars": 202,
    "preview": "CSRCS += lv_hal_disp.c\nCSRCS += lv_hal_indev.c\nCSRCS += lv_hal_tick.c\n\nDEPPATH += --dep-path $(LVGL_DIR)/lvgl/src/lv_hal"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_hal/lv_hal_disp.h",
    "chars": 9292,
    "preview": "/**\n * @file lv_hal_disp.h\n *\n * @description Display Driver HAL interface header file\n *\n */\n\n#ifndef LV_HAL_DISP_H\n#de"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_hal/lv_hal_indev.h",
    "chars": 6581,
    "preview": "/**\n * @file lv_hal_indev.h\n *\n * @description Input Device HAL interface layer header file\n *\n */\n\n#ifndef LV_HAL_INDEV"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_hal/lv_hal_tick.h",
    "chars": 1380,
    "preview": "/**\n * @file lv_hal_tick.h\n * Provide access to the system tick with 1 millisecond resolution\n */\n\n#ifndef LV_HAL_TICK_H"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_misc/lv_anim.h",
    "chars": 10169,
    "preview": "/**\n * @file anim.h\n *\n */\n\n#ifndef ANIM_H\n#define ANIM_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/********************"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_misc/lv_area.h",
    "chars": 4383,
    "preview": "/**\n * @file lv_area.h\n *\n */\n\n#ifndef LV_AREA_H\n#define LV_AREA_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/***********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_misc/lv_async.h",
    "chars": 1255,
    "preview": "/**\n * @file lv_async.h\n *\n */\n\n#ifndef LV_ASYNC_H\n#define LV_ASYNC_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_misc/lv_circ.h",
    "chars": 1707,
    "preview": "/**\n * @file lv_circ.h\n *\n */\n\n#ifndef LV_CIRC_H\n#define LV_CIRC_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/***********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_misc/lv_color.h",
    "chars": 12678,
    "preview": "/**\n * @file lv_color.h\n *\n */\n\n#ifndef LV_COLOR_H\n#define LV_COLOR_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_misc/lv_fs.h",
    "chars": 9402,
    "preview": "/**\n * @file lv_fs.h\n *\n */\n\n#ifndef LV_FS_H\n#define LV_FS_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*****************"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_misc/lv_gc.h",
    "chars": 2341,
    "preview": "/**\n * @file lv_gc.h\n *\n */\n\n#ifndef LV_GC_H\n#define LV_GC_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*****************"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_misc/lv_ll.h",
    "chars": 4052,
    "preview": "/**\n * @file lv_ll.c\n * Handle linked lists. The nodes are dynamically allocated by the 'lv_mem' module.\n */\n\n#ifndef LV"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_misc/lv_log.h",
    "chars": 5968,
    "preview": "/**\n * @file lv_log.h\n *\n */\n\n#ifndef LV_LOG_H\n#define LV_LOG_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**************"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_misc/lv_math.h",
    "chars": 1653,
    "preview": "/**\n * @file math_base.h\n *\n */\n\n#ifndef LV_MATH_H\n#define LV_MATH_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_misc/lv_mem.h",
    "chars": 3953,
    "preview": "/**\n * @file lv_mem.h\n *\n */\n\n#ifndef LV_MEM_H\n#define LV_MEM_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**************"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_misc/lv_misc.mk",
    "chars": 395,
    "preview": "CSRCS += lv_circ.c\nCSRCS += lv_area.c\nCSRCS += lv_task.c\nCSRCS += lv_fs.c\nCSRCS += lv_anim.c\nCSRCS += lv_mem.c\nCSRCS += "
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_misc/lv_task.h",
    "chars": 4066,
    "preview": "/**\n * @file lv_task.c\n * An 'lv_task'  is a void (*fp) (void* param) type function which will be called periodically.\n "
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_misc/lv_templ.h",
    "chars": 511,
    "preview": "/**\n * @file lv_templ.h\n *\n */\n\n#ifndef LV_TEMPL_H\n#define LV_TEMPL_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_misc/lv_txt.h",
    "chars": 6942,
    "preview": "/**\n * @file lv_text.h\n *\n */\n\n#ifndef LV_TXT_H\n#define LV_TXT_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*************"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_misc/lv_types.h",
    "chars": 858,
    "preview": "/**\n * @file lv_types.h\n *\n */\n\n#ifndef LV_TYPES_H\n#define LV_TYPES_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_misc/lv_utils.h",
    "chars": 1630,
    "preview": "/**\n * @file lv_utils.h\n *\n */\n\n#ifndef LV_UTILS_H\n#define LV_UTILS_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_arc.h",
    "chars": 2534,
    "preview": "/**\n * @file lv_arc.h\n *\n */\n\n#ifndef LV_ARC_H\n#define LV_ARC_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**************"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_bar.h",
    "chars": 4691,
    "preview": "/**\n * @file lv_bar.h\n *\n */\n\n#ifndef LV_BAR_H\n#define LV_BAR_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**************"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_btn.h",
    "chars": 8001,
    "preview": "/**\n * @file lv_btn.h\n *\n */\n\n#ifndef LV_BTN_H\n#define LV_BTN_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**************"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_btnm.h",
    "chars": 9691,
    "preview": "/**\n * @file lv_btnm.h\n *\n */\n\n#ifndef LV_BTNM_H\n#define LV_BTNM_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/***********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_calendar.h",
    "chars": 7226,
    "preview": "/**\n * @file lv_calendar.h\n *\n */\n\n#ifndef LV_CALENDAR_H\n#define LV_CALENDAR_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_canvas.h",
    "chars": 8986,
    "preview": "/**\n * @file lv_canvas.h\n *\n */\n\n#ifndef LV_CANVAS_H\n#define LV_CANVAS_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*****"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_cb.h",
    "chars": 4351,
    "preview": "/**\n * @file lv_cb.h\n *\n */\n\n#ifndef LV_CB_H\n#define LV_CB_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*****************"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_chart.h",
    "chars": 11593,
    "preview": "/**\n * @file lv_chart.h\n *\n */\n\n#ifndef LV_CHART_H\n#define LV_CHART_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_cont.h",
    "chars": 5779,
    "preview": "/**\n * @file lv_cont.h\n *\n */\n\n#ifndef LV_CONT_H\n#define LV_CONT_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/***********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_ddlist.h",
    "chars": 7860,
    "preview": "/**\n * @file lv_ddlist.h\n *\n */\n\n#ifndef LV_DDLIST_H\n#define LV_DDLIST_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*****"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_gauge.h",
    "chars": 5911,
    "preview": "/**\n * @file lv_gauge.h\n *\n */\n\n#ifndef LV_GAUGE_H\n#define LV_GAUGE_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_img.h",
    "chars": 4560,
    "preview": "/**\n * @file lv_img.h\n *\n */\n\n#ifndef LV_IMG_H\n#define LV_IMG_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**************"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_imgbtn.h",
    "chars": 6616,
    "preview": "/**\n * @file lv_imgbtn.h\n *\n */\n\n#ifndef LV_IMGBTN_H\n#define LV_IMGBTN_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*****"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_kb.h",
    "chars": 5236,
    "preview": "/**\n * @file lv_kb.h\n *\n */\n\n#ifndef LV_KB_H\n#define LV_KB_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*****************"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_label.h",
    "chars": 11005,
    "preview": "/**\n * @file lv_rect.h\n *\n */\n\n#ifndef LV_LABEL_H\n#define LV_LABEL_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_led.h",
    "chars": 2607,
    "preview": "/**\n * @file lv_led.h\n *\n */\n\n#ifndef LV_LED_H\n#define LV_LED_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**************"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_line.h",
    "chars": 4061,
    "preview": "/**\n * @file lv_line.h\n *\n */\n\n#ifndef LV_LINE_H\n#define LV_LINE_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/***********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_list.h",
    "chars": 9627,
    "preview": "/**\n * @file lv_list.h\n *\n */\n\n#ifndef LV_LIST_H\n#define LV_LIST_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/***********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_lmeter.h",
    "chars": 3980,
    "preview": "/**\n * @file lv_lmeter.h\n *\n */\n\n#ifndef LV_LMETER_H\n#define LV_LMETER_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*****"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_mbox.h",
    "chars": 5654,
    "preview": "/**\n * @file lv_mbox.h\n *\n */\n\n#ifndef LV_MBOX_H\n#define LV_MBOX_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/***********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_objx.mk",
    "chars": 743,
    "preview": "CSRCS += lv_arc.c\nCSRCS += lv_bar.c\nCSRCS += lv_cb.c\nCSRCS += lv_ddlist.c\nCSRCS += lv_kb.c\nCSRCS += lv_line.c\nCSRCS += l"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_objx_templ.h",
    "chars": 2331,
    "preview": "/**\n * @file lv_templ.h\n *\n */\n\n/* TODO Remove these instructions\n * Search an replace: template -> object normal name w"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_page.h",
    "chars": 12749,
    "preview": "/**\n * @file lv_page.h\n *\n */\n\n#ifndef LV_PAGE_H\n#define LV_PAGE_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/***********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_preload.h",
    "chars": 4731,
    "preview": "/**\n * @file lv_preload.h\n *\n */\n\n#ifndef LV_PRELOAD_H\n#define LV_PRELOAD_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_roller.h",
    "chars": 5643,
    "preview": "/**\n * @file lv_roller.h\n *\n */\n\n#ifndef LV_ROLLER_H\n#define LV_ROLLER_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*****"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_slider.h",
    "chars": 4734,
    "preview": "/**\n * @file lv_slider.h\n *\n */\n\n#ifndef LV_SLIDER_H\n#define LV_SLIDER_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*****"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_spinbox.h",
    "chars": 4602,
    "preview": "/**\n * @file lv_spinbox.h\n *\n */\n\n#ifndef LV_SPINBOX_H\n#define LV_SPINBOX_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_sw.h",
    "chars": 3976,
    "preview": "/**\n * @file lv_sw.h\n *\n */\n\n#ifndef LV_SW_H\n#define LV_SW_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*****************"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_ta.h",
    "chars": 13967,
    "preview": "/**\n * @file lv_ta.h\n *\n */\n\n#ifndef LV_TA_H\n#define LV_TA_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/*****************"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_table.h",
    "chars": 7376,
    "preview": "/**\n * @file lv_table.h\n *\n */\n\n#ifndef LV_TABLE_H\n#define LV_TABLE_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/********"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_tabview.h",
    "chars": 6127,
    "preview": "/**\n * @file lv_tabview.h\n *\n */\n\n#ifndef LV_TABVIEW_H\n#define LV_TABVIEW_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_tileview.h",
    "chars": 4513,
    "preview": "/**\n * @file lv_tileview.h\n *\n */\n\n#ifndef LV_TILEVIEW_H\n#define LV_TILEVIEW_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_objx/lv_win.h",
    "chars": 8156,
    "preview": "/**\n * @file lv_win.h\n *\n */\n\n#ifndef LV_WIN_H\n#define LV_WIN_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**************"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_themes/lv_theme.h",
    "chars": 7437,
    "preview": "/**\n *@file lv_themes.h\n *\n */\n\n#ifndef LV_THEMES_H\n#define LV_THEMES_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/******"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_themes/lv_theme_argon.h",
    "chars": 1410,
    "preview": "/**\n * @file lv_theme_argon.h\n *\n */\n\n#ifndef LV_THEME_ARGON_H\n#define LV_THEME_ARGON_H\n\n#ifdef __cplusplus\nextern \"C\" {"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_themes/lv_theme_default.h",
    "chars": 1074,
    "preview": "/**\n * @file lv_theme_default.h\n *\n */\n\n#ifndef LV_THEME_DEFAULT_H\n#define LV_THEME_DEFAULT_H\n\n#ifdef __cplusplus\nextern"
  },
  {
    "path": "argon-nx-gui/include/libs/lvgl/lv_themes/lv_themes.mk",
    "chars": 215,
    "preview": "CSRCS += lv_theme.c\nCSRCS += lv_theme_default.c\nCSRCS += lv_theme_argon.c\n\nDEPPATH += --dep-path $(LVGL_DIR)/lvgl/src/lv"
  }
]

// ... and 198 more files (download for full content)

About this extraction

This page contains the full source code of the Guillem96/argon-nx GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 398 files (4.3 MB), approximately 1.2M tokens, and a symbol index with 2614 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!