[CORE] Add VMM_ENOTSUPP error code.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] arm32: Compiling with -O2 optimization level

Change the compilation level to -O2, this will:
1. Reduce binary size
2. Improve performance
3. Improve GDB API expectations

Even linux kernel uses -O2 optimization level for
all architectures.

Signed-off-by: Jimmy Durand Wesolowski <jimmy.durand-wesolowski@openwide.fr>
[CORE] Introduce vmm_openconf.h for config option checking

Currently, we did not have common config option checking
macros like linux/kconfig.h.

This patch adds vmm_openconf.h which will be always included
for all source files and it will provide config option
checking macros such as IS_ENABLED(x).

Signed-off-by: Anup Patel <anup@brainfault.org>
[DRIVERS] Add the PWM API and i.MX PWM controller support.

This patch add the support for PWM devices and the i.MX PWM controller driver
using it, with the PWM 4 device tree node, used by the LVDS backlight.

Signed-off-by: Jimmy Durand Wesolowski <jimmy.durand-wesolowski@openwide.fr>
[DRIVERS] Improving i.MX UART driver for clock management.

The i.MX UART clock names are now scanned from the device tree, enabled, and
the uart_clock is set to the rate also precised in the device tree.

Signed-off-by: Jimmy Durand Wesolowski <jimmy.durand-wesolowski@openwide.fr>
[ARCH] Introduce arch_cpu_relax() for busy loops

Quite often device drivers require busy loops (or polling loops).

This busy loop require special barrier to avoid compiler optimizing
out such loops.

This patch adds arch specific busy loop barrier.

Signed-off-by: Anup Patel <anup@brainfault.org>
[DRIVERS] Add readl_relaxed and writel_relaxed to asm/io.h

Signed-off-by: Anup Patel <anup@brainfault.org>
[DRIVERS] Add the reset API and i.MX reset controller support.

Signed-off-by: Jimmy Durand Wesolowski <jimmy.durand-wesolowski@openwide.fr>
[LIBS] Add the general purpose allocator for special purpose memory (genalloc).

This patch adds the basic general purpose allocator for allocating special
purpose memory (memory that is not managed by the regular malloc/free
interface).
This is used for the port of SRAM allocation driver.

Signed-off-by: Jimmy Durand Wesolowski <jimmy.durand-wesolowski@openwide.fr>
[ARM] i.MX6Q SRAM device node added in device tree.

Signed-off-by: Jimmy Durand Wesolowski <jimmy.durand-wesolowski@openwide.fr>
[ARM] i.MX6Q SRAM device node added in device tree.

Signed-off-by: Jimmy Durand Wesolowski <jimmy.durand-wesolowski@openwide.fr>
[ARM] Linker script corrected for the "readmostly" section.

The .readmostly.data section was out of the copied sections.
Now, all *.data sections are in the .data one.

Signed-off-by: Jimmy Durand Wesolowski <jimmy.durand-wesolowski@openwide.fr>
Signed-off-by: Anup Patel <anup@brainfault.org>
[CORE] Increase the buddy allocator maximum chunk size to 8 MB.

This increases the maximum block size of contiguous memory, allowing contiguous
memory blocks of 8 MB instead of 2.

Signed-off-by: Jimmy Durand Wesolowski <jimmy.durand-wesolowski@openwide.fr>
[LIBS] Adding the bitrev library.

Signed-off-by: Jimmy Durand Wesolowski <jimmy.durand-wesolowski@openwide.fr>
[ARM] arm32ve: arm64: Use -O2 optimization level

The arm32 port already uses -O2 optimization level without
issues (Just like Linux ARM kernel).

This patch makes our arm32ve and arm64 ports use -O2
optimization level.

Signed-off-by: Anup Patel <anup@brainfault.org>