Re: [PATCH 13/14] drm/i915/dpio: Clean up the vlv/chv PHY register bits

2024-04-23 Thread Ville Syrjälä
On Mon, Apr 22, 2024 at 03:46:01PM +0300, Jani Nikula wrote:
> On Mon, 22 Apr 2024, Ville Syrjala  wrote:
> > From: Ville Syrjälä 
> >
> > Use REG_BIT() & co. for the vlv/chv DPIO PHY registers.
> >
> > Signed-off-by: Ville Syrjälä 
> 
> What a PITA patch to review!

Aye. Sorry.

> 
> A couple of comments inline, overall
> 
> Reviewed-by: Jani Nikula 
> 
> [snip]
> 
> >  #define VLV_PLL_DW5(ch)_VLV_PLL((ch), 5)
> > -#define   DPIO_REFSEL_OVERRIDE 27
> > -#define   DPIO_PLL_MODESEL_SHIFT   24 /* 3 bits */
> > -#define   DPIO_BIAS_CURRENT_CTL_SHIFT  21 /* 3 bits, always 0x7 */
> 
> Here the shift is 21...
> 
> > -#define   DPIO_PLL_REFCLK_SEL_SHIFT16 /* 2 bits */
> > -#define   DPIO_PLL_REFCLK_SEL_MASK 3
> > -#define   DPIO_DRIVER_CTL_SHIFT12 /* always set to 0x8 */
> > -#define   DPIO_CLK_BIAS_CTL_SHIFT  8 /* always set to 0x5 */
> > +#define   DPIO_REFSEL_OVERRIDE REG_BIT(27)
> > +#define   DPIO_PLL_MODESEL_MASKREG_GENMASK(26, 24)
> > +#define   DPIO_BIAS_CURRENT_CTL_MASK   REG_GENMASK(22, 20) /* always 
> > 0x7 */
> 
> ...and here it's 20. Is this is a fix to match spec or an accident?

20 looks to be the correct number. I guess I fixed it up when I
originally wrote this patch, which apparently happened a few
years ago. How time flies.

