Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

phy: mediatek: hdmi: mt2701: use FIELD_PREP to prepare bits field

Use FIELD_PREP() macro to prepare bits field value, then no need define
macros of bits offset.

Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://lore.kernel.org/r/20220920090038.15133-8-chunfeng.yun@mediatek.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>

authored by

Chunfeng Yun and committed by
Vinod Koul
a98d935e b0870c01

+21 -39
+21 -39
drivers/phy/mediatek/phy-mtk-hdmi-mt2701.c
··· 7 7 #include "phy-mtk-hdmi.h" 8 8 9 9 #define HDMI_CON0 0x00 10 - #define RG_HDMITX_DRV_IBIAS 0 11 10 #define RG_HDMITX_DRV_IBIAS_MASK GENMASK(5, 0) 12 - #define RG_HDMITX_EN_SER 12 13 11 #define RG_HDMITX_EN_SER_MASK GENMASK(15, 12) 14 - #define RG_HDMITX_EN_SLDO 16 15 12 #define RG_HDMITX_EN_SLDO_MASK GENMASK(19, 16) 16 - #define RG_HDMITX_EN_PRED 20 17 13 #define RG_HDMITX_EN_PRED_MASK GENMASK(23, 20) 18 - #define RG_HDMITX_EN_IMP 24 19 14 #define RG_HDMITX_EN_IMP_MASK GENMASK(27, 24) 20 - #define RG_HDMITX_EN_DRV 28 21 15 #define RG_HDMITX_EN_DRV_MASK GENMASK(31, 28) 22 16 23 17 #define HDMI_CON1 0x04 24 - #define RG_HDMITX_PRED_IBIAS 18 25 18 #define RG_HDMITX_PRED_IBIAS_MASK GENMASK(21, 18) 26 19 #define RG_HDMITX_PRED_IMP BIT(22) 27 - #define RG_HDMITX_DRV_IMP 26 28 20 #define RG_HDMITX_DRV_IMP_MASK GENMASK(31, 26) 29 21 30 22 #define HDMI_CON2 0x08 31 23 #define RG_HDMITX_EN_TX_CKLDO BIT(0) 32 24 #define RG_HDMITX_EN_TX_POSDIV BIT(1) 33 - #define RG_HDMITX_TX_POSDIV 3 34 25 #define RG_HDMITX_TX_POSDIV_MASK GENMASK(4, 3) 35 26 #define RG_HDMITX_EN_MBIAS BIT(6) 36 27 #define RG_HDMITX_MBIAS_LPF_EN BIT(7) ··· 30 39 #define RG_HDMITX_RESERVE_MASK GENMASK(31, 0) 31 40 32 41 #define HDMI_CON6 0x18 33 - #define RG_HTPLL_BR 0 34 42 #define RG_HTPLL_BR_MASK GENMASK(1, 0) 35 - #define RG_HTPLL_BC 2 36 43 #define RG_HTPLL_BC_MASK GENMASK(3, 2) 37 - #define RG_HTPLL_BP 4 38 44 #define RG_HTPLL_BP_MASK GENMASK(7, 4) 39 - #define RG_HTPLL_IR 8 40 45 #define RG_HTPLL_IR_MASK GENMASK(11, 8) 41 - #define RG_HTPLL_IC 12 42 46 #define RG_HTPLL_IC_MASK GENMASK(15, 12) 43 - #define RG_HTPLL_POSDIV 16 44 47 #define RG_HTPLL_POSDIV_MASK GENMASK(17, 16) 45 - #define RG_HTPLL_PREDIV 18 46 48 #define RG_HTPLL_PREDIV_MASK GENMASK(19, 18) 47 - #define RG_HTPLL_FBKSEL 20 48 49 #define RG_HTPLL_FBKSEL_MASK GENMASK(21, 20) 49 50 #define RG_HTPLL_RLH_EN BIT(22) 50 - #define RG_HTPLL_FBKDIV 24 51 51 #define RG_HTPLL_FBKDIV_MASK GENMASK(30, 24) 52 52 #define RG_HTPLL_EN BIT(31) 53 53 54 54 #define HDMI_CON7 0x1c 55 55 #define RG_HTPLL_AUTOK_EN BIT(23) 56 - #define RG_HTPLL_DIVEN 28 57 56 #define RG_HTPLL_DIVEN_MASK GENMASK(30, 28) 58 57 59 58 static int mtk_hdmi_pll_prepare(struct clk_hw *hw) ··· 109 128 mtk_hdmi_phy_set_bits(hdmi_phy, HDMI_CON6, RG_HTPLL_PREDIV_MASK); 110 129 mtk_hdmi_phy_set_bits(hdmi_phy, HDMI_CON6, RG_HTPLL_POSDIV_MASK); 111 130 mtk_hdmi_phy_set_bits(hdmi_phy, HDMI_CON2, RG_HDMITX_EN_TX_POSDIV); 112 - mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON6, (0x1 << RG_HTPLL_IC), 131 + mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON6, FIELD_PREP(RG_HTPLL_IC_MASK, 0x1), 113 132 RG_HTPLL_IC_MASK); 114 - mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON6, (0x1 << RG_HTPLL_IR), 133 + mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON6, FIELD_PREP(RG_HTPLL_IR_MASK, 0x1), 115 134 RG_HTPLL_IR_MASK); 116 - mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON2, (pos_div << RG_HDMITX_TX_POSDIV), 135 + mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON2, FIELD_PREP(RG_HDMITX_TX_POSDIV_MASK, pos_div), 117 136 RG_HDMITX_TX_POSDIV_MASK); 118 - mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON6, (1 << RG_HTPLL_FBKSEL), 137 + mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON6, FIELD_PREP(RG_HTPLL_FBKSEL_MASK, 1), 119 138 RG_HTPLL_FBKSEL_MASK); 120 - mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON6, (19 << RG_HTPLL_FBKDIV), 139 + mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON6, FIELD_PREP(RG_HTPLL_FBKDIV_MASK, 19), 121 140 RG_HTPLL_FBKDIV_MASK); 122 - mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON7, (0x2 << RG_HTPLL_DIVEN), 141 + mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON7, FIELD_PREP(RG_HTPLL_DIVEN_MASK, 0x2), 123 142 RG_HTPLL_DIVEN_MASK); 124 - mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON6, (0xc << RG_HTPLL_BP), 143 + mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON6, FIELD_PREP(RG_HTPLL_BP_MASK, 0xc), 125 144 RG_HTPLL_BP_MASK); 126 - mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON6, (0x2 << RG_HTPLL_BC), 145 + mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON6, FIELD_PREP(RG_HTPLL_BC_MASK, 0x2), 127 146 RG_HTPLL_BC_MASK); 128 - mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON6, (0x1 << RG_HTPLL_BR), 147 + mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON6, FIELD_PREP(RG_HTPLL_BR_MASK, 0x1), 129 148 RG_HTPLL_BR_MASK); 130 149 131 150 mtk_hdmi_phy_clear_bits(hdmi_phy, HDMI_CON1, RG_HDMITX_PRED_IMP); 132 - mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON1, (0x3 << RG_HDMITX_PRED_IBIAS), 151 + mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON1, FIELD_PREP(RG_HDMITX_PRED_IBIAS_MASK, 0x3), 133 152 RG_HDMITX_PRED_IBIAS_MASK); 134 153 mtk_hdmi_phy_clear_bits(hdmi_phy, HDMI_CON0, RG_HDMITX_EN_IMP_MASK); 135 - mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON1, (0x28 << RG_HDMITX_DRV_IMP), 154 + mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON1, FIELD_PREP(RG_HDMITX_DRV_IMP_MASK, 0x28), 136 155 RG_HDMITX_DRV_IMP_MASK); 137 156 mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON4, 0x28, RG_HDMITX_RESERVE_MASK); 138 - mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON0, (0xa << RG_HDMITX_DRV_IBIAS), 157 + mtk_hdmi_phy_mask(hdmi_phy, HDMI_CON0, FIELD_PREP(RG_HDMITX_DRV_IBIAS_MASK, 0xa), 139 158 RG_HDMITX_DRV_IBIAS_MASK); 140 159 return 0; 141 160 } ··· 145 164 { 146 165 struct mtk_hdmi_phy *hdmi_phy = to_mtk_hdmi_phy(hw); 147 166 unsigned long out_rate, val; 167 + u32 tmp; 148 168 149 - val = (readl(hdmi_phy->regs + HDMI_CON6) 150 - & RG_HTPLL_PREDIV_MASK) >> RG_HTPLL_PREDIV; 169 + tmp = readl(hdmi_phy->regs + HDMI_CON6); 170 + val = FIELD_GET(RG_HTPLL_PREDIV_MASK, tmp); 151 171 switch (val) { 152 172 case 0x00: 153 173 out_rate = parent_rate; ··· 161 179 break; 162 180 } 163 181 164 - val = (readl(hdmi_phy->regs + HDMI_CON6) 165 - & RG_HTPLL_FBKDIV_MASK) >> RG_HTPLL_FBKDIV; 182 + val = FIELD_GET(RG_HTPLL_FBKDIV_MASK, tmp); 166 183 out_rate *= (val + 1) * 2; 167 - val = (readl(hdmi_phy->regs + HDMI_CON2) 168 - & RG_HDMITX_TX_POSDIV_MASK); 169 - out_rate >>= (val >> RG_HDMITX_TX_POSDIV); 170 184 171 - if (readl(hdmi_phy->regs + HDMI_CON2) & RG_HDMITX_EN_TX_POSDIV) 185 + tmp = readl(hdmi_phy->regs + HDMI_CON2); 186 + val = FIELD_GET(RG_HDMITX_TX_POSDIV_MASK, tmp); 187 + out_rate >>= val; 188 + 189 + if (tmp & RG_HDMITX_EN_TX_POSDIV) 172 190 out_rate /= 5; 173 191 174 192 return out_rate;