OpenCores
URL https://opencores.org/ocsvn/mips_enhanced/mips_enhanced/trunk

Subversion Repositories mips_enhanced

[/] [mips_enhanced/] [trunk/] [grlib-gpl-1.0.19-b3188/] [software/] [leon3/] [hpi_functions.c] - Rev 2

Compare with Previous | Blame | View Log

#include "hpi_defs.h"
#include "hpi_functions.h"
 
 
//#define outw(a,b)	WRITE_REGISTER_USHORT( (unsigned short *)b, ((unsigned short)a) )
//#define inw(b)		READ_REGISTER_USHORT( (unsigned short *)b)
 
inline void kill_time(int num) {
  int i;
 
  for(i=0; i<num; i++) {
    asm("nop");
  }
}
 
 
USHORT
inw( PUSHORT b )
{
    return (*(volatile PUSHORT const)b);
}
 
VOID
outw(USHORT  a, PUSHORT b)
{
    *(volatile PUSHORT const)b = a;
}
 
 
 
/*
 *  FUNCTION: lcd_hpi_write_word
 *
 *  PARAMETERS:
 *    chip_addr       - Offset Address of the ASIC
 *    value           - Value to write
 *    cy_private_data - Private data structure pointer
 *
 *  DESCRIPTION:
 *    This function writes to hpi
 *
 *  RETURNS: 
 *    LCD_SUCCESS         - Success
 *    LCD_ERROR           - Failure
 */
void lcd_hpi_write_word(unsigned short chip_addr,
                        unsigned short value)
{
  outw (chip_addr, (USHORT*)(HPI_ADDR_ADDR + HPI_BASE));
 
  //  kill_time(5000);
 
  //  printf("\nwrite_word: writing %x to %x\n", chip_addr, (USHORT*)(HPI_ADDR_ADDR + HPI_BASE));
  outw (value, (USHORT*)(HPI_DATA_ADDR + HPI_BASE));
  //  printf("write_word: writing %x to %x\n", value, (USHORT*)(HPI_DATA_ADDR + HPI_BASE));
}
 
unsigned short lcd_hpi_read_status() {
  USHORT value;
 
  value = inw((USHORT*)(HPI_STAT_ADDR + HPI_BASE));
  return(value);
}
 
 
void lcd_hpi_write_mailbox(unsigned short value) {
  outw (value, (USHORT*)(HPI_MBX_ADDR + HPI_BASE));
}
 
 
unsigned short lcd_hpi_read_mailbox() {
    unsigned short value;
 
    value = inw((USHORT*)(HPI_MBX_ADDR + HPI_BASE));
    return(value);
}
 
 
 
/*
 *  FUNCTION: lcd_hpi_read_word
 *
 *  PARAMETERS:
 *    chip_addr       - Offset Address of the ASIC
 *    cy_private_data - Private data structure pointer
 *
 *  DESCRIPTION:
 *    This function reads from hpi
 *
 *  RETURNS: 
 *    LCD_SUCCESS         - Success
 *    LCD_ERROR           - Failure
 */
unsigned short lcd_hpi_read_word(unsigned short chip_addr)
{
    unsigned short value;
 
 
    outw (chip_addr, (USHORT*)(HPI_ADDR_ADDR + HPI_BASE));
 
    //    kill_time(5000);
    //    printf("\nread_word: writing %x to %x\n", chip_addr, (USHORT*)(HPI_ADDR_ADDR + HPI_BASE));
    value = inw((USHORT*)(HPI_DATA_ADDR + HPI_BASE));
    //    printf("read_word: reading %x from %x\n", value, (USHORT*)(HPI_DATA_ADDR + HPI_BASE));
 
    return(value);
}
 
void lcd_hpi_write_words(unsigned short chip_addr,
                         unsigned short *data,
                         int num_words)
{
    int i;
 
    outw (chip_addr, (PUSHORT)(HPI_ADDR_ADDR + HPI_BASE));
 
    for (i=0; i<num_words; i++) {
        outw (*data++, (PUSHORT)(HPI_DATA_ADDR + HPI_BASE));
    }
}
 
/*
 *  FUNCTION: lcd_hpi_read_words
 *
 *  PARAMETERS:
 *    chip_addr       - Offset Address of the ASIC
 *    data            - data pointer
 *    num_words       - Length
 *    cy_private_data - Private data structure pointer
 *
 *  DESCRIPTION:
 *    This function reads words from hpi
 *
 *  RETURNS: 
 *    LCD_SUCCESS         - Success
 *    LCD_ERROR           - Failure
 */
void lcd_hpi_read_words(unsigned short chip_addr,
                        unsigned short *data,
                        int num_words)
{
    int i;
 
    outw (chip_addr, (PUSHORT)(HPI_ADDR_ADDR + HPI_BASE));
    for (i=0; i<num_words; i++) {
        *data++ = inw ((PUSHORT)(HPI_DATA_ADDR + HPI_BASE));
    }
}
 
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.