tty: Remove tty_wait_until_sent_from_close()
[firefly-linux-kernel-4.4.55.git] / drivers / staging / sm750fb / sm750_help.h
1 #ifndef LYNX_HELP_H__
2 #define LYNX_HELP_H__
3
4 /*  FIELD MACROS */
5 #define _LSB(f)             (0 ? f)
6 #define _MSB(f)             (1 ? f)
7 #define _COUNT(f)           (_MSB(f) - _LSB(f) + 1)
8
9 #define RAW_MASK(f)         (0xFFFFFFFF >> (32 - _COUNT(f)))
10 #define GET_MASK(f)         (RAW_MASK(f) << _LSB(f))
11 #define GET_FIELD(d, f)     (((d) >> _LSB(f)) & RAW_MASK(f))
12 #define TEST_FIELD(d, f, v) (GET_FIELD(d, f) == f ## _ ## v)
13 #define SET_FIELD(d, f, v)  (((d) & ~GET_MASK(f)) | \
14                             (((f ## _ ## v) & RAW_MASK(f)) << _LSB(f)))
15 #define SET_FIELDV(d, f, v) (((d) & ~GET_MASK(f)) | \
16                             (((v) & RAW_MASK(f)) << _LSB(f)))
17
18 /* Internal macros */
19 #define _F_START(f)             (0 ? f)
20 #define _F_END(f)               (1 ? f)
21 #define _F_SIZE(f)              (1 + _F_END(f) - _F_START(f))
22 #define _F_MASK(f)              (((1 << _F_SIZE(f)) - 1) << _F_START(f))
23 #define _F_NORMALIZE(v, f)      (((v) & _F_MASK(f)) >> _F_START(f))
24 #define _F_DENORMALIZE(v, f)    (((v) << _F_START(f)) & _F_MASK(f))
25
26 /* Global macros */
27 #define FIELD_GET(x, reg, field) \
28 ( \
29         _F_NORMALIZE((x), reg ## _ ## field) \
30 )
31
32 #define FIELD_SET(x, reg, field, value) \
33 ( \
34         (x & ~_F_MASK(reg ## _ ## field)) \
35         | _F_DENORMALIZE(reg ## _ ## field ## _ ## value, reg ## _ ## field) \
36 )
37
38 #define FIELD_VALUE(x, reg, field, value) \
39 ( \
40         (x & ~_F_MASK(reg ## _ ## field)) \
41         | _F_DENORMALIZE(value, reg ## _ ## field) \
42 )
43
44 #define FIELD_CLEAR(reg, field) \
45 ( \
46         ~ _F_MASK(reg ## _ ## field) \
47 )
48
49 /* Field Macros */
50 #define FIELD_START(field)              (0 ? field)
51 #define FIELD_END(field)                (1 ? field)
52 #define FIELD_SIZE(field)               (1 + FIELD_END(field) - FIELD_START(field))
53 #define FIELD_MASK(field)               (((1 << (FIELD_SIZE(field)-1)) | ((1 << (FIELD_SIZE(field)-1)) - 1)) << FIELD_START(field))
54 #define FIELD_NORMALIZE(reg, field)     (((reg) & FIELD_MASK(field)) >> FIELD_START(field))
55 #define FIELD_DENORMALIZE(field, value) (((value) << FIELD_START(field)) & FIELD_MASK(field))
56
57 #define FIELD_INIT(reg, field, value)   FIELD_DENORMALIZE(reg ## _ ## field, \
58                                                           reg ## _ ## field ## _ ## value)
59 #define FIELD_INIT_VAL(reg, field, value) \
60         (FIELD_DENORMALIZE(reg ## _ ## field, value))
61 #define FIELD_VAL_SET(x, r, f, v)       x = x & ~FIELD_MASK(r ## _ ## f) \
62                                         | FIELD_DENORMALIZE(r ## _ ## f, r ## _ ## f ## _ ## v)
63
64 #define RGB(r, g, b) \
65 ( \
66         (unsigned long) (((r) << 16) | ((g) << 8) | (b)) \
67 )
68
69 #define RGB16(r, g, b) \
70 ( \
71         (unsigned short) ((((r) & 0xF8) << 8) | (((g) & 0xFC) << 3) | (((b) & 0xF8) >> 3)) \
72 )
73
74 static inline unsigned int absDiff(unsigned int a, unsigned int b)
75 {
76         if (a < b)
77                 return b-a;
78         else
79                 return a-b;
80 }
81
82 /* n / d + 1 / 2 = (2n + d) / 2d */
83 #define roundedDiv(num, denom)  ((2 * (num) + (denom)) / (2 * (denom)))
84 #define MB(x) ((x)<<20)
85 #define KB(x) ((x)<<10)
86 #define MHz(x) ((x) * 1000000)
87
88
89
90
91 #endif