blob: a36edde7eac25e8ad108d329cba9c99081c6dbee [file] [log] [blame]
/*
* Copyright (c) 2011 Mindspeed Technologies, Inc.
*
* 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 _HAL_H_
#define _HAL_H_
#include "types.h"
#include "common_hal.h"
#define NUM_PE_CLASS 6
#define NUM_PE_TMU 4
#if defined(COMCERTO_2000_CONTROL)
#include "pfe_ctrl_hal.h" /* This file comes from pfe_ctrl project */
#include "pfe/pfe.h"
#undef noinline /* Linux redefines this, undo it here */
#else
/* Function attributes to link code in DDR */
#if defined(COMCERTO_2000_CLASS)
#define __init __attribute__((section(".init")))
#define __exit __attribute__((section(".exit")))
#else
#define __init
#define __exit
#endif
#define DMEM_SH(var) __attribute__((section(".dmem_sh_" #var))) var
#define LMEM_SH(var) __attribute__((section(".lmem_sh_" #var))) var
#define DDR_SH(var) __attribute__((section(".ddr_sh_" #var))) var
typedef U64 u64;
typedef U32 u32;
typedef U16 u16;
typedef U8 u8;
#define __writel(val, addr) (*(volatile u32 *)(addr) = ((u32)(val)))
#define readl(addr) (*(volatile u32 *)(addr))
#define nop_multiple(count) do { \
int i; \
for (i = 0; i < count; i++) \
asm volatile("nop" ::: "memory"); \
} while (0)
#define nop() nop_multiple(1)
/* AXI writes immediately followed by an AXI read, cause writes to be lost,
as a workaround, add a nop after each write */
#define writel(val, addr) \
do { \
__writel(val, addr); \
nop(); \
} while (0)
#include "pe_status.h"
#include <stdarg.h>
#include "pfe/pe.h"
#if defined(COMCERTO_2000_CLASS)
#define PE_LMEM_SH(var) __attribute__((section(".pe_lmem_sh_" #var))) var
#include "pfe/class.h"
#elif defined(COMCERTO_2000_TMU)
#include "pfe/tmu.h"
#elif defined(COMCERTO_2000_UTIL)
#include "pfe/util.h"
#endif
#endif
#include "pe_status.h"
#endif /* _HAL_H_ */