blob: 7a31b926730444220a346080dc09bddba5fc13d9 [file] [log] [blame]
#ifndef __ASR_COMMON_H__
#define __ASR_COMMON_H__
#include "asr_flag.h"
#include "asr_flash.h"
#include "mv_cp.h"
#include "tim.h"
struct cp_img_flash_layout
{
u32 arbel_offset;
u32 msa_offset;
u32 rf_offset;
u32 bx2_offset;
u32 cp_rd_offset;
u32 cp_rd_bk_offset;
u32 ap_rd_offset;
u32 ap_rd_bk_offset;
u32 nvm_tbl_size;
struct nvm_load_info *nvm_tbl;
};
struct ap_img_info
{
u32 image_id;
u32 load_addr;
u32 flash_offset;
u32 image_size;
};
enum nsaid_perm {
DDR_PERM_RW,
DDR_PERM_RD,
DDR_PERM_WR,
DDR_PERM_ABORT,
};
union nsaid_perm_desc {
struct {
u32 range0_perm:2;
u32 range1_perm:2;
u32 range2_perm:2;
u32 range3_perm:2;
u32 range4_perm:2;
u32 range5_perm:2;
u32 range6_perm:2;
u32 range7_perm:2;
u32 range8_perm:2;
u32 range9_perm:2;
u32 rangea_perm:2;
u32 rangeb_perm:2;
u32 rangec_perm:2;
u32 ranged_perm:2;
u32 rangee_perm:2;
u32 rangef_perm:2;
} b;
u32 value;
};
struct nsaid_range_desc {
u32 buff_start;
u32 buff_end;
union nsaid_perm_desc perm_desc;
};
/* resever a 128 bytes(0x300 to 0x380) structure to save asr memory flags */
struct asr_mflag {
u32 reserved1[0x28 / sizeof(u32)];
u32 diag_buff_magic;
u32 diag_buff_addr;
u32 diag_buff_len;
u32 fastboot_flag; /* fast boot mode flag, offset 0x34 */
u32 ubifs_error_magic; /* ubifs error magic offset 0x38 */
u32 ubifs_error_type; /* ubifs error magic offset 0x3c */
u32 reserved2[0x40 / sizeof(u32)];
} __attribute__ ((__packed__));
#define ASR_MFLAG_OFFSET_FROM_CRASHKERNEL (0x300)
#define AP_DIAG_BUF_SET_MAGIC (0x41504447) /* APDG */
#define AP_DIAG_BUF_SET_MAGIC2 (0x41504467) /* APDg */
#define CONFIG_MAX_DIAG_BUFF_LEN (12 * 1024 * 1024)
#define CONFIG_DIAG_BUF_START_ADDR (36 * 1024* 1024) /* none tos mode diag buff start address */
#define DDR_RANGE_ACCESS_CTRL (0xc000007c)
#define DDR_RANGE0_LOW_CFG (0xc0000080)
#define DDR_RANGE0_HIGH_CFG (0xc0000084)
#define DDR_ADC_ERR_INFO (0xc0000150)
#define DDR_RANGE0_TOP_LOW_CFG (0xc0000A40)
#define DDR_RANGE0_TOP_HIGH_CFG (0xc0000A44)
#define DDR_RANGE0_MASK_CFG (0xc0000A00)
#define NSAID_ALL_READ_ONLY (0x55555555)
#define NSAID_ALL_READ_WRITE (0x00000000)
#define NSAID_ALL_WRITE_ONLY (0xAAAAAAAA)
#define NSAID_ALL_ABORT (0xFFFFFFFF)
#define NR_NSAID_RANGES (16)
#define BOOT_LOG_MAGIC 0x42474f4c /* "LOGB" */
#define BOARD_ID_MAGIC 0x44494442 /* "BDID" */
enum BOARD_ID {
ASR1901_P5N = 5,
};
pTIM asr_get_dtim_primary(void);
int asr_load_verify_ap_images(struct ap_img_info * ap_imgs, int num);
int set_nocp_mode(int nocpmode);
int asr_load_verify_cp_images(u32 cpbt_mode, struct cp_img_flash_layout *lwg_layout);
int asr_get_sim_lock_fuse(void);
void nsaid_config_one_range(struct nsaid_range_desc *desc);
void nsaid_basic_init(void);
extern u32 extern_get_prod_mode(void);
extern int extern_get_cpmem(void);
extern int do_uboot_mem_test(u32 ddr_end_addr, u32 sec_ddr_start, u32 sec_ddr_end);
extern struct asr_mflag * get_asr_mflag(void);
extern u32 get_mem_size_bytes(void);
extern int prepare_ap_diag_buff(u32 buff_st, u32 buf_end);
#ifdef CONFIG_PXA182X
#include <asm/arch/pxa182x.h>
#endif
#ifdef CONFIG_ASR1802S
#include <asm/arch/asr1802.h>
#endif
#endif