Lines Matching refs:item

58 __mlxsw_item_offset(struct mlxsw_item *item, unsigned short index,  in __mlxsw_item_offset()  argument
61 BUG_ON(index && !item->step); in __mlxsw_item_offset()
62 if (item->offset % typesize != 0 || in __mlxsw_item_offset()
63 item->step % typesize != 0 || in __mlxsw_item_offset()
64 item->in_step_offset % typesize != 0) { in __mlxsw_item_offset()
66 item->name, item->offset, item->step, in __mlxsw_item_offset()
67 item->in_step_offset, typesize); in __mlxsw_item_offset()
71 return ((item->offset + item->step * index + item->in_step_offset) / in __mlxsw_item_offset()
75 static inline u16 __mlxsw_item_get16(char *buf, struct mlxsw_item *item, in __mlxsw_item_get16() argument
78 unsigned int offset = __mlxsw_item_offset(item, index, sizeof(u16)); in __mlxsw_item_get16()
83 tmp >>= item->shift; in __mlxsw_item_get16()
84 tmp &= GENMASK(item->size.bits - 1, 0); in __mlxsw_item_get16()
85 if (item->no_real_shift) in __mlxsw_item_get16()
86 tmp <<= item->shift; in __mlxsw_item_get16()
90 static inline void __mlxsw_item_set16(char *buf, struct mlxsw_item *item, in __mlxsw_item_set16() argument
93 unsigned int offset = __mlxsw_item_offset(item, index, in __mlxsw_item_set16()
96 u16 mask = GENMASK(item->size.bits - 1, 0) << item->shift; in __mlxsw_item_set16()
99 if (!item->no_real_shift) in __mlxsw_item_set16()
100 val <<= item->shift; in __mlxsw_item_set16()
108 static inline u32 __mlxsw_item_get32(char *buf, struct mlxsw_item *item, in __mlxsw_item_get32() argument
111 unsigned int offset = __mlxsw_item_offset(item, index, sizeof(u32)); in __mlxsw_item_get32()
116 tmp >>= item->shift; in __mlxsw_item_get32()
117 tmp &= GENMASK(item->size.bits - 1, 0); in __mlxsw_item_get32()
118 if (item->no_real_shift) in __mlxsw_item_get32()
119 tmp <<= item->shift; in __mlxsw_item_get32()
123 static inline void __mlxsw_item_set32(char *buf, struct mlxsw_item *item, in __mlxsw_item_set32() argument
126 unsigned int offset = __mlxsw_item_offset(item, index, in __mlxsw_item_set32()
129 u32 mask = GENMASK(item->size.bits - 1, 0) << item->shift; in __mlxsw_item_set32()
132 if (!item->no_real_shift) in __mlxsw_item_set32()
133 val <<= item->shift; in __mlxsw_item_set32()
141 static inline u64 __mlxsw_item_get64(char *buf, struct mlxsw_item *item, in __mlxsw_item_get64() argument
144 unsigned int offset = __mlxsw_item_offset(item, index, sizeof(u64)); in __mlxsw_item_get64()
149 tmp >>= item->shift; in __mlxsw_item_get64()
150 tmp &= GENMASK_ULL(item->size.bits - 1, 0); in __mlxsw_item_get64()
151 if (item->no_real_shift) in __mlxsw_item_get64()
152 tmp <<= item->shift; in __mlxsw_item_get64()
156 static inline void __mlxsw_item_set64(char *buf, struct mlxsw_item *item, in __mlxsw_item_set64() argument
159 unsigned int offset = __mlxsw_item_offset(item, index, sizeof(u64)); in __mlxsw_item_set64()
161 u64 mask = GENMASK_ULL(item->size.bits - 1, 0) << item->shift; in __mlxsw_item_set64()
164 if (!item->no_real_shift) in __mlxsw_item_set64()
165 val <<= item->shift; in __mlxsw_item_set64()
174 struct mlxsw_item *item, in __mlxsw_item_memcpy_from() argument
177 unsigned int offset = __mlxsw_item_offset(item, index, sizeof(char)); in __mlxsw_item_memcpy_from()
179 memcpy(dst, &buf[offset], item->size.bytes); in __mlxsw_item_memcpy_from()
183 struct mlxsw_item *item, in __mlxsw_item_memcpy_to() argument
186 unsigned int offset = __mlxsw_item_offset(item, index, sizeof(char)); in __mlxsw_item_memcpy_to()
188 memcpy(&buf[offset], src, item->size.bytes); in __mlxsw_item_memcpy_to()
192 __mlxsw_item_bit_array_offset(struct mlxsw_item *item, u16 index, u8 *shift) in __mlxsw_item_bit_array_offset() argument
198 BUG_ON(index && !item->element_size); in __mlxsw_item_bit_array_offset()
199 if (item->offset % sizeof(u32) != 0 || in __mlxsw_item_bit_array_offset()
200 BITS_PER_BYTE % item->element_size != 0) { in __mlxsw_item_bit_array_offset()
202 item->name, item->offset, item->element_size); in __mlxsw_item_bit_array_offset()
206 max_index = (item->size.bytes << 3) / item->element_size - 1; in __mlxsw_item_bit_array_offset()
208 offset = be_index * item->element_size >> 3; in __mlxsw_item_bit_array_offset()
209 in_byte_index = index % (BITS_PER_BYTE / item->element_size); in __mlxsw_item_bit_array_offset()
210 *shift = in_byte_index * item->element_size; in __mlxsw_item_bit_array_offset()
212 return item->offset + offset; in __mlxsw_item_bit_array_offset()
215 static inline u8 __mlxsw_item_bit_array_get(char *buf, struct mlxsw_item *item, in __mlxsw_item_bit_array_get() argument
219 u16 offset = __mlxsw_item_bit_array_offset(item, index, &shift); in __mlxsw_item_bit_array_get()
223 tmp &= GENMASK(item->element_size - 1, 0); in __mlxsw_item_bit_array_get()
227 static inline void __mlxsw_item_bit_array_set(char *buf, struct mlxsw_item *item, in __mlxsw_item_bit_array_set() argument
231 u16 offset = __mlxsw_item_bit_array_offset(item, index, &shift); in __mlxsw_item_bit_array_set()
232 u8 mask = GENMASK(item->element_size - 1, 0) << shift; in __mlxsw_item_bit_array_set()