From 7a01a888a72e5e4d65beb781ef12b093cfec10e8 Mon Sep 17 00:00:00 2001 From: Daniel Hellstrom Date: Tue, 17 Apr 2012 16:25:42 +0200 Subject: LEON: updated drivers to use new AMBAPP Layer The drivers are updated to use the new AMBA layer, however the backwards-compatibility interface (ambapp_old) is used. Signed-off-by: Daniel Hellstrom --- 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(-) (limited to 'c/src/lib/libbsp') diff --git a/c/src/lib/libbsp/sparc/leon2/cchip/cchip.c b/c/src/lib/libbsp/sparc/leon2/cchip/cchip.c index 59c17dd9ff..b3809aa116 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 @@ -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; iambabars[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 7b66b07246..0be7e4bf38 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 @@ -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 e447df26d5..deec9084bc 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 76c9f2e56a..3be26b1b74 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 10adb0aec5..d1fa4d64e0 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 fb48550365..3b0a14afac 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 f9b126f552..7fad48e16e 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 78c901a1e7..4fb932dc61 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; deviscaler_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 651b7bfeb2..5eb3f2ae0e 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 c8a6e35fec..c948b24da1 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 e8064297c8..11ac33e506 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 1edf6f98d3..61c6144818 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 f5fd343078..f0f09c5969 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 74f9d321de..9861dc3658 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 cd5165801c..360b72fc18 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 8b3ed15e55..f8f577d4d5 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 1f96da6bef..20a2fac252 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 4c6c869d61..e60aa87a07 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 aea50f3791..9e2cd60d4a 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 0e4e5bee4d..c4c0cd0dd7 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 21780ee143..9f612fab1e 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 12ec42a01c..5c875b324e 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 2f46293af2..d351f85ff9 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 6a9da79dfa..8ab502023b 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 a8003be8f9..2a9a8d6094 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 6cd5698f44..9bf9437c4d 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 b3f4bbdd9a..d442e80a46 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