> 
> Code offers no help as it's unused afaict.
> 
> > +#define   DPIO_PLL_REFCLK_SEL_MASK REG_GENMASK(17, 16)
> > +#define   DPIO_DRIVER_CTL_MASK REG_GENMASK(15, 12) /* always 
> > set to 0x8 */
> > +#define   DPIO_CLK_BIAS_CTL_MASK   REG_GENMASK(11, 8) /* always set to 0x5 
> > */
> >  
> >  #define VLV_PLL_DW7(ch)_VLV_PLL((ch), 7)
> >  
> > @@ -253,101 +259,110 @@
> >  #define VLV_PCS_DW0_GRP(ch)_VLV_PCS_GRP((ch), 0)
> >  #define VLV_PCS01_DW0(ch)  _VLV_PCS((ch), 0, 0)
> >  #define VLV_PCS23_DW0(ch)  _VLV_PCS((ch), 1, 0)
> > -#define   DPIO_PCS_TX_LANE2_RESET  (1 << 16)
> > -#define   DPIO_PCS_TX_LANE1_RESET  (1 << 7)
> > -#define   DPIO_LEFT_TXFIFO_RST_MASTER2 (1 << 4)
> > -#define   DPIO_RIGHT_TXFIFO_RST_MASTER2(1 << 3)
> > +#define   DPIO_PCS_TX_LANE2_RESET  REG_BIT(16)
> > +#define   DPIO_PCS_TX_LANE1_RESET  REG_BIT(7)
> > +#define   DPIO_LEFT_TXFIFO_RST_MASTER2 REG_BIT(4)
> > +#define   DPIO_RIGHT_TXFIFO_RST_MASTER2REG_BIT(3)
> >  
> > -#define VLV_PCS_DW1_GRP(ch)_VLV_PCS_GRP((ch), 1)
> > -#define VLV_PCS01_DW1(ch)  _VLV_PCS((ch), 0, 1)
> > -#define VLV_PCS23_DW1(ch)  _VLV_PCS((ch), 1, 1)
> > -#define   CHV_PCS_REQ_SOFTRESET_EN (1 << 23)
> > -#define   DPIO_PCS_CLK_CRI_RXEB_EIOS_EN(1 << 22)
> > -#define   DPIO_PCS_CLK_CRI_RXDIGFILTSG_EN (1 << 21)
> > -#define   DPIO_PCS_CLK_DATAWIDTH_SHIFT (6)
> > -#define   DPIO_PCS_CLK_SOFT_RESET  (1 << 5)
> > +#define VLV_PCS_DW1_GRP(ch) _VLV_PCS_GRP((ch), 1)
> > +#define VLV_PCS01_DW1(ch) _VLV_PCS((ch), 0, 1)
> > +#define VLV_PCS23_DW1(ch) _VLV_PCS((ch), 1, 1)
> > +#define   CHV_PCS_REQ_SOFTRESET_EN REG_BIT(23)
> > +#define   DPIO_PCS_CLK_CRI_RXEB_EIOS_ENREG_BIT(22)
> > +#define   DPIO_PCS_CLK_CRI_RXDIGFILTSG_EN  REG_BIT(21)
> > +#define   DPIO_PCS_CLK_DATAWIDTH_MASK  REG_GENMASK(7, 6)
> > +#define   DPIO_PCS_CLK_DATAWIDTH_8_10  
> > REG_FIELD_PREP(DPIO_PCS_CLK_DATAWIDTH_MASK, 1)
> > +#define   DPIO_PCS_CLK_DATAWIDTH_16_20 
> > REG_FIELD_PREP(DPIO_PCS_CLK_DATAWIDTH_MASK, 2)
> > +#define   DPIO_PCS_CLK_DATAWIDTH_32_40 
> > REG_FIELD_PREP(DPIO_PCS_CLK_DATAWIDTH_MASK, 3)
> > +#define   DPIO_PCS_CLK_SOFT_RESET  REG_BIT(5)
> >  
> >  #define VLV_PCS_DW8_GRP(ch)_VLV_PCS_GRP((ch), 8)
> >  #define VLV_PCS01_DW8(ch)  _VLV_PCS((ch), 0, 8)
> >  #define VLV_PCS23_DW8(ch)  _VLV_PCS((ch), 1, 8)
> > -#define   CHV_PCS_USEDCLKCHANNEL_OVRRIDE   (1 << 20)
> > -#define   CHV_PCS_USEDCLKCHANNEL   (1 << 21)
> > +#define   DPIO_PCS_USEDCLKCHANNEL  REG_BIT(21)
> > +#define   DPIO_PCS_USEDCLKCHANNEL_OVRRIDE  REG_BIT(20)
> >  
> > -#define VLV_PCS_DW9_GRP(ch)_VLV_PCS_GRP((ch), 9)
> > +#defineVLV_PCS_DW9_GRP(ch) _VLV_PCS_GRP((ch), 9)
> 
> Is the TAB intentional here, and in a number of similar places below?

No. I did spot some stray tabs before sending and thought I cleaned
then all up, but somehow they keep sneaking past my radar :/

> 
> BR,
> Jani.
> 
> >  #define VLV_PCS01_DW9(ch)  _VLV_PCS((ch), 0, 9)
> >  #define VLV_PCS23_DW9(ch)  _VLV_PCS((ch), 1, 9)
> > -#define   DPIO_PCS_TX2MARGIN_MASK  (0x7 << 13)
> > -#define   DPIO_PCS_TX2MARGIN_000   (0 << 13)
> > -#define   DPIO_PCS_TX2MARGIN_101   (1 << 13)
> > -#define   DPIO_PCS_TX1MARGIN_MASK  (0x7 << 10)
> > -#define   DPIO_PCS_TX1MARGIN_000   (0 << 10)
> > -#define   DPIO_PCS_TX1MARGIN_101   (1 << 10)
> > +#define   DPIO_PCS_TX2MARGIN_MASK  REG_GENMASK(15, 13)
> > +#define   DPIO_PCS_TX2MARGIN_000   REG_FIELD_PRE

Re: [PATCH 13/14] drm/i915/dpio: Clean up the vlv/chv PHY register bits

