summaryrefslogtreecommitdiffstats
path: root/grlib.h
diff options
context:
space:
mode:
authorJiri Gaisler <jiri@gaisler.se>2020-11-30 22:52:27 +0100
committerJiri Gaisler <jiri@gaisler.se>2020-12-01 16:44:49 +0100
commit11154be7bec2967b869fe385ab1df93a27efd82c (patch)
tree955b1c03b0ea4bd3bf6d36af9ec0431c27391401 /grlib.h
parentAdd %asr22/23 support to leon3 (diff)
downloadsis-11154be7bec2967b869fe385ab1df93a27efd82c.tar.bz2
Make grlib IP cores more modular and move them to grlib.c
Diffstat (limited to 'grlib.h')
-rw-r--r--grlib.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/grlib.h b/grlib.h
index a895c11..6d7606b 100644
--- a/grlib.h
+++ b/grlib.h
@@ -52,6 +52,9 @@
#define APBPP_START 0x800FF000
#define APBPP_END 0x800FFFFF
+#define ROM_MASKPP ((~ROM_MASK >> 20) & 0xFFF)
+#define RAM_MASKPP ((~RAM_MASK >> 20) & 0xFFF)
+
extern int grlib_apbpp_add (uint32 id, uint32 addr);
extern int grlib_ahbmpp_add (uint32 id);
extern int grlib_ahbspp_add (uint32 id, uint32 addr1, uint32 addr2,
@@ -60,3 +63,39 @@ extern uint32 grlib_ahbpnp_read (uint32 addr);
extern uint32 grlib_apbpnp_read (uint32 addr);
extern void grlib_init ();
extern uint32 rvtimer_read (int address, int cpu);
+
+struct grlib_ipcore
+{
+ void (*init) (void);
+ void (*reset) (void);
+ int (*read) (uint32 addr, uint32 * data);
+ int (*write) (uint32 addr, uint32 * data, uint32 size);
+ void (*add) (int irq, uint32 addr, uint32 mask);
+};
+
+struct grlib_buscore
+{
+ const struct grlib_ipcore *core;
+ uint32 start;
+ uint32 end;
+ uint32 mask;
+};
+
+extern void grlib_ahbs_add (const struct grlib_ipcore *core, int irq,
+ uint32 addr, uint32 mask);
+extern void grlib_ahbm_add (const struct grlib_ipcore *core, int irq);
+extern void grlib_apb_add (const struct grlib_ipcore *core, int irq,
+ uint32 addr, uint32 mask);
+extern int grlib_read (uint32 addr, uint32 * data);
+extern int grlib_write (uint32 addr, uint32 * data, uint32 sz);
+extern void grlib_set_irq (int32 level);
+extern void grlib_store_bytes (char *mem, uint32 waddr, uint32 * data,
+ int32 sz);
+extern void grlib_boot_init (void);
+extern void grlib_reset (void);
+extern void apbuart_init_stdio (void);
+extern void apbuart_restore_stdio (void);
+extern void apbuart_close_port (void);
+extern void apbuart_flush (void);
+extern const struct grlib_ipcore gptimer, irqmp, apbuart, apbmst,
+ greth, leon3s, srctrl;