Re: [PATCH v1 1/1] drm/mediatek/dp: The register is written with the parsed DTS SSC value.
Re: [PATCH v1 1/1] drm/mediatek/dp: The register is written with the parsed DTS SSC value.
On Wed, 2024-04-03 at 16:56 +0200, Krzysztof Kozlowski wrote: Dear Krzysztof: The dp_phy device has already been registered through the mtk_dp_register_phy function in the mtk_dp.c file, so it cannot be redefined in the dts. Avoid using of_get_child_by_name for this purpose. To find the node name, utilize of_find_node_by_name since it has already been registered. Best regards, Liankun Yang External email : Please do not click links or open attachments until you have verified the sender or the content. On 03/04/2024 08:41, Krzysztof Kozlowski wrote: > On 03/04/2024 06:05, Liankun Yang wrote: >> [Description] >> Severe screen flickering has been observed on the external display >> when the DP projection function is used with the market expansion dock. >> > >> +if (!strcmp(mode_name, RG_XTP_GLB_TXPLL_SSC_DELTA_RBR)) { >> +regmap_update_bits(dp_phy->regs, ssc_reg_offset, >> + XTP_GLB_TXPLL_SSC_DELTA_RBR_DEFAULT, read_value); >> +} else if (!strcmp(mode_name, RG_XTP_GLB_TXPLL_SSC_DELTA_HBR)) { >> +read_value = read_value << 16 | 0x; >> +regmap_update_bits(dp_phy->regs, ssc_reg_offset, >> + XTP_GLB_TXPLL_SSC_DELTA_HBR_DEFAULT, read_value); >> +} >> + >> +return 0; >> +} >> + >> +static struct device_node *mtk_dp_get_ssc_node(struct phy *phy, struct >> mtk_dp_phy *dp_phy) >> +{ >> +struct device_node *mode_node = NULL; >> + >> +mode_node = of_find_node_by_name(dp_phy->dev->of_node, SSC_SETTING); > > ?!?! > You have the node, why do you try to find it? > Wait, that was brainfuck from my side or -ENOCOFFEE. Ignore. I still have a question though, where did you document new ABI: dependency on the node name here? Also, why you are not going through direct children - of_get_child_by_name()? Best regards, Krzysztof
Re: [PATCH v1 1/1] drm/mediatek/dp: The register is written with the parsed DTS SSC value.
On 11/04/2024 08:30, LIANKUN YANG (杨连坤) wrote: > On Wed, 2024-04-03 at 16:56 +0200, Krzysztof Kozlowski wrote: >> >> External email : Please do not click links or open attachments until >> you have verified the sender or the content. >> On 03/04/2024 08:41, Krzysztof Kozlowski wrote: >>> On 03/04/2024 06:05, Liankun Yang wrote: [Description] Severe screen flickering has been observed on the external display when the DP projection function is used with the market expansion >> dock. >>> +if (!strcmp(mode_name, RG_XTP_GLB_TXPLL_SSC_DELTA_RBR)) { +regmap_update_bits(dp_phy->regs, ssc_reg_offset, + XTP_GLB_TXPLL_SSC_DELTA_RBR_DEFAULT, read_value); +} else if (!strcmp(mode_name, RG_XTP_GLB_TXPLL_SSC_DELTA_HBR)) { +read_value = read_value << 16 | 0x; +regmap_update_bits(dp_phy->regs, ssc_reg_offset, + XTP_GLB_TXPLL_SSC_DELTA_HBR_DEFAULT, read_value); +} + +return 0; +} + +static struct device_node *mtk_dp_get_ssc_node(struct phy *phy, >> struct mtk_dp_phy *dp_phy) +{ +struct device_node *mode_node = NULL; + +mode_node = of_find_node_by_name(dp_phy->dev->of_node, >> SSC_SETTING); >>> >>> ?!?! >>> You have the node, why do you try to find it? >>> >> >> Wait, that was brainfuck from my side or -ENOCOFFEE. Ignore. >> >> I still have a question though, where did you document new ABI: >> dependency on the node name here? >> >> Also, why you are not going through direct children - >> of_get_child_by_name()? >> >> Best regards, >> Krzysztof >> >> > > Sorry, there is formatting issue in the previous email. > > The dp_phy device has already been registered through the > mtk_dp_register_phy function in the mtk_dp.c file, > so it cannot be redefined in the dts. Avoid using of_get_child_by_name > for this purpose. > > To find the node name, utilize of_find_node_by_name since it has > already been registered. This does not answer my question at all. You speak about driver, I speak about ABI and bindings. Best regards, Krzysztof
Re: [PATCH v1 1/1] drm/mediatek/dp: The register is written with the parsed DTS SSC value.
On 03/04/2024 08:41, Krzysztof Kozlowski wrote: > On 03/04/2024 06:05, Liankun Yang wrote: >> [Description] >> Severe screen flickering has been observed on the external display >> when the DP projection function is used with the market expansion dock. >> > >> +if (!strcmp(mode_name, RG_XTP_GLB_TXPLL_SSC_DELTA_RBR)) { >> +regmap_update_bits(dp_phy->regs, ssc_reg_offset, >> + XTP_GLB_TXPLL_SSC_DELTA_RBR_DEFAULT, read_value); >> +} else if (!strcmp(mode_name, RG_XTP_GLB_TXPLL_SSC_DELTA_HBR)) { >> +read_value = read_value << 16 | 0x; >> +regmap_update_bits(dp_phy->regs, ssc_reg_offset, >> + XTP_GLB_TXPLL_SSC_DELTA_HBR_DEFAULT, read_value); >> +} >> + >> +return 0; >> +} >> + >> +static struct device_node *mtk_dp_get_ssc_node(struct phy *phy, struct >> mtk_dp_phy *dp_phy) >> +{ >> +struct device_node *mode_node = NULL; >> + >> +mode_node = of_find_node_by_name(dp_phy->dev->of_node, SSC_SETTING); > > ?!?! > You have the node, why do you try to find it? > Wait, that was brainfuck from my side or -ENOCOFFEE. Ignore. I still have a question though, where did you document new ABI: dependency on the node name here? Also, why you are not going through direct children - of_get_child_by_name()? Best regards, Krzysztof
Re: [PATCH v1 1/1] drm/mediatek/dp: The register is written with the parsed DTS SSC value.
On 03/04/2024 06:05, Liankun Yang wrote: > [Description] > Severe screen flickering has been observed on the external display > when the DP projection function is used with the market expansion dock. > > + if (!strcmp(mode_name, RG_XTP_GLB_TXPLL_SSC_DELTA_RBR)) { > + regmap_update_bits(dp_phy->regs, ssc_reg_offset, > +XTP_GLB_TXPLL_SSC_DELTA_RBR_DEFAULT, read_value); > + } else if (!strcmp(mode_name, RG_XTP_GLB_TXPLL_SSC_DELTA_HBR)) { > + read_value = read_value << 16 | 0x; > + regmap_update_bits(dp_phy->regs, ssc_reg_offset, > +XTP_GLB_TXPLL_SSC_DELTA_HBR_DEFAULT, read_value); > + } > + > + return 0; > +} > + > +static struct device_node *mtk_dp_get_ssc_node(struct phy *phy, struct > mtk_dp_phy *dp_phy) > +{ > + struct device_node *mode_node = NULL; > + > + mode_node = of_find_node_by_name(dp_phy->dev->of_node, SSC_SETTING); ?!?! You have the node, why do you try to find it? Best regards, Krzysztof