cfg: ftdi icdi enable srst open drain config
[fw/openocd] / src / helper / types.h
index 03ab5f0c2edd03ef2c8afa168c1b9f8343c54691..6866f560d5c1813347fa245f1f52fd880d79c0e5 100644 (file)
@@ -80,7 +80,7 @@ typedef bool _Bool;
  */
 #define container_of(ptr, type, member) ({                     \
        const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
-       (type *)( (char *)__mptr - offsetof(type,member) );})
+       (type *)( (void *) ( (char *)__mptr - offsetof(type,member) ) );})
 
 
 /**
@@ -116,6 +116,11 @@ static inline uint32_t le_to_h_u32(const uint8_t* buf)
        return (uint32_t)(buf[0] | buf[1] << 8 | buf[2] << 16 | buf[3] << 24);
 }
 
+static inline uint32_t le_to_h_u24(const uint8_t* buf)
+{
+       return (uint32_t)(buf[0] | buf[1] << 8 | buf[2] << 16);
+}
+
 static inline uint16_t le_to_h_u16(const uint8_t* buf)
 {
        return (uint16_t)(buf[0] | buf[1] << 8);
@@ -126,6 +131,11 @@ static inline uint32_t be_to_h_u32(const uint8_t* buf)
        return (uint32_t)(buf[3] | buf[2] << 8 | buf[1] << 16 | buf[0] << 24);
 }
 
+static inline uint32_t be_to_h_u24(const uint8_t* buf)
+{
+       return (uint32_t)(buf[2] | buf[1] << 8 | buf[0] << 16);
+}
+
 static inline uint16_t be_to_h_u16(const uint8_t* buf)
 {
        return (uint16_t)(buf[1] | buf[0] << 8);
@@ -147,6 +157,20 @@ static inline void h_u32_to_be(uint8_t* buf, int val)
        buf[3] = (uint8_t) (val >> 0);
 }
 
+static inline void h_u24_to_le(uint8_t* buf, int val)
+{
+       buf[2] = (uint8_t) (val >> 16);
+       buf[1] = (uint8_t) (val >> 8);
+       buf[0] = (uint8_t) (val >> 0);
+}
+
+static inline void h_u24_to_be(uint8_t* buf, int val)
+{
+       buf[0] = (uint8_t) (val >> 16);
+       buf[1] = (uint8_t) (val >> 8);
+       buf[2] = (uint8_t) (val >> 0);
+}
+
 static inline void h_u16_to_le(uint8_t* buf, int val)
 {
        buf[1] = (uint8_t) (val >> 8);
@@ -172,6 +196,9 @@ static inline void h_u16_to_be(uint8_t* buf, int val)
 #define SCNx32 "x"
 #define PRIi32 "i"
 #define PRIu32 "u"
+#define PRId8 PRId32
+#define SCNx64 "llx"
+#define PRIx64 "llx"
 
 typedef CYG_ADDRWORD intptr_t;
 typedef int64_t intmax_t;
@@ -190,11 +217,11 @@ typedef uint64_t uintmax_t;
 #define UINT64_MAX (__CONCAT(INT64_MAX, U) * 2ULL + 1ULL)
 #endif
 
-    #ifndef LLONG_MAX
+       #ifndef LLONG_MAX
        #define ULLONG_MAX      UINT64_C(0xFFFFFFFFFFFFFFFF)
        #define LLONG_MAX       INT64_C(0x7FFFFFFFFFFFFFFF)
        #define LLONG_MIN       ULLONG_MAX
-    #endif
+       #endif
 
 
 #define ULLONG_MAX 18446744073709551615