@@ -3506,54 +3506,87 @@ static struct clk_regmap *const meson8b_clk_regmaps[] = {
3506
3506
static const struct meson8b_clk_reset_line {
3507
3507
u32 reg ;
3508
3508
u8 bit_idx ;
3509
+ bool active_low ;
3509
3510
} meson8b_clk_reset_bits [] = {
3510
3511
[CLKC_RESET_L2_CACHE_SOFT_RESET ] = {
3511
- .reg = HHI_SYS_CPU_CLK_CNTL0 , .bit_idx = 30
3512
+ .reg = HHI_SYS_CPU_CLK_CNTL0 ,
3513
+ .bit_idx = 30 ,
3514
+ .active_low = false,
3512
3515
},
3513
3516
[CLKC_RESET_AXI_64_TO_128_BRIDGE_A5_SOFT_RESET ] = {
3514
- .reg = HHI_SYS_CPU_CLK_CNTL0 , .bit_idx = 29
3517
+ .reg = HHI_SYS_CPU_CLK_CNTL0 ,
3518
+ .bit_idx = 29 ,
3519
+ .active_low = false,
3515
3520
},
3516
3521
[CLKC_RESET_SCU_SOFT_RESET ] = {
3517
- .reg = HHI_SYS_CPU_CLK_CNTL0 , .bit_idx = 28
3522
+ .reg = HHI_SYS_CPU_CLK_CNTL0 ,
3523
+ .bit_idx = 28 ,
3524
+ .active_low = false,
3518
3525
},
3519
3526
[CLKC_RESET_CPU3_SOFT_RESET ] = {
3520
- .reg = HHI_SYS_CPU_CLK_CNTL0 , .bit_idx = 27
3527
+ .reg = HHI_SYS_CPU_CLK_CNTL0 ,
3528
+ .bit_idx = 27 ,
3529
+ .active_low = false,
3521
3530
},
3522
3531
[CLKC_RESET_CPU2_SOFT_RESET ] = {
3523
- .reg = HHI_SYS_CPU_CLK_CNTL0 , .bit_idx = 26
3532
+ .reg = HHI_SYS_CPU_CLK_CNTL0 ,
3533
+ .bit_idx = 26 ,
3534
+ .active_low = false,
3524
3535
},
3525
3536
[CLKC_RESET_CPU1_SOFT_RESET ] = {
3526
- .reg = HHI_SYS_CPU_CLK_CNTL0 , .bit_idx = 25
3537
+ .reg = HHI_SYS_CPU_CLK_CNTL0 ,
3538
+ .bit_idx = 25 ,
3539
+ .active_low = false,
3527
3540
},
3528
3541
[CLKC_RESET_CPU0_SOFT_RESET ] = {
3529
- .reg = HHI_SYS_CPU_CLK_CNTL0 , .bit_idx = 24
3542
+ .reg = HHI_SYS_CPU_CLK_CNTL0 ,
3543
+ .bit_idx = 24 ,
3544
+ .active_low = false,
3530
3545
},
3531
3546
[CLKC_RESET_A5_GLOBAL_RESET ] = {
3532
- .reg = HHI_SYS_CPU_CLK_CNTL0 , .bit_idx = 18
3547
+ .reg = HHI_SYS_CPU_CLK_CNTL0 ,
3548
+ .bit_idx = 18 ,
3549
+ .active_low = false,
3533
3550
},
3534
3551
[CLKC_RESET_A5_AXI_SOFT_RESET ] = {
3535
- .reg = HHI_SYS_CPU_CLK_CNTL0 , .bit_idx = 17
3552
+ .reg = HHI_SYS_CPU_CLK_CNTL0 ,
3553
+ .bit_idx = 17 ,
3554
+ .active_low = false,
3536
3555
},
3537
3556
[CLKC_RESET_A5_ABP_SOFT_RESET ] = {
3538
- .reg = HHI_SYS_CPU_CLK_CNTL0 , .bit_idx = 16
3557
+ .reg = HHI_SYS_CPU_CLK_CNTL0 ,
3558
+ .bit_idx = 16 ,
3559
+ .active_low = false,
3539
3560
},
3540
3561
[CLKC_RESET_AXI_64_TO_128_BRIDGE_MMC_SOFT_RESET ] = {
3541
- .reg = HHI_SYS_CPU_CLK_CNTL1 , .bit_idx = 30
3562
+ .reg = HHI_SYS_CPU_CLK_CNTL1 ,
3563
+ .bit_idx = 30 ,
3564
+ .active_low = false,
3542
3565
},
3543
3566
[CLKC_RESET_VID_CLK_CNTL_SOFT_RESET ] = {
3544
- .reg = HHI_VID_CLK_CNTL , .bit_idx = 15
3567
+ .reg = HHI_VID_CLK_CNTL ,
3568
+ .bit_idx = 15 ,
3569
+ .active_low = false,
3545
3570
},
3546
3571
[CLKC_RESET_VID_DIVIDER_CNTL_SOFT_RESET_POST ] = {
3547
- .reg = HHI_VID_DIVIDER_CNTL , .bit_idx = 7
3572
+ .reg = HHI_VID_DIVIDER_CNTL ,
3573
+ .bit_idx = 7 ,
3574
+ .active_low = false,
3548
3575
},
3549
3576
[CLKC_RESET_VID_DIVIDER_CNTL_SOFT_RESET_PRE ] = {
3550
- .reg = HHI_VID_DIVIDER_CNTL , .bit_idx = 3
3577
+ .reg = HHI_VID_DIVIDER_CNTL ,
3578
+ .bit_idx = 3 ,
3579
+ .active_low = false,
3551
3580
},
3552
3581
[CLKC_RESET_VID_DIVIDER_CNTL_RESET_N_POST ] = {
3553
- .reg = HHI_VID_DIVIDER_CNTL , .bit_idx = 1
3582
+ .reg = HHI_VID_DIVIDER_CNTL ,
3583
+ .bit_idx = 1 ,
3584
+ .active_low = true,
3554
3585
},
3555
3586
[CLKC_RESET_VID_DIVIDER_CNTL_RESET_N_PRE ] = {
3556
- .reg = HHI_VID_DIVIDER_CNTL , .bit_idx = 0
3587
+ .reg = HHI_VID_DIVIDER_CNTL ,
3588
+ .bit_idx = 0 ,
3589
+ .active_low = true,
3557
3590
},
3558
3591
};
3559
3592
@@ -3562,22 +3595,22 @@ static int meson8b_clk_reset_update(struct reset_controller_dev *rcdev,
3562
3595
{
3563
3596
struct meson8b_clk_reset * meson8b_clk_reset =
3564
3597
container_of (rcdev , struct meson8b_clk_reset , reset );
3565
- unsigned long flags ;
3566
3598
const struct meson8b_clk_reset_line * reset ;
3599
+ unsigned int value = 0 ;
3600
+ unsigned long flags ;
3567
3601
3568
3602
if (id >= ARRAY_SIZE (meson8b_clk_reset_bits ))
3569
3603
return - EINVAL ;
3570
3604
3571
3605
reset = & meson8b_clk_reset_bits [id ];
3572
3606
3607
+ if (assert != reset -> active_low )
3608
+ value = BIT (reset -> bit_idx );
3609
+
3573
3610
spin_lock_irqsave (& meson_clk_lock , flags );
3574
3611
3575
- if (assert )
3576
- regmap_update_bits (meson8b_clk_reset -> regmap , reset -> reg ,
3577
- BIT (reset -> bit_idx ), BIT (reset -> bit_idx ));
3578
- else
3579
- regmap_update_bits (meson8b_clk_reset -> regmap , reset -> reg ,
3580
- BIT (reset -> bit_idx ), 0 );
3612
+ regmap_update_bits (meson8b_clk_reset -> regmap , reset -> reg ,
3613
+ BIT (reset -> bit_idx ), value );
3581
3614
3582
3615
spin_unlock_irqrestore (& meson_clk_lock , flags );
3583
3616
0 commit comments