]> rtime.felk.cvut.cz Git - mf624-simulink.git/blobdiff - mf624_SIMULINK.h
Add definitions of MF624 IRC registers.
[mf624-simulink.git] / mf624_SIMULINK.h
index 55e5f3467d5baf231c77a9afbc9eaea807396d9d..5c57b1d56654138b19df000a7b882cfec23fef69 100644 (file)
@@ -5,6 +5,7 @@
 #include <stdint.h> // uintX_t
 #include <inttypes.h>
 
+#include "simstruc.h"
 
 /* Hardware specific */
 /* BAR0 */
 #define CTR4         0x44
 #define CTRXCTRL     0x60
 
+#define IRCSTATUS_reg          0x6C
+#define IRCCTRL_reg            0x6C
+#define IRC0_reg               0x70
+#define IRC1_reg               0x74
+#define IRC2_reg               0x78
+#define IRC3_reg               0x7C
+
+#define IRCCTRL_IRC0MODE_mask  0x00000003
+#define IRCCTRL_IRC0COUNT_mask 0x0000000C
+#define IRCCTRL_IRC0RESET_mask 0x00000070
+#define IRCCTRL_IRC0FILTER_mask        0x00000080
+
+#define IRCCTRL_IRC1MODE_mask  0x00000300
+#define IRCCTRL_IRC1COUNT_mask 0x00000C00
+#define IRCCTRL_IRC1RESET_mask 0x00007000
+#define IRCCTRL_IRC1FILTER_mask        0x00008000
+
+#define IRCCTRL_IRC2MODE_mask  0x00030000
+#define IRCCTRL_IRC2COUNT_mask 0x000C0000
+#define IRCCTRL_IRC2RESET_mask 0x00700000
+#define IRCCTRL_IRC2FILTER_mask        0x00800000
+
+#define IRCCTRL_IRC3MODE_mask  0x03000000
+#define IRCCTRL_IRC3COUNT_mask 0x0C000000
+#define IRCCTRL_IRC3RESET_mask 0x70000000
+#define IRCCTRL_IRC3FILTER_mask        0x80000000
+
+#define IRCCTRL_CHANNEL_SHIFT  8
+
+#define IRCCTRL_MODE_mask(ch)  (0x03<<((ch)*IRCCTRL_CHANNEL_SHIFT))
+#define IRCCTRL_COUNT_mask(ch) (0x0C<<((ch)*IRCCTRL_CHANNEL_SHIFT))
+#define IRCCTRL_RESET_mask(ch) (0x70<<((ch)*IRCCTRL_CHANNEL_SHIFT))
+#define IRCCTRL_FILTER_mask(ch)        (0x80<<((ch)*IRCCTRL_CHANNEL_SHIFT))
+
+#define IRCCTRL_MODE_IRC       0
+#define IRCCTRL_MODE_BIDIR_RE  1
+#define IRCCTRL_MODE_BIDIR_FE  2
+#define IRCCTRL_MODE_BIDIR_BOTH        3
+
+#define IRCCTRL_COUNT_ENABLED  0
+#define IRCCTRL_COUNT_DISABLED 1
+#define IRCCTRL_COUNT_IF_IDX_LO        2
+#define IRCCTRL_COUNT_IF_IDX_HI        3
+
+#define IRCCTRL_RESET_DISABLED 0
+#define IRCCTRL_RESET_ALWAYS   1
+#define IRCCTRL_RESET_IF_IDX_LO        2
+#define IRCCTRL_RESET_IF_IDX_HI        3
+#define IRCCTRL_RESET_IF_IDX_RE        4
+#define IRCCTRL_RESET_IF_IDX_FE        5
+#define IRCCTRL_RESET_IF_IDX_BOTH 6
+
+#define IRCSTATUS_IRC0INDEX_mask       0x00000001
+#define IRCSTATUS_IRC1INDEX_mask       0x00000100
+#define IRCSTATUS_IRC2INDEX_mask       0x00000100
+#define IRCSTATUS_IRC3INDEX_mask       0x00000100
+
+#define IRCSTATUS_CHANNEL_SHIFT        8
+
+#define IRCSTATUS_INDEX_mask(ch)       (0x01<<((ch)*IRCSTATUS_CHANNEL_SHIFT))
+
 #define GPIOC_DACEN_mask       (1 << 26)
 #define GPIOC_LDAC_mask                (1 << 23)
 #define GPIOC_EOLC_mask                (1 << 17)
@@ -103,8 +165,6 @@ static uint32_t adc_channel2reg[] = {
        [AD7] = ADDATA7_reg,
 };
 
-extern void print_8bin(int nr);
-
 static inline int16_t mf624_read16(void *ptr)
 {
        return *(volatile uint16_t*)ptr;
@@ -137,18 +197,8 @@ extern int ADC_enable(mf624_state_t* mfst, adc_channel_t channel);
 
 extern double ADC_read(mf624_state_t* mfst, adc_channel_t channel);
 
-extern int open_device(char* path);
-
-extern void wait_for_interrupts(int device_fd);
-
-extern int disable_interrupts(int device_fd);
-
-extern int enable_interrupts(int device_fd);
-
-extern void list_available_mem_regions(char* device);
-
-extern void list_available_io_ports(char *device);
-
-extern int mmap_regions(mf624_state_t* mfst);
+int mf624_init(SimStruct *S);
+int mf624_check(SimStruct *S);
+int mf624_done();
 
 #endif