blob: 0844932a9a712e44c998296b68b6ad617c5194a4 [file] [log] [blame]
/*
* Copyright (C) 2018 Synaptics Incorporated. All rights reserved.
* (C) Copyright Marvell Semiconductors,Inc 2006 All rightes reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND
* SYNAPTICS EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES,
* INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE, AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY
* INTELLECTUAL PROPERTY RIGHTS. IN NO EVENT SHALL SYNAPTICS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, PUNITIVE, OR
* CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION WITH THE USE
* OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED AND
* BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF
* COMPETENT JURISDICTION DOES NOT PERMIT THE DISCLAIMER OF DIRECT
* DAMAGES OR ANY OTHER DAMAGES, SYNAPTICS' TOTAL CUMULATIVE LIABILITY
* TO ANY PARTY SHALL NOT EXCEED ONE HUNDRED U.S. DOLLARS.
*/
#ifndef __UTIL_H__
#define __UTIL_H__
#include <stddef.h>
#include <stdint.h>
#include "com_type.h"
void * UtilMemSet(void *s, int c, int n);
void * UtilMemCpy(void *s1, const void *s2, int n);
int UtilMemCmp(const void *s1, const void *s2, int n);
void * UtilMemAllocZ(int size);
void UtilMemReset(void);
void UtilHalt(void);
//used for bitmaps that could be more than 32 bits wide
#define BITMASK(b) (1 << ((b) % 8))
#define BITSLOT(b) ((b) / 8)
#define BITSET(a, b) ((a)[BITSLOT(b)] |= BITMASK(b))
#define BITCLEAR(a, b) ((a)[BITSLOT(b)] &= ~BITMASK(b))
#define BITTEST(a, b) ((a)[BITSLOT(b)] & BITMASK(b))
#define BITNSLOTS(nb) ((nb + 8 - 1) / 8)
#ifndef BFM_HOST_Bus_Write32
#define BFM_HOST_Bus_Write32(offset, val) ((*(UNSG32*)((uintmax_t)offset))=val)
#endif
#ifndef BFM_HOST_Bus_Read32
#define BFM_HOST_Bus_Read32(offset, holder) ((*(UNSG32*)(holder))=(*(UNSG32*)((uintmax_t)offset)))
#endif
#ifndef BFM_HOST_Bus_Write16
#define BFM_HOST_Bus_Write16(offset, val) ((*(unsigned short*)((uintmax_t)offset))=val)
#endif
#ifndef BFM_HOST_Bus_Read16
#define BFM_HOST_Bus_Read16(offset, holder) ((*(unsigned short*)(holder))=(*(unsigned short*)((uintmax_t)offset)))
#endif
#ifndef BFM_HOST_Bus_Write8
#define BFM_HOST_Bus_Write8(offset, val) ((*(unsigned char*)((uintmax_t)offset))=val)
#endif
#ifndef BFM_HOST_Bus_Read8
#define BFM_HOST_Bus_Read8(offset, holder) ((*(unsigned char*)(holder))=(*(unsigned char*)((uintmax_t)offset)))
#endif
#define CMD_BUF_SIZE 2048
#define CMD_LINE_BUFFER_SIZE CMD_BUF_SIZE
#define PROMPT "BerlinDebug>"
void *malloc(size_t size);
void *calloc(size_t nmemb, size_t size);
void free(void *ptr);
#if 0
void * UtilMemMove(void *dest, const void *src, int n);
#endif
/* defined in uish.S */
extern void *__user_read_heap_top(void);
extern void *__user_read_heap_bottom(void);
void __reset_cpu(unsigned int, int, int);
/* defined in cache.S */
//void flush_dcache_range(void *start, void *end);
//void invalidate_dcache_range(unsigned int, unsigned int);
int diag_i2c_vcore_control(int master_id, int volt_index);
void initMPGIC(void);
int diag_GICSetInt(int MPid, int intId, int enable);
unsigned berlin_delay_us(unsigned us);
#endif /* __UTIL_H__ */