CC: [email protected] BCC: [email protected] CC: Linux Memory Management List <[email protected]> TO: Paul Kocialkowski <[email protected]> CC: Vinod Koul <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 9f9b9a2972eb8dcaad09d826c5c6d7488eaca3e6 commit: 74d0cd478622c87c1665e19ea9217f298648581d [4136/8035] phy: allwinner: phy-sun6i-mipi-dphy: Support D-PHY Rx mode for MIPI CSI-2 :::::: branch date: 4 hours ago :::::: commit date: 12 days ago compiler: arm-linux-gnueabi-gcc (GCC) 11.3.0 reproduce (cppcheck warning): # apt-get install cppcheck git checkout 74d0cd478622c87c1665e19ea9217f298648581d cppcheck --quiet --enable=style,performance,portability --template=gcc FILE If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> cppcheck possible warnings: (new ones prefixed by >>, may not real problems) >> drivers/phy/allwinner/phy-sun6i-mipi-dphy.c:260:8: warning: Signed integer >> overflow for expression '(255&0xff)<<24'. [integerOverflow] SUN6I_DPHY_RX_TIME0_HS_RX_SYNC(255) | ^ vim +260 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c 133add5b5ad42b drivers/gpu/drm/sun4i/sun6i_mipi_dphy.c Maxime Ripard 2018-04-04 244 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 245 static int sun6i_dphy_rx_power_on(struct sun6i_dphy *dphy) 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 246 { 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 247 /* Physical clock rate is actually half of symbol rate with DDR. */ 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 248 unsigned long mipi_symbol_rate = dphy->config.hs_clk_rate; 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 249 unsigned long dphy_clk_rate; 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 250 unsigned int rx_dly; 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 251 unsigned int lprst_dly; 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 252 u32 value; 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 253 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 254 dphy_clk_rate = clk_get_rate(dphy->mod_clk); 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 255 if (!dphy_clk_rate) 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 256 return -EINVAL; 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 257 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 258 /* Hardcoded timing parameters from the Allwinner BSP. */ 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 259 regmap_write(dphy->regs, SUN6I_DPHY_RX_TIME0_REG, 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 @260 SUN6I_DPHY_RX_TIME0_HS_RX_SYNC(255) | 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 261 SUN6I_DPHY_RX_TIME0_HS_RX_CLK_MISS(255) | 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 262 SUN6I_DPHY_RX_TIME0_LP_RX(255)); 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 263 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 264 /* 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 265 * Formula from the Allwinner BSP, with hardcoded coefficients 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 266 * (probably internal divider/multiplier). 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 267 */ 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 268 rx_dly = 8 * (unsigned int)(dphy_clk_rate / (mipi_symbol_rate / 8)); 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 269 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 270 /* 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 271 * The Allwinner BSP has an alternative formula for LP_RX_ULPS_WP: 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 272 * lp_ulps_wp_cnt = lp_ulps_wp_ms * lp_clk / 1000 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 273 * but does not use it and hardcodes 255 instead. 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 274 */ 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 275 regmap_write(dphy->regs, SUN6I_DPHY_RX_TIME1_REG, 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 276 SUN6I_DPHY_RX_TIME1_RX_DLY(rx_dly) | 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 277 SUN6I_DPHY_RX_TIME1_LP_RX_ULPS_WP(255)); 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 278 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 279 /* HS_RX_ANA0 value is hardcoded in the Allwinner BSP. */ 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 280 regmap_write(dphy->regs, SUN6I_DPHY_RX_TIME2_REG, 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 281 SUN6I_DPHY_RX_TIME2_HS_RX_ANA0(4)); 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 282 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 283 /* 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 284 * Formula from the Allwinner BSP, with hardcoded coefficients 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 285 * (probably internal divider/multiplier). 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 286 */ 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 287 lprst_dly = 4 * (unsigned int)(dphy_clk_rate / (mipi_symbol_rate / 2)); 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 288 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 289 regmap_write(dphy->regs, SUN6I_DPHY_RX_TIME3_REG, 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 290 SUN6I_DPHY_RX_TIME3_LPRST_DLY(lprst_dly)); 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 291 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 292 /* Analog parameters are hardcoded in the Allwinner BSP. */ 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 293 regmap_write(dphy->regs, SUN6I_DPHY_ANA0_REG, 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 294 SUN6I_DPHY_ANA0_REG_PWS | 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 295 SUN6I_DPHY_ANA0_REG_SLV(7) | 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 296 SUN6I_DPHY_ANA0_REG_SFB(2)); 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 297 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 298 regmap_write(dphy->regs, SUN6I_DPHY_ANA1_REG, 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 299 SUN6I_DPHY_ANA1_REG_SVTT(4)); 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 300 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 301 regmap_write(dphy->regs, SUN6I_DPHY_ANA4_REG, 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 302 SUN6I_DPHY_ANA4_REG_DMPLVC | 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 303 SUN6I_DPHY_ANA4_REG_DMPLVD(1)); 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 304 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 305 regmap_write(dphy->regs, SUN6I_DPHY_ANA2_REG, 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 306 SUN6I_DPHY_ANA2_REG_ENIB); 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 307 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 308 regmap_write(dphy->regs, SUN6I_DPHY_ANA3_REG, 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 309 SUN6I_DPHY_ANA3_EN_LDOR | 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 310 SUN6I_DPHY_ANA3_EN_LDOC | 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 311 SUN6I_DPHY_ANA3_EN_LDOD); 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 312 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 313 /* 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 314 * Delay comes from the Allwinner BSP, likely for internal regulator 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 315 * ramp-up. 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 316 */ 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 317 udelay(3); 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 318 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 319 value = SUN6I_DPHY_RX_CTL_EN_DBC | SUN6I_DPHY_RX_CTL_RX_CLK_FORCE; 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 320 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 321 /* 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 322 * Rx data lane force-enable bits are used as regular RX enable by the 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 323 * Allwinner BSP. 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 324 */ 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 325 if (dphy->config.lanes >= 1) 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 326 value |= SUN6I_DPHY_RX_CTL_RX_D0_FORCE; 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 327 if (dphy->config.lanes >= 2) 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 328 value |= SUN6I_DPHY_RX_CTL_RX_D1_FORCE; 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 329 if (dphy->config.lanes >= 3) 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 330 value |= SUN6I_DPHY_RX_CTL_RX_D2_FORCE; 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 331 if (dphy->config.lanes == 4) 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 332 value |= SUN6I_DPHY_RX_CTL_RX_D3_FORCE; 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 333 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 334 regmap_write(dphy->regs, SUN6I_DPHY_RX_CTL_REG, value); 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 335 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 336 regmap_write(dphy->regs, SUN6I_DPHY_GCTL_REG, 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 337 SUN6I_DPHY_GCTL_LANE_NUM(dphy->config.lanes) | 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 338 SUN6I_DPHY_GCTL_EN); 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 339 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 340 return 0; 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 341 } 74d0cd478622c8 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c Paul Kocialkowski 2022-04-15 342 -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
