On Fri, Nov 03, 2023 at 04:27:12PM +0530, Atul Dhudase wrote: > While programming dis_cap_alloc and retain_on_pc, set a bit > corresponding to a specific SCID without disturbing the > previously configured bits. > As far as I can see, the only invocation of _qcom_llcc_cfg_program() comes from qcom_llcc_cfg_program(), which is only called once, from qcom_llcc_probe(), and here also seems to only be the single write to these two registers. This implies that "the previously configured bits" would be some unknown configuration provided to us either from the bootloader or by reset of the hardware. As such this changes the value of the two registers from being known, to having 31 unknown bits. I'm not saying that the change is wrong, but you're altering the behavior of every platform except SDM845. As such, I want the commit message to provide an actual problem description, and mention the fact that you're changing the logic to retain the state prior to Linux. Regards, Bjorn > Fixes: c14e64b46944 ("soc: qcom: llcc: Support chipsets that can write to llcc") > Signed-off-by: Atul Dhudase <quic_adhudase@xxxxxxxxxxx> > --- > drivers/soc/qcom/llcc-qcom.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/soc/qcom/llcc-qcom.c b/drivers/soc/qcom/llcc-qcom.c > index 674abd0d6700..509d972c1bd9 100644 > --- a/drivers/soc/qcom/llcc-qcom.c > +++ b/drivers/soc/qcom/llcc-qcom.c > @@ -941,15 +941,15 @@ static int _qcom_llcc_cfg_program(const struct llcc_slice_config *config, > u32 disable_cap_alloc, retain_pc; > > disable_cap_alloc = config->dis_cap_alloc << config->slice_id; > - ret = regmap_write(drv_data->bcast_regmap, > - LLCC_TRP_SCID_DIS_CAP_ALLOC, disable_cap_alloc); > + ret = regmap_update_bits(drv_data->bcast_regmap, LLCC_TRP_SCID_DIS_CAP_ALLOC, > + BIT(config->slice_id), disable_cap_alloc); > if (ret) > return ret; > > if (drv_data->version < LLCC_VERSION_4_1_0_0) { > retain_pc = config->retain_on_pc << config->slice_id; > - ret = regmap_write(drv_data->bcast_regmap, > - LLCC_TRP_PCB_ACT, retain_pc); > + ret = regmap_update_bits(drv_data->bcast_regmap, LLCC_TRP_PCB_ACT, > + BIT(config->slice_id), retain_pc); > if (ret) > return ret; > } > -- > 2.25.1 >