|
32 | 32 | #define uISP_VAL_MAX ((unsigned int)((1 << uISP_REG_BIT) - 1))
|
33 | 33 |
|
34 | 34 | /* a:fraction bits for 16bit precision, b:fraction bits for ISP precision */
|
35 |
| -#define sDIGIT_FITTING(v, a, b) \ |
36 |
| - min_t(int, max_t(int, (((v) >> sSHIFT) >> max(sFRACTION_BITS_FITTING(a) - (b), 0)), \ |
37 |
| - sISP_VAL_MIN), sISP_VAL_MAX) |
38 |
| -#define uDIGIT_FITTING(v, a, b) \ |
39 |
| - min((unsigned int)max((unsigned)(((v) >> uSHIFT) \ |
40 |
| - >> max((int)(uFRACTION_BITS_FITTING(a) - (b)), 0)), \ |
41 |
| - uISP_VAL_MIN), uISP_VAL_MAX) |
| 35 | +static inline int sDIGIT_FITTING(int v, int a, int b) |
| 36 | +{ |
| 37 | + int fit_shift = sFRACTION_BITS_FITTING(a) - b; |
| 38 | + |
| 39 | + v >>= sSHIFT; |
| 40 | + v >>= fit_shift > 0 ? fit_shift : 0; |
| 41 | + |
| 42 | + return clamp_t(int, v, sISP_VAL_MIN, sISP_VAL_MAX); |
| 43 | +} |
| 44 | + |
| 45 | +static inline unsigned int uDIGIT_FITTING(unsigned int v, int a, int b) |
| 46 | +{ |
| 47 | + int fit_shift = uFRACTION_BITS_FITTING(a) - b; |
| 48 | + |
| 49 | + v >>= uSHIFT; |
| 50 | + v >>= fit_shift > 0 ? fit_shift : 0; |
| 51 | + |
| 52 | + return clamp_t(unsigned int, v, uISP_VAL_MIN, uISP_VAL_MAX); |
| 53 | +} |
42 | 54 |
|
43 | 55 | #endif /* __SH_CSS_FRAC_H */
|
0 commit comments