@@ -36,8 +36,6 @@ struct regcache_rbtree_node {
36
36
struct regcache_rbtree_ctx {
37
37
struct rb_root root ;
38
38
struct regcache_rbtree_node * cached_rbnode ;
39
- unsigned long * reg_present ;
40
- unsigned int reg_present_nbits ;
41
39
};
42
40
43
41
static inline void regcache_rbtree_get_base_top_reg (
@@ -154,7 +152,7 @@ static int rbtree_show(struct seq_file *s, void *ignored)
154
152
map -> lock (map );
155
153
156
154
mem_size = sizeof (* rbtree_ctx );
157
- mem_size += BITS_TO_LONGS (rbtree_ctx -> reg_present_nbits ) * sizeof (long );
155
+ mem_size += BITS_TO_LONGS (map -> cache_present_nbits ) * sizeof (long );
158
156
159
157
for (node = rb_first (& rbtree_ctx -> root ); node != NULL ;
160
158
node = rb_next (node )) {
@@ -205,44 +203,6 @@ static void rbtree_debugfs_init(struct regmap *map)
205
203
}
206
204
#endif
207
205
208
- static int enlarge_reg_present_bitmap (struct regmap * map , unsigned int reg )
209
- {
210
- struct regcache_rbtree_ctx * rbtree_ctx ;
211
- unsigned long * reg_present ;
212
- unsigned int reg_present_size ;
213
- unsigned int nregs ;
214
- int i ;
215
-
216
- rbtree_ctx = map -> cache ;
217
- nregs = reg + 1 ;
218
- reg_present_size = BITS_TO_LONGS (nregs );
219
- reg_present_size *= sizeof (long );
220
-
221
- if (!rbtree_ctx -> reg_present ) {
222
- reg_present = kmalloc (reg_present_size , GFP_KERNEL );
223
- if (!reg_present )
224
- return - ENOMEM ;
225
- bitmap_zero (reg_present , nregs );
226
- rbtree_ctx -> reg_present = reg_present ;
227
- rbtree_ctx -> reg_present_nbits = nregs ;
228
- return 0 ;
229
- }
230
-
231
- if (nregs > rbtree_ctx -> reg_present_nbits ) {
232
- reg_present = krealloc (rbtree_ctx -> reg_present ,
233
- reg_present_size , GFP_KERNEL );
234
- if (!reg_present )
235
- return - ENOMEM ;
236
- for (i = 0 ; i < nregs ; i ++ )
237
- if (i >= rbtree_ctx -> reg_present_nbits )
238
- clear_bit (i , reg_present );
239
- rbtree_ctx -> reg_present = reg_present ;
240
- rbtree_ctx -> reg_present_nbits = nregs ;
241
- }
242
-
243
- return 0 ;
244
- }
245
-
246
206
static int regcache_rbtree_init (struct regmap * map )
247
207
{
248
208
struct regcache_rbtree_ctx * rbtree_ctx ;
@@ -256,8 +216,6 @@ static int regcache_rbtree_init(struct regmap *map)
256
216
rbtree_ctx = map -> cache ;
257
217
rbtree_ctx -> root = RB_ROOT ;
258
218
rbtree_ctx -> cached_rbnode = NULL ;
259
- rbtree_ctx -> reg_present = NULL ;
260
- rbtree_ctx -> reg_present_nbits = 0 ;
261
219
262
220
for (i = 0 ; i < map -> num_reg_defaults ; i ++ ) {
263
221
ret = regcache_rbtree_write (map ,
@@ -287,8 +245,6 @@ static int regcache_rbtree_exit(struct regmap *map)
287
245
if (!rbtree_ctx )
288
246
return 0 ;
289
247
290
- kfree (rbtree_ctx -> reg_present );
291
-
292
248
/* free up the rbtree */
293
249
next = rb_first (& rbtree_ctx -> root );
294
250
while (next ) {
@@ -306,17 +262,6 @@ static int regcache_rbtree_exit(struct regmap *map)
306
262
return 0 ;
307
263
}
308
264
309
- static int regcache_reg_present (struct regmap * map , unsigned int reg )
310
- {
311
- struct regcache_rbtree_ctx * rbtree_ctx ;
312
-
313
- rbtree_ctx = map -> cache ;
314
- if (!(rbtree_ctx -> reg_present [BIT_WORD (reg )] & BIT_MASK (reg )))
315
- return 0 ;
316
- return 1 ;
317
-
318
- }
319
-
320
265
static int regcache_rbtree_read (struct regmap * map ,
321
266
unsigned int reg , unsigned int * value )
322
267
{
@@ -378,10 +323,9 @@ static int regcache_rbtree_write(struct regmap *map, unsigned int reg,
378
323
379
324
rbtree_ctx = map -> cache ;
380
325
/* update the reg_present bitmap, make space if necessary */
381
- ret = enlarge_reg_present_bitmap (map , reg );
326
+ ret = regcache_set_reg_present (map , reg );
382
327
if (ret < 0 )
383
328
return ret ;
384
- set_bit (reg , rbtree_ctx -> reg_present );
385
329
386
330
/* if we can't locate it in the cached rbnode we'll have
387
331
* to traverse the rbtree looking for it.
0 commit comments