1 #ifndef __USBDEV_RKUOC_H
2 #define _USBDEV_RKUOC_H
4 typedef union uoc_field {
13 static inline void grf_uoc_set(void *base, u32 offset, u8 bitmap, u8 mask,
16 /* printk("bc_debug:set addr %p val = 0x%08x\n",
17 * ((u32*)(base + offset)),(((((1 << mask) - 1) & value)
18 * | (((1 << mask) - 1) << 16))<< bitmap));*/
19 *((u32 *) (base + offset)) =
20 (((((1 << mask) - 1) & value) | (((1 << mask) -
21 1) << 16)) << bitmap);
24 static inline u32 grf_uoc_get(void *base, u32 offset, u32 bitmap, u32 mask)
27 /* printk("bc_debug:get addr %p bit %d val = 0x%08x\n",
28 * (u32*)(base + offset), bitmap,
29 * *((u32*)(base + offset))); */
30 ret = (*((u32 *) (base + offset)) >> bitmap) & ((1 << mask) - 1);
34 static inline void regmap_grf_uoc_set(struct regmap *grf, u32 offset,
35 u32 bitmap, u32 mask, u32 val)
39 reg_val = (((((1 << mask) - 1) & val) |
40 (((1 << mask) - 1) << 16)) << bitmap);
41 regmap_write(grf, offset, reg_val);
44 static inline u32 regmap_grf_uoc_get(struct regmap *grf, u32 offset,
49 regmap_read(grf, offset, &ret);
50 ret = (ret >> bitmap) & ((1 << mask) - 1);
54 static inline bool uoc_field_valid(uoc_field_t *f)
56 if ((f->b.bitmap < 32) && (f->b.mask < 32))
59 printk("%s field invalid\n", __func__);