Message ID | 20240605-misc-tsd-v2-5-12479432c90f@cherry.de |
---|---|
State | Superseded |
Delegated to: | Kever Yang |
Headers | show |
Series | rockchip: display PMIC variant properly + misc fixes for Theobroma boards | expand |
On 2024/6/5 23:56, Quentin Schulz wrote: > From: Quentin Schulz <quentin.schulz@cherry.de> > > The ID of the PMIC is stored in the 2 16b registers but the only part > that matters right now is the 3 MSB, which make the 3 digits (in hex) of > the part number. > > Right now, only RK808 was properly displayed, with this all currently > supported PMICs should display the proper part number. > > Additionally, when the PMIC variant is not found, print that value > instead of the masked unshifted value as all PMICs we support for now > have their LSB ignored to represent the actual part number. > > Tested on RK806 (RK3588 Jaguar), RK808 (RK3399 Puma) and RK809 (PX30 > Ringneck). > > Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de> Reviewed-by: Kever Yang <kever.yang@rock-chips.com> Thanks, - Kever > --- > drivers/power/pmic/rk8xx.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/drivers/power/pmic/rk8xx.c b/drivers/power/pmic/rk8xx.c > index 12ff26a0855..4d07e630579 100644 > --- a/drivers/power/pmic/rk8xx.c > +++ b/drivers/power/pmic/rk8xx.c > @@ -277,10 +277,9 @@ static int rk8xx_probe(struct udevice *dev) > return ret; > > priv->variant = ((msb << 8) | lsb) & RK8XX_ID_MSK; > - show_variant = priv->variant; > + show_variant = bitfield_extract_by_mask(priv->variant, RK8XX_ID_MSK); > switch (priv->variant) { > case RK808_ID: > - show_variant = 0x808; /* RK808 hardware ID is 0 */ > break; > case RK805_ID: > case RK816_ID: > @@ -311,7 +310,7 @@ static int rk8xx_probe(struct udevice *dev) > init_data_num = ARRAY_SIZE(rk806_init_reg); > break; > default: > - printf("Unknown PMIC: RK%x!!\n", priv->variant); > + printf("Unknown PMIC: RK%x!!\n", show_variant); > return -EINVAL; > } > >
On 2024-06-05 17:56, Quentin Schulz wrote: > From: Quentin Schulz <quentin.schulz@cherry.de> > > The ID of the PMIC is stored in the 2 16b registers but the only part > that matters right now is the 3 MSB, which make the 3 digits (in hex) > of > the part number. > > Right now, only RK808 was properly displayed, with this all currently > supported PMICs should display the proper part number. > > Additionally, when the PMIC variant is not found, print that value > instead of the masked unshifted value as all PMICs we support for now > have their LSB ignored to represent the actual part number. > > Tested on RK806 (RK3588 Jaguar), RK808 (RK3399 Puma) and RK809 (PX30 > Ringneck). > > Signed-off-by: Quentin Schulz <quentin.schulz@cherry.de> Looking good to me. Reviewed-by: Dragan Simic <dsimic@manjaro.org> > --- > drivers/power/pmic/rk8xx.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/drivers/power/pmic/rk8xx.c b/drivers/power/pmic/rk8xx.c > index 12ff26a0855..4d07e630579 100644 > --- a/drivers/power/pmic/rk8xx.c > +++ b/drivers/power/pmic/rk8xx.c > @@ -277,10 +277,9 @@ static int rk8xx_probe(struct udevice *dev) > return ret; > > priv->variant = ((msb << 8) | lsb) & RK8XX_ID_MSK; > - show_variant = priv->variant; > + show_variant = bitfield_extract_by_mask(priv->variant, RK8XX_ID_MSK); > switch (priv->variant) { > case RK808_ID: > - show_variant = 0x808; /* RK808 hardware ID is 0 */ > break; > case RK805_ID: > case RK816_ID: > @@ -311,7 +310,7 @@ static int rk8xx_probe(struct udevice *dev) > init_data_num = ARRAY_SIZE(rk806_init_reg); > break; > default: > - printf("Unknown PMIC: RK%x!!\n", priv->variant); > + printf("Unknown PMIC: RK%x!!\n", show_variant); > return -EINVAL; > }
diff --git a/drivers/power/pmic/rk8xx.c b/drivers/power/pmic/rk8xx.c index 12ff26a0855..4d07e630579 100644 --- a/drivers/power/pmic/rk8xx.c +++ b/drivers/power/pmic/rk8xx.c @@ -277,10 +277,9 @@ static int rk8xx_probe(struct udevice *dev) return ret; priv->variant = ((msb << 8) | lsb) & RK8XX_ID_MSK; - show_variant = priv->variant; + show_variant = bitfield_extract_by_mask(priv->variant, RK8XX_ID_MSK); switch (priv->variant) { case RK808_ID: - show_variant = 0x808; /* RK808 hardware ID is 0 */ break; case RK805_ID: case RK816_ID: @@ -311,7 +310,7 @@ static int rk8xx_probe(struct udevice *dev) init_data_num = ARRAY_SIZE(rk806_init_reg); break; default: - printf("Unknown PMIC: RK%x!!\n", priv->variant); + printf("Unknown PMIC: RK%x!!\n", show_variant); return -EINVAL; }