@@ -833,6 +833,45 @@ static void cache_drop(struct kunit *test)
833833 regmap_exit (map );
834834}
835835
836+ static void cache_present (struct kunit * test )
837+ {
838+ struct regcache_types * t = (struct regcache_types * )test -> param_value ;
839+ struct regmap * map ;
840+ struct regmap_config config ;
841+ struct regmap_ram_data * data ;
842+ unsigned int val ;
843+ int i ;
844+
845+ config = test_regmap_config ;
846+ config .cache_type = t -> type ;
847+
848+ map = gen_regmap (& config , & data );
849+ KUNIT_ASSERT_FALSE (test , IS_ERR (map ));
850+ if (IS_ERR (map ))
851+ return ;
852+
853+ for (i = 0 ; i < BLOCK_TEST_SIZE ; i ++ )
854+ data -> read [i ] = false;
855+
856+ /* No defaults so no registers cached. */
857+ for (i = 0 ; i < BLOCK_TEST_SIZE ; i ++ )
858+ KUNIT_ASSERT_FALSE (test , regcache_reg_cached (map , i ));
859+
860+ /* We didn't trigger any reads */
861+ for (i = 0 ; i < BLOCK_TEST_SIZE ; i ++ )
862+ KUNIT_ASSERT_FALSE (test , data -> read [i ]);
863+
864+ /* Fill the cache */
865+ for (i = 0 ; i < BLOCK_TEST_SIZE ; i ++ )
866+ KUNIT_EXPECT_EQ (test , 0 , regmap_read (map , i , & val ));
867+
868+ /* Now everything should be cached */
869+ for (i = 0 ; i < BLOCK_TEST_SIZE ; i ++ )
870+ KUNIT_ASSERT_TRUE (test , regcache_reg_cached (map , i ));
871+
872+ regmap_exit (map );
873+ }
874+
836875struct raw_test_types {
837876 const char * name ;
838877
@@ -1172,6 +1211,7 @@ static struct kunit_case regmap_test_cases[] = {
11721211 KUNIT_CASE_PARAM (cache_sync_readonly , real_cache_types_gen_params ),
11731212 KUNIT_CASE_PARAM (cache_sync_patch , real_cache_types_gen_params ),
11741213 KUNIT_CASE_PARAM (cache_drop , sparse_cache_types_gen_params ),
1214+ KUNIT_CASE_PARAM (cache_present , sparse_cache_types_gen_params ),
11751215
11761216 KUNIT_CASE_PARAM (raw_read_defaults_single , raw_test_types_gen_params ),
11771217 KUNIT_CASE_PARAM (raw_read_defaults , raw_test_types_gen_params ),
0 commit comments