sdk-hwV1.3/lichee/brandy-2.0/spl/include/common.h

199 lines
6.1 KiB
C

/*
* (C) Copyright 2007-2012
* Allwinner Technology Co., Ltd. <www.allwinnertech.com>
* Tom wangwei <wangwei@allwinnertech.com>
*/
#ifndef _SYS_COMMON_H_
#define _SYS_COMMON_H_
#include <linux/types.h>
#include <linux/sizes.h>
#include <linux/io.h>
#include <linux/kernel.h>
#include <config.h>
#include <arch/cpu.h>
#define ESPACE(x) _x
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
#ifdef BOOT_DEBUG
#define _DEBUG 1
#define boot_info(fmt, args...) printf(fmt, ##args)
#else
#define _DEBUG 0
#define boot_info(fmt, args...)
#endif
#ifdef CFG_FPGA_PLATFORM
#define FPGA_PLATFORM
#endif
void udelay(unsigned long);
void mdelay(unsigned long);
void sdelay(unsigned long loops);
u32 timer_get_us(void);
u32 get_sys_ticks(void);
void print_sys_tick(void);
int sunxi_set_printf_debug_mode(u8 debug_level, u8 to_uboot);
u8 sunxi_get_printf_debug_mode(void);
u8 sunxi_get_debug_mode_for_uboot(void);
void puts(const char *s);
int printf(const char *fmt, ...);
int pr_emerg(const char *fmt, ...);
void ndump(u8 *buf, int count);
void __assert_fail(const char *assertion, const char *file, unsigned line,
const char *function);
#define assert(x) \
({ if (!(x) && _DEBUG) \
__assert_fail(#x, __FILE__, __LINE__, __func__); })
void mmu_enable(u32 dram_size);
void mmu_disable(void);
void v7_flush_dcache_all(void);
void dcache_enable(void);
void dcache_disable(void);
void flush_dcache_range(unsigned long start, unsigned long end);
void invalidate_dcache_range(unsigned long start, unsigned long end);
void data_sync_barrier(void);
int sunxi_board_init(void);
int sunxi_nsi_init(void);
int sunxi_board_exit(void);
void boot0_jmp_monitor(phys_addr_t addr);
void boot0_jmp_optee(phys_addr_t optee, phys_addr_t uboot);
void boot0_jmp(phys_addr_t addr);
void boot0_jmp_opensbi(phys_addr_t opensbi, phys_addr_t uboot);
int axp_init(u8 power_mode);
int axp_reg_write(u8 addr, u8 val);
int axp_reg_read(u8 addr, u8 *val);
int set_ddr_voltage(int set_vol);
int set_sys_voltage(int set_vol);
int set_sys_voltage_ext(char *name, int set_vol);
int set_pll_voltage(int set_vol);
int set_power_reset(void);
int probe_power_key(void);
int get_power_mode(void);
int get_power_source(void);
int get_pmu_exist(void);
void i2c_init(ulong i2c_base, int speed, int slaveaddr);
void i2c_exit(void);
int check_update_key(u16 *key_input);
void __iomem *sunxi_get_iobase (unsigned int base);
unsigned int sunxi_get_lw32_addr(void *base);
char* strcpy(char *dest,const char *src);
char* strncpy(char *dest,const char *src,size_t count);
char* strcat(char *dest, const char *src);
char* strncat(char *dest, const char *src, size_t count);
int strcmp(const char *cs,const char *ct);
int strncmp(const char *cs,const char *ct,size_t count);
char* strchr(const char *s, int c);
size_t strlen(const char *s);
char* strrchr(const char *s, int c);
size_t strnlen(const char *s, size_t count);
size_t strspn(const char *s, const char *accept);
extern void* memset0(void *s, int c, size_t count);
void* memset(void *s, int c, size_t count);
void* memcpy0(void *dest, const void *src, size_t n);
void* memcpy(void *dest, const void *src, size_t count);
int memcmp(const void *cs,const void *ct,size_t count);
void *memmove(void *dest, const void *src, size_t count);
void* memscan(void *addr, int c, size_t size);
char* strstr(const char *s1,const char *s2);
void* memchr(const void *s, int c, size_t n);
unsigned long simple_strtoul(const char *cp, char **endp, unsigned int base);
int malloc_init(u32 start, u32 size);
void* malloc(u32 size);
void* realloc(void *p, u32 size);
void free(void *p);
int load_package(void);
int load_image(phys_addr_t *uboot_base, phys_addr_t *optee_base, \
phys_addr_t *monitor_base, phys_addr_t *rtos_base, phys_addr_t *opensbi_base,
phys_addr_t *cpus_rtos_base);
unsigned int get_card_work_mode(void);
void update_flash_para(phys_addr_t uboot_base);
int verify_addsum(void *mem_base, u32 size);
u32 g_mod( u32 dividend, u32 divisor, u32 *quot_p);
char get_uart_input(void);
int sunxi_assert_arisc(void);
int sunxi_deassert_arisc(void);
void handler_super_standby(void);
int super_standby_mode(void);
void set_uboot_func_mask(uint8_t mask);
uint8_t get_uboot_func_mask(uint8_t mask);
uint8_t sunxi_board_late_init(void);
int sunxi_board_init_early(void);
void pattern_end(uint32_t pass);
int gunzip(void *dst, int dstlen, unsigned char *src, unsigned long *lenp);
u32 get_boot_dram_training_enable_flag(const uint32_t *dram_para);
phys_addr_t elf_get_entry_addr(phys_addr_t base);
int load_elf_image(phys_addr_t img_addr);
void *elf_find_segment_offset(phys_addr_t elf_addr, const char *seg_name);
void *elf_find_segment_addr(phys_addr_t elf_addr, const char *seg_name);
void neon_enable(void);
int verify_addsum_for_kernel(void *mem_base, u32 size, u32 src_sum);
u32 sunxi_generate_checksum(void *buffer, uint length, uint div, uint src_sum);
int sunxi_verify_checksum(void *buffer, uint length, uint src_sum);
//kernel code is not from first byte of image
#define KERNEL_CODE_OFFSET_IN_UIMAGE 0x40
int load_uimage(u32 from_flash, u32 to_ddr, u32 image_size_KB,
int (*flash_read)(uint, uint, void *), u32 *kernel_addr);
#define KERNEL_CODE_OFFSET_IN_BIMAGE 0x800
int load_bimage(u32 from_flash, u32 to_ddr,
int (*flash_read)(uint, uint, void *), u32 *kernel_addr);
void optee_jump_kernel(u32 optee_entry, u32 dtb_base, u32 kernel_addr);
void boot0_jump_kernel(u32 dtb_base, u32 kernel_addr);
/* mmc*/
int mmc_bread_ext(uint, uint, void *);
int sunxi_mmc_init_ext(void);
int sunxi_mmc_cpu_read(uint start, uint blkcnt, void *dst);
/* spinor*/
int spinor_read(uint, uint, void *);
int load_isp_param(int (*flash_read)(uint, uint, void *));
unsigned char read_switch_flag_from_kernel(void);
int exist_uboot_jmp_cardproduct(phys_addr_t uboot_base);
extern struct fdt_header *working_fdt; /* Pointer to the working fdt */
#ifdef CFG_SUNXI_ENV
#define ENV_DEBUG 0
int fw_env_open(void);
int fw_env_close(void);
char *fw_getenv(char *name);
int fw_env_write(char *name, char *value);
int fw_env_flush(void);
void fw_env_dump(void);
int spl_flash_init(void);
int spl_flash_read(uint start, uint sector_cnt, void *buffer);
#endif
#ifdef CFG_SUNXI_GPT
#define GPT_DEBUG 0
int load_gpt(void *buffer);
#endif
extern bool flash_disable_dma;
#endif