* [sre-misc:rk3588 32/37] drivers/gpu/drm/rockchip/rockchip_drm_vop2.c:1897:21: warning: variable 'invpolflags' set but not used
@ 2023-11-21 20:04 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2023-11-21 20:04 UTC (permalink / raw)
To: Cristian Ciocaltea; +Cc: llvm, oe-kbuild-all, Sebastian Reichel
tree: https://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-misc.git rk3588
head: f41b3e9a9d7f22bef0735b4fe0007321ce6b6d6b
commit: 140267c1c11d90f4889e57ae6d58280b261081c0 [32/37] drm/rockchip: vop2: Add basic support for rk3588
config: arm64-allyesconfig (https://download.01.org/0day-ci/archive/20231122/202311220259.tAXrU0A2-lkp@intel.com/config)
compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231122/202311220259.tAXrU0A2-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202311220259.tAXrU0A2-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/gpu/drm/rockchip/rockchip_drm_vop2.c:1897:21: warning: variable 'invpolflags' set but not used [-Wunused-but-set-variable]
1897 | u32 val, polflags, invpolflags;
| ^
1 warning generated.
vim +/invpolflags +1897 drivers/gpu/drm/rockchip/rockchip_drm_vop2.c
1872
1873 static void vop2_crtc_atomic_enable(struct drm_crtc *crtc,
1874 struct drm_atomic_state *state)
1875 {
1876 struct vop2_video_port *vp = to_vop2_video_port(crtc);
1877 struct vop2 *vop2 = vp->vop2;
1878 const struct vop2_data *vop2_data = vop2->data;
1879 const struct vop2_video_port_data *vp_data = &vop2_data->vp[vp->id];
1880 struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state, crtc);
1881 struct rockchip_crtc_state *vcstate = to_rockchip_crtc_state(crtc->state);
1882 struct drm_display_mode *mode = &crtc->state->adjusted_mode;
1883 unsigned long clock = mode->crtc_clock * 1000;
1884 u16 hsync_len = mode->crtc_hsync_end - mode->crtc_hsync_start;
1885 u16 hdisplay = mode->crtc_hdisplay;
1886 u16 htotal = mode->crtc_htotal;
1887 u16 hact_st = mode->crtc_htotal - mode->crtc_hsync_start;
1888 u16 hact_end = hact_st + hdisplay;
1889 u16 vdisplay = mode->crtc_vdisplay;
1890 u16 vtotal = mode->crtc_vtotal;
1891 u16 vsync_len = mode->crtc_vsync_end - mode->crtc_vsync_start;
1892 u16 vact_st = mode->crtc_vtotal - mode->crtc_vsync_start;
1893 u16 vact_end = vact_st + vdisplay;
1894 u8 out_mode;
1895 u32 dsp_ctrl = 0;
1896 int act_end;
> 1897 u32 val, polflags, invpolflags;
1898 int ret;
1899 struct drm_encoder *encoder;
1900
1901 drm_dbg(vop2->drm, "Update mode to %dx%d%s%d, type: %d for vp%d\n",
1902 hdisplay, vdisplay, mode->flags & DRM_MODE_FLAG_INTERLACE ? "i" : "p",
1903 drm_mode_vrefresh(mode), vcstate->output_type, vp->id);
1904
1905 vop2_lock(vop2);
1906
1907 ret = clk_prepare_enable(vp->dclk);
1908 if (ret < 0) {
1909 drm_err(vop2->drm, "failed to enable dclk for video port%d - %d\n",
1910 vp->id, ret);
1911 vop2_unlock(vop2);
1912 return;
1913 }
1914
1915 if (!vop2->enable_count)
1916 vop2_enable(vop2);
1917
1918 vop2->enable_count++;
1919
1920 vop2_crtc_enable_irq(vp, VP_INT_POST_BUF_EMPTY);
1921
1922 polflags = 0;
1923 if (vcstate->bus_flags & DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE)
1924 polflags |= POLFLAG_DCLK_INV;
1925 if (mode->flags & DRM_MODE_FLAG_PHSYNC)
1926 polflags |= BIT(HSYNC_POSITIVE);
1927 if (mode->flags & DRM_MODE_FLAG_PVSYNC)
1928 polflags |= BIT(VSYNC_POSITIVE);
1929
1930 /* RK3588 uses inverted HDMI V/HSYNC polarity */
1931 if (vop2->data->soc_id == 3588) {
1932 invpolflags = 0;
1933 if (mode->flags & DRM_MODE_FLAG_NHSYNC)
1934 invpolflags |= BIT(HSYNC_POSITIVE);
1935 if (mode->flags & DRM_MODE_FLAG_NVSYNC)
1936 invpolflags |= BIT(VSYNC_POSITIVE);
1937 } else {
1938 invpolflags = polflags;
1939 }
1940
1941 drm_for_each_encoder_mask(encoder, crtc->dev, crtc_state->encoder_mask) {
1942 struct rockchip_encoder *rkencoder = to_rockchip_encoder(encoder);
1943
1944 // rk3568_set_intf_mux(vp, rkencoder->crtc_endpoint_id, polflags, invpolflags);
1945 vop2_set_intf_mux(vp, rkencoder->crtc_endpoint_id, polflags);
1946 }
1947
1948 if (vcstate->output_mode == ROCKCHIP_OUT_MODE_AAAA &&
1949 !(vp_data->feature & VOP_FEATURE_OUTPUT_10BIT))
1950 out_mode = ROCKCHIP_OUT_MODE_P888;
1951 else
1952 out_mode = vcstate->output_mode;
1953
1954 dsp_ctrl |= FIELD_PREP(RK3568_VP_DSP_CTRL__OUT_MODE, out_mode);
1955
1956 if (vop2_output_uv_swap(vcstate->bus_format, vcstate->output_mode))
1957 dsp_ctrl |= RK3568_VP_DSP_CTRL__DSP_RB_SWAP;
1958
1959 if (is_yuv_output(vcstate->bus_format))
1960 dsp_ctrl |= RK3568_VP_DSP_CTRL__POST_DSP_OUT_R2Y;
1961
1962 vop2_dither_setup(crtc, &dsp_ctrl);
1963
1964 vop2_vp_write(vp, RK3568_VP_DSP_HTOTAL_HS_END, (htotal << 16) | hsync_len);
1965 val = hact_st << 16;
1966 val |= hact_end;
1967 vop2_vp_write(vp, RK3568_VP_DSP_HACT_ST_END, val);
1968
1969 val = vact_st << 16;
1970 val |= vact_end;
1971 vop2_vp_write(vp, RK3568_VP_DSP_VACT_ST_END, val);
1972
1973 if (mode->flags & DRM_MODE_FLAG_INTERLACE) {
1974 u16 vact_st_f1 = vtotal + vact_st + 1;
1975 u16 vact_end_f1 = vact_st_f1 + vdisplay;
1976
1977 val = vact_st_f1 << 16 | vact_end_f1;
1978 vop2_vp_write(vp, RK3568_VP_DSP_VACT_ST_END_F1, val);
1979
1980 val = vtotal << 16 | (vtotal + vsync_len);
1981 vop2_vp_write(vp, RK3568_VP_DSP_VS_ST_END_F1, val);
1982 dsp_ctrl |= RK3568_VP_DSP_CTRL__DSP_INTERLACE;
1983 dsp_ctrl |= RK3568_VP_DSP_CTRL__DSP_FILED_POL;
1984 dsp_ctrl |= RK3568_VP_DSP_CTRL__P2I_EN;
1985 vtotal += vtotal + 1;
1986 act_end = vact_end_f1;
1987 } else {
1988 act_end = vact_end;
1989 }
1990
1991 vop2_writel(vop2, RK3568_VP_LINE_FLAG(vp->id),
1992 (act_end - us_to_vertical_line(mode, 0)) << 16 | act_end);
1993
1994 vop2_vp_write(vp, RK3568_VP_DSP_VTOTAL_VS_END, vtotal << 16 | vsync_len);
1995
1996 if (mode->flags & DRM_MODE_FLAG_DBLCLK) {
1997 dsp_ctrl |= RK3568_VP_DSP_CTRL__CORE_DCLK_DIV;
1998 clock *= 2;
1999 }
2000
2001 vop2_vp_write(vp, RK3568_VP_MIPI_CTRL, 0);
2002
2003 clk_set_rate(vp->dclk, clock);
2004
2005 vop2_post_config(crtc);
2006
2007 vop2_cfg_done(vp);
2008
2009 vop2_vp_write(vp, RK3568_VP_DSP_CTRL, dsp_ctrl);
2010
2011 drm_crtc_vblank_on(crtc);
2012
2013 // [CC:] needed?
2014 ret = reset_control_assert(vp->dclk_rst);
2015 if (ret < 0)
2016 drm_warn(vop2->drm, "failed to assert reset: %d\n", ret);
2017 udelay(10);
2018 ret = reset_control_deassert(vp->dclk_rst);
2019 if (ret < 0)
2020 drm_warn(vop2->drm, "failed to deassert reset: %d\n", ret);
2021
2022 vop2_unlock(vop2);
2023 }
2024
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2023-11-21 20:05 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-21 20:04 [sre-misc:rk3588 32/37] drivers/gpu/drm/rockchip/rockchip_drm_vop2.c:1897:21: warning: variable 'invpolflags' set but not used kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox