[PATCH 1/3] drm: bridge: dw-hdmi: Define and use macros for PHY register addresses
Nickey.Yang
nickey.yang at rock-chips.com
Thu Jan 12 01:45:31 UTC 2017
Hi Laurent,
在 2017年01月12日 07:49, Laurent Pinchart 写道:
> Replace the hardcoded register address numerical values with macros to
> clarify the code.
>
> This change has been tested by comparing the assembly code before and
> after the change.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas at ideasonboard.com>
> ---
> drivers/gpu/drm/bridge/dw-hdmi.c | 35 ++++++++++++---------
> drivers/gpu/drm/bridge/dw-hdmi.h | 66 ++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 86 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/bridge/dw-hdmi.c b/drivers/gpu/drm/bridge/dw-hdmi.c
> index ef4f2f96ed2c..6e605fd910ef 100644
> --- a/drivers/gpu/drm/bridge/dw-hdmi.c
> +++ b/drivers/gpu/drm/bridge/dw-hdmi.c
> @@ -997,21 +997,26 @@ static int hdmi_phy_configure(struct dw_hdmi *hdmi, int cscon)
> HDMI_PHY_I2CM_SLAVE_ADDR);
> hdmi_phy_test_clear(hdmi, 0);
>
> - hdmi_phy_i2c_write(hdmi, mpll_config->res[0].cpce, 0x06);
> - hdmi_phy_i2c_write(hdmi, mpll_config->res[0].gmp, 0x15);
> -
> - /* CURRCTRL */
> - hdmi_phy_i2c_write(hdmi, curr_ctrl->curr[0], 0x10);
> -
> - hdmi_phy_i2c_write(hdmi, 0x0000, 0x13); /* PLLPHBYCTRL */
> - hdmi_phy_i2c_write(hdmi, 0x0006, 0x17);
> -
> - hdmi_phy_i2c_write(hdmi, phy_config->term, 0x19); /* TXTERM */
> - hdmi_phy_i2c_write(hdmi, phy_config->sym_ctr, 0x09); /* CKSYMTXCTRL */
> - hdmi_phy_i2c_write(hdmi, phy_config->vlev_ctr, 0x0E); /* VLEVCTRL */
> -
> - /* REMOVE CLK TERM */
> - hdmi_phy_i2c_write(hdmi, 0x8000, 0x05); /* CKCALCTRL */
> + hdmi_phy_i2c_write(hdmi, mpll_config->res[0].cpce,
> + HDMI_3D_TX_PHY_CPCE_CTRL);
> + hdmi_phy_i2c_write(hdmi, mpll_config->res[0].gmp,
> + HDMI_3D_TX_PHY_GMPCTRL);
> + hdmi_phy_i2c_write(hdmi, curr_ctrl->curr[0],
> + HDMI_3D_TX_PHY_CURRCTRL);
> +
> + hdmi_phy_i2c_write(hdmi, 0, HDMI_3D_TX_PHY_PLLPHBYCTRL);
> + hdmi_phy_i2c_write(hdmi, HDMI_3D_TX_PHY_MSM_CTRL_CKO_SEL_FB_CLK,
> + HDMI_3D_TX_PHY_MSM_CTRL);
> +
> + hdmi_phy_i2c_write(hdmi, phy_config->term, HDMI_3D_TX_PHY_TXTERM);
> + hdmi_phy_i2c_write(hdmi, phy_config->sym_ctr,
> + HDMI_3D_TX_PHY_CKSYMTXCTRL);
> + hdmi_phy_i2c_write(hdmi, phy_config->vlev_ctr,
> + HDMI_3D_TX_PHY_VLEVCTRL);
> +
> + /* Override and disable clock termination. */
> + hdmi_phy_i2c_write(hdmi, HDMI_3D_TX_PHY_CKCALCTRL_OVERRIDE,
> + HDMI_3D_TX_PHY_CKCALCTRL);
>
> dw_hdmi_phy_enable_powerdown(hdmi, false);
>
> diff --git a/drivers/gpu/drm/bridge/dw-hdmi.h b/drivers/gpu/drm/bridge/dw-hdmi.h
> index a4fd64a203c9..f3c149c88d71 100644
> --- a/drivers/gpu/drm/bridge/dw-hdmi.h
> +++ b/drivers/gpu/drm/bridge/dw-hdmi.h
> @@ -1085,4 +1085,70 @@ enum {
> HDMI_I2CM_CTLINT_ARB_MASK = 0x4,
> };
>
> +/*
> + * HDMI 3D TX PHY registers
> + */
Why is there 3D related words?I did not find "3D" words in PHY IP vendor
document.
> +#define HDMI_3D_TX_PHY_PWRCTRL 0x00
> +#define HDMI_3D_TX_PHY_SERDIVCTRL 0x01
> +#define HDMI_3D_TX_PHY_SERCKCTRL 0x02
> +#define HDMI_3D_TX_PHY_SERCKKILLCTRL 0x03
> +#define HDMI_3D_TX_PHY_TXRESCTRL 0x04
> +#define HDMI_3D_TX_PHY_CKCALCTRL 0x05
> +#define HDMI_3D_TX_PHY_CPCE_CTRL 0x06
> +#define HDMI_3D_TX_PHY_TXCLKMEASCTRL 0x07
> +#define HDMI_3D_TX_PHY_TXMEASCTRL 0x08
> +#define HDMI_3D_TX_PHY_CKSYMTXCTRL 0x09
> +#define HDMI_3D_TX_PHY_CMPSEQCTRL 0x0a
> +#define HDMI_3D_TX_PHY_CMPPWRCTRL 0x0b
> +#define HDMI_3D_TX_PHY_CMPMODECTRL 0x0c
> +#define HDMI_3D_TX_PHY_MEASCTRL 0x0d
> +#define HDMI_3D_TX_PHY_VLEVCTRL 0x0e
> +#define HDMI_3D_TX_PHY_D2ACTRL 0x0f
> +#define HDMI_3D_TX_PHY_CURRCTRL 0x10
> +#define HDMI_3D_TX_PHY_DRVANACTRL 0x11
> +#define HDMI_3D_TX_PHY_PLLMEASCTRL 0x12
> +#define HDMI_3D_TX_PHY_PLLPHBYCTRL 0x13
> +#define HDMI_3D_TX_PHY_GRP_CTRL 0x14
> +#define HDMI_3D_TX_PHY_GMPCTRL 0x15
> +#define HDMI_3D_TX_PHY_MPLLMEASCTRL 0x16
> +#define HDMI_3D_TX_PHY_MSM_CTRL 0x17
> +#define HDMI_3D_TX_PHY_SCRPB_STATUS 0x18
> +#define HDMI_3D_TX_PHY_TXTERM 0x19
> +#define HDMI_3D_TX_PHY_PTRPT_ENBL 0x1a
> +#define HDMI_3D_TX_PHY_PATTERNGEN 0x1b
> +#define HDMI_3D_TX_PHY_SDCAP_MODE 0x1c
> +#define HDMI_3D_TX_PHY_SCOPEMODE 0x1d
> +#define HDMI_3D_TX_PHY_DIGTXMODE 0x1e
> +#define HDMI_3D_TX_PHY_STR_STATUS 0x1f
> +#define HDMI_3D_TX_PHY_SCOPECNT0 0x20
> +#define HDMI_3D_TX_PHY_SCOPECNT1 0x21
> +#define HDMI_3D_TX_PHY_SCOPECNT2 0x22
> +#define HDMI_3D_TX_PHY_SCOPECNTCLK 0x23
> +#define HDMI_3D_TX_PHY_SCOPESAMPLE 0x24
> +#define HDMI_3D_TX_PHY_SCOPECNTMSB01 0x25
> +#define HDMI_3D_TX_PHY_SCOPECNTMSB2CK 0x26
> +
> +/* HDMI_3D_TX_PHY_CKCALCTRL values */
> +#define HDMI_3D_TX_PHY_CKCALCTRL_OVERRIDE BIT(15)
> +
> +/* HDMI_3D_TX_PHY_MSM_CTRL values */
> +#define HDMI_3D_TX_PHY_MSM_CTRL_MPLL_PH_SEL_CK BIT(13)
> +#define HDMI_3D_TX_PHY_MSM_CTRL_CKO_SEL_CLK_REF_MPLL (0 << 1)
> +#define HDMI_3D_TX_PHY_MSM_CTRL_CKO_SEL_OFF (1 << 1)
> +#define HDMI_3D_TX_PHY_MSM_CTRL_CKO_SEL_PCLK (2 << 1)
> +#define HDMI_3D_TX_PHY_MSM_CTRL_CKO_SEL_FB_CLK (3 << 1)
> +#define HDMI_3D_TX_PHY_MSM_CTRL_SCOPE_CK_SEL BIT(0)
> +
> +/* HDMI_3D_TX_PHY_PTRPT_ENBL values */
> +#define HDMI_3D_TX_PHY_PTRPT_ENBL_OVERRIDE BIT(15)
> +#define HDMI_3D_TX_PHY_PTRPT_ENBL_PG_SKIP_BIT2 BIT(8)
> +#define HDMI_3D_TX_PHY_PTRPT_ENBL_PG_SKIP_BIT1 BIT(7)
> +#define HDMI_3D_TX_PHY_PTRPT_ENBL_PG_SKIP_BIT0 BIT(6)
> +#define HDMI_3D_TX_PHY_PTRPT_ENBL_CK_REF_ENB BIT(5)
> +#define HDMI_3D_TX_PHY_PTRPT_ENBL_RCAL_ENB BIT(4)
> +#define HDMI_3D_TX_PHY_PTRPT_ENBL_TX_CLK_ALIGN_ENB BIT(3)
> +#define HDMI_3D_TX_PHY_PTRPT_ENBL_TX_READY BIT(2)
> +#define HDMI_3D_TX_PHY_PTRPT_ENBL_CKO_WORD_ENB BIT(1)
> +#define HDMI_3D_TX_PHY_PTRPT_ENBL_REFCLK_ENB BIT(0)
> +
> #endif /* __DW_HDMI_H__ */
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20170112/5828d1ce/attachment-0001.html>
More information about the dri-devel
mailing list