Expand Up
@@ -253,11 +253,18 @@ static int rk3568_set_pull(struct rockchip_pin_bank *bank,
return regmap_update_bits (regmap , reg , rmask , data );
}
#define GRF_GPIO1C5_DS 0x0840
#define GRF_GPIO2A2_DS 0x0844
#define GRF_GPIO2B0_DS 0x0848
#define GRF_GPIO3A0_DS 0x084c
#define GRF_GPIO3A6_DS 0x0850
#define GRF_GPIO4A0_DS 0x0854
static int rk3568_set_drive (struct rockchip_pin_bank * bank ,
int pin_num , int strength )
{
struct regmap * regmap ;
int reg ;
int reg , ret ;
u32 data , rmask ;
u8 bit ;
int drv = (1 << (strength + 1 )) - 1 ;
Expand All
@@ -269,6 +276,29 @@ static int rk3568_set_drive(struct rockchip_pin_bank *bank,
rmask = data | (data >> 16 );
data |= (drv << bit );
ret = regmap_update_bits (regmap , reg , rmask , data );
if (ret )
return ret ;
if (bank -> bank_num == 1 && pin_num == 21 )
reg = GRF_GPIO1C5_DS ;
else if (bank -> bank_num == 2 && pin_num == 2 )
reg = GRF_GPIO2A2_DS ;
else if (bank -> bank_num == 2 && pin_num == 8 )
reg = GRF_GPIO2B0_DS ;
else if (bank -> bank_num == 3 && pin_num == 0 )
reg = GRF_GPIO3A0_DS ;
else if (bank -> bank_num == 3 && pin_num == 6 )
reg = GRF_GPIO3A6_DS ;
else if (bank -> bank_num == 4 && pin_num == 0 )
reg = GRF_GPIO4A0_DS ;
else
return 0 ;
data = ((1 << RK3568_DRV_BITS_PER_PIN ) - 1 ) << 16 ;
rmask = data | (data >> 16 );
data |= drv >> 6 ;
return regmap_update_bits (regmap , reg , rmask , data );
}
Expand Down