/* * tiomap_io.h * * DSP-BIOS Bridge driver support functions for TI OMAP processors. * * Definitions, types and function prototypes for the io (r/w external mem). * * Copyright (C) 2005-2006 Texas Instruments, Inc. * * This package 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. * * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef _TIOMAP_IO_ #define _TIOMAP_IO_ /* * Symbol that defines beginning of shared memory. * For OMAP (Helen) this is the DSP Virtual base address of SDRAM. * This will be used to program DSP MMU to map DSP Virt to GPP phys. * (see dspMmuTlbEntry()). */ #define SHMBASENAME "SHM_BEG" #define EXTBASE "EXT_BEG" #define EXTEND "_EXT_END" #define DYNEXTBASE "_DYNEXT_BEG" #define DYNEXTEND "_DYNEXT_END" #define IVAEXTMEMBASE "_IVAEXTMEM_BEG" #define IVAEXTMEMEND "_IVAEXTMEM_END" #define DSP_TRACESEC_BEG "_BRIDGE_TRACE_BEG" #define DSP_TRACESEC_END "_BRIDGE_TRACE_END" #define SYS_PUTCBEG "_SYS_PUTCBEG" #define SYS_PUTCEND "_SYS_PUTCEND" #define BRIDGE_SYS_PUTC_CURRENT "_BRIDGE_SYS_PUTC_current" #define WORDSWAP_ENABLE 0x3 /* Enable word swap */ /* * ======== read_ext_dsp_data ======== * Reads it from DSP External memory. The external memory for the DSP * is configured by the combination of DSP MMU and shm Memory manager in the CDB */ extern int read_ext_dsp_data(struct bridge_dev_context *dev_ctxt, u8 *host_buff, u32 dsp_addr, u32 ul_num_bytes, u32 mem_type); /* * ======== write_dsp_data ======== */ extern int write_dsp_data(struct bridge_dev_context *dev_context, u8 *host_buff, u32 dsp_addr, u32 ul_num_bytes, u32 mem_type); /* * ======== write_ext_dsp_data ======== * Writes to the DSP External memory for external program. * The ext mem for progra is configured by the combination of DSP MMU and * shm Memory manager in the CDB */ extern int write_ext_dsp_data(struct bridge_dev_context *dev_context, u8 *host_buff, u32 dsp_addr, u32 ul_num_bytes, u32 mem_type, bool dynamic_load); /* * ======== write_ext32_bit_dsp_data ======== * Writes 32 bit data to the external memory */ extern inline void write_ext32_bit_dsp_data(const struct bridge_dev_context *dev_context, u32 dsp_addr, u32 val) { *(u32 *) dsp_addr = ((dev_context->tc_word_swap_on) ? (((val << 16) & 0xFFFF0000) | ((val >> 16) & 0x0000FFFF)) : val); } /* * ======== read_ext32_bit_dsp_data ======== * Reads 32 bit data from the external memory */ extern inline u32 read_ext32_bit_dsp_data(const struct bridge_dev_context *dev_context, u32 dsp_addr) { u32 ret; ret = *(u32 *) dsp_addr; ret = ((dev_context->tc_word_swap_on) ? (((ret << 16) & 0xFFFF0000) | ((ret >> 16) & 0x0000FFFF)) : ret); return ret; } #endif /* _TIOMAP_IO_ */