2024-04-22 Thread Jani Nikula
On Mon, 22 Apr 2024, Ville Syrjala  wrote:
> From: Ville Syrjälä 
>
> Use REG_BIT() & co. for the vlv/chv DPIO PHY registers.
>
> Signed-off-by: Ville Syrjälä 

What a PITA patch to review!

A couple of comments inline, overall

Reviewed-by: Jani Nikula 

[snip]

>  #define VLV_PLL_DW5(ch)  _VLV_PLL((ch), 5)
> -#define   DPIO_REFSEL_OVERRIDE   27
> -#define   DPIO_PLL_MODESEL_SHIFT 24 /* 3 bits */
> -#define   DPIO_BIAS_CURRENT_CTL_SHIFT21 /* 3 bits, always 0x7 */

Here the shift is 21...

> -#define   DPIO_PLL_REFCLK_SEL_SHIFT  16 /* 2 bits */
> -#define   DPIO_PLL_REFCLK_SEL_MASK   3
> -#define   DPIO_DRIVER_CTL_SHIFT  12 /* always set to 0x8 */
> -#define   DPIO_CLK_BIAS_CTL_SHIFT8 /* always set to 0x5 */
> +#define   DPIO_REFSEL_OVERRIDE   REG_BIT(27)
> +#define   DPIO_PLL_MODESEL_MASK  REG_GENMASK(26, 24)
> +#define   DPIO_BIAS_CURRENT_CTL_MASK REG_GENMASK(22, 20) /* always 0x7 */

...and here it's 20. Is this is a fix to match spec or an accident?

Code offers no help as it's unused afaict.

> +#define   DPIO_PLL_REFCLK_SEL_MASK   REG_GENMASK(17, 16)
> +#define   DPIO_DRIVER_CTL_MASK   REG_GENMASK(15, 12) /* always 
> set to 0x8 */
> +#define   DPIO_CLK_BIAS_CTL_MASK REG_GENMASK(11, 8) /* always set to 0x5 
> */
>  
>  #define VLV_PLL_DW7(ch)  _VLV_PLL((ch), 7)
>  
> @@ -253,101 +259,110 @@
>  #define VLV_PCS_DW0_GRP(ch)  _VLV_PCS_GRP((ch), 0)
>  #define VLV_PCS01_DW0(ch)_VLV_PCS((ch), 0, 0)
>  #define VLV_PCS23_DW0(ch)_VLV_PCS((ch), 1, 0)
> -#define   DPIO_PCS_TX_LANE2_RESET(1 << 16)
> -#define   DPIO_PCS_TX_LANE1_RESET(1 << 7)
> -#define   DPIO_LEFT_TXFIFO_RST_MASTER2   (1 << 4)
> -#define   DPIO_RIGHT_TXFIFO_RST_MASTER2  (1 << 3)
> +#define   DPIO_PCS_TX_LANE2_RESETREG_BIT(16)
> +#define   DPIO_PCS_TX_LANE1_RESETREG_BIT(7)
> +#define   DPIO_LEFT_TXFIFO_RST_MASTER2   REG_BIT(4)
> +#define   DPIO_RIGHT_TXFIFO_RST_MASTER2  REG_BIT(3)
>  
> -#define VLV_PCS_DW1_GRP(ch)  _VLV_PCS_GRP((ch), 1)
> -#define VLV_PCS01_DW1(ch)_VLV_PCS((ch), 0, 1)
> -#define VLV_PCS23_DW1(ch)_VLV_PCS((ch), 1, 1)
> -#define   CHV_PCS_REQ_SOFTRESET_EN   (1 << 23)
> -#define   DPIO_PCS_CLK_CRI_RXEB_EIOS_EN  (1 << 22)
> -#define   DPIO_PCS_CLK_CRI_RXDIGFILTSG_EN (1 << 21)
> -#define   DPIO_PCS_CLK_DATAWIDTH_SHIFT   (6)
> -#define   DPIO_PCS_CLK_SOFT_RESET(1 << 5)
> +#define VLV_PCS_DW1_GRP(ch)   _VLV_PCS_GRP((ch), 1)
> +#define VLV_PCS01_DW1(ch) _VLV_PCS((ch), 0, 1)
> +#define VLV_PCS23_DW1(ch) _VLV_PCS((ch), 1, 1)
> +#define   CHV_PCS_REQ_SOFTRESET_EN   REG_BIT(23)
> +#define   DPIO_PCS_CLK_CRI_RXEB_EIOS_EN  REG_BIT(22)
> +#define   DPIO_PCS_CLK_CRI_RXDIGFILTSG_ENREG_BIT(21)
> +#define   DPIO_PCS_CLK_DATAWIDTH_MASKREG_GENMASK(7, 6)
> +#define   DPIO_PCS_CLK_DATAWIDTH_8_10
> REG_FIELD_PREP(DPIO_PCS_CLK_DATAWIDTH_MASK, 1)
> +#define   DPIO_PCS_CLK_DATAWIDTH_16_20   
> REG_FIELD_PREP(DPIO_PCS_CLK_DATAWIDTH_MASK, 2)
> +#define   DPIO_PCS_CLK_DATAWIDTH_32_40   
> REG_FIELD_PREP(DPIO_PCS_CLK_DATAWIDTH_MASK, 3)
> +#define   DPIO_PCS_CLK_SOFT_RESETREG_BIT(5)
>  
>  #define VLV_PCS_DW8_GRP(ch)  _VLV_PCS_GRP((ch), 8)
>  #define VLV_PCS01_DW8(ch)_VLV_PCS((ch), 0, 8)
>  #define VLV_PCS23_DW8(ch)_VLV_PCS((ch), 1, 8)
> -#define   CHV_PCS_USEDCLKCHANNEL_OVRRIDE (1 << 20)
> -#define   CHV_PCS_USEDCLKCHANNEL (1 << 21)
> +#define   DPIO_PCS_USEDCLKCHANNELREG_BIT(21)
> +#define   DPIO_PCS_USEDCLKCHANNEL_OVRRIDEREG_BIT(20)
>  
> -#define VLV_PCS_DW9_GRP(ch)  _VLV_PCS_GRP((ch), 9)
> +#define  VLV_PCS_DW9_GRP(ch) _VLV_PCS_GRP((ch), 9)

