libsidplayfp  2.0.2
exSID_defs.h
Go to the documentation of this file.
1 //
2 // exSID_defs.h
3 // A simple I/O library for exSID USB - private header file
4 //
5 // (C) 2015-2017 Thibaut VARENE
6 // License: GPLv2 - http://www.gnu.org/licenses/gpl-2.0.html
7 //
8 
17 #ifndef exSID_defs_h
18 #define exSID_defs_h
19 
20 #ifdef HAVE_CONFIG_H
21 # include "config.h"
22 #endif
23 
24 // CLOCK_FREQ_NTSC = 1022727.14;
25 // CLOCK_FREQ_PAL = 985248.4;
26 
27 /* exSID hardware definitions */
28 #define XS_BDRATE 2000000
29 #define XS_BUFFMS 40
30 #define XS_SIDCLK 1000000
31 #define XS_RSBCLK (XS_BDRATE/10)
32 #define XS_CYCCHR (XS_SIDCLK/XS_RSBCLK)
33 //#define XS_CYCCHR ((XS_SIDCLK+XS_RSBCLK-1)/XS_RSBCLK) // ceiling
34 #define XS_USBLAT 1
35 #define XS_BUFFSZ ((((XS_RSBCLK/1000)*XS_BUFFMS)/62)*62)
36 #define XS_LDMULT 501
37 
38 #define XS_MINDEL (XS_CYCCHR)
39 #define XS_CYCIO (2*XS_CYCCHR)
40 #define XS_MAXADJ 7
41 #define XS_LDOFFS (3*XS_CYCCHR)
42 
43 /* exSID+ hardware definitions */
44 #define XSP_MINDEL 2
45 #define XSP_CYCIO 3
46 #define XSP_PRE_RD 2
47 #define XSP_POSTRD 2
48 #define XSP_MAXADJ 4
49 #define XSP_LDOFFS 3
50 #define XSP_CYCCS 2
51 
52 /* IOCTLS */
53 /* IO controls 0x3D to 0x7F are only implemented on exSID+ */
54 #define XSP_AD_IOCTCP 0x3D
55 #define XSP_AD_IOCTCN 0x3E
56 #define XSP_AD_IOCTC1 0x3F
57 
58 #define XSP_AD_IOCTA0 0x5D
59 #define XSP_AD_IOCTA1 0x5E
60 #define XSP_AD_IOCTA2 0x5F
61 
62 #define XSP_AD_IOCTA3 0x7D
63 #define XSP_AD_IOCTAM 0x7E
64 #define XSP_AD_IOCTAU 0x7F
65 
66 #define XS_AD_IOCTD1 0x9D
67 #define XS_AD_IOCTLD 0x9E
68 
69 #define XS_AD_IOCTS0 0xBD
70 #define XS_AD_IOCTS1 0xBE
71 #define XS_AD_IOCTSB 0xBF
72 
73 #define XS_AD_IOCTFV 0xFD
74 #define XS_AD_IOCTHV 0xFE
75 #define XS_AD_IOCTRS 0xFF
76 
77 #define XS_USBVID 0x0403
78 #define XS_USBPID 0x6001
79 #define XS_USBDSC "exSID USB"
80 
81 #define XSP_USBVID 0x0403
82 #define XSP_USBPID 0x6015
83 #define XSP_USBDSC "exSID+ USB"
84 
85 #define XS_MODEL_STD 0
86 #define XS_MODEL_PLUS 1
87 
88 #ifdef DEBUG
89  #define xsdbg(format, ...) printf("(%s) " format, __func__, ## __VA_ARGS__)
90 #else
91  #define xsdbg(format, ...) /* nothing */
92 #endif
93 
94 #define ERRORBUF 256
95 
96 #define xserror(format, ...) snprintf(xSerrstr, ERRORBUF, "(%s) ERROR " format, __func__, ## __VA_ARGS__)
97 
98 #ifdef HAVE_BUILTIN_EXPECT
99  #define likely(x) __builtin_expect(!!(x), 1)
100  #define unlikely(x) __builtin_expect(!!(x), 0)
101 #else
102  #define likely(x) (x)
103  #define unlikely(x) (x)
104 #endif
105 
106 extern char xSerrstr[ERRORBUF+1]; // 256-byte max string for error message
107 
108 #endif /* exSID_defs_h */