@@ -2434,18 +2434,18 @@ static int vop2_find_rgb_encoder(struct vop2 *vop2)
24342434 return - ENOENT ;
24352435}
24362436
2437- static int vop2_cluster_init (struct vop2_win * win )
2437+ static int vop2_regmap_init (struct vop2_win * win , const struct reg_field * regs ,
2438+ int nr_regs )
24382439{
24392440 struct vop2 * vop2 = win -> vop2 ;
24402441 int i ;
24412442
2442- for (i = 0 ; i < vop2 -> data -> nr_cluster_regs ; i ++ ) {
2443+ for (i = 0 ; i < nr_regs ; i ++ ) {
24432444 const struct reg_field field = {
2444- .reg = (vop2 -> data -> cluster_reg [i ].reg != 0xffffffff ) ?
2445- vop2 -> data -> cluster_reg [i ].reg + win -> offset :
2446- vop2 -> data -> cluster_reg [i ].reg ,
2447- .lsb = vop2 -> data -> cluster_reg [i ].lsb ,
2448- .msb = vop2 -> data -> cluster_reg [i ].msb
2445+ .reg = (regs [i ].reg != 0xffffffff ) ?
2446+ regs [i ].reg + win -> offset : regs [i ].reg ,
2447+ .lsb = regs [i ].lsb ,
2448+ .msb = regs [i ].msb
24492449 };
24502450
24512451 win -> reg [i ] = devm_regmap_field_alloc (vop2 -> dev , vop2 -> map , field );
@@ -2456,28 +2456,6 @@ static int vop2_cluster_init(struct vop2_win *win)
24562456 return 0 ;
24572457};
24582458
2459- static int vop2_esmart_init (struct vop2_win * win )
2460- {
2461- struct vop2 * vop2 = win -> vop2 ;
2462- int i ;
2463-
2464- for (i = 0 ; i < vop2 -> data -> nr_smart_regs ; i ++ ) {
2465- const struct reg_field field = {
2466- .reg = (vop2 -> data -> smart_reg [i ].reg != 0xffffffff ) ?
2467- vop2 -> data -> smart_reg [i ].reg + win -> offset :
2468- vop2 -> data -> smart_reg [i ].reg ,
2469- .lsb = vop2 -> data -> smart_reg [i ].lsb ,
2470- .msb = vop2 -> data -> smart_reg [i ].msb
2471- };
2472-
2473- win -> reg [i ] = devm_regmap_field_alloc (vop2 -> dev , vop2 -> map , field );
2474- if (IS_ERR (win -> reg [i ]))
2475- return PTR_ERR (win -> reg [i ]);
2476- }
2477-
2478- return 0 ;
2479- }
2480-
24812459static int vop2_win_init (struct vop2 * vop2 )
24822460{
24832461 const struct vop2_data * vop2_data = vop2 -> data ;
@@ -2494,9 +2472,11 @@ static int vop2_win_init(struct vop2 *vop2)
24942472 win -> win_id = i ;
24952473 win -> vop2 = vop2 ;
24962474 if (vop2_cluster_window (win ))
2497- ret = vop2_cluster_init (win );
2475+ ret = vop2_regmap_init (win , vop2 -> data -> cluster_reg ,
2476+ vop2 -> data -> nr_cluster_regs );
24982477 else
2499- ret = vop2_esmart_init (win );
2478+ ret = vop2_regmap_init (win , vop2 -> data -> smart_reg ,
2479+ vop2 -> data -> nr_smart_regs );
25002480 if (ret )
25012481 return ret ;
25022482 }
0 commit comments