Message ID | 20240903-qcs8300_llcc_driver-v1-3-228659bdf067@quicinc.com (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | soc: qcom: llcc: Add llcc support for the QCS8300 platform | expand |
On Tue, Sep 03, 2024 at 02:21:31PM +0800, Jingyi Wang wrote: > Use "num-banks" property to indicate the actual num of banks for > errata. > > Signed-off-by: Jingyi Wang <quic_jingyw@quicinc.com> > --- > drivers/soc/qcom/llcc-qcom.c | 15 ++++++++++----- > 1 file changed, 10 insertions(+), 5 deletions(-) > > diff --git a/drivers/soc/qcom/llcc-qcom.c b/drivers/soc/qcom/llcc-qcom.c > index 8fa4ffd3a9b5..3fb45e625d82 100644 > --- a/drivers/soc/qcom/llcc-qcom.c > +++ b/drivers/soc/qcom/llcc-qcom.c > @@ -1275,12 +1275,17 @@ static int qcom_llcc_probe(struct platform_device *pdev) > goto err; > cfg = &cfgs->llcc_config[cfg_index]; > > - ret = regmap_read(regmap, cfg->reg_offset[LLCC_COMMON_STATUS0], &num_banks); > - if (ret) > - goto err; > + if (unlikely(!of_property_read_u32(dev->of_node, "num-banks", &num_banks))) { Drop unlikely. > + /* errata: get num of llcc banks. */ Huh? What? > + } else { > + ret = regmap_read(regmap, cfg->reg_offset[LLCC_COMMON_STATUS0], &num_banks); > + if (ret) > + goto err; Sorry, but what? You can read it from hardware, but you add DT property? No, that's just wrong. Why commit msg explains nothing about reasons and problem you are solving? Best regards, Krzysztof
On 9/3/2024 3:13 PM, Krzysztof Kozlowski wrote: > On Tue, Sep 03, 2024 at 02:21:31PM +0800, Jingyi Wang wrote: >> Use "num-banks" property to indicate the actual num of banks for >> errata. >> >> Signed-off-by: Jingyi Wang <quic_jingyw@quicinc.com> >> --- >> drivers/soc/qcom/llcc-qcom.c | 15 ++++++++++----- >> 1 file changed, 10 insertions(+), 5 deletions(-) >> >> diff --git a/drivers/soc/qcom/llcc-qcom.c b/drivers/soc/qcom/llcc-qcom.c >> index 8fa4ffd3a9b5..3fb45e625d82 100644 >> --- a/drivers/soc/qcom/llcc-qcom.c >> +++ b/drivers/soc/qcom/llcc-qcom.c >> @@ -1275,12 +1275,17 @@ static int qcom_llcc_probe(struct platform_device *pdev) >> goto err; >> cfg = &cfgs->llcc_config[cfg_index]; >> >> - ret = regmap_read(regmap, cfg->reg_offset[LLCC_COMMON_STATUS0], &num_banks); >> - if (ret) >> - goto err; >> + if (unlikely(!of_property_read_u32(dev->of_node, "num-banks", &num_banks))) { > > Drop unlikely. > >> + /* errata: get num of llcc banks. */ > > Huh? What? > >> + } else { >> + ret = regmap_read(regmap, cfg->reg_offset[LLCC_COMMON_STATUS0], &num_banks); >> + if (ret) >> + goto err; > > Sorry, but what? You can read it from hardware, but you add DT property? > No, that's just wrong. Why commit msg explains nothing about reasons and > problem you are solving? > we need the property because there is hardware errata on this SoC, regmap_read get wrong num. > Best regards, > Krzysztof > Thanks, Jingyi
On 03/09/2024 09:17, Jingyi Wang wrote: > > > On 9/3/2024 3:13 PM, Krzysztof Kozlowski wrote: >> On Tue, Sep 03, 2024 at 02:21:31PM +0800, Jingyi Wang wrote: >>> Use "num-banks" property to indicate the actual num of banks for >>> errata. >>> >>> Signed-off-by: Jingyi Wang <quic_jingyw@quicinc.com> >>> --- >>> drivers/soc/qcom/llcc-qcom.c | 15 ++++++++++----- >>> 1 file changed, 10 insertions(+), 5 deletions(-) >>> >>> diff --git a/drivers/soc/qcom/llcc-qcom.c b/drivers/soc/qcom/llcc-qcom.c >>> index 8fa4ffd3a9b5..3fb45e625d82 100644 >>> --- a/drivers/soc/qcom/llcc-qcom.c >>> +++ b/drivers/soc/qcom/llcc-qcom.c >>> @@ -1275,12 +1275,17 @@ static int qcom_llcc_probe(struct platform_device *pdev) >>> goto err; >>> cfg = &cfgs->llcc_config[cfg_index]; >>> >>> - ret = regmap_read(regmap, cfg->reg_offset[LLCC_COMMON_STATUS0], &num_banks); >>> - if (ret) >>> - goto err; >>> + if (unlikely(!of_property_read_u32(dev->of_node, "num-banks", &num_banks))) { >> >> Drop unlikely. >> >>> + /* errata: get num of llcc banks. */ >> >> Huh? What? >> >>> + } else { >>> + ret = regmap_read(regmap, cfg->reg_offset[LLCC_COMMON_STATUS0], &num_banks); >>> + if (ret) >>> + goto err; >> >> Sorry, but what? You can read it from hardware, but you add DT property? >> No, that's just wrong. Why commit msg explains nothing about reasons and >> problem you are solving? >> > we need the property because there is hardware errata on this SoC, regmap_read get wrong num. That's what compatible is for. Anyway, you did not explain the problem but just send some code. All your patches in this and all future submissions must explain why you are doing this. What you are fixing, why you are introducing something. Best regards, Krzysztof
On 9/3/2024 3:19 PM, Krzysztof Kozlowski wrote: > On 03/09/2024 09:17, Jingyi Wang wrote: >> >> >> On 9/3/2024 3:13 PM, Krzysztof Kozlowski wrote: >>> On Tue, Sep 03, 2024 at 02:21:31PM +0800, Jingyi Wang wrote: >>>> Use "num-banks" property to indicate the actual num of banks for >>>> errata. >>>> >>>> Signed-off-by: Jingyi Wang <quic_jingyw@quicinc.com> >>>> --- >>>> drivers/soc/qcom/llcc-qcom.c | 15 ++++++++++----- >>>> 1 file changed, 10 insertions(+), 5 deletions(-) >>>> >>>> diff --git a/drivers/soc/qcom/llcc-qcom.c b/drivers/soc/qcom/llcc-qcom.c >>>> index 8fa4ffd3a9b5..3fb45e625d82 100644 >>>> --- a/drivers/soc/qcom/llcc-qcom.c >>>> +++ b/drivers/soc/qcom/llcc-qcom.c >>>> @@ -1275,12 +1275,17 @@ static int qcom_llcc_probe(struct platform_device *pdev) >>>> goto err; >>>> cfg = &cfgs->llcc_config[cfg_index]; >>>> >>>> - ret = regmap_read(regmap, cfg->reg_offset[LLCC_COMMON_STATUS0], &num_banks); >>>> - if (ret) >>>> - goto err; >>>> + if (unlikely(!of_property_read_u32(dev->of_node, "num-banks", &num_banks))) { >>> >>> Drop unlikely. >>> >>>> + /* errata: get num of llcc banks. */ >>> >>> Huh? What? >>> >>>> + } else { >>>> + ret = regmap_read(regmap, cfg->reg_offset[LLCC_COMMON_STATUS0], &num_banks); >>>> + if (ret) >>>> + goto err; >>> >>> Sorry, but what? You can read it from hardware, but you add DT property? >>> No, that's just wrong. Why commit msg explains nothing about reasons and >>> problem you are solving? >>> >> we need the property because there is hardware errata on this SoC, regmap_read get wrong num. > > That's what compatible is for. > > Anyway, you did not explain the problem but just send some code. All > your patches in this and all future submissions must explain why you are > doing this. What you are fixing, why you are introducing something. > Sure, thanks for remind. > Best regards, > Krzysztof > Thanks, Jingyi
On 3.09.2024 8:21 AM, Jingyi Wang wrote: > Use "num-banks" property to indicate the actual num of banks for > errata. > > Signed-off-by: Jingyi Wang <quic_jingyw@quicinc.com> > --- > drivers/soc/qcom/llcc-qcom.c | 15 ++++++++++----- > 1 file changed, 10 insertions(+), 5 deletions(-) > > diff --git a/drivers/soc/qcom/llcc-qcom.c b/drivers/soc/qcom/llcc-qcom.c > index 8fa4ffd3a9b5..3fb45e625d82 100644 > --- a/drivers/soc/qcom/llcc-qcom.c > +++ b/drivers/soc/qcom/llcc-qcom.c > @@ -1275,12 +1275,17 @@ static int qcom_llcc_probe(struct platform_device *pdev) > goto err; > cfg = &cfgs->llcc_config[cfg_index]; > > - ret = regmap_read(regmap, cfg->reg_offset[LLCC_COMMON_STATUS0], &num_banks); > - if (ret) > - goto err; > + if (unlikely(!of_property_read_u32(dev->of_node, "num-banks", &num_banks))) { > + /* errata: get num of llcc banks. */ > + } else { > + ret = regmap_read(regmap, cfg->reg_offset[LLCC_COMMON_STATUS0], &num_banks); > + if (ret) > + goto err; > + > + num_banks &= LLCC_LB_CNT_MASK; > + num_banks >>= LLCC_LB_CNT_SHIFT; > + } Is num-banks going to be populated by the bootloader, or hardcoded? If the latter, we may just do so in the driver, hoping no more SoCs have this erratum.. Konrad
Hi Konrad, On 9/5/2024 9:29 PM, Konrad Dybcio wrote: > On 3.09.2024 8:21 AM, Jingyi Wang wrote: >> Use "num-banks" property to indicate the actual num of banks for >> errata. >> >> Signed-off-by: Jingyi Wang <quic_jingyw@quicinc.com> >> --- >> drivers/soc/qcom/llcc-qcom.c | 15 ++++++++++----- >> 1 file changed, 10 insertions(+), 5 deletions(-) >> >> diff --git a/drivers/soc/qcom/llcc-qcom.c b/drivers/soc/qcom/llcc-qcom.c >> index 8fa4ffd3a9b5..3fb45e625d82 100644 >> --- a/drivers/soc/qcom/llcc-qcom.c >> +++ b/drivers/soc/qcom/llcc-qcom.c >> @@ -1275,12 +1275,17 @@ static int qcom_llcc_probe(struct platform_device *pdev) >> goto err; >> cfg = &cfgs->llcc_config[cfg_index]; >> >> - ret = regmap_read(regmap, cfg->reg_offset[LLCC_COMMON_STATUS0], &num_banks); >> - if (ret) >> - goto err; >> + if (unlikely(!of_property_read_u32(dev->of_node, "num-banks", &num_banks))) { >> + /* errata: get num of llcc banks. */ >> + } else { >> + ret = regmap_read(regmap, cfg->reg_offset[LLCC_COMMON_STATUS0], &num_banks); >> + if (ret) >> + goto err; >> + >> + num_banks &= LLCC_LB_CNT_MASK; >> + num_banks >>= LLCC_LB_CNT_SHIFT; >> + } > > Is num-banks going to be populated by the bootloader, or hardcoded? > > If the latter, we may just do so in the driver, hoping no more SoCs > have this erratum.. > > Konrad We would like modify that in driver instead of bootloader, so you suggestion is hardcode it in struct like "qcom_llcc_config" instead of adding property in devicetree? Please correct my if there is misunderstanding. Thanks, Jingyi
diff --git a/drivers/soc/qcom/llcc-qcom.c b/drivers/soc/qcom/llcc-qcom.c index 8fa4ffd3a9b5..3fb45e625d82 100644 --- a/drivers/soc/qcom/llcc-qcom.c +++ b/drivers/soc/qcom/llcc-qcom.c @@ -1275,12 +1275,17 @@ static int qcom_llcc_probe(struct platform_device *pdev) goto err; cfg = &cfgs->llcc_config[cfg_index]; - ret = regmap_read(regmap, cfg->reg_offset[LLCC_COMMON_STATUS0], &num_banks); - if (ret) - goto err; + if (unlikely(!of_property_read_u32(dev->of_node, "num-banks", &num_banks))) { + /* errata: get num of llcc banks. */ + } else { + ret = regmap_read(regmap, cfg->reg_offset[LLCC_COMMON_STATUS0], &num_banks); + if (ret) + goto err; + + num_banks &= LLCC_LB_CNT_MASK; + num_banks >>= LLCC_LB_CNT_SHIFT; + } - num_banks &= LLCC_LB_CNT_MASK; - num_banks >>= LLCC_LB_CNT_SHIFT; drv_data->num_banks = num_banks; drv_data->regmaps = devm_kcalloc(dev, num_banks, sizeof(*drv_data->regmaps), GFP_KERNEL);
Use "num-banks" property to indicate the actual num of banks for errata. Signed-off-by: Jingyi Wang <quic_jingyw@quicinc.com> --- drivers/soc/qcom/llcc-qcom.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-)