[PATCH 33.3 v2 4/5] LEON: updated drivers to use new AMBAPP Layer

Gedare Bloom gedare at rtems.org
Wed Apr 18 00:22:08 UTC 2012


I think this is 33.4 v2.
The entire series looks good to me.

On Tue, Apr 17, 2012 at 10:25 AM, Daniel Hellstrom <daniel at gaisler.com> wrote:
> The drivers are updated to use the new AMBA layer, however the
> backwards-compatibility interface (ambapp_old) is used.
>
> Signed-off-by: Daniel Hellstrom <daniel at gaisler.com>
> ---
>  c/src/lib/libbsp/sparc/leon2/cchip/cchip.c         |   45 ++--
>  c/src/lib/libbsp/sparc/leon2/rasta/rasta.c         |   33 ++-
>  c/src/lib/libbsp/sparc/shared/1553/b1553brm.c      |   15 +-
>  c/src/lib/libbsp/sparc/shared/1553/b1553brm_pci.c  |    2 +-
>  .../lib/libbsp/sparc/shared/1553/b1553brm_rasta.c  |    2 +-
>  c/src/lib/libbsp/sparc/shared/can/grcan.c          |   18 +-
>  c/src/lib/libbsp/sparc/shared/can/grcan_rasta.c    |    2 +-
>  c/src/lib/libbsp/sparc/shared/can/occan.c          |   20 +-
>  c/src/lib/libbsp/sparc/shared/can/occan_pci.c      |    2 +-
>  c/src/lib/libbsp/sparc/shared/i2c/i2cmst.c         |   14 +-
>  c/src/lib/libbsp/sparc/shared/include/ambapp.h     |  273 ++++++++++----------
>  c/src/lib/libbsp/sparc/shared/include/apbuart.h    |    4 +-
>  .../lib/libbsp/sparc/shared/include/apbuart_pci.h  |    2 +-
>  .../libbsp/sparc/shared/include/apbuart_rasta.h    |    2 +-
>  c/src/lib/libbsp/sparc/shared/include/b1553brm.h   |    4 +-
>  .../lib/libbsp/sparc/shared/include/b1553brm_pci.h |    4 +-
>  .../libbsp/sparc/shared/include/b1553brm_rasta.h   |    4 +-
>  c/src/lib/libbsp/sparc/shared/include/grcan.h      |    2 +-
>  .../lib/libbsp/sparc/shared/include/grcan_rasta.h  |    2 +-
>  c/src/lib/libbsp/sparc/shared/include/grspw.h      |    2 +-
>  c/src/lib/libbsp/sparc/shared/include/grspw_pci.h  |    4 +-
>  .../lib/libbsp/sparc/shared/include/grspw_rasta.h  |    4 +-
>  c/src/lib/libbsp/sparc/shared/include/i2cmst.h     |    2 +-
>  c/src/lib/libbsp/sparc/shared/include/occan.h      |    2 +-
>  c/src/lib/libbsp/sparc/shared/include/occan_pci.h  |    2 +-
>  c/src/lib/libbsp/sparc/shared/spw/grspw.c          |   35 +--
>  c/src/lib/libbsp/sparc/shared/spw/grspw_pci.c      |    2 +-
>  c/src/lib/libbsp/sparc/shared/spw/grspw_rasta.c    |    2 +-
>  c/src/lib/libbsp/sparc/shared/uart/apbuart.c       |   16 +-
>  c/src/lib/libbsp/sparc/shared/uart/apbuart_pci.c   |    2 +-
>  c/src/lib/libbsp/sparc/shared/uart/apbuart_rasta.c |    2 +-
>  31 files changed, 266 insertions(+), 259 deletions(-)
>
> diff --git a/c/src/lib/libbsp/sparc/leon2/cchip/cchip.c b/c/src/lib/libbsp/sparc/leon2/cchip/cchip.c
> index 59c17dd..b3809aa 100644
> --- a/c/src/lib/libbsp/sparc/leon2/cchip/cchip.c
> +++ b/c/src/lib/libbsp/sparc/leon2/cchip/cchip.c
> @@ -1,5 +1,9 @@
>  /*
> - * $Id$
> + *  GR-701 (Companion Chip) PCI board driver
> + *
> + *  The license and distribution terms for this file may be
> + *  found in the file LICENSE in this distribution or at
> + *  http://www.rtems.com/license/LICENSE.
>  */
>
>  #include <bsp.h>
> @@ -83,8 +87,8 @@ typedef struct {
>        int bus, dev, fun;
>
>        /* AMBA bus */
> -       amba_confarea_type amba_bus;
> -       struct amba_mmap amba_maps[2];
> +       struct ambapp_bus amba_bus;
> +       struct ambapp_mmap amba_maps[2];
>
>        /* FT AHB SRAM */
>        int ftsram_size; /* kb */
> @@ -100,8 +104,7 @@ int init_pcif(void){
>        int i,bus,dev,fun;
>        pci_bridge_regs *pcib;
>        amba_bridge_regs *ambab;
> -       int amba_master_cnt;
> -       amba_confarea_type *abus;
> +       struct ambapp_bus *abus;
>
>   if ( BSP_pciFindDevice(0x1AC8, 0x0701, 0, &bus, &dev, &fun) == 0 ) {
>     ;
> @@ -136,13 +139,13 @@ int init_pcif(void){
>
>        /* AMBA MAP cc1.bars[1] (in CPU) ==> 0xf0000000(remote amba address) */
>        cc1.amba_maps[0].size = 0x04000000;
> -       cc1.amba_maps[0].cpu_adr = cc1.bars[1];
> -       cc1.amba_maps[0].remote_amba_adr = 0xfc000000;
> +       cc1.amba_maps[0].local_adr = cc1.bars[1];
> +       cc1.amba_maps[0].remote_adr = 0xfc000000;
>
>        /* Mark end of table */
>        cc1.amba_maps[1].size=0;
> -       cc1.amba_maps[1].cpu_adr = 0;
> -       cc1.amba_maps[1].remote_amba_adr = 0;
> +       cc1.amba_maps[1].local_adr = 0;
> +       cc1.amba_maps[1].remote_adr = 0;
>
>        /* Enable I/O and Mem accesses */
>        pci_read_config_dword(bus, dev, fun, 0x4, &com1);
> @@ -161,16 +164,14 @@ int init_pcif(void){
>
>        /* Scan bus for AMBA devices */
>        abus = &cc1.amba_bus;
> -       memset(abus,0,sizeof(amba_confarea_type));
> -       amba_scan(abus,cc1.bars[1]+0x3f00000,&cc1.amba_maps[0]);
> +       memset(abus,0,sizeof(*abus));
> +       ambapp_scan(abus, cc1.bars[1]+0x3f00000, NULL, &cc1.amba_maps[0]);
>
> -       /* Get number of amba masters */
> -       amba_master_cnt = abus->ahbmst.devnr;
> -#ifdef BOARD_INFO
> -       printk("Found %d AMBA masters\n\r",amba_master_cnt);
> -#endif
> -       for(i=1; i<amba_master_cnt; i++){
> +       /* Init all msters, max 16 */
> +       for(i=1; i<16; i++) {
>                ambab->ambabars[i] = 0x40000000;
> +               if (READ_REG(&ambab->ambabars[i]) != 0x40000000)
> +                       break;
>        }
>
>        /* Enable PCI Master */
> @@ -192,20 +193,22 @@ int init_pcif(void){
>  #define GAISLER_FTAHBRAM 0x50
>  #endif
>  int init_onboard_sram(void){
> -       amba_ahb_device ahb;
> -       amba_apb_device apb;
> +       struct ambapp_ahb_info ahb;
> +       struct ambapp_apb_info apb;
>        unsigned int conf, size;
>
>        /* Find SRAM controller
>         * 1. AHB slave interface
>         * 2. APB slave interface
>         */
> -       if ( amba_find_apbslv(&cc1.amba_bus,VENDOR_GAISLER,GAISLER_FTAHBRAM,&apb) != 1 ){
> +       if ( ambapp_find_apbslv(&cc1.amba_bus, VENDOR_GAISLER, GAISLER_FTAHBRAM,
> +                                &apb) != 1 ){
>                printk("On Board FT SRAM not found (APB)\n");
>                return -1;
>        }
>
> -       if ( amba_find_ahbslv(&cc1.amba_bus,VENDOR_GAISLER,GAISLER_FTAHBRAM,&ahb) != 1 ){
> +       if ( ambapp_find_ahbslv(&cc1.amba_bus, VENDOR_GAISLER, GAISLER_FTAHBRAM,
> +                                &ahb) != 1 ){
>                printk("On Board FT SRAM not found (AHB)\n");
>                return -1;
>        }
> diff --git a/c/src/lib/libbsp/sparc/leon2/rasta/rasta.c b/c/src/lib/libbsp/sparc/leon2/rasta/rasta.c
> index 7b66b07..0be7e4b 100644
> --- a/c/src/lib/libbsp/sparc/leon2/rasta/rasta.c
> +++ b/c/src/lib/libbsp/sparc/leon2/rasta/rasta.c
> @@ -1,5 +1,9 @@
>  /*
> - *  $Id$
> + *  GR-RASTA-IO PCI board driver
> + *
> + *  The license and distribution terms for this file may be
> + *  found in the file LICENSE in this distribution or at
> + *  http://www.rtems.com/license/LICENSE.
>  */
>
>  #include <rtems/bspIo.h>
> @@ -209,16 +213,18 @@ void rasta_interrrupt_register(void *handler, int irqno, void *arg)
>  }
>
>
> -int rasta_get_gpio(amba_confarea_type *abus, int index, struct gpio_reg **regs, int *irq)
> +int rasta_get_gpio(struct ambapp_bus *abus, int index, struct gpio_reg **regs,
> +                   int *irq)
>  {
> -  amba_apb_device dev;
> +  struct ambapp_apb_info dev;
>   int cores;
>
>   if ( !abus )
>     return -1;
>
>   /* Scan PnP info for GPIO port number 'index' */
> -  cores = amba_find_next_apbslv(abus,VENDOR_GAISLER,GAISLER_PIOPORT,&dev,index);
> +  cores = ambapp_find_apbslv_next(abus, VENDOR_GAISLER, GAISLER_GPIO, &dev,
> +                                  index);
>   if ( cores < 1 )
>     return -1;
>
> @@ -232,8 +238,8 @@ int rasta_get_gpio(amba_confarea_type *abus, int index, struct gpio_reg **regs,
>  }
>
>  /* AMBA Plug&Play information */
> -static amba_confarea_type abus;
> -static struct amba_mmap amba_maps[3];
> +static struct ambapp_bus abus;
> +static struct ambapp_mmap amba_maps[3];
>
>  int rasta_register(void)
>  {
> @@ -316,23 +322,24 @@ int rasta_register(void)
>
>     /* AMBA MAP bar0 (in CPU) ==> 0x80000000(remote amba address) */
>     amba_maps[0].size = 0x10000000;
> -    amba_maps[0].cpu_adr = bar0;
> -    amba_maps[0].remote_amba_adr = 0x80000000;
> +    amba_maps[0].local_adr = bar0;
> +    amba_maps[0].remote_adr = 0x80000000;
>
>     /* AMBA MAP bar1 (in CPU) ==> 0x40000000(remote amba address) */
>     amba_maps[1].size = 0x10000000;
> -    amba_maps[1].cpu_adr = bar1;
> -    amba_maps[1].remote_amba_adr = 0x40000000;
> +    amba_maps[1].local_adr = bar1;
> +    amba_maps[1].remote_adr = 0x40000000;
>
>     /* Mark end of table */
>     amba_maps[2].size=0;
> -    amba_maps[2].cpu_adr = 0;
> -    amba_maps[2].remote_amba_adr = 0;
> +    amba_maps[2].local_adr = 0;
> +    amba_maps[2].remote_adr = 0;
>
>     memset(&abus,0,sizeof(abus));
>
>     /* Start AMBA PnP scan at first AHB bus */
> -    amba_scan(&abus,bar0+(AHB1_IOAREA_BASE_ADDR&~0xf0000000),&amba_maps[0]);
> +    ambapp_scan(&abus, bar0 + (AHB1_IOAREA_BASE_ADDR & ~0xf0000000), NULL,
> +                &amba_maps[0]);
>
>     printk("Registering RASTA GRCAN driver\n\r");
>
> diff --git a/c/src/lib/libbsp/sparc/shared/1553/b1553brm.c b/c/src/lib/libbsp/sparc/shared/1553/b1553brm.c
> index e447df2..deec908 100644
> --- a/c/src/lib/libbsp/sparc/shared/1553/b1553brm.c
> +++ b/c/src/lib/libbsp/sparc/shared/1553/b1553brm.c
> @@ -279,7 +279,7 @@ typedef struct {
>  static int brm_cores;
>  static unsigned int allbrm_memarea;
>  static brm_priv *brms;
> -static amba_confarea_type *amba_bus;
> +static struct ambapp_bus *amba_bus;
>  static unsigned int    allbrm_cfg_clksel;
>  static unsigned int allbrm_cfg_clkdiv;
>  static unsigned int allbrm_cfg_freq;
> @@ -325,7 +325,7 @@ int brm_register_leon3_ramon_fpga(void){
>         * The BRM is always clocked with 24MHz.
>         * 3 in BRM enhanced register will select 24MHz
>         */
> -       return b1553brm_register(&amba_conf,0,0,3);
> +       return b1553brm_register(&ambapp_plb, 0, 0, 3);
>  }
>
>  int brm_register_leon3_ramon_asic(void){
> @@ -335,12 +335,12 @@ int brm_register_leon3_ramon_asic(void){
>         *
>         * 3 in BRM enhanced register will select 24MHz
>         */
> -       return b1553brm_register(&amba_conf,2,0,3);
> +       return b1553brm_register(&ambapp_plb, 2, 0, 3);
>  }
>  #endif
>  #endif
>
> -int B1553BRM_PREFIX(_register)(amba_confarea_type *bus, unsigned int clksel, unsigned int clkdiv, unsigned int brm_freq)
> +int B1553BRM_PREFIX(_register)(struct ambapp_bus *bus, unsigned int clksel, unsigned int clkdiv, unsigned int brm_freq)
>  {
>     rtems_status_code r;
>     rtems_device_major_number m;
> @@ -568,7 +568,7 @@ static rtems_device_driver brm_initialize(rtems_device_major_number major, rtems
>        int dev_cnt;
>        char fs_name[20];
>        brm_priv *brm;
> -       amba_ahb_device ambadev;
> +       struct ambapp_ahb_info ambadev;
>        char *mem;
>
>        FUNCDBG("brm_initialize\n");
> @@ -577,7 +577,7 @@ static rtems_device_driver brm_initialize(rtems_device_major_number major, rtems
>        strcpy(fs_name,B1553BRM_DEVNAME);
>
>        /* Find all BRM devices */
> -       dev_cnt = amba_get_number_ahbslv_devices(amba_bus,VENDOR_GAISLER,GAISLER_BRM);
> +       dev_cnt = ambapp_get_number_ahbslv_devices(amba_bus, VENDOR_GAISLER, GAISLER_B1553BRM);
>        if ( dev_cnt < 1 ){
>                /* Failed to find any CAN cores! */
>                printk("BRM: Failed to find any BRM cores\n\r");
> @@ -619,7 +619,8 @@ static rtems_device_driver brm_initialize(rtems_device_major_number major, rtems
>                brm = &brms[minor];
>
>                /* Get AMBA AHB device info from Plug&Play */
> -               amba_find_next_ahbslv(amba_bus,VENDOR_GAISLER,GAISLER_BRM,&ambadev,minor);
> +               ambapp_find_ahbslv_next(amba_bus, VENDOR_GAISLER,
> +                                       GAISLER_B1553BRM, &ambadev, minor);
>
>                /* Copy Basic HW info */
>                brm->regs = (void *)ambadev.start[0];
> diff --git a/c/src/lib/libbsp/sparc/shared/1553/b1553brm_pci.c b/c/src/lib/libbsp/sparc/shared/1553/b1553brm_pci.c
> index 76c9f2e..3be26b1 100644
> --- a/c/src/lib/libbsp/sparc/shared/1553/b1553brm_pci.c
> +++ b/c/src/lib/libbsp/sparc/shared/1553/b1553brm_pci.c
> @@ -82,7 +82,7 @@ static void b1553brmpci_interrupt_handler(int irq, void *arg);
>  */
>
>  int b1553brm_pci_register(
> - amba_confarea_type *bus,
> + struct ambapp_bus *bus,
>  unsigned int clksel,
>  unsigned int clkdiv,
>  unsigned int brm_freq,
> diff --git a/c/src/lib/libbsp/sparc/shared/1553/b1553brm_rasta.c b/c/src/lib/libbsp/sparc/shared/1553/b1553brm_rasta.c
> index 10adb0a..d1fa4d6 100644
> --- a/c/src/lib/libbsp/sparc/shared/1553/b1553brm_rasta.c
> +++ b/c/src/lib/libbsp/sparc/shared/1553/b1553brm_rasta.c
> @@ -82,7 +82,7 @@ static void b1553brmrasta_interrupt_handler(int irq, void *arg);
>  */
>
>  int b1553brm_rasta_register(
> - amba_confarea_type *bus,
> + struct ambapp_bus *bus,
>  unsigned int clksel,
>  unsigned int clkdiv,
>  unsigned int brm_freq,
> diff --git a/c/src/lib/libbsp/sparc/shared/can/grcan.c b/c/src/lib/libbsp/sparc/shared/can/grcan.c
> index fb48550..3b0a14a 100644
> --- a/c/src/lib/libbsp/sparc/shared/can/grcan.c
> +++ b/c/src/lib/libbsp/sparc/shared/can/grcan.c
> @@ -212,7 +212,7 @@ struct grcan_priv {
>
>  static int grcan_core_cnt;
>  struct grcan_priv *grcans;
> -static amba_confarea_type *amba_bus;
> +static struct ambapp_bus *amba_bus;
>  struct grcan_device_info *grcan_cores;
>  static int grcan_core_cnt;
>
> @@ -1050,7 +1050,7 @@ static rtems_device_driver grcan_initialize(
>  {
>   int minor;
>   struct grcan_priv *pDev;
> -  amba_apb_device dev;
> +  struct ambapp_apb_info dev;
>   rtems_status_code status;
>   char fs_name[20];
>   unsigned int sys_freq_hz;
> @@ -1062,10 +1062,12 @@ static rtems_device_driver grcan_initialize(
>
>   /* find GRCAN cores */
>   if ( !grcan_cores ) {
> -    grcan_core_cnt = amba_get_number_apbslv_devices(amba_bus,VENDOR_GAISLER,deviceid);
> +    grcan_core_cnt = ambapp_get_number_apbslv_devices(amba_bus, VENDOR_GAISLER,
> +                                                      deviceid);
>     if ( grcan_core_cnt < 1 ){
>       deviceid = GAISLER_GRCAN;
> -      grcan_core_cnt = amba_get_number_apbslv_devices(amba_bus,VENDOR_GAISLER,deviceid);
> +      grcan_core_cnt = ambapp_get_number_apbslv_devices(amba_bus, VENDOR_GAISLER,
> +                                                        deviceid);
>       if ( grcan_core_cnt < 1 ) {
>         DBG("GRCAN: Using AMBA Plug&Play, found %d cores\n",grcan_core_cnt);
>         return RTEMS_UNSATISFIED;
> @@ -1094,10 +1096,10 @@ static rtems_device_driver grcan_initialize(
>  #if defined(LEON3)
>   /* LEON3: find timer address via AMBA Plug&Play info */
>   {
> -    amba_apb_device gptimer;
> +    struct ambapp_apb_info gptimer;
>     LEON3_Timer_Regs_Map *tregs;
>
> -    if (amba_find_apbslv (&amba_conf, VENDOR_GAISLER, GAISLER_GPTIMER, &gptimer)
> +    if (ambapp_find_apbslv (&ambapp_plb, VENDOR_GAISLER, GAISLER_GPTIMER, &gptimer)
>         == 1) {
>       tregs = (LEON3_Timer_Regs_Map *) gptimer.start;
>       sys_freq_hz = (tregs->scaler_reload + 1) * 1000 * 1000;
> @@ -1132,7 +1134,7 @@ static rtems_device_driver grcan_initialize(
>
>     /* Find core address & IRQ */
>     if ( !grcan_cores ) {
> -      amba_find_next_apbslv(amba_bus,VENDOR_GAISLER,deviceid,&dev,minor);
> +      ambapp_find_apbslv_next(amba_bus, VENDOR_GAISLER, deviceid, &dev, minor);
>       pDev->irq = dev.irq;
>       pDev->regs = (struct grcan_regs *)dev.start;
>     }else{
> @@ -1799,7 +1801,7 @@ int GRCAN_PREFIX(_register_abs)(struct grcan_device_info *devices, int dev_cnt)
>  }
>
>  /* Use prescanned AMBA Plug&Play information to find all GRCAN cores */
> -int GRCAN_PREFIX(_register)(amba_confarea_type *abus)
> +int GRCAN_PREFIX(_register)(struct ambapp_bus *abus)
>  {
>   FUNCDBG();
>
> diff --git a/c/src/lib/libbsp/sparc/shared/can/grcan_rasta.c b/c/src/lib/libbsp/sparc/shared/can/grcan_rasta.c
> index f9b126f..7fad48e 100644
> --- a/c/src/lib/libbsp/sparc/shared/can/grcan_rasta.c
> +++ b/c/src/lib/libbsp/sparc/shared/can/grcan_rasta.c
> @@ -77,7 +77,7 @@ unsigned int grcan_rasta_rambase;
>  #include "grcan.c"
>
>
> -int grcan_rasta_ram_register(amba_confarea_type *abus, int rambase)
> +int grcan_rasta_ram_register(struct ambapp_bus *abus, int rambase)
>  {
>   grcan_rasta_rambase = rambase;
>
> diff --git a/c/src/lib/libbsp/sparc/shared/can/occan.c b/c/src/lib/libbsp/sparc/shared/can/occan.c
> index 78c901a..4fb932d 100644
> --- a/c/src/lib/libbsp/sparc/shared/can/occan.c
> +++ b/c/src/lib/libbsp/sparc/shared/can/occan.c
> @@ -282,7 +282,7 @@ static void occan_interrupt_handler(rtems_vector_number v);
>  #endif
>  static int can_cores;
>  static occan_priv *cans;
> -static amba_confarea_type *amba_bus;
> +static struct ambapp_bus *amba_bus;
>  static unsigned int sys_freq_hz;
>
>
> @@ -914,7 +914,7 @@ static int pelican_speed_auto(occan_priv *priv){
>
>  static rtems_device_driver occan_initialize(rtems_device_major_number major, rtems_device_minor_number unused, void *arg){
>        int dev_cnt,minor,subcore_cnt,devi,subi,subcores;
> -       amba_ahb_device ambadev;
> +       struct ambapp_ahb_info ambadev;
>        occan_priv *can;
>        char fs_name[20];
>        rtems_status_code status;
> @@ -922,7 +922,8 @@ static rtems_device_driver occan_initialize(rtems_device_major_number major, rte
>        strcpy(fs_name,OCCAN_DEVNAME);
>
>        /* find device on amba bus */
> -       dev_cnt = amba_get_number_ahbslv_devices(amba_bus,VENDOR_GAISLER,GAISLER_OCCAN);
> +       dev_cnt = ambapp_get_number_ahbslv_devices(amba_bus, VENDOR_GAISLER,
> +                                                   GAISLER_CANAHB);
>        if ( dev_cnt < 1 ){
>                /* Failed to find any CAN cores! */
>                printk("OCCAN: Failed to find any CAN cores\n\r");
> @@ -934,10 +935,11 @@ static rtems_device_driver occan_initialize(rtems_device_major_number major, rte
>  #if defined(LEON3)
>        /* LEON3: find timer address via AMBA Plug&Play info */
>        {
> -               amba_apb_device gptimer;
> +               struct ambapp_apb_info gptimer;
>                LEON3_Timer_Regs_Map *tregs;
>
> -               if ( amba_find_apbslv(&amba_conf,VENDOR_GAISLER,GAISLER_GPTIMER,&gptimer) == 1 ){
> +               if ( ambapp_find_apbslv(&ambapp_plb, VENDOR_GAISLER,
> +                                        GAISLER_GPTIMER, &gptimer) == 1 ){
>                        tregs = (LEON3_Timer_Regs_Map *)gptimer.start;
>                        sys_freq_hz = (tregs->scaler_reload+1)*1000*1000;
>                        DBG("OCCAN: detected %dHZ system frequency\n\r",sys_freq_hz);
> @@ -973,7 +975,8 @@ static rtems_device_driver occan_initialize(rtems_device_major_number major, rte
>         */
>
>        for(subcore_cnt=devi=0; devi<dev_cnt; devi++){
> -               amba_find_next_ahbslv(amba_bus,VENDOR_GAISLER,GAISLER_OCCAN,&ambadev,devi);
> +               ambapp_find_ahbslv_next(amba_bus, VENDOR_GAISLER,
> +                                        GAISLER_CANAHB, &ambadev, devi);
>                subcore_cnt += (ambadev.ver & 0x7)+1;
>        }
>
> @@ -987,7 +990,8 @@ static rtems_device_driver occan_initialize(rtems_device_major_number major, rte
>        for(devi=0; devi<dev_cnt; devi++){
>
>                /* Get AHB device info */
> -               amba_find_next_ahbslv(amba_bus,VENDOR_GAISLER,GAISLER_OCCAN,&ambadev,devi);
> +               ambapp_find_ahbslv_next(amba_bus, VENDOR_GAISLER,
> +                                        GAISLER_CANAHB, &ambadev, devi);
>                subcores = (ambadev.ver & 0x7)+1;
>                DBG("OCCAN: on dev %d found %d sub cores\n\r",devi,subcores);
>
> @@ -1802,7 +1806,7 @@ static void occan_interrupt_handler(rtems_vector_number v){
>
>  static rtems_driver_address_table occan_driver = OCCAN_DRIVER_TABLE_ENTRY;
>
> -int OCCAN_PREFIX(_register)(amba_confarea_type *bus){
> +int OCCAN_PREFIX(_register)(struct ambapp_bus *bus){
>        rtems_status_code r;
>        rtems_device_major_number m;
>
> diff --git a/c/src/lib/libbsp/sparc/shared/can/occan_pci.c b/c/src/lib/libbsp/sparc/shared/can/occan_pci.c
> index 2dd2e5b..b27beb1 100644
> --- a/c/src/lib/libbsp/sparc/shared/can/occan_pci.c
> +++ b/c/src/lib/libbsp/sparc/shared/can/occan_pci.c
> @@ -46,7 +46,7 @@ static void inline occanpci_set_channel(occan_priv *priv, int channel){
>                *chan_sel = 0xffffffff;
>  }
>
> -int occan_pci_register(amba_confarea_type *bus)
> +int occan_pci_register(struct ambapp_bus *bus)
>  {
>        /* Setup configuration */
>
> diff --git a/c/src/lib/libbsp/sparc/shared/i2c/i2cmst.c b/c/src/lib/libbsp/sparc/shared/i2c/i2cmst.c
> index fb6a573..7ba7208 100644
> --- a/c/src/lib/libbsp/sparc/shared/i2c/i2cmst.c
> +++ b/c/src/lib/libbsp/sparc/shared/i2c/i2cmst.c
> @@ -285,7 +285,7 @@ static gr_i2cmst_desc_t gr_i2cmst_desc = {
>  };
>
>  /* Scans for I2CMST core and initalizes i2c library */
> -rtems_status_code leon_register_i2c(amba_confarea_type *abus)
> +rtems_status_code leon_register_i2c(struct ambapp_bus *abus)
>  {
>  #if defined(DEBUG)
>   printk("leon_register_i2c called...");
> @@ -293,11 +293,11 @@ rtems_status_code leon_register_i2c(amba_confarea_type *abus)
>
>   int rc;
>   int device_found = 0;
> -  amba_apb_device apbi2cmst;
> +  struct ambapp_apb_info apbi2cmst;
>
>   /* Scan AMBA bus for I2CMST core */
> -  device_found = amba_find_apbslv(abus, VENDOR_GAISLER, GAISLER_I2CMST,
> -                                 &apbi2cmst);
> +  device_found = ambapp_find_apbslv(abus, VENDOR_GAISLER, GAISLER_I2CMST,
> +                                   &apbi2cmst);
>
>   if (device_found == 1) {
>
> @@ -317,11 +317,11 @@ rtems_status_code leon_register_i2c(amba_confarea_type *abus)
>  #if defined(LEON3)
>        /* LEON3: find timer address via AMBA Plug&Play info */
>        {
> -         amba_apb_device gptimer;
> +         struct ambapp_apb_info gptimer;
>          LEON3_Timer_Regs_Map *tregs;
>
> -         if (amba_find_apbslv(abus,VENDOR_GAISLER,
> -                              GAISLER_GPTIMER,&gptimer) == 1 ) {
> +         if (ambapp_find_apbslv(abus, VENDOR_GAISLER,
> +                                GAISLER_GPTIMER, &gptimer) == 1 ) {
>            tregs = (LEON3_Timer_Regs_Map *)gptimer.start;
>            gr_i2cmst_desc.prv.sysfreq = (tregs->scaler_reload+1)*1000;
>          } else {
> diff --git a/c/src/lib/libbsp/sparc/shared/include/ambapp.h b/c/src/lib/libbsp/sparc/shared/include/ambapp.h
> index 651b7bf..5eb3f2a 100644
> --- a/c/src/lib/libbsp/sparc/shared/include/ambapp.h
> +++ b/c/src/lib/libbsp/sparc/shared/include/ambapp.h
> @@ -7,6 +7,8 @@
>  *  The license and distribution terms for this file may be
>  *  found in the file LICENSE in this distribution or at
>  *  http://www.rtems.com/license/LICENSE.
> + *
> + *  $Id$
>  */
>
>  #ifndef __AMBAPP_H__
> @@ -28,21 +30,21 @@ struct ambapp_apb_info;
>  struct ambapp_ahb_info;
>
>  struct ambapp_dev {
> -  struct ambapp_dev *next;      /* Next */
> -  struct ambapp_dev *prev;      /* Previous Device. If (this ==
> -                                 * rev->child) prev is bus bridge */
> -  struct ambapp_dev *children;  /* Points to first device on sub-bus */
> -  void *owner;                  /* Owner of this AMBA device */
> -  unsigned char dev_type;       /* AHB MST, AHB SLV or APB SLV*/
> -  unsigned char vendor;         /* Vendor ID */
> -  unsigned short device;        /* Device ID */
> -  int devinfo[0];               /* Device info (APB/AHB dep. on type) */
> +       struct ambapp_dev *next;        /* Next */
> +       struct ambapp_dev *prev;        /* Previous Device. If (this ==
> +                                        * rev->child) prev is bus bridge */
> +       struct ambapp_dev *children;    /* Points to first device on sub-bus */
> +       void *owner;                    /* Owner of this AMBA device */
> +       unsigned char dev_type;         /* AHB MST, AHB SLV or APB SLV*/
> +       unsigned char vendor;           /* Vendor ID */
> +       unsigned short device;          /* Device ID */
> +       int devinfo[0];                 /* Device info (APB/AHB dep. on type) */
>  };
>
> -#define AMBAPP_FLAG_FFACT_DIR  0x100  /* Frequency factor direction, 0=down, 1=up */
> -#define AMBAPP_FLAG_FFACT  0x0f0  /* Frequency factor against top bus */
> -#define AMBAPP_FLAG_MBUS  0x00c
> -#define AMBAPP_FLAG_SBUS  0x003
> +#define AMBAPP_FLAG_FFACT_DIR  0x100   /* Frequency factor direction, 0=down, 1=up */
> +#define AMBAPP_FLAG_FFACT      0x0f0   /* Frequency factor against top bus */
> +#define AMBAPP_FLAG_MBUS       0x00c
> +#define AMBAPP_FLAG_SBUS       0x003
>
>  /* Get APB or AHB information from a AMBA device */
>  #define DEV_TO_APB(adev) ((struct ambapp_apb_info *)((adev)->devinfo))
> @@ -50,70 +52,70 @@ struct ambapp_dev {
>  #define DEV_TO_COMMON(adev) ((struct ambapp_common_info *)((adev)->devinfo))
>  /* Convert address of ambapp_apb_info/ambapp_ahb_info into ambapp_dev */
>  #define APB_TO_DEV(apb_info) ((struct ambapp_dev *)(unsigned int(apb_info) - \
> -        offsetof(struct ambapp_dev, devinfo)))
> +                               offsetof(struct ambapp_dev, devinfo)))
>  #define AHB_TO_DEV(ahb_info) ((struct ambapp_dev *)(unsigned int(ahb_info) - \
> -        offsetof(struct ambapp_dev, devinfo)))
> +                               offsetof(struct ambapp_dev, devinfo)))
>
>  struct ambapp_common_info {
> -  unsigned char irq;
> -  unsigned char ver;
> -  unsigned char ahbidx;   /* AHB Bus Index */
> +       unsigned char irq;
> +       unsigned char ver;
> +       unsigned char ahbidx;   /* AHB Bus Index */
>  };
>
>  struct ambapp_apb_info {
> -  /* COMMON */
> -  unsigned char irq;
> -  unsigned char ver;
> -  unsigned char ahbidx;   /* AHB Bus Index */
> -
> -  /* APB SPECIFIC */
> -  unsigned int start;
> -  unsigned int mask;
> +       /* COMMON */
> +       unsigned char irq;
> +       unsigned char ver;
> +       unsigned char ahbidx;   /* AHB Bus Index */
> +
> +       /* APB SPECIFIC */
> +       unsigned int start;
> +       unsigned int mask;
>  };
>
>  struct ambapp_ahb_info {
> -  /* COMMON */
> -  unsigned char irq;
> -  unsigned char ver;
> -  unsigned char ahbidx;   /* AHB Bus Index */
> -
> -  /* AHB SPECIFIC */
> -  unsigned int start[4];
> -  unsigned int mask[4];
> -  char type[4];           /* type[N] Determine type of start[N]-mask[N],
> -                           * 2=AHB Memory Space, 3=AHB I/O Space */
> -  unsigned int custom[3];
> +       /* COMMON */
> +       unsigned char irq;
> +       unsigned char ver;
> +       unsigned char ahbidx;   /* AHB Bus Index */
> +
> +       /* AHB SPECIFIC */
> +       unsigned int start[4];
> +       unsigned int mask[4];
> +       char type[4];           /* type[N] Determine type of start[N]-mask[N],
> +                                * 2=AHB Memory Space, 3=AHB I/O Space */
> +       unsigned int custom[3];
>  };
>
>  /* Describes a complete AMBA Core. Each device may consist of 3 interfaces */
>  struct ambapp_core {
> -  char irq;               /* irq=-1 indicate no IRQ */
> -  unsigned char vendor;
> -  unsigned short device;
> -  int index;              /* Core index */
> -  struct ambapp_ahb_info  *ahb_mst;
> -  struct ambapp_ahb_info  *ahb_slv;
> -  struct ambapp_apb_info  *apb_slv;
> +       char                    irq;            /* irq=-1 indicate no IRQ */
> +       unsigned char           vendor;
> +       unsigned short          device;
> +       int                     index;          /* Core index */
> +       struct ambapp_ahb_info  *ahb_mst;
> +       struct ambapp_ahb_info  *ahb_slv;
> +       struct ambapp_apb_info  *apb_slv;
>  };
>
>  struct ambapp_ahb_bus {
> -  unsigned int ioarea;        /* AHB Bus IOAREA */
> -  unsigned int freq_hz;       /* Frequency of AHB Bus */
> -  struct ambapp_dev *bridge;  /* Bridge Device on Parent AHB Bus */
> -  struct ambapp_dev *dev;     /* First Device on AHB Bus */
> +       unsigned int ioarea;    /* AHB Bus IOAREA */
> +       unsigned int freq_hz;   /* Frequency of AHB Bus */
> +       struct ambapp_dev *bridge;/* Bridge Device on Parent AHB Bus */
> +       struct ambapp_dev *dev; /* First Device on AHB Bus */
>  };
>
>  struct ambapp_mmap {
> -  unsigned int size;
> -  unsigned int local_adr;
> -  unsigned int remote_adr;
> +       unsigned int            size;
> +       unsigned int            local_adr;
> +       unsigned int            remote_adr;
>  };
>
>  /* Complete AMBA PnP information */
>  struct ambapp_bus {
> -  struct ambapp_dev *root;                  /* AHB/APB Device Tree*/
> -  struct ambapp_mmap *mmaps;                /* Memory MAP Array */
> -  struct ambapp_ahb_bus ahbs[AHB_BUS_MAX];  /* AHB Buses */
> +       struct ambapp_dev       *root;                  /* AHB/APB Device Tree*/
> +       struct ambapp_mmap      *mmaps;                 /* Memory MAP Array */
> +       struct ambapp_ahb_bus   ahbs[AHB_BUS_MAX];      /* AHB Buses */
>  };
>
>  /*
> @@ -127,17 +129,17 @@ typedef int (*ambapp_func_t)(struct ambapp_dev *dev, int index, void *arg);
>  #define DEV_IS_ALLOCATED(dev) (dev->owner != NULL)
>
>  /* Options to ambapp_for_each */
> -#define OPTIONS_AHB_MSTS  0x00000001
> -#define OPTIONS_AHB_SLVS  0x00000002
> -#define OPTIONS_APB_SLVS  0x00000004
> -#define OPTIONS_ALL_DEVS  (OPTIONS_AHB_MSTS|OPTIONS_AHB_SLVS|OPTIONS_APB_SLVS)
> +#define OPTIONS_AHB_MSTS       0x00000001
> +#define OPTIONS_AHB_SLVS       0x00000002
> +#define OPTIONS_APB_SLVS       0x00000004
> +#define OPTIONS_ALL_DEVS       (OPTIONS_AHB_MSTS|OPTIONS_AHB_SLVS|OPTIONS_APB_SLVS)
>
> -#define OPTIONS_FREE    0x00000010
> -#define OPTIONS_ALLOCATED  0x00000020
> -#define OPTIONS_ALL    (OPTIONS_FREE|OPTIONS_ALLOCATED)
> +#define OPTIONS_FREE           0x00000010
> +#define OPTIONS_ALLOCATED      0x00000020
> +#define OPTIONS_ALL            (OPTIONS_FREE|OPTIONS_ALLOCATED)
>
>  /* Depth first search, Defualt is breath first search. */
> -#define OPTIONS_DEPTH_FIRST  0x00000100
> +#define OPTIONS_DEPTH_FIRST    0x00000100
>
>  #define DEV_AHB_NONE 0
>  #define DEV_AHB_MST  1
> @@ -146,14 +148,14 @@ typedef int (*ambapp_func_t)(struct ambapp_dev *dev, int index, void *arg);
>
>  /* Structures used to access Plug&Play information directly */
>  struct ambapp_pnp_ahb {
> -  const unsigned int id;        /* VENDOR, DEVICE, VER, IRQ, */
> -  const unsigned int custom[3];
> -  const unsigned int mbar[4];   /* MASK, ADDRESS, TYPE, CACHABLE/PREFETCHABLE */
> +       const unsigned int      id;             /* VENDOR, DEVICE, VER, IRQ, */
> +       const unsigned int      custom[3];
> +       const unsigned int      mbar[4];        /* MASK, ADDRESS, TYPE, CACHABLE/PREFETCHABLE */
>  };
>
>  struct ambapp_pnp_apb {
> -  const unsigned int id;        /* VENDOR, DEVICE, VER, IRQ, */
> -  const unsigned int iobar;     /* MASK, ADDRESS, TYPE, CACHABLE/PREFETCHABLE */
> +       const unsigned int      id;             /* VENDOR, DEVICE, VER, IRQ, */
> +       const unsigned int      iobar;          /* MASK, ADDRESS, TYPE, CACHABLE/PREFETCHABLE */
>  };
>
>  #define ambapp_pnp_vendor(id) (((id) >> 24) & 0xff)
> @@ -168,7 +170,7 @@ struct ambapp_pnp_apb {
>  #define ambapp_pnp_apb_start(iobar, base) ((base) | ((((iobar) & 0xfff00000)>>12) & (((iobar) & 0xfff0)<<4)) )
>  #define ambapp_pnp_apb_mask(iobar) ((~(ambapp_pnp_mbar_mask(iobar)<<8) & 0x000fffff) + 1)
>
> -#define AMBA_TYPE_AHBIO_ADDR(addr, base_ioarea) ((unsigned int)(base_ioarea) | ((addr) >> 12))
> +#define AMBA_TYPE_AHBIO_ADDR(addr,base_ioarea) ((unsigned int)(base_ioarea) | ((addr) >> 12))
>
>  #define AMBA_TYPE_APBIO 0x1
>  #define AMBA_TYPE_MEM   0x2
> @@ -176,11 +178,11 @@ struct ambapp_pnp_apb {
>
>  /* Copy Data from AMBA PnP I/O Area */
>  typedef void *(*ambapp_memcpy_t)(
> -  void *dest,               /* Destination RAM copy */
> -  const void *src,          /* Source AMBA PnP Address to copy from */
> -  int n,                    /* Number of bytes to be copied */
> -  struct ambapp_bus *abus   /* Optional AMBA Bus pointer */
> -  );
> +       void *dest,             /* Destination RAM copy */
> +       const void *src,        /* Source AMBA PnP Address to copy from */
> +       int n,                  /* Number of bytes to be copied */
> +       struct ambapp_bus *abus /* Optional AMBA Bus pointer */
> +       );
>
>  /* Scan a AMBA Plug & Play bus and create all device structures describing the
>  * the devices. The devices will form a tree, where every node describes one
> @@ -196,24 +198,24 @@ typedef void *(*ambapp_memcpy_t)(
>  *
>  */
>  extern int ambapp_scan(
> -  struct ambapp_bus *abus,
> -  unsigned int ioarea,
> -  ambapp_memcpy_t memfunc,
> -  struct ambapp_mmap *mmaps
> -  );
> +       struct ambapp_bus *abus,
> +       unsigned int ioarea,
> +       ambapp_memcpy_t memfunc,
> +       struct ambapp_mmap *mmaps
> +       );
>
>  /* Initialize the frequency [Hz] of all AHB Buses from knowing the frequency
>  * of one particular APB/AHB Device.
>  */
>  extern void ambapp_freq_init(
> -  struct ambapp_bus *abus,
> -  struct ambapp_dev *dev,
> -  unsigned int freq);
> +       struct ambapp_bus *abus,
> +       struct ambapp_dev *dev,
> +       unsigned int freq);
>
>  /* Returns the frequency [Hz] of a AHB/APB device */
>  extern unsigned int ambapp_freq_get(
> -  struct ambapp_bus *abus,
> -  struct ambapp_dev *dev);
> +       struct ambapp_bus *abus,
> +       struct ambapp_dev *dev);
>
>  /* Iterates through all AMBA devices previously found, it calls func
>  * once for every device that match the search arguments.
> @@ -242,12 +244,12 @@ extern unsigned int ambapp_freq_get(
>  *  non-zero - stopped by user function returning the non-zero value
>  */
>  extern int ambapp_for_each(
> -  struct ambapp_bus *abus,
> -  unsigned int options,
> -  int vendor,
> -  int device,
> -  ambapp_func_t func,
> -  void *arg);
> +       struct ambapp_bus *abus,
> +       unsigned int options,
> +       int vendor,
> +       int device,
> +       ambapp_func_t func,
> +       void *arg);
>
>  /* Helper function for ambapp_for_each(), find a device by index. If pcount
>  * is NULL the first device is returned, else pcount is interpreted as index
> @@ -264,7 +266,7 @@ extern int ambapp_find_by_idx(struct ambapp_dev *dev, int index, void *pcount);
>  * arguments are passed onto ambapp_for_each().
>  */
>  extern int ambapp_dev_count(struct ambapp_bus *abus, unsigned int options,
> -                            int vendor, int device);
> +                               int vendor, int device);
>
>  /* Print short information about devices on the AMBA bus onto the console */
>  extern void ambapp_print(struct ambapp_bus *abus, int show_depth);
> @@ -297,70 +299,61 @@ extern int ambapp_vendev_id2str(int vendor, int id, char *buf);
>  /* Help functions for backwards compability */
>
>  extern int ambapp_find_apbslv(
> -  struct ambapp_bus *abus,
> -  int vendor,
> -  int device,
> -  struct ambapp_apb_info *dev);
> +       struct ambapp_bus *abus,
> +       int vendor,
> +       int device,
> +       struct ambapp_apb_info *dev);
>
>  extern int ambapp_find_apbslv_next(
> -  struct ambapp_bus *abus,
> -  int vendor,
> -  int device,
> -  struct ambapp_apb_info *dev,
> -  int index);
> +       struct ambapp_bus *abus,
> +       int vendor,
> +       int device,
> +       struct ambapp_apb_info *dev,
> +       int index);
>
>  extern int ambapp_find_apbslvs_next(
> -  struct ambapp_bus *abus,
> -  int vendor,
> -  int device,
> -  struct ambapp_apb_info *dev,
> -  int index,
> -  int maxno);
> +       struct ambapp_bus *abus,
> +       int vendor,
> +       int device,
> +       struct ambapp_apb_info *dev,
> +       int index,
> +       int maxno);
>
>  extern int ambapp_find_apbslvs(
> -  struct ambapp_bus *abus,
> -  int vendor,
> -  int device,
> -  struct ambapp_apb_info *dev,
> -  int maxno);
> -
> -extern int ambapp_get_number_apbslv_devices(
> -  struct ambapp_bus *abus,
> -  int vendor,
> -  int device);
> +       struct ambapp_bus *abus,
> +       int vendor,
> +       int device,
> +       struct ambapp_apb_info *dev,
> +       int maxno);
>
>  extern int ambapp_find_ahbslv(
> -  struct ambapp_bus *abus,
> -  int vendor,
> -  int device,
> -  struct ambapp_ahb_info *dev);
> +       struct ambapp_bus *abus,
> +       int vendor,
> +       int device,
> +       struct ambapp_ahb_info *dev);
>
>  extern int ambapp_find_ahbslv_next(
> -  struct ambapp_bus *abus,
> -  int vendor,
> -  int device,
> -  struct ambapp_ahb_info *dev,
> -  int index);
> +       struct ambapp_bus *abus,
> +       int vendor,
> +       int device,
> +       struct ambapp_ahb_info *dev,
> +       int index);
>
>  extern int ambapp_find_ahbslvs_next(
> -  struct ambapp_bus *abus,
> -  int vendor,
> -  int device,
> -  struct ambapp_ahb_info *dev,
> -  int index,
> -  int maxno);
> +       struct ambapp_bus *abus,
> +       int vendor,
> +       int device,
> +       struct ambapp_ahb_info *dev,
> +       int index,
> +       int maxno);
>
>  extern int ambapp_find_ahbslvs(
> -  struct ambapp_bus *abus,
> -  int vendor,
> -  int device,
> -  struct ambapp_ahb_info *dev,
> -  int maxno);
> -
> -extern int ambapp_get_number_ahbslv_devices(
> -  struct ambapp_bus *abus,
> -  int vendor,
> -  int device);
> +       struct ambapp_bus *abus,
> +       int vendor,
> +       int device,
> +       struct ambapp_ahb_info *dev,
> +       int maxno);
> +
>
>  /******** AMBA DEVICES *******/
>
> diff --git a/c/src/lib/libbsp/sparc/shared/include/apbuart.h b/c/src/lib/libbsp/sparc/shared/include/apbuart.h
> index c8a6e35..c948b24 100644
> --- a/c/src/lib/libbsp/sparc/shared/include/apbuart.h
> +++ b/c/src/lib/libbsp/sparc/shared/include/apbuart.h
> @@ -72,9 +72,9 @@ typedef struct {
>
>  /* Register APBUART driver
>  * bus =  pointer to AMBA bus description used to search for APBUART(s).
> - *        (&amba_conf for LEON3), (LEON2: see amba_scan)
> + *        (&ambapp_plb for LEON3), (LEON2: see amba_scan)
>  */
> -int apbuart_register (amba_confarea_type * bus);
> +int apbuart_register (struct ambapp_bus *bus);
>
>  #ifdef __cplusplus
>  }
> diff --git a/c/src/lib/libbsp/sparc/shared/include/apbuart_pci.h b/c/src/lib/libbsp/sparc/shared/include/apbuart_pci.h
> index e806429..11ac33e 100644
> --- a/c/src/lib/libbsp/sparc/shared/include/apbuart_pci.h
> +++ b/c/src/lib/libbsp/sparc/shared/include/apbuart_pci.h
> @@ -24,7 +24,7 @@ extern "C" {
>  *
>  */
>
> -int apbuart_pci_register (amba_confarea_type * bus);
> +int apbuart_pci_register (struct ambapp_bus * bus);
>
>  /* This function must be called on APBUART interrupt. Called from the
>  * PCI interrupt handler.
> diff --git a/c/src/lib/libbsp/sparc/shared/include/apbuart_rasta.h b/c/src/lib/libbsp/sparc/shared/include/apbuart_rasta.h
> index 1edf6f9..61c6144 100644
> --- a/c/src/lib/libbsp/sparc/shared/include/apbuart_rasta.h
> +++ b/c/src/lib/libbsp/sparc/shared/include/apbuart_rasta.h
> @@ -24,7 +24,7 @@ extern "C" {
>  *
>  */
>
> -int apbuart_rasta_register(amba_confarea_type *bus);
> +int apbuart_rasta_register(struct ambapp_bus *bus);
>
>  /* This function must be called on APBUART interrupt. Called from the
>  * RASTA interrupt handler.
> diff --git a/c/src/lib/libbsp/sparc/shared/include/b1553brm.h b/c/src/lib/libbsp/sparc/shared/include/b1553brm.h
> index f5fd343..f0f09c5 100644
> --- a/c/src/lib/libbsp/sparc/shared/include/b1553brm.h
> +++ b/c/src/lib/libbsp/sparc/shared/include/b1553brm.h
> @@ -158,9 +158,9 @@ int brm_register_leon3_ramon_asic(void);
>  /* Register BRM driver
>  * See (struct brm_reg).w_ctrl for clksel and clkdiv.
>  * See Enhanced register (the least signinficant 2 bits) in BRM Core for brm_freq
> - * bus = &amba_conf for LEON3. (LEON2 not yet supported for this driver)
> + * bus = &ambapp_plb for LEON3. (LEON2 not yet supported for this driver)
>  */
> -int b1553brm_register(amba_confarea_type *bus, unsigned int clksel, unsigned int clkdiv, unsigned int brm_freq);
> +int b1553brm_register(struct ambapp_bus *bus, unsigned int clksel, unsigned int clkdiv, unsigned int brm_freq);
>
>  #ifdef __cplusplus
>  }
> diff --git a/c/src/lib/libbsp/sparc/shared/include/b1553brm_pci.h b/c/src/lib/libbsp/sparc/shared/include/b1553brm_pci.h
> index 74f9d32..9861dc3 100644
> --- a/c/src/lib/libbsp/sparc/shared/include/b1553brm_pci.h
> +++ b/c/src/lib/libbsp/sparc/shared/include/b1553brm_pci.h
> @@ -22,7 +22,7 @@ extern "C" {
>  /* Register BRM driver
>  * See (struct brm_reg).w_ctrl for clksel and clkdiv.
>  * See Enhanced register (the least signinficant 2 bits) in BRM Core for brm_freq
> - * bus = &amba_conf for LEON3. (LEON2 not yet supported for this driver)
> + * bus = &ambapp_plb for LEON3. (LEON2 not yet supported for this driver)
>  *
>  * Memory setup:
>  * memarea = 128k aligned pointer to memory (if zero malloc will be used) (as the CPU sees it)
> @@ -30,7 +30,7 @@ extern "C" {
>  */
>
>  int b1553brm_pci_register(
> - amba_confarea_type *bus,
> + struct ambapp_bus *bus,
>  unsigned int clksel,
>  unsigned int clkdiv,
>  unsigned int brm_freq,
> diff --git a/c/src/lib/libbsp/sparc/shared/include/b1553brm_rasta.h b/c/src/lib/libbsp/sparc/shared/include/b1553brm_rasta.h
> index cd51658..360b72f 100644
> --- a/c/src/lib/libbsp/sparc/shared/include/b1553brm_rasta.h
> +++ b/c/src/lib/libbsp/sparc/shared/include/b1553brm_rasta.h
> @@ -22,7 +22,7 @@ extern "C" {
>  /* Register BRM driver
>  * See (struct brm_reg).w_ctrl for clksel and clkdiv.
>  * See Enhanced register (the least signinficant 2 bits) in BRM Core for brm_freq
> - * bus = &amba_conf for LEON3. (LEON2 not yet supported for this driver)
> + * bus = &ambapp_plb for LEON3. (LEON2 not yet supported for this driver)
>  *
>  * Memory setup:
>  * memarea = 128k aligned pointer to memory (if zero malloc will be used) (as the CPU sees it)
> @@ -30,7 +30,7 @@ extern "C" {
>  */
>
>  int b1553brm_rasta_register(
> - amba_confarea_type *bus,
> + struct ambapp_bus *bus,
>  unsigned int clksel,
>  unsigned int clkdiv,
>  unsigned int brm_freq,
> diff --git a/c/src/lib/libbsp/sparc/shared/include/grcan.h b/c/src/lib/libbsp/sparc/shared/include/grcan.h
> index 8b3ed15..f8f577d 100644
> --- a/c/src/lib/libbsp/sparc/shared/include/grcan.h
> +++ b/c/src/lib/libbsp/sparc/shared/include/grcan.h
> @@ -190,7 +190,7 @@ struct grcan_device_info {
>  int grcan_register_abs(struct grcan_device_info *devices, int dev_cnt);
>
>  /* Use prescanned AMBA Plug&Play information to find all GRFIFO cores */
> -int grcan_register(amba_confarea_type *abus);
> +int grcan_register(struct ambapp_bus *abus);
>  #if 0
>  void grcan_register(unsigned int baseaddr, unsigned int ram_base);
>  void grcan_interrupt_handler(rtems_vector_number v);
> diff --git a/c/src/lib/libbsp/sparc/shared/include/grcan_rasta.h b/c/src/lib/libbsp/sparc/shared/include/grcan_rasta.h
> index 1f96da6..20a2fac 100644
> --- a/c/src/lib/libbsp/sparc/shared/include/grcan_rasta.h
> +++ b/c/src/lib/libbsp/sparc/shared/include/grcan_rasta.h
> @@ -13,7 +13,7 @@ extern "C" {
>  * rambase is address of the first GRCAN core has it's TX buffer, followed by
>  * it's RX buffer
>  */
> -int grcan_rasta_ram_register(amba_confarea_type *abus, int rambase);
> +int grcan_rasta_ram_register(struct ambapp_bus *abus, int rambase);
>
>  extern void (*grcan_rasta_int_reg)(void *handler, int irq, void *arg);
>
> diff --git a/c/src/lib/libbsp/sparc/shared/include/grspw.h b/c/src/lib/libbsp/sparc/shared/include/grspw.h
> index 4c6c869..e60aa87 100644
> --- a/c/src/lib/libbsp/sparc/shared/include/grspw.h
> +++ b/c/src/lib/libbsp/sparc/shared/include/grspw.h
> @@ -111,7 +111,7 @@ typedef struct {
>  #define SPACEWIRE_IOCTRL_START               64
>  #define SPACEWIRE_IOCTRL_STOP                65
>
> -int grspw_register(amba_confarea_type *bus);
> +int grspw_register(struct ambapp_bus *bus);
>
>
>  #if 0
> diff --git a/c/src/lib/libbsp/sparc/shared/include/grspw_pci.h b/c/src/lib/libbsp/sparc/shared/include/grspw_pci.h
> index aea50f3..9e2cd60 100644
> --- a/c/src/lib/libbsp/sparc/shared/include/grspw_pci.h
> +++ b/c/src/lib/libbsp/sparc/shared/include/grspw_pci.h
> @@ -20,14 +20,14 @@ extern "C" {
>  #endif
>
>  /* Register GRSPW Driver
> - * bus = &amba_conf for LEON3
> + * bus = &ambapp_plb for LEON3
>  *
>  * Memory setup:
>  * memarea = 128k aligned pointer to memory (if zero malloc will be used) (as the CPU sees it)
>  * hw_address = address that HW must use to access memarea. (used in the translation process)
>  */
>
> -int grspw_pci_register (amba_confarea_type * bus,
> +int grspw_pci_register (struct ambapp_bus *bus,
>                         unsigned int memarea, unsigned int hw_address);
>
>
> diff --git a/c/src/lib/libbsp/sparc/shared/include/grspw_rasta.h b/c/src/lib/libbsp/sparc/shared/include/grspw_rasta.h
> index 0e4e5be..c4c0cd0 100644
> --- a/c/src/lib/libbsp/sparc/shared/include/grspw_rasta.h
> +++ b/c/src/lib/libbsp/sparc/shared/include/grspw_rasta.h
> @@ -20,14 +20,14 @@ extern "C" {
>  #endif
>
>  /* Register GRSPW Driver
> - * bus = &amba_conf for LEON3
> + * bus = &ambapp_plb for LEON3
>  *
>  * Memory setup:
>  * ram_base = 128k aligned pointer to memory (as the CPU sees it)
>  */
>
>  int grspw_rasta_register(
> - amba_confarea_type *bus,
> + struct ambapp_bus *bus,
>  unsigned int ram_base
>  );
>
> diff --git a/c/src/lib/libbsp/sparc/shared/include/i2cmst.h b/c/src/lib/libbsp/sparc/shared/include/i2cmst.h
> index 21780ee..9f612fa 100644
> --- a/c/src/lib/libbsp/sparc/shared/include/i2cmst.h
> +++ b/c/src/lib/libbsp/sparc/shared/include/i2cmst.h
> @@ -68,7 +68,7 @@ typedef struct gr_i2cmst_desc {
>  } gr_i2cmst_desc_t;
>
>  /* Scans for I2CMST core and initalizes i2c library */
> -rtems_status_code leon_register_i2c(amba_confarea_type *abus);
> +rtems_status_code leon_register_i2c(struct ambapp_bus *abus);
>
>  #ifdef __cplusplus
>  }
> diff --git a/c/src/lib/libbsp/sparc/shared/include/occan.h b/c/src/lib/libbsp/sparc/shared/include/occan.h
> index 12ec42a..5c875b3 100644
> --- a/c/src/lib/libbsp/sparc/shared/include/occan.h
> +++ b/c/src/lib/libbsp/sparc/shared/include/occan.h
> @@ -147,7 +147,7 @@ struct occan_afilter {
>  #define OCCAN_BLK_MODE_RX 0x1
>  #define OCCAN_BLK_MODE_TX 0x2
>
> -int occan_register(amba_confarea_type *bus);
> +int occan_register(struct ambapp_bus *bus);
>
>
>  #define OCCAN_SPEED_500K 500000
> diff --git a/c/src/lib/libbsp/sparc/shared/include/occan_pci.h b/c/src/lib/libbsp/sparc/shared/include/occan_pci.h
> index 2f46293..d351f85 100644
> --- a/c/src/lib/libbsp/sparc/shared/include/occan_pci.h
> +++ b/c/src/lib/libbsp/sparc/shared/include/occan_pci.h
> @@ -23,7 +23,7 @@ extern "C" {
>  * bus = pointer to AMBA bus description used to search for OC_CAN contrller(s).
>  */
>
> -int occan_pci_register(amba_confarea_type *bus);
> +int occan_pci_register(struct ambapp_bus *bus);
>
>  /* This function must be called on OC_CAN interrupt. Called from the
>  * PCI interrupt handler. irq = AMBA IRQ assigned to the OC_CAN device,
> diff --git a/c/src/lib/libbsp/sparc/shared/spw/grspw.c b/c/src/lib/libbsp/sparc/shared/spw/grspw.c
> index 6a9da79..8ab5020 100644
> --- a/c/src/lib/libbsp/sparc/shared/spw/grspw.c
> +++ b/c/src/lib/libbsp/sparc/shared/spw/grspw.c
> @@ -370,9 +370,9 @@ static rtems_device_driver grspw_control(
>     grspw_control }
>
>  static rtems_driver_address_table grspw_driver = GRSPW_DRIVER_TABLE_ENTRY;
> -static amba_confarea_type *amba_bus;
> +static struct ambapp_bus *amba_bus;
>
> -int GRSPW_PREFIX(_register)(amba_confarea_type *bus)
> +int GRSPW_PREFIX(_register)(struct ambapp_bus *bus)
>  {
>         rtems_status_code r;
>         rtems_device_major_number m;
> @@ -389,10 +389,11 @@ int GRSPW_PREFIX(_register)(amba_confarea_type *bus)
>  #ifdef LEON3
>        /* LEON3: find timer address via AMBA Plug&Play info */
>        {
> -               amba_apb_device gptimer;
> +               struct ambapp_apb_info gptimer;
>                LEON3_Timer_Regs_Map *tregs;
>
> -               if ( amba_find_apbslv(&amba_conf,VENDOR_GAISLER,GAISLER_GPTIMER,&gptimer) == 1 ){
> +               if ( ambapp_find_apbslv(&ambapp_plb, VENDOR_GAISLER,
> +                                        GAISLER_GPTIMER, &gptimer) == 1 ) {
>                        tregs = (LEON3_Timer_Regs_Map *)gptimer.start;
>                        sys_freq_khz = (tregs->scaler_reload+1)*1000;
>                        SPACEWIRE_DBG("GRSPW: detected %dkHZ system frequency\n\r",sys_freq_khz);
> @@ -609,7 +610,7 @@ static rtems_device_driver grspw_initialize(
>         char c;
>         GRSPW_DEV *pDev;
>         char console_name[20];
> -                               amba_apb_device dev;
> +        struct ambapp_apb_info dev;
>
>         SPACEWIRE_DBG2("spacewire driver initialization\n");
>
> @@ -620,19 +621,10 @@ static rtems_device_driver grspw_initialize(
>         i=0; spw_cores = 0; spw_cores2 = 0;
>
>         /* get number of GRSPW cores */
> -        spw_cores = amba_get_number_apbslv_devices(amba_bus,VENDOR_GAISLER,GAISLER_SPACEWIRE);
> -        spw_cores2 = amba_get_number_apbslv_devices(amba_bus,VENDOR_GAISLER,GAISLER_GRSPW2);
> -#if 0
> -                               if ( spw_cores > SPACEWIRE_MAX_CORENR )
> -                                       spw_cores = SPACEWIRE_MAX_CORENR;
> -
> -        while (i < amba_conf.apbslv.devnr) {
> -                conf = amba_get_confword(amba_conf.apbslv, i, 0);
> -                if ((amba_vendor(conf) == VENDOR_GAISLER) && (amba_device(conf) == GAISLER_SPACEWIRE))
> -                        spw_cores++;
> -                i++;
> -        }
> -#endif
> +        spw_cores = ambapp_get_number_apbslv_devices(amba_bus, VENDOR_GAISLER,
> +                                                     GAISLER_SPW);
> +        spw_cores2 = ambapp_get_number_apbslv_devices(amba_bus, VENDOR_GAISLER,
> +                                                      GAISLER_SPW2);
>
>         if ( (spw_cores+spw_cores2) < 1 ){
>                 /* No GRSPW cores around... */
> @@ -653,10 +645,13 @@ static rtems_device_driver grspw_initialize(
>
>                 /* Get device */
>                 if ( spw_cores > minor ) {
> -                        amba_find_next_apbslv(amba_bus,VENDOR_GAISLER,GAISLER_SPACEWIRE,&dev,minor);
> +                        ambapp_find_apbslv_next(amba_bus, VENDOR_GAISLER,
> +                                                GAISLER_SPW, &dev, minor);
>                         pDev->core_ver = 1;
>                 } else {
> -                        amba_find_next_apbslv(amba_bus,VENDOR_GAISLER,GAISLER_GRSPW2,&dev,minor-spw_cores);
> +                        ambapp_find_apbslv_next(amba_bus, VENDOR_GAISLER,
> +                                                GAISLER_SPW2, &dev,
> +                                                minor - spw_cores);
>                         pDev->core_ver = 2;
>                 }
>
> diff --git a/c/src/lib/libbsp/sparc/shared/spw/grspw_pci.c b/c/src/lib/libbsp/sparc/shared/spw/grspw_pci.c
> index a8003be..2a9a8d6 100644
> --- a/c/src/lib/libbsp/sparc/shared/spw/grspw_pci.c
> +++ b/c/src/lib/libbsp/sparc/shared/spw/grspw_pci.c
> @@ -79,7 +79,7 @@ int grspwpci_interrupt_handler(int irq, void *arg);
>  */
>
>  int grspw_pci_register(
> - amba_confarea_type *bus,
> + struct ambapp_bus *bus,
>  unsigned int memarea,
>  unsigned int hw_address
>  )
> diff --git a/c/src/lib/libbsp/sparc/shared/spw/grspw_rasta.c b/c/src/lib/libbsp/sparc/shared/spw/grspw_rasta.c
> index 6cd5698..9bf9437 100644
> --- a/c/src/lib/libbsp/sparc/shared/spw/grspw_rasta.c
> +++ b/c/src/lib/libbsp/sparc/shared/spw/grspw_rasta.c
> @@ -88,7 +88,7 @@ unsigned int grspw_rasta_memarea_address;
>  */
>
>  int grspw_rasta_register(
> - amba_confarea_type *bus,
> + struct ambapp_bus *bus,
>  unsigned int ram_base
>  )
>  {
> diff --git a/c/src/lib/libbsp/sparc/shared/uart/apbuart.c b/c/src/lib/libbsp/sparc/shared/uart/apbuart.c
> index b3f4bbd..d442e80 100644
> --- a/c/src/lib/libbsp/sparc/shared/uart/apbuart.c
> +++ b/c/src/lib/libbsp/sparc/shared/uart/apbuart.c
> @@ -116,7 +116,7 @@ static unsigned int sys_freq_hz;
>  #define APBUART_DRIVER_TABLE_ENTRY { apbuart_initialize, apbuart_open, apbuart_close, apbuart_read, apbuart_write, apbuart_control }
>
>  static rtems_driver_address_table apbuart_driver = APBUART_DRIVER_TABLE_ENTRY;
> -static amba_confarea_type *amba_bus;
> +static struct ambapp_bus *amba_bus;
>
>  static void apbuart_interrupt(apbuart_priv *uart);
>  #ifdef APBUART_DEFINE_INTHANDLER
> @@ -322,7 +322,7 @@ static void apbuart_interrupt(apbuart_priv *uart){
>        }
>  }
>
> -int APBUART_PREFIX(_register)(amba_confarea_type *bus) {
> +int APBUART_PREFIX(_register)(struct ambapp_bus *bus) {
>        rtems_status_code r;
>        rtems_device_major_number m;
>
> @@ -353,13 +353,14 @@ static rtems_device_driver apbuart_initialize(rtems_device_major_number  major,
>
>        rtems_status_code status;
>        int i;
> -       amba_apb_device dev;
> +       struct ambapp_apb_info dev;
>        char fs_name[20];
>
>        FUNCDBG("apbuart_initialize\n");
>
>        /* Find all APB UART devices */
> -       dev_cnt = amba_get_number_apbslv_devices(amba_bus,VENDOR_GAISLER,GAISLER_APBUART);
> +       dev_cnt = ambapp_get_number_apbslv_devices(amba_bus, VENDOR_GAISLER,
> +                                                  GAISLER_APBUART);
>        if ( dev_cnt < 1 ){
>                /* Failed to find any CAN cores! */
>                printk("APBUART: Failed to find any APBUART cores\n\r");
> @@ -384,10 +385,11 @@ static rtems_device_driver apbuart_initialize(rtems_device_major_number  major,
>  #if defined(LEON3)
>        /* LEON3: find timer address via AMBA Plug&Play info */
>        {
> -               amba_apb_device gptimer;
> +               struct ambapp_apb_info gptimer;
>                LEON3_Timer_Regs_Map *tregs;
>
> -               if ( amba_find_apbslv(&amba_conf,VENDOR_GAISLER,GAISLER_GPTIMER,&gptimer) == 1 ){
> +               if ( ambapp_find_apbslv(&ambapp_plb, VENDOR_GAISLER,
> +                                       GAISLER_GPTIMER, &gptimer) == 1 ){
>                        tregs = (LEON3_Timer_Regs_Map *)gptimer.start;
>                        sys_freq_hz = (tregs->scaler_reload+1)*1000*1000;
>                        DBG("APBUART: detected %dHZ system frequency\n\r",sys_freq_hz);
> @@ -413,7 +415,7 @@ static rtems_device_driver apbuart_initialize(rtems_device_major_number  major,
>
>        for(i=0; i<dev_cnt; i++){
>                /* Get AMBA AHB device info from Plug&Play */
> -               amba_find_next_apbslv(amba_bus,VENDOR_GAISLER,GAISLER_APBUART,&dev,i);
> +               ambapp_find_apbslv_next(amba_bus,VENDOR_GAISLER,GAISLER_APBUART,&dev,i);
>
>                printk("APBUART[%d]: at 0x%x irq %d (0x%x)\n\r",i,dev.start,dev.irq,(unsigned int)&apbuarts[i]);
>
> diff --git a/c/src/lib/libbsp/sparc/shared/uart/apbuart_pci.c b/c/src/lib/libbsp/sparc/shared/uart/apbuart_pci.c
> index 54d14ce..fce1197 100644
> --- a/c/src/lib/libbsp/sparc/shared/uart/apbuart_pci.c
> +++ b/c/src/lib/libbsp/sparc/shared/uart/apbuart_pci.c
> @@ -24,7 +24,7 @@ void apbuartpci_interrupt_handler(int irq, void *arg);
>
>  #include "apbuart.c"
>
> -int apbuart_pci_register(amba_confarea_type *bus)
> +int apbuart_pci_register(struct ambapp_bus *bus)
>  {
>        /* Setup configuration */
>
> diff --git a/c/src/lib/libbsp/sparc/shared/uart/apbuart_rasta.c b/c/src/lib/libbsp/sparc/shared/uart/apbuart_rasta.c
> index 4b8734f..3196bbb 100644
> --- a/c/src/lib/libbsp/sparc/shared/uart/apbuart_rasta.c
> +++ b/c/src/lib/libbsp/sparc/shared/uart/apbuart_rasta.c
> @@ -24,7 +24,7 @@ void apbuartrasta_interrupt_handler(int irq, void *arg);
>
>  #include "apbuart.c"
>
> -int apbuart_rasta_register(amba_confarea_type *bus)
> +int apbuart_rasta_register(struct ambapp_bus *bus)
>  {
>        /* Setup configuration */
>
> --
> 1.7.0.4
>




More information about the devel mailing list