49 unsigned char dev_type;
55#define AMBAPP_FLAG_FFACT_DIR 0x100
56#define AMBAPP_FLAG_FFACT 0x0f0
57#define AMBAPP_FLAG_MBUS 0x00c
58#define AMBAPP_FLAG_SBUS 0x003
61#define DEV_TO_APB(adev) ((struct ambapp_apb_info *)((adev)->devinfo))
62#define DEV_TO_AHB(adev) ((struct ambapp_ahb_info *)((adev)->devinfo))
63#define DEV_TO_COMMON(adev) ((struct ambapp_common_info *)((adev)->devinfo))
65#define APB_TO_DEV(apb_info) ((struct ambapp_dev *)(unsigned int(apb_info) - \
66 offsetof(struct ambapp_dev, devinfo)))
67#define AHB_TO_DEV(ahb_info) ((struct ambapp_dev *)(unsigned int(ahb_info) - \
68 offsetof(struct ambapp_dev, devinfo)))
94 unsigned int start[4];
98 unsigned int custom[3];
104 unsigned char vendor;
114 unsigned int freq_hz;
121 unsigned int local_adr;
122 unsigned int remote_adr;
137typedef int (*ambapp_func_t)(
struct ambapp_dev *dev,
int index,
void *arg);
139#define DEV_IS_FREE(dev) (dev->owner == NULL)
140#define DEV_IS_ALLOCATED(dev) (dev->owner != NULL)
143#define OPTIONS_AHB_MSTS 0x00000001
144#define OPTIONS_AHB_SLVS 0x00000002
145#define OPTIONS_APB_SLVS 0x00000004
146#define OPTIONS_ALL_DEVS (OPTIONS_AHB_MSTS|OPTIONS_AHB_SLVS|OPTIONS_APB_SLVS)
148#define OPTIONS_FREE 0x00000010
149#define OPTIONS_ALLOCATED 0x00000020
150#define OPTIONS_ALL (OPTIONS_FREE|OPTIONS_ALLOCATED)
153#define OPTIONS_DEPTH_FIRST 0x00000100
155#define DEV_AHB_NONE 0
162 const unsigned int id;
163 const unsigned int custom[3];
164 const unsigned int mbar[4];
168 const unsigned int id;
169 const unsigned int iobar;
172#define ambapp_pnp_vendor(id) (((id) >> 24) & 0xff)
173#define ambapp_pnp_device(id) (((id) >> 12) & 0xfff)
174#define ambapp_pnp_ver(id) (((id)>>5) & 0x1f)
175#define ambapp_pnp_irq(id) ((id) & 0x1f)
177#define ambapp_pnp_start(mbar) (((mbar) & 0xfff00000) & (((mbar) & 0xfff0) << 16))
178#define ambapp_pnp_mbar_mask(mbar) (((mbar)>>4) & 0xfff)
179#define ambapp_pnp_mbar_type(mbar) ((mbar) & 0xf)
181#define ambapp_pnp_apb_start(iobar, base) ((base) | ((((iobar) & 0xfff00000)>>12) & (((iobar) & 0xfff0)<<4)) )
182#define ambapp_pnp_apb_mask(iobar) ((~(ambapp_pnp_mbar_mask(iobar)<<8) & 0x000fffff) + 1)
184#define AMBA_TYPE_AHBIO_ADDR(addr,base_ioarea) ((unsigned int)(base_ioarea) | ((addr) >> 12))
186#define AMBA_TYPE_APBIO 0x1
187#define AMBA_TYPE_MEM 0x2
188#define AMBA_TYPE_AHBIO 0x3
191typedef void *(*ambapp_memcpy_t)(
211extern int ambapp_scan(
214 ambapp_memcpy_t memfunc,
221extern void ambapp_freq_init(
227extern unsigned int ambapp_freq_get(
257extern int ambapp_for_each(
259 unsigned int options,
274extern int ambapp_find_by_idx(
struct ambapp_dev *dev,
int index,
void *pcount);
279extern int ambapp_dev_count(
struct ambapp_bus *abus,
unsigned int options,
283extern void ambapp_print(
struct ambapp_bus *abus,
int show_depth);
288extern int ambapp_alloc_dev(
struct ambapp_dev *dev,
void *owner);
291extern void ambapp_free_dev(
struct ambapp_dev *dev);
297extern int ambapp_depth(
struct ambapp_dev *dev);
300extern char *ambapp_device_id2str(
int vendor,
int id);
303extern char *ambapp_vendor_id2str(
int vendor);
308extern int ambapp_vendev_id2str(
int vendor,
int id,
char *buf);
312extern int ambapp_find_apbslv(
318extern int ambapp_find_apbslv_next(
325extern int ambapp_find_apbslvs_next(
333extern int ambapp_find_apbslvs(
340extern int ambapp_find_ahbslv(
346extern int ambapp_find_ahbslv_next(
353extern int ambapp_find_ahbslvs_next(
361extern int ambapp_find_ahbslvs(
369extern int ambapp_get_number_ahbslv_devices(
374extern int ambapp_get_number_apbslv_devices(
AMBA Plug & Play Bus Vendor and Device IDs.
Definition: rtemscompat1.h:15