Is the TAB intentional here, and in a number of similar places below?

BR,
Jani.

>  #define VLV_PCS01_DW9(ch)_VLV_PCS((ch), 0, 9)
>  #define VLV_PCS23_DW9(ch)_VLV_PCS((ch), 1, 9)
> -#define   DPIO_PCS_TX2MARGIN_MASK(0x7 << 13)
> -#define   DPIO_PCS_TX2MARGIN_000 (0 << 13)
> -#define   DPIO_PCS_TX2MARGIN_101 (1 << 13)
> -#define   DPIO_PCS_TX1MARGIN_MASK(0x7 << 10)
> -#define   DPIO_PCS_TX1MARGIN_000 (0 << 10)
> -#define   DPIO_PCS_TX1MARGIN_101 (1 << 10)
> +#define   DPIO_PCS_TX2MARGIN_MASKREG_GENMASK(15, 13)
> +#define   DPIO_PCS_TX2MARGIN_000 REG_FIELD_PREP(DPIO_PCS_TX2MARGIN_MASK, 
> 0)
> +#define   DPIO_PCS_TX2MARGIN_101 REG_FIELD_PREP(DPIO_PCS_TX2MARGIN_MASK, 
> 1)
> +#define   DPIO_PCS_TX1MARGIN_MASKREG_GENMASK(12, 10)
> +#define   DPIO_PCS_TX1MARGIN_000 REG_FIELD_PREP(DPIO_PCS_TX1MARGIN_MASK, 
> 0)
> +#define   DPIO_PCS_TX1MARGIN_101 REG_FIELD_PREP(DPIO_PCS_TX1MARGIN_MASK, 
> 1)
>  
> -#define VLV_PCS_DW10_GRP(ch) _VLV_PCS_GRP((ch), 10)
> +#define  VLV_PCS_DW10_GRP(ch)_VLV_PCS_GRP((ch), 10)
>  #define VLV_PCS