5
5
// Copyright 2023 Arm Ltd
6
6
7
7
#include <kunit/device.h>
8
+ #include <kunit/resource.h>
8
9
#include <kunit/test.h>
9
10
#include "internal.h"
10
11
11
12
#define BLOCK_TEST_SIZE 12
12
13
14
+ KUNIT_DEFINE_ACTION_WRAPPER (regmap_exit_action , regmap_exit , struct regmap * );
15
+
13
16
struct regmap_test_priv {
14
17
struct device * dev ;
15
18
};
@@ -190,6 +193,8 @@ static struct regmap *gen_regmap(struct kunit *test,
190
193
if (IS_ERR (ret )) {
191
194
kfree (buf );
192
195
kfree (* data );
196
+ } else {
197
+ kunit_add_action (test , regmap_exit_action , ret );
193
198
}
194
199
195
200
return ret ;
@@ -226,8 +231,6 @@ static void basic_read_write(struct kunit *test)
226
231
227
232
/* If using a cache the cache satisfied the read */
228
233
KUNIT_EXPECT_EQ (test , config .cache_type == REGCACHE_NONE , data -> read [0 ]);
229
-
230
- regmap_exit (map );
231
234
}
232
235
233
236
static void bulk_write (struct kunit * test )
@@ -261,8 +264,6 @@ static void bulk_write(struct kunit *test)
261
264
/* If using a cache the cache satisfied the read */
262
265
for (i = 0 ; i < BLOCK_TEST_SIZE ; i ++ )
263
266
KUNIT_EXPECT_EQ (test , config .cache_type == REGCACHE_NONE , data -> read [i ]);
264
-
265
- regmap_exit (map );
266
267
}
267
268
268
269
static void bulk_read (struct kunit * test )
@@ -292,8 +293,6 @@ static void bulk_read(struct kunit *test)
292
293
/* If using a cache the cache satisfied the read */
293
294
for (i = 0 ; i < BLOCK_TEST_SIZE ; i ++ )
294
295
KUNIT_EXPECT_EQ (test , config .cache_type == REGCACHE_NONE , data -> read [i ]);
295
-
296
- regmap_exit (map );
297
296
}
298
297
299
298
static void write_readonly (struct kunit * test )
@@ -325,8 +324,6 @@ static void write_readonly(struct kunit *test)
325
324
/* Did that match what we see on the device? */
326
325
for (i = 0 ; i < BLOCK_TEST_SIZE ; i ++ )
327
326
KUNIT_EXPECT_EQ (test , i != 5 , data -> written [i ]);
328
-
329
- regmap_exit (map );
330
327
}
331
328
332
329
static void read_writeonly (struct kunit * test )
@@ -363,8 +360,6 @@ static void read_writeonly(struct kunit *test)
363
360
364
361
/* Did we trigger a hardware access? */
365
362
KUNIT_EXPECT_FALSE (test , data -> read [5 ]);
366
-
367
- regmap_exit (map );
368
363
}
369
364
370
365
static void reg_defaults (struct kunit * test )
@@ -471,8 +466,6 @@ static void register_patch(struct kunit *test)
471
466
break ;
472
467
}
473
468
}
474
-
475
- regmap_exit (map );
476
469
}
477
470
478
471
static void stride (struct kunit * test )
@@ -512,8 +505,6 @@ static void stride(struct kunit *test)
512
505
KUNIT_EXPECT_TRUE (test , data -> written [i ]);
513
506
}
514
507
}
515
-
516
- regmap_exit (map );
517
508
}
518
509
519
510
static struct regmap_range_cfg test_range = {
@@ -612,8 +603,6 @@ static void basic_ranges(struct kunit *test)
612
603
KUNIT_EXPECT_FALSE (test , data -> read [i ]);
613
604
KUNIT_EXPECT_FALSE (test , data -> written [i ]);
614
605
}
615
-
616
- regmap_exit (map );
617
606
}
618
607
619
608
/* Try to stress dynamic creation of cache data structures */
@@ -665,8 +654,6 @@ static void stress_insert(struct kunit *test)
665
654
KUNIT_EXPECT_EQ (test , rval , vals [i ]);
666
655
KUNIT_EXPECT_EQ (test , config .cache_type == REGCACHE_NONE , data -> read [i ]);
667
656
}
668
-
669
- regmap_exit (map );
670
657
}
671
658
672
659
static void cache_bypass (struct kunit * test )
@@ -702,8 +689,6 @@ static void cache_bypass(struct kunit *test)
702
689
regcache_cache_bypass (map , false);
703
690
KUNIT_EXPECT_EQ (test , 0 , regmap_read (map , param -> from_reg , & rval ));
704
691
KUNIT_EXPECT_EQ (test , val , rval );
705
-
706
- regmap_exit (map );
707
692
}
708
693
709
694
static void cache_sync_marked_dirty (struct kunit * test )
@@ -739,8 +724,6 @@ static void cache_sync_marked_dirty(struct kunit *test)
739
724
KUNIT_EXPECT_MEMEQ (test , & data -> vals [param -> from_reg ], val , sizeof (val ));
740
725
for (i = 0 ; i < BLOCK_TEST_SIZE ; i ++ )
741
726
KUNIT_EXPECT_EQ (test , true, data -> written [param -> from_reg + i ]);
742
-
743
- regmap_exit (map );
744
727
}
745
728
746
729
static void cache_sync_after_cache_only (struct kunit * test )
@@ -790,8 +773,6 @@ static void cache_sync_after_cache_only(struct kunit *test)
790
773
KUNIT_EXPECT_MEMEQ (test , & data -> vals [param -> from_reg ], val , sizeof (val ));
791
774
for (i = 0 ; i < BLOCK_TEST_SIZE ; i ++ )
792
775
KUNIT_EXPECT_TRUE (test , data -> written [param -> from_reg + i ]);
793
-
794
- regmap_exit (map );
795
776
}
796
777
797
778
static void cache_sync_defaults_marked_dirty (struct kunit * test )
@@ -841,8 +822,6 @@ static void cache_sync_defaults_marked_dirty(struct kunit *test)
841
822
KUNIT_EXPECT_EQ (test , 0 , regcache_sync (map ));
842
823
for (i = 0 ; i < BLOCK_TEST_SIZE ; i ++ )
843
824
KUNIT_EXPECT_FALSE (test , data -> written [param -> from_reg + i ]);
844
-
845
- regmap_exit (map );
846
825
}
847
826
848
827
static void cache_sync_default_after_cache_only (struct kunit * test )
@@ -890,8 +869,6 @@ static void cache_sync_default_after_cache_only(struct kunit *test)
890
869
KUNIT_EXPECT_EQ (test , 0 , regcache_sync (map ));
891
870
KUNIT_EXPECT_TRUE (test , data -> written [param -> from_reg + 2 ]);
892
871
KUNIT_EXPECT_EQ (test , data -> vals [param -> from_reg + 2 ], orig_val );
893
-
894
- regmap_exit (map );
895
872
}
896
873
897
874
static void cache_sync_readonly (struct kunit * test )
@@ -930,8 +907,6 @@ static void cache_sync_readonly(struct kunit *test)
930
907
/* Did that match what we see on the device? */
931
908
for (i = 0 ; i < BLOCK_TEST_SIZE ; i ++ )
932
909
KUNIT_EXPECT_EQ (test , i != 5 , data -> written [param -> from_reg + i ]);
933
-
934
- regmap_exit (map );
935
910
}
936
911
937
912
static void cache_sync_patch (struct kunit * test )
@@ -990,8 +965,6 @@ static void cache_sync_patch(struct kunit *test)
990
965
break ;
991
966
}
992
967
}
993
-
994
- regmap_exit (map );
995
968
}
996
969
997
970
static void cache_drop (struct kunit * test )
@@ -1032,8 +1005,6 @@ static void cache_drop(struct kunit *test)
1032
1005
for (i = 0 ; i < BLOCK_TEST_SIZE ; i ++ )
1033
1006
KUNIT_EXPECT_EQ (test , data -> read [param -> from_reg + i ], i >= 3 && i <= 5 );
1034
1007
KUNIT_EXPECT_MEMEQ (test , & data -> vals [param -> from_reg ], rval , sizeof (rval ));
1035
-
1036
- regmap_exit (map );
1037
1008
}
1038
1009
1039
1010
static void cache_drop_all_and_sync_marked_dirty (struct kunit * test )
@@ -1075,8 +1046,6 @@ static void cache_drop_all_and_sync_marked_dirty(struct kunit *test)
1075
1046
KUNIT_EXPECT_EQ (test , 0 , regcache_sync (map ));
1076
1047
for (i = 0 ; i <= config .max_register ; i ++ )
1077
1048
KUNIT_EXPECT_FALSE (test , data -> written [i ]);
1078
-
1079
- regmap_exit (map );
1080
1049
}
1081
1050
1082
1051
static void cache_drop_all_and_sync_no_defaults (struct kunit * test )
@@ -1119,8 +1088,6 @@ static void cache_drop_all_and_sync_no_defaults(struct kunit *test)
1119
1088
KUNIT_EXPECT_EQ (test , 0 , regcache_sync (map ));
1120
1089
for (i = 0 ; i <= config .max_register ; i ++ )
1121
1090
KUNIT_EXPECT_FALSE (test , data -> written [i ]);
1122
-
1123
- regmap_exit (map );
1124
1091
}
1125
1092
1126
1093
static void cache_drop_all_and_sync_has_defaults (struct kunit * test )
@@ -1164,8 +1131,6 @@ static void cache_drop_all_and_sync_has_defaults(struct kunit *test)
1164
1131
KUNIT_EXPECT_EQ (test , 0 , regcache_sync (map ));
1165
1132
for (i = 0 ; i <= config .max_register ; i ++ )
1166
1133
KUNIT_EXPECT_FALSE (test , data -> written [i ]);
1167
-
1168
- regmap_exit (map );
1169
1134
}
1170
1135
1171
1136
static void cache_present (struct kunit * test )
@@ -1202,8 +1167,6 @@ static void cache_present(struct kunit *test)
1202
1167
/* Now everything should be cached */
1203
1168
for (i = 0 ; i < BLOCK_TEST_SIZE ; i ++ )
1204
1169
KUNIT_ASSERT_TRUE (test , regcache_reg_cached (map , param -> from_reg + i ));
1205
-
1206
- regmap_exit (map );
1207
1170
}
1208
1171
1209
1172
/* Check that caching the window register works with sync */
@@ -1350,6 +1313,8 @@ static struct regmap *gen_raw_regmap(struct kunit *test,
1350
1313
if (IS_ERR (ret )) {
1351
1314
kfree (buf );
1352
1315
kfree (* data );
1316
+ } else {
1317
+ kunit_add_action (test , regmap_exit_action , ret );
1353
1318
}
1354
1319
1355
1320
return ret ;
@@ -1375,8 +1340,6 @@ static void raw_read_defaults_single(struct kunit *test)
1375
1340
KUNIT_EXPECT_EQ (test , 0 , regmap_read (map , i , & rval ));
1376
1341
KUNIT_EXPECT_EQ (test , config .reg_defaults [i ].def , rval );
1377
1342
}
1378
-
1379
- regmap_exit (map );
1380
1343
}
1381
1344
1382
1345
static void raw_read_defaults (struct kunit * test )
@@ -1414,7 +1377,6 @@ static void raw_read_defaults(struct kunit *test)
1414
1377
}
1415
1378
1416
1379
kfree (rval );
1417
- regmap_exit (map );
1418
1380
}
1419
1381
1420
1382
static void raw_write_read_single (struct kunit * test )
@@ -1438,8 +1400,6 @@ static void raw_write_read_single(struct kunit *test)
1438
1400
KUNIT_EXPECT_EQ (test , 0 , regmap_write (map , 0 , val ));
1439
1401
KUNIT_EXPECT_EQ (test , 0 , regmap_read (map , 0 , & rval ));
1440
1402
KUNIT_EXPECT_EQ (test , val , rval );
1441
-
1442
- regmap_exit (map );
1443
1403
}
1444
1404
1445
1405
static void raw_write (struct kunit * test )
@@ -1489,8 +1449,6 @@ static void raw_write(struct kunit *test)
1489
1449
1490
1450
/* The values should appear in the "hardware" */
1491
1451
KUNIT_EXPECT_MEMEQ (test , & hw_buf [2 ], val , sizeof (val ));
1492
-
1493
- regmap_exit (map );
1494
1452
}
1495
1453
1496
1454
static bool reg_zero (struct device * dev , unsigned int reg )
@@ -1548,8 +1506,6 @@ static void raw_noinc_write(struct kunit *test)
1548
1506
/* Make sure we didn't touch the register after the noinc register */
1549
1507
KUNIT_EXPECT_EQ (test , 0 , regmap_read (map , 1 , & val ));
1550
1508
KUNIT_ASSERT_EQ (test , val_test , val );
1551
-
1552
- regmap_exit (map );
1553
1509
}
1554
1510
1555
1511
static void raw_sync (struct kunit * test )
@@ -1625,8 +1581,6 @@ static void raw_sync(struct kunit *test)
1625
1581
1626
1582
/* The values should now appear in the "hardware" */
1627
1583
KUNIT_EXPECT_MEMEQ (test , & hw_buf [2 ], & val [0 ], sizeof (val ));
1628
-
1629
- regmap_exit (map );
1630
1584
}
1631
1585
1632
1586
static void raw_ranges (struct kunit * test )
@@ -1689,8 +1643,6 @@ static void raw_ranges(struct kunit *test)
1689
1643
KUNIT_EXPECT_FALSE (test , data -> read [i ]);
1690
1644
KUNIT_EXPECT_FALSE (test , data -> written [i ]);
1691
1645
}
1692
-
1693
- regmap_exit (map );
1694
1646
}
1695
1647
1696
1648
static struct kunit_case regmap_test_cases [] = {
0 commit comments