summaryrefslogblamecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/score603e/include/bsp.h
blob: 44c4b60fa9d568377e9799e1d2db1159c31827bd (plain) (tree)
1
2
3
4
5
6
7
8
9
  

                                                        
                            
                                                    


                                                           
                                         



        

              




                  
                    




                           
 










                                                       
 





                                                                 


                           
 


                                                    
 
                 











                                                                            
                                        


                                                   
                                        


                                                                  




                                                                 
 



                                            

                     



                                   



                                  
 




                                 

               




                           
  




                               
  










                                                                        








                                 
                              
                                       
                  
                        
  
                                






                           
                        

  
                                
 
                
                          



                              

                                        

  
                

                                

  
                                      








                                     
                                       


                                             
                                                          

  


                                                                              






                                                           






                  
/*
 *  This include file contains all board IO definitions.
 *
 *  COPYRIGHT (c) 1989-2008.
 *  On-Line Applications Research Corporation (OAR).
 *
 *  The license and distribution terms for this file may in
 *  the file LICENSE in this distribution or at
 *  http://www.rtems.com/license/LICENSE.
 *
 *  $Id$
 */

#ifndef _BSP_H
#define _BSP_H

#ifdef __cplusplus
extern "C" {
#endif

#include <bspopts.h>
#include <rtems.h>
#include <rtems/console.h>
#include <libcpu/io.h>
#include <rtems/clockdrv.h>
#include <bsp/vectors.h>

/*
 *  confdefs.h overrides for this BSP:
 *   - termios serial ports (defaults to 1)
 *   - Interrupt stack space is not minimum if defined.
 */

#if (HAS_PMC_PSC8)
#define CONFIGURE_NUMBER_OF_TERMIOS_PORTS (4 + 4)
#else
#define CONFIGURE_NUMBER_OF_TERMIOS_PORTS (4)
#endif

#ifdef ASM
/* Definition of where to store registers in alignment handler */
#define ALIGN_REGS 0x0140

#else
#include <rtems.h>
#include <rtems/console.h>
#include <rtems/clockdrv.h>
#include <rtems/iosupp.h>

/*
 *  We no longer support the first generation board.
 */

#include <gen2.h>

/*
 * The following macro calculates the Baud constant. For the Z8530 chip.
 *
 * Note: baud constant = ((clock frequency / Clock_X) / (2 * Baud Rate)) - 2
 *       for the Score603e ((10,000,000 / 16) / (2 * Baud Rate)) - 2
 */
#define _Score603e_Z8530_Baud( _frequency, _clock_by, _baud_rate  )   \
  ( (_frequency /( _clock_by * 2 * _baud_rate))  - 2)

#define Score603e_Z8530_Chip1_Baud( _value ) \
  _Score603e_Z8530_Baud( SCORE603E_85C30_1_CLOCK, \
     SCORE603E_85C30_1_CLOCK_X, _value )

#define Score603e_Z8530_Chip0_Baud( _value ) \
  _Score603e_Z8530_Baud( SCORE603E_85C30_0_CLOCK, \
     SCORE603E_85C30_0_CLOCK_X, _value )

#define Initialize_Board_ctrl_register()                         \
  *SCORE603E_BOARD_CTRL_REG = (*SCORE603E_BOARD_CTRL_REG |       \
                               SCORE603E_BRD_FLASH_DISABLE_MASK) 

#define Processor_Synchronize() \
  asm(" eieio ")


/*
 *  Information placed in the linkcmds file.
 */

extern void *RAM_END;
extern void *end;

extern int   CLOCK_SPEED;
extern int   CPU_PPC_CLICKS_PER_MS;

/*
 * system init stack
 */
#define BSP_INIT_STACK_SIZE 0x1000

/*
 * Total RAM available
 */
extern unsigned int BSP_mem_size;

/* functions */

/*
 * spurious.c
 */
rtems_isr bsp_stub_handler(
   rtems_vector_number trap
);
rtems_isr bsp_spurious_handler(
   rtems_vector_number trap
);
void bsp_spurious_initialize();

/*
 * genvec.c
 */
rtems_isr_entry  set_EE_vector(
  rtems_isr_entry     handler,                  /* isr routine        */
  rtems_vector_number vector                    /* vector number      */
);
void initialize_external_exception_vector ();

/*
 * console.c
 */
void BSP_fatal_return( void );

/*
 * Hwr_init.c
 */
void init_PCI();
void instruction_cache_enable ();
void data_cache_enable ();

void initialize_PCI_bridge ();
uint16_t         read_and_clear_irq ();
void set_irq_mask(
  uint16_t         value
);
uint16_t         get_irq_mask();

/*
 * universe.c
 */
void initialize_universe();

void set_irq_mask(
  uint16_t         value
);

uint16_t         get_irq_mask();

void unmask_irq(
  uint16_t         irq_idx
);

void init_irq_data_register();

uint16_t         read_and_clear_PMC_irq(
  uint16_t            irq
);

bool Is_PMC_IRQ(
  uint32_t           pmc_irq,
  uint16_t           status_word
);

uint16_t         read_and_clear_irq();

/*
 * FPGA.c
 */
void initialize_PCI_bridge ();

/* flash.c */

unsigned int SCORE603e_FLASH_Disable(
  uint32_t                       unused
);
unsigned int SCORE603e_FLASH_verify_enable();
unsigned int SCORE603e_FLASH_Enable_writes(
  uint32_t                       area        /* Unused  */
);

#define BSP_FLASH_ENABLE_WRITES( _area) SCORE603e_FLASH_Enable_writes( _area )
#define BSP_FLASH_DISABLE_WRITES(_area) SCORE603e_FLASH_Disable( _area )

#define Convert_Endian_32( _data ) \
  ( ((_data&0x000000ff)<<24) | ((_data&0x0000ff00)<<8) |  \
    ((_data&0x00ff0000)>>8)  | ((_data&0xff000000)>>24) )

#define Convert_Endian_16( _data ) \
  ( ((_data&0x00ff)<<8) | ((_data&0xff00)>>8) )

#endif /* ASM */

#ifdef __cplusplus
}
#endif

#endif