diff mbox series

drm/i915/dg2: Add HDMI pixel clock frequencies 267.30 and 319.89 MHz

Message ID 20230223043619.3941382-1-ankit.k.nautiyal@intel.com (mailing list archive)
State New, archived
Headers show
Series drm/i915/dg2: Add HDMI pixel clock frequencies 267.30 and 319.89 MHz | expand

Commit Message

Nautiyal, Ankit K Feb. 23, 2023, 4:36 a.m. UTC
Add snps phy table values for HDMI pixel clocks 267.30 MHz and
319.89 MHz. Values are based on the Bspec algorithm for
PLL programming for HDMI.

Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/8008
Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 drivers/gpu/drm/i915/display/intel_snps_phy.c | 62 +++++++++++++++++++
 1 file changed, 62 insertions(+)

Comments

Shankar, Uma Feb. 23, 2023, 6:30 a.m. UTC | #1
> -----Original Message-----
> From: Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>
> Sent: Thursday, February 23, 2023 10:06 AM
> To: intel-gfx@lists.freedesktop.org
> Cc: Roper, Matthew D <matthew.d.roper@intel.com>; Shankar, Uma
> <uma.shankar@intel.com>; Sharma, Swati2 <swati2.sharma@intel.com>
> Subject: [PATCH] drm/i915/dg2: Add HDMI pixel clock frequencies 267.30 and 319.89
> MHz
> 
> Add snps phy table values for HDMI pixel clocks 267.30 MHz and
> 319.89 MHz. Values are based on the Bspec algorithm for PLL programming for
> HDMI.

Looks Good to me.
Reviewed-by: Uma Shankar <uma.shankar@intel.com>

> Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/8008
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_snps_phy.c | 62 +++++++++++++++++++
>  1 file changed, 62 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_snps_phy.c
> b/drivers/gpu/drm/i915/display/intel_snps_phy.c
> index c65c771f5c46..1cfb94b5cedb 100644
> --- a/drivers/gpu/drm/i915/display/intel_snps_phy.c
> +++ b/drivers/gpu/drm/i915/display/intel_snps_phy.c
> @@ -1419,6 +1419,36 @@ static const struct intel_mpllb_state dg2_hdmi_262750 =
> {
>  		REG_FIELD_PREP(SNPS_PHY_MPLLB_SSC_UP_SPREAD, 1),  };
> 
> +static const struct intel_mpllb_state dg2_hdmi_267300 = {
> +	.clock = 267300,
> +	.ref_control =
> +		REG_FIELD_PREP(SNPS_PHY_REF_CONTROL_REF_RANGE, 3),
> +	.mpllb_cp =
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_INT, 7) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_PROP, 14) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_INT_GS, 64) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_PROP_GS, 124),
> +	.mpllb_div =
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_DIV5_CLK_EN, 1) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_TX_CLK_DIV, 1) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_PMIX_EN, 1) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_V2I, 2) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FREQ_VCO, 3),
> +	.mpllb_div2 =
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_REF_CLK_DIV, 1) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_MULTIPLIER, 74) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_HDMI_DIV, 1),
> +	.mpllb_fracn1 =
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_CGG_UPDATE_EN, 1) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_EN, 1) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_DEN, 65535),
> +	.mpllb_fracn2 =
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_QUOT, 30146) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_REM, 36699),
> +	.mpllb_sscen =
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_SSC_UP_SPREAD, 1), };
> +
>  static const struct intel_mpllb_state dg2_hdmi_268500 = {
>  	.clock = 268500,
>  	.ref_control =
> @@ -1509,6 +1539,36 @@ static const struct intel_mpllb_state dg2_hdmi_241500 =
> {
>  		REG_FIELD_PREP(SNPS_PHY_MPLLB_SSC_UP_SPREAD, 1),  };
> 
> +static const struct intel_mpllb_state dg2_hdmi_319890 = {
> +	.clock = 319890,
> +	.ref_control =
> +		REG_FIELD_PREP(SNPS_PHY_REF_CONTROL_REF_RANGE, 3),
> +	.mpllb_cp =
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_INT, 6) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_PROP, 14) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_INT_GS, 64) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_PROP_GS, 124),
> +	.mpllb_div =
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_DIV5_CLK_EN, 1) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_TX_CLK_DIV, 1) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_PMIX_EN, 1) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_V2I, 2) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FREQ_VCO, 2),
> +	.mpllb_div2 =
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_REF_CLK_DIV, 1) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_MULTIPLIER, 94) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_HDMI_DIV, 1),
> +	.mpllb_fracn1 =
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_CGG_UPDATE_EN, 1) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_EN, 1) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_DEN, 65535),
> +	.mpllb_fracn2 =
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_QUOT, 64094) |
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_REM, 13631),
> +	.mpllb_sscen =
> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_SSC_UP_SPREAD, 1), };
> +
>  static const struct intel_mpllb_state dg2_hdmi_497750 = {
>  	.clock = 497750,
>  	.ref_control =
> @@ -1696,8 +1756,10 @@ static const struct intel_mpllb_state * const
> dg2_hdmi_tables[] = {
>  	&dg2_hdmi_209800,
>  	&dg2_hdmi_241500,
>  	&dg2_hdmi_262750,
> +	&dg2_hdmi_267300,
>  	&dg2_hdmi_268500,
>  	&dg2_hdmi_296703,
> +	&dg2_hdmi_319890,
>  	&dg2_hdmi_497750,
>  	&dg2_hdmi_592000,
>  	&dg2_hdmi_593407,
> --
> 2.25.1
Jani Nikula Feb. 23, 2023, 12:13 p.m. UTC | #2
On Thu, 23 Feb 2023, "Shankar, Uma" <uma.shankar@intel.com> wrote:
>> -----Original Message-----
>> From: Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>
>> Sent: Thursday, February 23, 2023 10:06 AM
>> To: intel-gfx@lists.freedesktop.org
>> Cc: Roper, Matthew D <matthew.d.roper@intel.com>; Shankar, Uma
>> <uma.shankar@intel.com>; Sharma, Swati2 <swati2.sharma@intel.com>
>> Subject: [PATCH] drm/i915/dg2: Add HDMI pixel clock frequencies 267.30 and 319.89
>> MHz
>> 
>> Add snps phy table values for HDMI pixel clocks 267.30 MHz and
>> 319.89 MHz. Values are based on the Bspec algorithm for PLL programming for
>> HDMI.
>
> Looks Good to me.
> Reviewed-by: Uma Shankar <uma.shankar@intel.com>

Needs Cc: stable for some kernels back, when force probe was removed
from DG2. Please check and add while applying.

BR,
Jani.

>
>> Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/8008
>> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
>> ---
>>  drivers/gpu/drm/i915/display/intel_snps_phy.c | 62 +++++++++++++++++++
>>  1 file changed, 62 insertions(+)
>> 
>> diff --git a/drivers/gpu/drm/i915/display/intel_snps_phy.c
>> b/drivers/gpu/drm/i915/display/intel_snps_phy.c
>> index c65c771f5c46..1cfb94b5cedb 100644
>> --- a/drivers/gpu/drm/i915/display/intel_snps_phy.c
>> +++ b/drivers/gpu/drm/i915/display/intel_snps_phy.c
>> @@ -1419,6 +1419,36 @@ static const struct intel_mpllb_state dg2_hdmi_262750 =
>> {
>>  		REG_FIELD_PREP(SNPS_PHY_MPLLB_SSC_UP_SPREAD, 1),  };
>> 
>> +static const struct intel_mpllb_state dg2_hdmi_267300 = {
>> +	.clock = 267300,
>> +	.ref_control =
>> +		REG_FIELD_PREP(SNPS_PHY_REF_CONTROL_REF_RANGE, 3),
>> +	.mpllb_cp =
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_INT, 7) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_PROP, 14) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_INT_GS, 64) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_PROP_GS, 124),
>> +	.mpllb_div =
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_DIV5_CLK_EN, 1) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_TX_CLK_DIV, 1) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_PMIX_EN, 1) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_V2I, 2) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FREQ_VCO, 3),
>> +	.mpllb_div2 =
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_REF_CLK_DIV, 1) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_MULTIPLIER, 74) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_HDMI_DIV, 1),
>> +	.mpllb_fracn1 =
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_CGG_UPDATE_EN, 1) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_EN, 1) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_DEN, 65535),
>> +	.mpllb_fracn2 =
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_QUOT, 30146) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_REM, 36699),
>> +	.mpllb_sscen =
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_SSC_UP_SPREAD, 1), };
>> +
>>  static const struct intel_mpllb_state dg2_hdmi_268500 = {
>>  	.clock = 268500,
>>  	.ref_control =
>> @@ -1509,6 +1539,36 @@ static const struct intel_mpllb_state dg2_hdmi_241500 =
>> {
>>  		REG_FIELD_PREP(SNPS_PHY_MPLLB_SSC_UP_SPREAD, 1),  };
>> 
>> +static const struct intel_mpllb_state dg2_hdmi_319890 = {
>> +	.clock = 319890,
>> +	.ref_control =
>> +		REG_FIELD_PREP(SNPS_PHY_REF_CONTROL_REF_RANGE, 3),
>> +	.mpllb_cp =
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_INT, 6) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_PROP, 14) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_INT_GS, 64) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_PROP_GS, 124),
>> +	.mpllb_div =
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_DIV5_CLK_EN, 1) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_TX_CLK_DIV, 1) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_PMIX_EN, 1) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_V2I, 2) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FREQ_VCO, 2),
>> +	.mpllb_div2 =
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_REF_CLK_DIV, 1) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_MULTIPLIER, 94) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_HDMI_DIV, 1),
>> +	.mpllb_fracn1 =
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_CGG_UPDATE_EN, 1) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_EN, 1) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_DEN, 65535),
>> +	.mpllb_fracn2 =
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_QUOT, 64094) |
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_REM, 13631),
>> +	.mpllb_sscen =
>> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_SSC_UP_SPREAD, 1), };
>> +
>>  static const struct intel_mpllb_state dg2_hdmi_497750 = {
>>  	.clock = 497750,
>>  	.ref_control =
>> @@ -1696,8 +1756,10 @@ static const struct intel_mpllb_state * const
>> dg2_hdmi_tables[] = {
>>  	&dg2_hdmi_209800,
>>  	&dg2_hdmi_241500,
>>  	&dg2_hdmi_262750,
>> +	&dg2_hdmi_267300,
>>  	&dg2_hdmi_268500,
>>  	&dg2_hdmi_296703,
>> +	&dg2_hdmi_319890,
>>  	&dg2_hdmi_497750,
>>  	&dg2_hdmi_592000,
>>  	&dg2_hdmi_593407,
>> --
>> 2.25.1
>
Shankar, Uma Feb. 23, 2023, 12:18 p.m. UTC | #3
> -----Original Message-----
> From: Jani Nikula <jani.nikula@linux.intel.com>
> Sent: Thursday, February 23, 2023 5:43 PM
> To: Shankar, Uma <uma.shankar@intel.com>; Nautiyal, Ankit K
> <ankit.k.nautiyal@intel.com>; intel-gfx@lists.freedesktop.org
> Cc: Roper, Matthew D <matthew.d.roper@intel.com>
> Subject: Re: [Intel-gfx] [PATCH] drm/i915/dg2: Add HDMI pixel clock frequencies
> 267.30 and 319.89 MHz
> 
> On Thu, 23 Feb 2023, "Shankar, Uma" <uma.shankar@intel.com> wrote:
> >> -----Original Message-----
> >> From: Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>
> >> Sent: Thursday, February 23, 2023 10:06 AM
> >> To: intel-gfx@lists.freedesktop.org
> >> Cc: Roper, Matthew D <matthew.d.roper@intel.com>; Shankar, Uma
> >> <uma.shankar@intel.com>; Sharma, Swati2 <swati2.sharma@intel.com>
> >> Subject: [PATCH] drm/i915/dg2: Add HDMI pixel clock frequencies
> >> 267.30 and 319.89 MHz
> >>
> >> Add snps phy table values for HDMI pixel clocks 267.30 MHz and
> >> 319.89 MHz. Values are based on the Bspec algorithm for PLL
> >> programming for HDMI.
> >
> > Looks Good to me.
> > Reviewed-by: Uma Shankar <uma.shankar@intel.com>
> 
> Needs Cc: stable for some kernels back, when force probe was removed from DG2.
> Please check and add while applying.

Sure Jani, will do that. Thanks for pointing out.

Regards,
Uma Shankar

> BR,
> Jani.
> 
> >
> >> Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/8008
> >> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> >> ---
> >>  drivers/gpu/drm/i915/display/intel_snps_phy.c | 62
> >> +++++++++++++++++++
> >>  1 file changed, 62 insertions(+)
> >>
> >> diff --git a/drivers/gpu/drm/i915/display/intel_snps_phy.c
> >> b/drivers/gpu/drm/i915/display/intel_snps_phy.c
> >> index c65c771f5c46..1cfb94b5cedb 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_snps_phy.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_snps_phy.c
> >> @@ -1419,6 +1419,36 @@ static const struct intel_mpllb_state
> >> dg2_hdmi_262750 = {
> >>  		REG_FIELD_PREP(SNPS_PHY_MPLLB_SSC_UP_SPREAD, 1),  };
> >>
> >> +static const struct intel_mpllb_state dg2_hdmi_267300 = {
> >> +	.clock = 267300,
> >> +	.ref_control =
> >> +		REG_FIELD_PREP(SNPS_PHY_REF_CONTROL_REF_RANGE, 3),
> >> +	.mpllb_cp =
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_INT, 7) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_PROP, 14) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_INT_GS, 64) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_PROP_GS, 124),
> >> +	.mpllb_div =
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_DIV5_CLK_EN, 1) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_TX_CLK_DIV, 1) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_PMIX_EN, 1) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_V2I, 2) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FREQ_VCO, 3),
> >> +	.mpllb_div2 =
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_REF_CLK_DIV, 1) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_MULTIPLIER, 74) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_HDMI_DIV, 1),
> >> +	.mpllb_fracn1 =
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_CGG_UPDATE_EN, 1) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_EN, 1) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_DEN, 65535),
> >> +	.mpllb_fracn2 =
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_QUOT, 30146) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_REM, 36699),
> >> +	.mpllb_sscen =
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_SSC_UP_SPREAD, 1), };
> >> +
> >>  static const struct intel_mpllb_state dg2_hdmi_268500 = {
> >>  	.clock = 268500,
> >>  	.ref_control =
> >> @@ -1509,6 +1539,36 @@ static const struct intel_mpllb_state
> >> dg2_hdmi_241500 = {
> >>  		REG_FIELD_PREP(SNPS_PHY_MPLLB_SSC_UP_SPREAD, 1),  };
> >>
> >> +static const struct intel_mpllb_state dg2_hdmi_319890 = {
> >> +	.clock = 319890,
> >> +	.ref_control =
> >> +		REG_FIELD_PREP(SNPS_PHY_REF_CONTROL_REF_RANGE, 3),
> >> +	.mpllb_cp =
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_INT, 6) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_PROP, 14) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_INT_GS, 64) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_PROP_GS, 124),
> >> +	.mpllb_div =
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_DIV5_CLK_EN, 1) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_TX_CLK_DIV, 1) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_PMIX_EN, 1) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_V2I, 2) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FREQ_VCO, 2),
> >> +	.mpllb_div2 =
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_REF_CLK_DIV, 1) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_MULTIPLIER, 94) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_HDMI_DIV, 1),
> >> +	.mpllb_fracn1 =
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_CGG_UPDATE_EN, 1) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_EN, 1) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_DEN, 65535),
> >> +	.mpllb_fracn2 =
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_QUOT, 64094) |
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_REM, 13631),
> >> +	.mpllb_sscen =
> >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_SSC_UP_SPREAD, 1), };
> >> +
> >>  static const struct intel_mpllb_state dg2_hdmi_497750 = {
> >>  	.clock = 497750,
> >>  	.ref_control =
> >> @@ -1696,8 +1756,10 @@ static const struct intel_mpllb_state * const
> >> dg2_hdmi_tables[] = {
> >>  	&dg2_hdmi_209800,
> >>  	&dg2_hdmi_241500,
> >>  	&dg2_hdmi_262750,
> >> +	&dg2_hdmi_267300,
> >>  	&dg2_hdmi_268500,
> >>  	&dg2_hdmi_296703,
> >> +	&dg2_hdmi_319890,
> >>  	&dg2_hdmi_497750,
> >>  	&dg2_hdmi_592000,
> >>  	&dg2_hdmi_593407,
> >> --
> >> 2.25.1
> >
> 
> --
> Jani Nikula, Intel Open Source Graphics Center
Shankar, Uma Feb. 24, 2023, 11:38 a.m. UTC | #4
> > On Thu, 23 Feb 2023, "Shankar, Uma" <uma.shankar@intel.com> wrote:
> > >> -----Original Message-----
> > >> From: Nautiyal, Ankit K <ankit.k.nautiyal@intel.com>
> > >> Sent: Thursday, February 23, 2023 10:06 AM
> > >> To: intel-gfx@lists.freedesktop.org
> > >> Cc: Roper, Matthew D <matthew.d.roper@intel.com>; Shankar, Uma
> > >> <uma.shankar@intel.com>; Sharma, Swati2 <swati2.sharma@intel.com>
> > >> Subject: [PATCH] drm/i915/dg2: Add HDMI pixel clock frequencies
> > >> 267.30 and 319.89 MHz
> > >>
> > >> Add snps phy table values for HDMI pixel clocks 267.30 MHz and
> > >> 319.89 MHz. Values are based on the Bspec algorithm for PLL
> > >> programming for HDMI.
> > >
> > > Looks Good to me.
> > > Reviewed-by: Uma Shankar <uma.shankar@intel.com>
> >
> > Needs Cc: stable for some kernels back, when force probe was removed from DG2.
> > Please check and add while applying.
> 
> Sure Jani, will do that. Thanks for pointing out.

Change pushed to drm-intel-next, Cc'ed stable. Thanks for the patch.

Regards,
Uma Shankar

> > BR,
> > Jani.
> >
> > >
> > >> Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/8008
> > >> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> > >> ---
> > >>  drivers/gpu/drm/i915/display/intel_snps_phy.c | 62
> > >> +++++++++++++++++++
> > >>  1 file changed, 62 insertions(+)
> > >>
> > >> diff --git a/drivers/gpu/drm/i915/display/intel_snps_phy.c
> > >> b/drivers/gpu/drm/i915/display/intel_snps_phy.c
> > >> index c65c771f5c46..1cfb94b5cedb 100644
> > >> --- a/drivers/gpu/drm/i915/display/intel_snps_phy.c
> > >> +++ b/drivers/gpu/drm/i915/display/intel_snps_phy.c
> > >> @@ -1419,6 +1419,36 @@ static const struct intel_mpllb_state
> > >> dg2_hdmi_262750 = {
> > >>  		REG_FIELD_PREP(SNPS_PHY_MPLLB_SSC_UP_SPREAD, 1),  };
> > >>
> > >> +static const struct intel_mpllb_state dg2_hdmi_267300 = {
> > >> +	.clock = 267300,
> > >> +	.ref_control =
> > >> +		REG_FIELD_PREP(SNPS_PHY_REF_CONTROL_REF_RANGE, 3),
> > >> +	.mpllb_cp =
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_INT, 7) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_PROP, 14) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_INT_GS, 64) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_PROP_GS, 124),
> > >> +	.mpllb_div =
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_DIV5_CLK_EN, 1) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_TX_CLK_DIV, 1) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_PMIX_EN, 1) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_V2I, 2) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FREQ_VCO, 3),
> > >> +	.mpllb_div2 =
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_REF_CLK_DIV, 1) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_MULTIPLIER, 74) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_HDMI_DIV, 1),
> > >> +	.mpllb_fracn1 =
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_CGG_UPDATE_EN, 1) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_EN, 1) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_DEN, 65535),
> > >> +	.mpllb_fracn2 =
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_QUOT, 30146) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_REM, 36699),
> > >> +	.mpllb_sscen =
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_SSC_UP_SPREAD, 1), };
> > >> +
> > >>  static const struct intel_mpllb_state dg2_hdmi_268500 = {
> > >>  	.clock = 268500,
> > >>  	.ref_control =
> > >> @@ -1509,6 +1539,36 @@ static const struct intel_mpllb_state
> > >> dg2_hdmi_241500 = {
> > >>  		REG_FIELD_PREP(SNPS_PHY_MPLLB_SSC_UP_SPREAD, 1),  };
> > >>
> > >> +static const struct intel_mpllb_state dg2_hdmi_319890 = {
> > >> +	.clock = 319890,
> > >> +	.ref_control =
> > >> +		REG_FIELD_PREP(SNPS_PHY_REF_CONTROL_REF_RANGE, 3),
> > >> +	.mpllb_cp =
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_INT, 6) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_PROP, 14) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_INT_GS, 64) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_PROP_GS, 124),
> > >> +	.mpllb_div =
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_DIV5_CLK_EN, 1) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_TX_CLK_DIV, 1) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_PMIX_EN, 1) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_V2I, 2) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FREQ_VCO, 2),
> > >> +	.mpllb_div2 =
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_REF_CLK_DIV, 1) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_MULTIPLIER, 94) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_HDMI_DIV, 1),
> > >> +	.mpllb_fracn1 =
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_CGG_UPDATE_EN, 1) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_EN, 1) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_DEN, 65535),
> > >> +	.mpllb_fracn2 =
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_QUOT, 64094) |
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_REM, 13631),
> > >> +	.mpllb_sscen =
> > >> +		REG_FIELD_PREP(SNPS_PHY_MPLLB_SSC_UP_SPREAD, 1), };
> > >> +
> > >>  static const struct intel_mpllb_state dg2_hdmi_497750 = {
> > >>  	.clock = 497750,
> > >>  	.ref_control =
> > >> @@ -1696,8 +1756,10 @@ static const struct intel_mpllb_state *
> > >> const dg2_hdmi_tables[] = {
> > >>  	&dg2_hdmi_209800,
> > >>  	&dg2_hdmi_241500,
> > >>  	&dg2_hdmi_262750,
> > >> +	&dg2_hdmi_267300,
> > >>  	&dg2_hdmi_268500,
> > >>  	&dg2_hdmi_296703,
> > >> +	&dg2_hdmi_319890,
> > >>  	&dg2_hdmi_497750,
> > >>  	&dg2_hdmi_592000,
> > >>  	&dg2_hdmi_593407,
> > >> --
> > >> 2.25.1
> > >
> >
> > --
> > Jani Nikula, Intel Open Source Graphics Center
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_snps_phy.c b/drivers/gpu/drm/i915/display/intel_snps_phy.c
index c65c771f5c46..1cfb94b5cedb 100644
--- a/drivers/gpu/drm/i915/display/intel_snps_phy.c
+++ b/drivers/gpu/drm/i915/display/intel_snps_phy.c
@@ -1419,6 +1419,36 @@  static const struct intel_mpllb_state dg2_hdmi_262750 = {
 		REG_FIELD_PREP(SNPS_PHY_MPLLB_SSC_UP_SPREAD, 1),
 };
 
+static const struct intel_mpllb_state dg2_hdmi_267300 = {
+	.clock = 267300,
+	.ref_control =
+		REG_FIELD_PREP(SNPS_PHY_REF_CONTROL_REF_RANGE, 3),
+	.mpllb_cp =
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_INT, 7) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_PROP, 14) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_INT_GS, 64) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_PROP_GS, 124),
+	.mpllb_div =
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_DIV5_CLK_EN, 1) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_TX_CLK_DIV, 1) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_PMIX_EN, 1) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_V2I, 2) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_FREQ_VCO, 3),
+	.mpllb_div2 =
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_REF_CLK_DIV, 1) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_MULTIPLIER, 74) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_HDMI_DIV, 1),
+	.mpllb_fracn1 =
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_CGG_UPDATE_EN, 1) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_EN, 1) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_DEN, 65535),
+	.mpllb_fracn2 =
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_QUOT, 30146) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_REM, 36699),
+	.mpllb_sscen =
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_SSC_UP_SPREAD, 1),
+};
+
 static const struct intel_mpllb_state dg2_hdmi_268500 = {
 	.clock = 268500,
 	.ref_control =
@@ -1509,6 +1539,36 @@  static const struct intel_mpllb_state dg2_hdmi_241500 = {
 		REG_FIELD_PREP(SNPS_PHY_MPLLB_SSC_UP_SPREAD, 1),
 };
 
+static const struct intel_mpllb_state dg2_hdmi_319890 = {
+	.clock = 319890,
+	.ref_control =
+		REG_FIELD_PREP(SNPS_PHY_REF_CONTROL_REF_RANGE, 3),
+	.mpllb_cp =
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_INT, 6) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_PROP, 14) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_INT_GS, 64) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_CP_PROP_GS, 124),
+	.mpllb_div =
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_DIV5_CLK_EN, 1) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_TX_CLK_DIV, 1) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_PMIX_EN, 1) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_V2I, 2) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_FREQ_VCO, 2),
+	.mpllb_div2 =
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_REF_CLK_DIV, 1) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_MULTIPLIER, 94) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_HDMI_DIV, 1),
+	.mpllb_fracn1 =
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_CGG_UPDATE_EN, 1) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_EN, 1) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_DEN, 65535),
+	.mpllb_fracn2 =
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_QUOT, 64094) |
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_FRACN_REM, 13631),
+	.mpllb_sscen =
+		REG_FIELD_PREP(SNPS_PHY_MPLLB_SSC_UP_SPREAD, 1),
+};
+
 static const struct intel_mpllb_state dg2_hdmi_497750 = {
 	.clock = 497750,
 	.ref_control =
@@ -1696,8 +1756,10 @@  static const struct intel_mpllb_state * const dg2_hdmi_tables[] = {
 	&dg2_hdmi_209800,
 	&dg2_hdmi_241500,
 	&dg2_hdmi_262750,
+	&dg2_hdmi_267300,
 	&dg2_hdmi_268500,
 	&dg2_hdmi_296703,
+	&dg2_hdmi_319890,
 	&dg2_hdmi_497750,
 	&dg2_hdmi_592000,
 	&dg2_hdmi_593407,