mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* drivers/media/test-drivers/vivid/vivid-ctrls.c:1799:22: warning: ' Is Connected To' directive output may be truncated writing 16 bytes into a region of size between 10 and 19
@ 2025-07-07 10:26 kernel test robot
  2025-07-07 11:58 ` Hans Verkuil
  0 siblings, 1 reply; 3+ messages in thread
From: kernel test robot @ 2025-07-07 10:26 UTC (permalink / raw)
  To: Dorcas Anono Litunya; +Cc: oe-kbuild-all, linux-kernel, Hans Verkuil

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   d7b8f8e20813f0179d8ef519541a3527e7661d3a
commit: d7c969f37515d78dc1a026d12b94b90e319a5a61 media: vivid: Add 'Is Connected To' menu controls
date:   1 year ago
config: microblaze-randconfig-2006-20250701 (https://download.01.org/0day-ci/archive/20250707/202507071251.j08Oluox-lkp@intel.com/config)
compiler: microblaze-linux-gcc (GCC) 8.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250707/202507071251.j08Oluox-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/202507071251.j08Oluox-lkp@intel.com/

All warnings (new ones prefixed by >>):

   drivers/media/test-drivers/vivid/vivid-ctrls.c: In function 'vivid_create_controls':
>> drivers/media/test-drivers/vivid/vivid-ctrls.c:1799:22: warning: ' Is Connected To' directive output may be truncated writing 16 bytes into a region of size between 10 and 19 [-Wformat-truncation=]
         "S-Video %03u-%u Is Connected To", dev->inst, i);
                         ^~~~~~~~~~~~~~~~
   drivers/media/test-drivers/vivid/vivid-ctrls.c:1797:4: note: 'snprintf' output between 30 and 39 bytes into a destination of size 32
       snprintf(dev->ctrl_svid_to_output_names[i],
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         sizeof(dev->ctrl_svid_to_output_names[i]),
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         "S-Video %03u-%u Is Connected To", dev->inst, i);
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/test-drivers/vivid/vivid-ctrls.c:1780:19: warning: ' Is Connected To' directive output may be truncated writing 16 bytes into a region of size between 13 and 22 [-Wformat-truncation=]
         "HDMI %03u-%u Is Connected To", dev->inst, i);
                      ^~~~~~~~~~~~~~~~
   drivers/media/test-drivers/vivid/vivid-ctrls.c:1778:4: note: 'snprintf' output between 27 and 36 bytes into a destination of size 32
       snprintf(dev->ctrl_hdmi_to_output_names[i],
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         sizeof(dev->ctrl_hdmi_to_output_names[i]),
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         "HDMI %03u-%u Is Connected To", dev->inst, i);
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


vim +1799 drivers/media/test-drivers/vivid/vivid-ctrls.c

  1635	
  1636	int vivid_create_controls(struct vivid_dev *dev, bool show_ccs_cap,
  1637			bool show_ccs_out, bool no_error_inj,
  1638			bool has_sdtv, bool has_hdmi)
  1639	{
  1640		struct v4l2_ctrl_handler *hdl_user_gen = &dev->ctrl_hdl_user_gen;
  1641		struct v4l2_ctrl_handler *hdl_user_vid = &dev->ctrl_hdl_user_vid;
  1642		struct v4l2_ctrl_handler *hdl_user_aud = &dev->ctrl_hdl_user_aud;
  1643		struct v4l2_ctrl_handler *hdl_streaming = &dev->ctrl_hdl_streaming;
  1644		struct v4l2_ctrl_handler *hdl_sdtv_cap = &dev->ctrl_hdl_sdtv_cap;
  1645		struct v4l2_ctrl_handler *hdl_loop_cap = &dev->ctrl_hdl_loop_cap;
  1646		struct v4l2_ctrl_handler *hdl_fb = &dev->ctrl_hdl_fb;
  1647		struct v4l2_ctrl_handler *hdl_vid_cap = &dev->ctrl_hdl_vid_cap;
  1648		struct v4l2_ctrl_handler *hdl_vid_out = &dev->ctrl_hdl_vid_out;
  1649		struct v4l2_ctrl_handler *hdl_vbi_cap = &dev->ctrl_hdl_vbi_cap;
  1650		struct v4l2_ctrl_handler *hdl_vbi_out = &dev->ctrl_hdl_vbi_out;
  1651		struct v4l2_ctrl_handler *hdl_radio_rx = &dev->ctrl_hdl_radio_rx;
  1652		struct v4l2_ctrl_handler *hdl_radio_tx = &dev->ctrl_hdl_radio_tx;
  1653		struct v4l2_ctrl_handler *hdl_sdr_cap = &dev->ctrl_hdl_sdr_cap;
  1654		struct v4l2_ctrl_handler *hdl_meta_cap = &dev->ctrl_hdl_meta_cap;
  1655		struct v4l2_ctrl_handler *hdl_meta_out = &dev->ctrl_hdl_meta_out;
  1656		struct v4l2_ctrl_handler *hdl_tch_cap = &dev->ctrl_hdl_touch_cap;
  1657	
  1658		struct v4l2_ctrl_config vivid_ctrl_dv_timings = {
  1659			.ops = &vivid_vid_cap_ctrl_ops,
  1660			.id = VIVID_CID_DV_TIMINGS,
  1661			.name = "DV Timings",
  1662			.type = V4L2_CTRL_TYPE_MENU,
  1663		};
  1664		int i;
  1665	
  1666		v4l2_ctrl_handler_init(hdl_user_gen, 10);
  1667		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_class, NULL);
  1668		v4l2_ctrl_handler_init(hdl_user_vid, 9);
  1669		v4l2_ctrl_new_custom(hdl_user_vid, &vivid_ctrl_class, NULL);
  1670		v4l2_ctrl_handler_init(hdl_user_aud, 2);
  1671		v4l2_ctrl_new_custom(hdl_user_aud, &vivid_ctrl_class, NULL);
  1672		v4l2_ctrl_handler_init(hdl_streaming, 8);
  1673		v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_class, NULL);
  1674		v4l2_ctrl_handler_init(hdl_sdtv_cap, 2);
  1675		v4l2_ctrl_new_custom(hdl_sdtv_cap, &vivid_ctrl_class, NULL);
  1676		v4l2_ctrl_handler_init(hdl_loop_cap, 1);
  1677		v4l2_ctrl_new_custom(hdl_loop_cap, &vivid_ctrl_class, NULL);
  1678		v4l2_ctrl_handler_init(hdl_fb, 1);
  1679		v4l2_ctrl_new_custom(hdl_fb, &vivid_ctrl_class, NULL);
  1680		v4l2_ctrl_handler_init(hdl_vid_cap, 55);
  1681		v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_class, NULL);
  1682		v4l2_ctrl_handler_init(hdl_vid_out, 26);
  1683		if (!no_error_inj || dev->has_fb || dev->num_hdmi_outputs)
  1684			v4l2_ctrl_new_custom(hdl_vid_out, &vivid_ctrl_class, NULL);
  1685		v4l2_ctrl_handler_init(hdl_vbi_cap, 21);
  1686		v4l2_ctrl_new_custom(hdl_vbi_cap, &vivid_ctrl_class, NULL);
  1687		v4l2_ctrl_handler_init(hdl_vbi_out, 19);
  1688		if (!no_error_inj)
  1689			v4l2_ctrl_new_custom(hdl_vbi_out, &vivid_ctrl_class, NULL);
  1690		v4l2_ctrl_handler_init(hdl_radio_rx, 17);
  1691		v4l2_ctrl_new_custom(hdl_radio_rx, &vivid_ctrl_class, NULL);
  1692		v4l2_ctrl_handler_init(hdl_radio_tx, 17);
  1693		v4l2_ctrl_new_custom(hdl_radio_tx, &vivid_ctrl_class, NULL);
  1694		v4l2_ctrl_handler_init(hdl_sdr_cap, 19);
  1695		v4l2_ctrl_new_custom(hdl_sdr_cap, &vivid_ctrl_class, NULL);
  1696		v4l2_ctrl_handler_init(hdl_meta_cap, 2);
  1697		v4l2_ctrl_new_custom(hdl_meta_cap, &vivid_ctrl_class, NULL);
  1698		v4l2_ctrl_handler_init(hdl_meta_out, 2);
  1699		v4l2_ctrl_new_custom(hdl_meta_out, &vivid_ctrl_class, NULL);
  1700		v4l2_ctrl_handler_init(hdl_tch_cap, 2);
  1701		v4l2_ctrl_new_custom(hdl_tch_cap, &vivid_ctrl_class, NULL);
  1702	
  1703		/* User Controls */
  1704		dev->volume = v4l2_ctrl_new_std(hdl_user_aud, NULL,
  1705			V4L2_CID_AUDIO_VOLUME, 0, 255, 1, 200);
  1706		dev->mute = v4l2_ctrl_new_std(hdl_user_aud, NULL,
  1707			V4L2_CID_AUDIO_MUTE, 0, 1, 1, 0);
  1708		if (dev->has_vid_cap) {
  1709			dev->brightness = v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
  1710				V4L2_CID_BRIGHTNESS, 0, 255, 1, 128);
  1711			for (i = 0; i < MAX_INPUTS; i++)
  1712				dev->input_brightness[i] = 128;
  1713			dev->contrast = v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
  1714				V4L2_CID_CONTRAST, 0, 255, 1, 128);
  1715			dev->saturation = v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
  1716				V4L2_CID_SATURATION, 0, 255, 1, 128);
  1717			dev->hue = v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
  1718				V4L2_CID_HUE, -128, 128, 1, 0);
  1719			v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
  1720				V4L2_CID_HFLIP, 0, 1, 1, 0);
  1721			v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
  1722				V4L2_CID_VFLIP, 0, 1, 1, 0);
  1723			dev->autogain = v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
  1724				V4L2_CID_AUTOGAIN, 0, 1, 1, 1);
  1725			dev->gain = v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
  1726				V4L2_CID_GAIN, 0, 255, 1, 100);
  1727			dev->alpha = v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
  1728				V4L2_CID_ALPHA_COMPONENT, 0, 255, 1, 0);
  1729		}
  1730		dev->button = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_button, NULL);
  1731		dev->int32 = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_int32, NULL);
  1732		dev->int64 = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_int64, NULL);
  1733		dev->boolean = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_boolean, NULL);
  1734		dev->menu = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_menu, NULL);
  1735		dev->string = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_string, NULL);
  1736		dev->bitmask = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_bitmask, NULL);
  1737		dev->int_menu = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_int_menu, NULL);
  1738		dev->ro_int32 = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_ro_int32, NULL);
  1739		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_area, NULL);
  1740		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u32_array, NULL);
  1741		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u32_dyn_array, NULL);
  1742		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u16_matrix, NULL);
  1743		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u8_4d_array, NULL);
  1744		dev->pixel_array = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u8_pixel_array, NULL);
  1745		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_s32_array, NULL);
  1746		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_s64_array, NULL);
  1747	
  1748		if (dev->has_vid_cap) {
  1749			/* Image Processing Controls */
  1750			struct v4l2_ctrl_config vivid_ctrl_test_pattern = {
  1751				.ops = &vivid_vid_cap_ctrl_ops,
  1752				.id = VIVID_CID_TEST_PATTERN,
  1753				.name = "Test Pattern",
  1754				.type = V4L2_CTRL_TYPE_MENU,
  1755				.max = TPG_PAT_NOISE,
  1756				.qmenu = tpg_pattern_strings,
  1757			};
  1758	
  1759			dev->test_pattern = v4l2_ctrl_new_custom(hdl_vid_cap,
  1760					&vivid_ctrl_test_pattern, NULL);
  1761			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_perc_fill, NULL);
  1762			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_hor_movement, NULL);
  1763			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_vert_movement, NULL);
  1764			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_osd_mode, NULL);
  1765			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_show_border, NULL);
  1766			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_show_square, NULL);
  1767			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_hflip, NULL);
  1768			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_vflip, NULL);
  1769			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_insert_sav, NULL);
  1770			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_insert_eav, NULL);
  1771			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_insert_hdmi_video_guard_band, NULL);
  1772			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_reduced_fps, NULL);
  1773	
  1774			WARN_ON(dev->num_hdmi_inputs > MAX_HDMI_INPUTS);
  1775			WARN_ON(dev->num_svid_inputs > MAX_SVID_INPUTS);
  1776	
  1777			for (u8 i = 0; i < dev->num_hdmi_inputs; i++) {
  1778				snprintf(dev->ctrl_hdmi_to_output_names[i],
  1779					 sizeof(dev->ctrl_hdmi_to_output_names[i]),
  1780					 "HDMI %03u-%u Is Connected To", dev->inst, i);
  1781			}
  1782	
  1783			for (u8 i = 0; i < dev->num_hdmi_inputs; i++) {
  1784				struct v4l2_ctrl_config ctrl_config = {
  1785					.ops = &vivid_vid_cap_ctrl_ops,
  1786					.id = VIVID_CID_HDMI_IS_CONNECTED_TO_OUTPUT(i),
  1787					.name = dev->ctrl_hdmi_to_output_names[i],
  1788					.type = V4L2_CTRL_TYPE_MENU,
  1789					.max = 1,
  1790					.qmenu = (const char * const *)vivid_ctrl_hdmi_to_output_strings,
  1791				};
  1792				dev->ctrl_hdmi_to_output[i] = v4l2_ctrl_new_custom(hdl_vid_cap,
  1793										   &ctrl_config, NULL);
  1794			}
  1795	
  1796			for (u8 i = 0; i < dev->num_svid_inputs; i++) {
  1797				snprintf(dev->ctrl_svid_to_output_names[i],
  1798					 sizeof(dev->ctrl_svid_to_output_names[i]),
> 1799					 "S-Video %03u-%u Is Connected To", dev->inst, i);
  1800			}
  1801	
  1802			for (u8 i = 0; i < dev->num_svid_inputs; i++) {
  1803				struct v4l2_ctrl_config ctrl_config = {
  1804					.ops = &vivid_vid_cap_ctrl_ops,
  1805					.id = VIVID_CID_SVID_IS_CONNECTED_TO_OUTPUT(i),
  1806					.name = dev->ctrl_svid_to_output_names[i],
  1807					.type = V4L2_CTRL_TYPE_MENU,
  1808					.max = 1,
  1809					.qmenu = (const char * const *)vivid_ctrl_svid_to_output_strings,
  1810				};
  1811				dev->ctrl_svid_to_output[i] = v4l2_ctrl_new_custom(hdl_vid_cap,
  1812										   &ctrl_config, NULL);
  1813			}
  1814	
  1815			if (show_ccs_cap) {
  1816				dev->ctrl_has_crop_cap = v4l2_ctrl_new_custom(hdl_vid_cap,
  1817					&vivid_ctrl_has_crop_cap, NULL);
  1818				dev->ctrl_has_compose_cap = v4l2_ctrl_new_custom(hdl_vid_cap,
  1819					&vivid_ctrl_has_compose_cap, NULL);
  1820				dev->ctrl_has_scaler_cap = v4l2_ctrl_new_custom(hdl_vid_cap,
  1821					&vivid_ctrl_has_scaler_cap, NULL);
  1822			}
  1823	
  1824			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_tstamp_src, NULL);
  1825			dev->colorspace = v4l2_ctrl_new_custom(hdl_vid_cap,
  1826				&vivid_ctrl_colorspace, NULL);
  1827			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_xfer_func, NULL);
  1828			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_ycbcr_enc, NULL);
  1829			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_hsv_enc, NULL);
  1830			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_quantization, NULL);
  1831			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_alpha_mode, NULL);
  1832		}
  1833	
  1834		if (dev->has_vid_out && show_ccs_out) {
  1835			dev->ctrl_has_crop_out = v4l2_ctrl_new_custom(hdl_vid_out,
  1836				&vivid_ctrl_has_crop_out, NULL);
  1837			dev->ctrl_has_compose_out = v4l2_ctrl_new_custom(hdl_vid_out,
  1838				&vivid_ctrl_has_compose_out, NULL);
  1839			dev->ctrl_has_scaler_out = v4l2_ctrl_new_custom(hdl_vid_out,
  1840				&vivid_ctrl_has_scaler_out, NULL);
  1841		}
  1842	
  1843		/*
  1844		 * Testing this driver with v4l2-compliance will trigger the error
  1845		 * injection controls, and after that nothing will work as expected.
  1846		 * So we have a module option to drop these error injecting controls
  1847		 * allowing us to run v4l2_compliance again.
  1848		 */
  1849		if (!no_error_inj) {
  1850			v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_disconnect, NULL);
  1851			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_dqbuf_error, NULL);
  1852			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_perc_dropped, NULL);
  1853			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_queue_setup_error, NULL);
  1854			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_buf_prepare_error, NULL);
  1855			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_start_streaming_error, NULL);
  1856			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_queue_error, NULL);
  1857	#ifdef CONFIG_MEDIA_CONTROLLER
  1858			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_req_validate_error, NULL);
  1859	#endif
  1860			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_seq_wrap, NULL);
  1861			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_time_wrap, NULL);
  1862		}
  1863	
  1864		if (has_sdtv && (dev->has_vid_cap || dev->has_vbi_cap)) {
  1865			if (dev->has_vid_cap)
  1866				v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_std_aspect_ratio, NULL);
  1867			dev->ctrl_std_signal_mode = v4l2_ctrl_new_custom(hdl_sdtv_cap,
  1868				&vivid_ctrl_std_signal_mode, NULL);
  1869			dev->ctrl_standard = v4l2_ctrl_new_custom(hdl_sdtv_cap,
  1870				&vivid_ctrl_standard, NULL);
  1871			if (dev->ctrl_std_signal_mode)
  1872				v4l2_ctrl_cluster(2, &dev->ctrl_std_signal_mode);
  1873			if (dev->has_raw_vbi_cap)
  1874				v4l2_ctrl_new_custom(hdl_vbi_cap, &vivid_ctrl_vbi_cap_interlaced, NULL);
  1875		}
  1876	
  1877		if (dev->num_hdmi_inputs) {
  1878			s64 hdmi_input_mask = GENMASK(dev->num_hdmi_inputs - 1, 0);
  1879	
  1880			dev->ctrl_dv_timings_signal_mode = v4l2_ctrl_new_custom(hdl_vid_cap,
  1881						&vivid_ctrl_dv_timings_signal_mode, NULL);
  1882	
  1883			vivid_ctrl_dv_timings.max = dev->query_dv_timings_size - 1;
  1884			vivid_ctrl_dv_timings.qmenu =
  1885				(const char * const *)dev->query_dv_timings_qmenu;
  1886			dev->ctrl_dv_timings = v4l2_ctrl_new_custom(hdl_vid_cap,
  1887				&vivid_ctrl_dv_timings, NULL);
  1888			if (dev->ctrl_dv_timings_signal_mode)
  1889				v4l2_ctrl_cluster(2, &dev->ctrl_dv_timings_signal_mode);
  1890	
  1891			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_dv_timings_aspect_ratio, NULL);
  1892			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_max_edid_blocks, NULL);
  1893			dev->real_rgb_range_cap = v4l2_ctrl_new_custom(hdl_vid_cap,
  1894				&vivid_ctrl_limited_rgb_range, NULL);
  1895			dev->rgb_range_cap = v4l2_ctrl_new_std_menu(hdl_vid_cap,
  1896				&vivid_vid_cap_ctrl_ops,
  1897				V4L2_CID_DV_RX_RGB_RANGE, V4L2_DV_RGB_RANGE_FULL,
  1898				0, V4L2_DV_RGB_RANGE_AUTO);
  1899			dev->ctrl_rx_power_present = v4l2_ctrl_new_std(hdl_vid_cap,
  1900				NULL, V4L2_CID_DV_RX_POWER_PRESENT, 0, hdmi_input_mask,
  1901				0, hdmi_input_mask);
  1902	
  1903		}
  1904		if (dev->num_hdmi_outputs) {
  1905			s64 hdmi_output_mask = GENMASK(dev->num_hdmi_outputs - 1, 0);
  1906	
  1907			/*
  1908			 * We aren't doing anything with this at the moment, but
  1909			 * HDMI outputs typically have this controls.
  1910			 */
  1911			dev->ctrl_tx_rgb_range = v4l2_ctrl_new_std_menu(hdl_vid_out, NULL,
  1912				V4L2_CID_DV_TX_RGB_RANGE, V4L2_DV_RGB_RANGE_FULL,
  1913				0, V4L2_DV_RGB_RANGE_AUTO);
  1914			dev->ctrl_tx_mode = v4l2_ctrl_new_std_menu(hdl_vid_out, NULL,
  1915				V4L2_CID_DV_TX_MODE, V4L2_DV_TX_MODE_HDMI,
  1916				0, V4L2_DV_TX_MODE_HDMI);
  1917			dev->ctrl_display_present = v4l2_ctrl_new_custom(hdl_vid_out,
  1918				&vivid_ctrl_display_present, NULL);
  1919			dev->ctrl_tx_hotplug = v4l2_ctrl_new_std(hdl_vid_out,
  1920				NULL, V4L2_CID_DV_TX_HOTPLUG, 0, hdmi_output_mask,
  1921				0, hdmi_output_mask);
  1922			dev->ctrl_tx_rxsense = v4l2_ctrl_new_std(hdl_vid_out,
  1923				NULL, V4L2_CID_DV_TX_RXSENSE, 0, hdmi_output_mask,
  1924				0, hdmi_output_mask);
  1925			dev->ctrl_tx_edid_present = v4l2_ctrl_new_std(hdl_vid_out,
  1926				NULL, V4L2_CID_DV_TX_EDID_PRESENT, 0, hdmi_output_mask,
  1927				0, hdmi_output_mask);
  1928		}
  1929		if ((dev->has_vid_cap && dev->has_vid_out) ||
  1930		    (dev->has_vbi_cap && dev->has_vbi_out))
  1931			v4l2_ctrl_new_custom(hdl_loop_cap, &vivid_ctrl_loop_video, NULL);
  1932	
  1933		if (dev->has_fb)
  1934			v4l2_ctrl_new_custom(hdl_fb, &vivid_ctrl_clear_fb, NULL);
  1935	
  1936		if (dev->has_radio_rx) {
  1937			v4l2_ctrl_new_custom(hdl_radio_rx, &vivid_ctrl_radio_hw_seek_mode, NULL);
  1938			v4l2_ctrl_new_custom(hdl_radio_rx, &vivid_ctrl_radio_hw_seek_prog_lim, NULL);
  1939			v4l2_ctrl_new_custom(hdl_radio_rx, &vivid_ctrl_radio_rx_rds_blockio, NULL);
  1940			v4l2_ctrl_new_custom(hdl_radio_rx, &vivid_ctrl_radio_rx_rds_rbds, NULL);
  1941			v4l2_ctrl_new_std(hdl_radio_rx, &vivid_radio_rx_ctrl_ops,
  1942				V4L2_CID_RDS_RECEPTION, 0, 1, 1, 1);
  1943			dev->radio_rx_rds_pty = v4l2_ctrl_new_std(hdl_radio_rx,
  1944				&vivid_radio_rx_ctrl_ops,
  1945				V4L2_CID_RDS_RX_PTY, 0, 31, 1, 0);
  1946			dev->radio_rx_rds_psname = v4l2_ctrl_new_std(hdl_radio_rx,
  1947				&vivid_radio_rx_ctrl_ops,
  1948				V4L2_CID_RDS_RX_PS_NAME, 0, 8, 8, 0);
  1949			dev->radio_rx_rds_radiotext = v4l2_ctrl_new_std(hdl_radio_rx,
  1950				&vivid_radio_rx_ctrl_ops,
  1951				V4L2_CID_RDS_RX_RADIO_TEXT, 0, 64, 64, 0);
  1952			dev->radio_rx_rds_ta = v4l2_ctrl_new_std(hdl_radio_rx,
  1953				&vivid_radio_rx_ctrl_ops,
  1954				V4L2_CID_RDS_RX_TRAFFIC_ANNOUNCEMENT, 0, 1, 1, 0);
  1955			dev->radio_rx_rds_tp = v4l2_ctrl_new_std(hdl_radio_rx,
  1956				&vivid_radio_rx_ctrl_ops,
  1957				V4L2_CID_RDS_RX_TRAFFIC_PROGRAM, 0, 1, 1, 0);
  1958			dev->radio_rx_rds_ms = v4l2_ctrl_new_std(hdl_radio_rx,
  1959				&vivid_radio_rx_ctrl_ops,
  1960				V4L2_CID_RDS_RX_MUSIC_SPEECH, 0, 1, 1, 1);
  1961		}
  1962		if (dev->has_radio_tx) {
  1963			v4l2_ctrl_new_custom(hdl_radio_tx,
  1964				&vivid_ctrl_radio_tx_rds_blockio, NULL);
  1965			dev->radio_tx_rds_pi = v4l2_ctrl_new_std(hdl_radio_tx,
  1966				&vivid_radio_tx_ctrl_ops,
  1967				V4L2_CID_RDS_TX_PI, 0, 0xffff, 1, 0x8088);
  1968			dev->radio_tx_rds_pty = v4l2_ctrl_new_std(hdl_radio_tx,
  1969				&vivid_radio_tx_ctrl_ops,
  1970				V4L2_CID_RDS_TX_PTY, 0, 31, 1, 3);
  1971			dev->radio_tx_rds_psname = v4l2_ctrl_new_std(hdl_radio_tx,
  1972				&vivid_radio_tx_ctrl_ops,
  1973				V4L2_CID_RDS_TX_PS_NAME, 0, 8, 8, 0);
  1974			if (dev->radio_tx_rds_psname)
  1975				v4l2_ctrl_s_ctrl_string(dev->radio_tx_rds_psname, "VIVID-TX");
  1976			dev->radio_tx_rds_radiotext = v4l2_ctrl_new_std(hdl_radio_tx,
  1977				&vivid_radio_tx_ctrl_ops,
  1978				V4L2_CID_RDS_TX_RADIO_TEXT, 0, 64 * 2, 64, 0);
  1979			if (dev->radio_tx_rds_radiotext)
  1980				v4l2_ctrl_s_ctrl_string(dev->radio_tx_rds_radiotext,
  1981				       "This is a VIVID default Radio Text template text, change at will");
  1982			dev->radio_tx_rds_mono_stereo = v4l2_ctrl_new_std(hdl_radio_tx,
  1983				&vivid_radio_tx_ctrl_ops,
  1984				V4L2_CID_RDS_TX_MONO_STEREO, 0, 1, 1, 1);
  1985			dev->radio_tx_rds_art_head = v4l2_ctrl_new_std(hdl_radio_tx,
  1986				&vivid_radio_tx_ctrl_ops,
  1987				V4L2_CID_RDS_TX_ARTIFICIAL_HEAD, 0, 1, 1, 0);
  1988			dev->radio_tx_rds_compressed = v4l2_ctrl_new_std(hdl_radio_tx,
  1989				&vivid_radio_tx_ctrl_ops,
  1990				V4L2_CID_RDS_TX_COMPRESSED, 0, 1, 1, 0);
  1991			dev->radio_tx_rds_dyn_pty = v4l2_ctrl_new_std(hdl_radio_tx,
  1992				&vivid_radio_tx_ctrl_ops,
  1993				V4L2_CID_RDS_TX_DYNAMIC_PTY, 0, 1, 1, 0);
  1994			dev->radio_tx_rds_ta = v4l2_ctrl_new_std(hdl_radio_tx,
  1995				&vivid_radio_tx_ctrl_ops,
  1996				V4L2_CID_RDS_TX_TRAFFIC_ANNOUNCEMENT, 0, 1, 1, 0);
  1997			dev->radio_tx_rds_tp = v4l2_ctrl_new_std(hdl_radio_tx,
  1998				&vivid_radio_tx_ctrl_ops,
  1999				V4L2_CID_RDS_TX_TRAFFIC_PROGRAM, 0, 1, 1, 1);
  2000			dev->radio_tx_rds_ms = v4l2_ctrl_new_std(hdl_radio_tx,
  2001				&vivid_radio_tx_ctrl_ops,
  2002				V4L2_CID_RDS_TX_MUSIC_SPEECH, 0, 1, 1, 1);
  2003		}
  2004		if (dev->has_sdr_cap) {
  2005			v4l2_ctrl_new_custom(hdl_sdr_cap,
  2006				&vivid_ctrl_sdr_cap_fm_deviation, NULL);
  2007		}
  2008		if (dev->has_meta_cap) {
  2009			v4l2_ctrl_new_custom(hdl_meta_cap,
  2010					     &vivid_ctrl_meta_has_pts, NULL);
  2011			v4l2_ctrl_new_custom(hdl_meta_cap,
  2012					     &vivid_ctrl_meta_has_src_clk, NULL);
  2013		}
  2014	
  2015		if (hdl_user_gen->error)
  2016			return hdl_user_gen->error;
  2017		if (hdl_user_vid->error)
  2018			return hdl_user_vid->error;
  2019		if (hdl_user_aud->error)
  2020			return hdl_user_aud->error;
  2021		if (hdl_streaming->error)
  2022			return hdl_streaming->error;
  2023		if (hdl_sdr_cap->error)
  2024			return hdl_sdr_cap->error;
  2025		if (hdl_loop_cap->error)
  2026			return hdl_loop_cap->error;
  2027	
  2028		if (dev->autogain)
  2029			v4l2_ctrl_auto_cluster(2, &dev->autogain, 0, true);
  2030	
  2031		if (dev->has_vid_cap) {
  2032			v4l2_ctrl_add_handler(hdl_vid_cap, hdl_user_gen, NULL, false);
  2033			v4l2_ctrl_add_handler(hdl_vid_cap, hdl_user_vid, NULL, false);
  2034			v4l2_ctrl_add_handler(hdl_vid_cap, hdl_user_aud, NULL, false);
  2035			v4l2_ctrl_add_handler(hdl_vid_cap, hdl_streaming, NULL, false);
  2036			v4l2_ctrl_add_handler(hdl_vid_cap, hdl_sdtv_cap, NULL, false);
  2037			v4l2_ctrl_add_handler(hdl_vid_cap, hdl_loop_cap, NULL, false);
  2038			v4l2_ctrl_add_handler(hdl_vid_cap, hdl_fb, NULL, false);
  2039			if (hdl_vid_cap->error)
  2040				return hdl_vid_cap->error;
  2041			dev->vid_cap_dev.ctrl_handler = hdl_vid_cap;
  2042		}
  2043		if (dev->has_vid_out) {
  2044			v4l2_ctrl_add_handler(hdl_vid_out, hdl_user_gen, NULL, false);
  2045			v4l2_ctrl_add_handler(hdl_vid_out, hdl_user_aud, NULL, false);
  2046			v4l2_ctrl_add_handler(hdl_vid_out, hdl_streaming, NULL, false);
  2047			v4l2_ctrl_add_handler(hdl_vid_out, hdl_fb, NULL, false);
  2048			if (hdl_vid_out->error)
  2049				return hdl_vid_out->error;
  2050			dev->vid_out_dev.ctrl_handler = hdl_vid_out;
  2051		}
  2052		if (dev->has_vbi_cap) {
  2053			v4l2_ctrl_add_handler(hdl_vbi_cap, hdl_user_gen, NULL, false);
  2054			v4l2_ctrl_add_handler(hdl_vbi_cap, hdl_streaming, NULL, false);
  2055			v4l2_ctrl_add_handler(hdl_vbi_cap, hdl_sdtv_cap, NULL, false);
  2056			v4l2_ctrl_add_handler(hdl_vbi_cap, hdl_loop_cap, NULL, false);
  2057			if (hdl_vbi_cap->error)
  2058				return hdl_vbi_cap->error;
  2059			dev->vbi_cap_dev.ctrl_handler = hdl_vbi_cap;
  2060		}
  2061		if (dev->has_vbi_out) {
  2062			v4l2_ctrl_add_handler(hdl_vbi_out, hdl_user_gen, NULL, false);
  2063			v4l2_ctrl_add_handler(hdl_vbi_out, hdl_streaming, NULL, false);
  2064			if (hdl_vbi_out->error)
  2065				return hdl_vbi_out->error;
  2066			dev->vbi_out_dev.ctrl_handler = hdl_vbi_out;
  2067		}
  2068		if (dev->has_radio_rx) {
  2069			v4l2_ctrl_add_handler(hdl_radio_rx, hdl_user_gen, NULL, false);
  2070			v4l2_ctrl_add_handler(hdl_radio_rx, hdl_user_aud, NULL, false);
  2071			if (hdl_radio_rx->error)
  2072				return hdl_radio_rx->error;
  2073			dev->radio_rx_dev.ctrl_handler = hdl_radio_rx;
  2074		}
  2075		if (dev->has_radio_tx) {
  2076			v4l2_ctrl_add_handler(hdl_radio_tx, hdl_user_gen, NULL, false);
  2077			v4l2_ctrl_add_handler(hdl_radio_tx, hdl_user_aud, NULL, false);
  2078			if (hdl_radio_tx->error)
  2079				return hdl_radio_tx->error;
  2080			dev->radio_tx_dev.ctrl_handler = hdl_radio_tx;
  2081		}
  2082		if (dev->has_sdr_cap) {
  2083			v4l2_ctrl_add_handler(hdl_sdr_cap, hdl_user_gen, NULL, false);
  2084			v4l2_ctrl_add_handler(hdl_sdr_cap, hdl_streaming, NULL, false);
  2085			if (hdl_sdr_cap->error)
  2086				return hdl_sdr_cap->error;
  2087			dev->sdr_cap_dev.ctrl_handler = hdl_sdr_cap;
  2088		}
  2089		if (dev->has_meta_cap) {
  2090			v4l2_ctrl_add_handler(hdl_meta_cap, hdl_user_gen, NULL, false);
  2091			v4l2_ctrl_add_handler(hdl_meta_cap, hdl_streaming, NULL, false);
  2092			if (hdl_meta_cap->error)
  2093				return hdl_meta_cap->error;
  2094			dev->meta_cap_dev.ctrl_handler = hdl_meta_cap;
  2095		}
  2096		if (dev->has_meta_out) {
  2097			v4l2_ctrl_add_handler(hdl_meta_out, hdl_user_gen, NULL, false);
  2098			v4l2_ctrl_add_handler(hdl_meta_out, hdl_streaming, NULL, false);
  2099			if (hdl_meta_out->error)
  2100				return hdl_meta_out->error;
  2101			dev->meta_out_dev.ctrl_handler = hdl_meta_out;
  2102		}
  2103		if (dev->has_touch_cap) {
  2104			v4l2_ctrl_add_handler(hdl_tch_cap, hdl_user_gen, NULL, false);
  2105			v4l2_ctrl_add_handler(hdl_tch_cap, hdl_streaming, NULL, false);
  2106			if (hdl_tch_cap->error)
  2107				return hdl_tch_cap->error;
  2108			dev->touch_cap_dev.ctrl_handler = hdl_tch_cap;
  2109		}
  2110		return 0;
  2111	}
  2112	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: drivers/media/test-drivers/vivid/vivid-ctrls.c:1799:22: warning: ' Is Connected To' directive output may be truncated writing 16 bytes into a region of size between 10 and 19
  2025-07-07 10:26 drivers/media/test-drivers/vivid/vivid-ctrls.c:1799:22: warning: ' Is Connected To' directive output may be truncated writing 16 bytes into a region of size between 10 and 19 kernel test robot
@ 2025-07-07 11:58 ` Hans Verkuil
  0 siblings, 0 replies; 3+ messages in thread
From: Hans Verkuil @ 2025-07-07 11:58 UTC (permalink / raw)
  To: kernel test robot, Dorcas Anono Litunya; +Cc: oe-kbuild-all, linux-kernel

On 07/07/2025 12:26, kernel test robot wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head:   d7b8f8e20813f0179d8ef519541a3527e7661d3a
> commit: d7c969f37515d78dc1a026d12b94b90e319a5a61 media: vivid: Add 'Is Connected To' menu controls
> date:   1 year ago
> config: microblaze-randconfig-2006-20250701 (https://download.01.org/0day-ci/archive/20250707/202507071251.j08Oluox-lkp@intel.com/config)
> compiler: microblaze-linux-gcc (GCC) 8.5.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250707/202507071251.j08Oluox-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/202507071251.j08Oluox-lkp@intel.com/
> 
> All warnings (new ones prefixed by >>):
> 
>    drivers/media/test-drivers/vivid/vivid-ctrls.c: In function 'vivid_create_controls':
>>> drivers/media/test-drivers/vivid/vivid-ctrls.c:1799:22: warning: ' Is Connected To' directive output may be truncated writing 16 bytes into a region of size between 10 and 19 [-Wformat-truncation=]
>          "S-Video %03u-%u Is Connected To", dev->inst, i);
>                          ^~~~~~~~~~~~~~~~
>    drivers/media/test-drivers/vivid/vivid-ctrls.c:1797:4: note: 'snprintf' output between 30 and 39 bytes into a destination of size 32
>        snprintf(dev->ctrl_svid_to_output_names[i],
>        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>          sizeof(dev->ctrl_svid_to_output_names[i]),
>          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>          "S-Video %03u-%u Is Connected To", dev->inst, i);
>          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>    drivers/media/test-drivers/vivid/vivid-ctrls.c:1780:19: warning: ' Is Connected To' directive output may be truncated writing 16 bytes into a region of size between 13 and 22 [-Wformat-truncation=]
>          "HDMI %03u-%u Is Connected To", dev->inst, i);
>                       ^~~~~~~~~~~~~~~~
>    drivers/media/test-drivers/vivid/vivid-ctrls.c:1778:4: note: 'snprintf' output between 27 and 36 bytes into a destination of size 32
>        snprintf(dev->ctrl_hdmi_to_output_names[i],
>        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>          sizeof(dev->ctrl_hdmi_to_output_names[i]),
>          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>          "HDMI %03u-%u Is Connected To", dev->inst, i);
>          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Just for the record:

This old compiler isn't smart enough to see that dev->inst and i are both u8, and so
the value can't be more than 3 characters worst case.

Regards,

	Hans

> 
> 
> vim +1799 drivers/media/test-drivers/vivid/vivid-ctrls.c
> 
>   1635	
>   1636	int vivid_create_controls(struct vivid_dev *dev, bool show_ccs_cap,
>   1637			bool show_ccs_out, bool no_error_inj,
>   1638			bool has_sdtv, bool has_hdmi)
>   1639	{
>   1640		struct v4l2_ctrl_handler *hdl_user_gen = &dev->ctrl_hdl_user_gen;
>   1641		struct v4l2_ctrl_handler *hdl_user_vid = &dev->ctrl_hdl_user_vid;
>   1642		struct v4l2_ctrl_handler *hdl_user_aud = &dev->ctrl_hdl_user_aud;
>   1643		struct v4l2_ctrl_handler *hdl_streaming = &dev->ctrl_hdl_streaming;
>   1644		struct v4l2_ctrl_handler *hdl_sdtv_cap = &dev->ctrl_hdl_sdtv_cap;
>   1645		struct v4l2_ctrl_handler *hdl_loop_cap = &dev->ctrl_hdl_loop_cap;
>   1646		struct v4l2_ctrl_handler *hdl_fb = &dev->ctrl_hdl_fb;
>   1647		struct v4l2_ctrl_handler *hdl_vid_cap = &dev->ctrl_hdl_vid_cap;
>   1648		struct v4l2_ctrl_handler *hdl_vid_out = &dev->ctrl_hdl_vid_out;
>   1649		struct v4l2_ctrl_handler *hdl_vbi_cap = &dev->ctrl_hdl_vbi_cap;
>   1650		struct v4l2_ctrl_handler *hdl_vbi_out = &dev->ctrl_hdl_vbi_out;
>   1651		struct v4l2_ctrl_handler *hdl_radio_rx = &dev->ctrl_hdl_radio_rx;
>   1652		struct v4l2_ctrl_handler *hdl_radio_tx = &dev->ctrl_hdl_radio_tx;
>   1653		struct v4l2_ctrl_handler *hdl_sdr_cap = &dev->ctrl_hdl_sdr_cap;
>   1654		struct v4l2_ctrl_handler *hdl_meta_cap = &dev->ctrl_hdl_meta_cap;
>   1655		struct v4l2_ctrl_handler *hdl_meta_out = &dev->ctrl_hdl_meta_out;
>   1656		struct v4l2_ctrl_handler *hdl_tch_cap = &dev->ctrl_hdl_touch_cap;
>   1657	
>   1658		struct v4l2_ctrl_config vivid_ctrl_dv_timings = {
>   1659			.ops = &vivid_vid_cap_ctrl_ops,
>   1660			.id = VIVID_CID_DV_TIMINGS,
>   1661			.name = "DV Timings",
>   1662			.type = V4L2_CTRL_TYPE_MENU,
>   1663		};
>   1664		int i;
>   1665	
>   1666		v4l2_ctrl_handler_init(hdl_user_gen, 10);
>   1667		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_class, NULL);
>   1668		v4l2_ctrl_handler_init(hdl_user_vid, 9);
>   1669		v4l2_ctrl_new_custom(hdl_user_vid, &vivid_ctrl_class, NULL);
>   1670		v4l2_ctrl_handler_init(hdl_user_aud, 2);
>   1671		v4l2_ctrl_new_custom(hdl_user_aud, &vivid_ctrl_class, NULL);
>   1672		v4l2_ctrl_handler_init(hdl_streaming, 8);
>   1673		v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_class, NULL);
>   1674		v4l2_ctrl_handler_init(hdl_sdtv_cap, 2);
>   1675		v4l2_ctrl_new_custom(hdl_sdtv_cap, &vivid_ctrl_class, NULL);
>   1676		v4l2_ctrl_handler_init(hdl_loop_cap, 1);
>   1677		v4l2_ctrl_new_custom(hdl_loop_cap, &vivid_ctrl_class, NULL);
>   1678		v4l2_ctrl_handler_init(hdl_fb, 1);
>   1679		v4l2_ctrl_new_custom(hdl_fb, &vivid_ctrl_class, NULL);
>   1680		v4l2_ctrl_handler_init(hdl_vid_cap, 55);
>   1681		v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_class, NULL);
>   1682		v4l2_ctrl_handler_init(hdl_vid_out, 26);
>   1683		if (!no_error_inj || dev->has_fb || dev->num_hdmi_outputs)
>   1684			v4l2_ctrl_new_custom(hdl_vid_out, &vivid_ctrl_class, NULL);
>   1685		v4l2_ctrl_handler_init(hdl_vbi_cap, 21);
>   1686		v4l2_ctrl_new_custom(hdl_vbi_cap, &vivid_ctrl_class, NULL);
>   1687		v4l2_ctrl_handler_init(hdl_vbi_out, 19);
>   1688		if (!no_error_inj)
>   1689			v4l2_ctrl_new_custom(hdl_vbi_out, &vivid_ctrl_class, NULL);
>   1690		v4l2_ctrl_handler_init(hdl_radio_rx, 17);
>   1691		v4l2_ctrl_new_custom(hdl_radio_rx, &vivid_ctrl_class, NULL);
>   1692		v4l2_ctrl_handler_init(hdl_radio_tx, 17);
>   1693		v4l2_ctrl_new_custom(hdl_radio_tx, &vivid_ctrl_class, NULL);
>   1694		v4l2_ctrl_handler_init(hdl_sdr_cap, 19);
>   1695		v4l2_ctrl_new_custom(hdl_sdr_cap, &vivid_ctrl_class, NULL);
>   1696		v4l2_ctrl_handler_init(hdl_meta_cap, 2);
>   1697		v4l2_ctrl_new_custom(hdl_meta_cap, &vivid_ctrl_class, NULL);
>   1698		v4l2_ctrl_handler_init(hdl_meta_out, 2);
>   1699		v4l2_ctrl_new_custom(hdl_meta_out, &vivid_ctrl_class, NULL);
>   1700		v4l2_ctrl_handler_init(hdl_tch_cap, 2);
>   1701		v4l2_ctrl_new_custom(hdl_tch_cap, &vivid_ctrl_class, NULL);
>   1702	
>   1703		/* User Controls */
>   1704		dev->volume = v4l2_ctrl_new_std(hdl_user_aud, NULL,
>   1705			V4L2_CID_AUDIO_VOLUME, 0, 255, 1, 200);
>   1706		dev->mute = v4l2_ctrl_new_std(hdl_user_aud, NULL,
>   1707			V4L2_CID_AUDIO_MUTE, 0, 1, 1, 0);
>   1708		if (dev->has_vid_cap) {
>   1709			dev->brightness = v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
>   1710				V4L2_CID_BRIGHTNESS, 0, 255, 1, 128);
>   1711			for (i = 0; i < MAX_INPUTS; i++)
>   1712				dev->input_brightness[i] = 128;
>   1713			dev->contrast = v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
>   1714				V4L2_CID_CONTRAST, 0, 255, 1, 128);
>   1715			dev->saturation = v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
>   1716				V4L2_CID_SATURATION, 0, 255, 1, 128);
>   1717			dev->hue = v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
>   1718				V4L2_CID_HUE, -128, 128, 1, 0);
>   1719			v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
>   1720				V4L2_CID_HFLIP, 0, 1, 1, 0);
>   1721			v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
>   1722				V4L2_CID_VFLIP, 0, 1, 1, 0);
>   1723			dev->autogain = v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
>   1724				V4L2_CID_AUTOGAIN, 0, 1, 1, 1);
>   1725			dev->gain = v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
>   1726				V4L2_CID_GAIN, 0, 255, 1, 100);
>   1727			dev->alpha = v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
>   1728				V4L2_CID_ALPHA_COMPONENT, 0, 255, 1, 0);
>   1729		}
>   1730		dev->button = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_button, NULL);
>   1731		dev->int32 = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_int32, NULL);
>   1732		dev->int64 = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_int64, NULL);
>   1733		dev->boolean = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_boolean, NULL);
>   1734		dev->menu = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_menu, NULL);
>   1735		dev->string = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_string, NULL);
>   1736		dev->bitmask = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_bitmask, NULL);
>   1737		dev->int_menu = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_int_menu, NULL);
>   1738		dev->ro_int32 = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_ro_int32, NULL);
>   1739		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_area, NULL);
>   1740		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u32_array, NULL);
>   1741		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u32_dyn_array, NULL);
>   1742		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u16_matrix, NULL);
>   1743		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u8_4d_array, NULL);
>   1744		dev->pixel_array = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u8_pixel_array, NULL);
>   1745		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_s32_array, NULL);
>   1746		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_s64_array, NULL);
>   1747	
>   1748		if (dev->has_vid_cap) {
>   1749			/* Image Processing Controls */
>   1750			struct v4l2_ctrl_config vivid_ctrl_test_pattern = {
>   1751				.ops = &vivid_vid_cap_ctrl_ops,
>   1752				.id = VIVID_CID_TEST_PATTERN,
>   1753				.name = "Test Pattern",
>   1754				.type = V4L2_CTRL_TYPE_MENU,
>   1755				.max = TPG_PAT_NOISE,
>   1756				.qmenu = tpg_pattern_strings,
>   1757			};
>   1758	
>   1759			dev->test_pattern = v4l2_ctrl_new_custom(hdl_vid_cap,
>   1760					&vivid_ctrl_test_pattern, NULL);
>   1761			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_perc_fill, NULL);
>   1762			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_hor_movement, NULL);
>   1763			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_vert_movement, NULL);
>   1764			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_osd_mode, NULL);
>   1765			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_show_border, NULL);
>   1766			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_show_square, NULL);
>   1767			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_hflip, NULL);
>   1768			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_vflip, NULL);
>   1769			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_insert_sav, NULL);
>   1770			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_insert_eav, NULL);
>   1771			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_insert_hdmi_video_guard_band, NULL);
>   1772			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_reduced_fps, NULL);
>   1773	
>   1774			WARN_ON(dev->num_hdmi_inputs > MAX_HDMI_INPUTS);
>   1775			WARN_ON(dev->num_svid_inputs > MAX_SVID_INPUTS);
>   1776	
>   1777			for (u8 i = 0; i < dev->num_hdmi_inputs; i++) {
>   1778				snprintf(dev->ctrl_hdmi_to_output_names[i],
>   1779					 sizeof(dev->ctrl_hdmi_to_output_names[i]),
>   1780					 "HDMI %03u-%u Is Connected To", dev->inst, i);
>   1781			}
>   1782	
>   1783			for (u8 i = 0; i < dev->num_hdmi_inputs; i++) {
>   1784				struct v4l2_ctrl_config ctrl_config = {
>   1785					.ops = &vivid_vid_cap_ctrl_ops,
>   1786					.id = VIVID_CID_HDMI_IS_CONNECTED_TO_OUTPUT(i),
>   1787					.name = dev->ctrl_hdmi_to_output_names[i],
>   1788					.type = V4L2_CTRL_TYPE_MENU,
>   1789					.max = 1,
>   1790					.qmenu = (const char * const *)vivid_ctrl_hdmi_to_output_strings,
>   1791				};
>   1792				dev->ctrl_hdmi_to_output[i] = v4l2_ctrl_new_custom(hdl_vid_cap,
>   1793										   &ctrl_config, NULL);
>   1794			}
>   1795	
>   1796			for (u8 i = 0; i < dev->num_svid_inputs; i++) {
>   1797				snprintf(dev->ctrl_svid_to_output_names[i],
>   1798					 sizeof(dev->ctrl_svid_to_output_names[i]),
>> 1799					 "S-Video %03u-%u Is Connected To", dev->inst, i);
>   1800			}
>   1801	
>   1802			for (u8 i = 0; i < dev->num_svid_inputs; i++) {
>   1803				struct v4l2_ctrl_config ctrl_config = {
>   1804					.ops = &vivid_vid_cap_ctrl_ops,
>   1805					.id = VIVID_CID_SVID_IS_CONNECTED_TO_OUTPUT(i),
>   1806					.name = dev->ctrl_svid_to_output_names[i],
>   1807					.type = V4L2_CTRL_TYPE_MENU,
>   1808					.max = 1,
>   1809					.qmenu = (const char * const *)vivid_ctrl_svid_to_output_strings,
>   1810				};
>   1811				dev->ctrl_svid_to_output[i] = v4l2_ctrl_new_custom(hdl_vid_cap,
>   1812										   &ctrl_config, NULL);
>   1813			}
>   1814	
>   1815			if (show_ccs_cap) {
>   1816				dev->ctrl_has_crop_cap = v4l2_ctrl_new_custom(hdl_vid_cap,
>   1817					&vivid_ctrl_has_crop_cap, NULL);
>   1818				dev->ctrl_has_compose_cap = v4l2_ctrl_new_custom(hdl_vid_cap,
>   1819					&vivid_ctrl_has_compose_cap, NULL);
>   1820				dev->ctrl_has_scaler_cap = v4l2_ctrl_new_custom(hdl_vid_cap,
>   1821					&vivid_ctrl_has_scaler_cap, NULL);
>   1822			}
>   1823	
>   1824			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_tstamp_src, NULL);
>   1825			dev->colorspace = v4l2_ctrl_new_custom(hdl_vid_cap,
>   1826				&vivid_ctrl_colorspace, NULL);
>   1827			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_xfer_func, NULL);
>   1828			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_ycbcr_enc, NULL);
>   1829			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_hsv_enc, NULL);
>   1830			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_quantization, NULL);
>   1831			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_alpha_mode, NULL);
>   1832		}
>   1833	
>   1834		if (dev->has_vid_out && show_ccs_out) {
>   1835			dev->ctrl_has_crop_out = v4l2_ctrl_new_custom(hdl_vid_out,
>   1836				&vivid_ctrl_has_crop_out, NULL);
>   1837			dev->ctrl_has_compose_out = v4l2_ctrl_new_custom(hdl_vid_out,
>   1838				&vivid_ctrl_has_compose_out, NULL);
>   1839			dev->ctrl_has_scaler_out = v4l2_ctrl_new_custom(hdl_vid_out,
>   1840				&vivid_ctrl_has_scaler_out, NULL);
>   1841		}
>   1842	
>   1843		/*
>   1844		 * Testing this driver with v4l2-compliance will trigger the error
>   1845		 * injection controls, and after that nothing will work as expected.
>   1846		 * So we have a module option to drop these error injecting controls
>   1847		 * allowing us to run v4l2_compliance again.
>   1848		 */
>   1849		if (!no_error_inj) {
>   1850			v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_disconnect, NULL);
>   1851			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_dqbuf_error, NULL);
>   1852			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_perc_dropped, NULL);
>   1853			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_queue_setup_error, NULL);
>   1854			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_buf_prepare_error, NULL);
>   1855			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_start_streaming_error, NULL);
>   1856			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_queue_error, NULL);
>   1857	#ifdef CONFIG_MEDIA_CONTROLLER
>   1858			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_req_validate_error, NULL);
>   1859	#endif
>   1860			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_seq_wrap, NULL);
>   1861			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_time_wrap, NULL);
>   1862		}
>   1863	
>   1864		if (has_sdtv && (dev->has_vid_cap || dev->has_vbi_cap)) {
>   1865			if (dev->has_vid_cap)
>   1866				v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_std_aspect_ratio, NULL);
>   1867			dev->ctrl_std_signal_mode = v4l2_ctrl_new_custom(hdl_sdtv_cap,
>   1868				&vivid_ctrl_std_signal_mode, NULL);
>   1869			dev->ctrl_standard = v4l2_ctrl_new_custom(hdl_sdtv_cap,
>   1870				&vivid_ctrl_standard, NULL);
>   1871			if (dev->ctrl_std_signal_mode)
>   1872				v4l2_ctrl_cluster(2, &dev->ctrl_std_signal_mode);
>   1873			if (dev->has_raw_vbi_cap)
>   1874				v4l2_ctrl_new_custom(hdl_vbi_cap, &vivid_ctrl_vbi_cap_interlaced, NULL);
>   1875		}
>   1876	
>   1877		if (dev->num_hdmi_inputs) {
>   1878			s64 hdmi_input_mask = GENMASK(dev->num_hdmi_inputs - 1, 0);
>   1879	
>   1880			dev->ctrl_dv_timings_signal_mode = v4l2_ctrl_new_custom(hdl_vid_cap,
>   1881						&vivid_ctrl_dv_timings_signal_mode, NULL);
>   1882	
>   1883			vivid_ctrl_dv_timings.max = dev->query_dv_timings_size - 1;
>   1884			vivid_ctrl_dv_timings.qmenu =
>   1885				(const char * const *)dev->query_dv_timings_qmenu;
>   1886			dev->ctrl_dv_timings = v4l2_ctrl_new_custom(hdl_vid_cap,
>   1887				&vivid_ctrl_dv_timings, NULL);
>   1888			if (dev->ctrl_dv_timings_signal_mode)
>   1889				v4l2_ctrl_cluster(2, &dev->ctrl_dv_timings_signal_mode);
>   1890	
>   1891			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_dv_timings_aspect_ratio, NULL);
>   1892			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_max_edid_blocks, NULL);
>   1893			dev->real_rgb_range_cap = v4l2_ctrl_new_custom(hdl_vid_cap,
>   1894				&vivid_ctrl_limited_rgb_range, NULL);
>   1895			dev->rgb_range_cap = v4l2_ctrl_new_std_menu(hdl_vid_cap,
>   1896				&vivid_vid_cap_ctrl_ops,
>   1897				V4L2_CID_DV_RX_RGB_RANGE, V4L2_DV_RGB_RANGE_FULL,
>   1898				0, V4L2_DV_RGB_RANGE_AUTO);
>   1899			dev->ctrl_rx_power_present = v4l2_ctrl_new_std(hdl_vid_cap,
>   1900				NULL, V4L2_CID_DV_RX_POWER_PRESENT, 0, hdmi_input_mask,
>   1901				0, hdmi_input_mask);
>   1902	
>   1903		}
>   1904		if (dev->num_hdmi_outputs) {
>   1905			s64 hdmi_output_mask = GENMASK(dev->num_hdmi_outputs - 1, 0);
>   1906	
>   1907			/*
>   1908			 * We aren't doing anything with this at the moment, but
>   1909			 * HDMI outputs typically have this controls.
>   1910			 */
>   1911			dev->ctrl_tx_rgb_range = v4l2_ctrl_new_std_menu(hdl_vid_out, NULL,
>   1912				V4L2_CID_DV_TX_RGB_RANGE, V4L2_DV_RGB_RANGE_FULL,
>   1913				0, V4L2_DV_RGB_RANGE_AUTO);
>   1914			dev->ctrl_tx_mode = v4l2_ctrl_new_std_menu(hdl_vid_out, NULL,
>   1915				V4L2_CID_DV_TX_MODE, V4L2_DV_TX_MODE_HDMI,
>   1916				0, V4L2_DV_TX_MODE_HDMI);
>   1917			dev->ctrl_display_present = v4l2_ctrl_new_custom(hdl_vid_out,
>   1918				&vivid_ctrl_display_present, NULL);
>   1919			dev->ctrl_tx_hotplug = v4l2_ctrl_new_std(hdl_vid_out,
>   1920				NULL, V4L2_CID_DV_TX_HOTPLUG, 0, hdmi_output_mask,
>   1921				0, hdmi_output_mask);
>   1922			dev->ctrl_tx_rxsense = v4l2_ctrl_new_std(hdl_vid_out,
>   1923				NULL, V4L2_CID_DV_TX_RXSENSE, 0, hdmi_output_mask,
>   1924				0, hdmi_output_mask);
>   1925			dev->ctrl_tx_edid_present = v4l2_ctrl_new_std(hdl_vid_out,
>   1926				NULL, V4L2_CID_DV_TX_EDID_PRESENT, 0, hdmi_output_mask,
>   1927				0, hdmi_output_mask);
>   1928		}
>   1929		if ((dev->has_vid_cap && dev->has_vid_out) ||
>   1930		    (dev->has_vbi_cap && dev->has_vbi_out))
>   1931			v4l2_ctrl_new_custom(hdl_loop_cap, &vivid_ctrl_loop_video, NULL);
>   1932	
>   1933		if (dev->has_fb)
>   1934			v4l2_ctrl_new_custom(hdl_fb, &vivid_ctrl_clear_fb, NULL);
>   1935	
>   1936		if (dev->has_radio_rx) {
>   1937			v4l2_ctrl_new_custom(hdl_radio_rx, &vivid_ctrl_radio_hw_seek_mode, NULL);
>   1938			v4l2_ctrl_new_custom(hdl_radio_rx, &vivid_ctrl_radio_hw_seek_prog_lim, NULL);
>   1939			v4l2_ctrl_new_custom(hdl_radio_rx, &vivid_ctrl_radio_rx_rds_blockio, NULL);
>   1940			v4l2_ctrl_new_custom(hdl_radio_rx, &vivid_ctrl_radio_rx_rds_rbds, NULL);
>   1941			v4l2_ctrl_new_std(hdl_radio_rx, &vivid_radio_rx_ctrl_ops,
>   1942				V4L2_CID_RDS_RECEPTION, 0, 1, 1, 1);
>   1943			dev->radio_rx_rds_pty = v4l2_ctrl_new_std(hdl_radio_rx,
>   1944				&vivid_radio_rx_ctrl_ops,
>   1945				V4L2_CID_RDS_RX_PTY, 0, 31, 1, 0);
>   1946			dev->radio_rx_rds_psname = v4l2_ctrl_new_std(hdl_radio_rx,
>   1947				&vivid_radio_rx_ctrl_ops,
>   1948				V4L2_CID_RDS_RX_PS_NAME, 0, 8, 8, 0);
>   1949			dev->radio_rx_rds_radiotext = v4l2_ctrl_new_std(hdl_radio_rx,
>   1950				&vivid_radio_rx_ctrl_ops,
>   1951				V4L2_CID_RDS_RX_RADIO_TEXT, 0, 64, 64, 0);
>   1952			dev->radio_rx_rds_ta = v4l2_ctrl_new_std(hdl_radio_rx,
>   1953				&vivid_radio_rx_ctrl_ops,
>   1954				V4L2_CID_RDS_RX_TRAFFIC_ANNOUNCEMENT, 0, 1, 1, 0);
>   1955			dev->radio_rx_rds_tp = v4l2_ctrl_new_std(hdl_radio_rx,
>   1956				&vivid_radio_rx_ctrl_ops,
>   1957				V4L2_CID_RDS_RX_TRAFFIC_PROGRAM, 0, 1, 1, 0);
>   1958			dev->radio_rx_rds_ms = v4l2_ctrl_new_std(hdl_radio_rx,
>   1959				&vivid_radio_rx_ctrl_ops,
>   1960				V4L2_CID_RDS_RX_MUSIC_SPEECH, 0, 1, 1, 1);
>   1961		}
>   1962		if (dev->has_radio_tx) {
>   1963			v4l2_ctrl_new_custom(hdl_radio_tx,
>   1964				&vivid_ctrl_radio_tx_rds_blockio, NULL);
>   1965			dev->radio_tx_rds_pi = v4l2_ctrl_new_std(hdl_radio_tx,
>   1966				&vivid_radio_tx_ctrl_ops,
>   1967				V4L2_CID_RDS_TX_PI, 0, 0xffff, 1, 0x8088);
>   1968			dev->radio_tx_rds_pty = v4l2_ctrl_new_std(hdl_radio_tx,
>   1969				&vivid_radio_tx_ctrl_ops,
>   1970				V4L2_CID_RDS_TX_PTY, 0, 31, 1, 3);
>   1971			dev->radio_tx_rds_psname = v4l2_ctrl_new_std(hdl_radio_tx,
>   1972				&vivid_radio_tx_ctrl_ops,
>   1973				V4L2_CID_RDS_TX_PS_NAME, 0, 8, 8, 0);
>   1974			if (dev->radio_tx_rds_psname)
>   1975				v4l2_ctrl_s_ctrl_string(dev->radio_tx_rds_psname, "VIVID-TX");
>   1976			dev->radio_tx_rds_radiotext = v4l2_ctrl_new_std(hdl_radio_tx,
>   1977				&vivid_radio_tx_ctrl_ops,
>   1978				V4L2_CID_RDS_TX_RADIO_TEXT, 0, 64 * 2, 64, 0);
>   1979			if (dev->radio_tx_rds_radiotext)
>   1980				v4l2_ctrl_s_ctrl_string(dev->radio_tx_rds_radiotext,
>   1981				       "This is a VIVID default Radio Text template text, change at will");
>   1982			dev->radio_tx_rds_mono_stereo = v4l2_ctrl_new_std(hdl_radio_tx,
>   1983				&vivid_radio_tx_ctrl_ops,
>   1984				V4L2_CID_RDS_TX_MONO_STEREO, 0, 1, 1, 1);
>   1985			dev->radio_tx_rds_art_head = v4l2_ctrl_new_std(hdl_radio_tx,
>   1986				&vivid_radio_tx_ctrl_ops,
>   1987				V4L2_CID_RDS_TX_ARTIFICIAL_HEAD, 0, 1, 1, 0);
>   1988			dev->radio_tx_rds_compressed = v4l2_ctrl_new_std(hdl_radio_tx,
>   1989				&vivid_radio_tx_ctrl_ops,
>   1990				V4L2_CID_RDS_TX_COMPRESSED, 0, 1, 1, 0);
>   1991			dev->radio_tx_rds_dyn_pty = v4l2_ctrl_new_std(hdl_radio_tx,
>   1992				&vivid_radio_tx_ctrl_ops,
>   1993				V4L2_CID_RDS_TX_DYNAMIC_PTY, 0, 1, 1, 0);
>   1994			dev->radio_tx_rds_ta = v4l2_ctrl_new_std(hdl_radio_tx,
>   1995				&vivid_radio_tx_ctrl_ops,
>   1996				V4L2_CID_RDS_TX_TRAFFIC_ANNOUNCEMENT, 0, 1, 1, 0);
>   1997			dev->radio_tx_rds_tp = v4l2_ctrl_new_std(hdl_radio_tx,
>   1998				&vivid_radio_tx_ctrl_ops,
>   1999				V4L2_CID_RDS_TX_TRAFFIC_PROGRAM, 0, 1, 1, 1);
>   2000			dev->radio_tx_rds_ms = v4l2_ctrl_new_std(hdl_radio_tx,
>   2001				&vivid_radio_tx_ctrl_ops,
>   2002				V4L2_CID_RDS_TX_MUSIC_SPEECH, 0, 1, 1, 1);
>   2003		}
>   2004		if (dev->has_sdr_cap) {
>   2005			v4l2_ctrl_new_custom(hdl_sdr_cap,
>   2006				&vivid_ctrl_sdr_cap_fm_deviation, NULL);
>   2007		}
>   2008		if (dev->has_meta_cap) {
>   2009			v4l2_ctrl_new_custom(hdl_meta_cap,
>   2010					     &vivid_ctrl_meta_has_pts, NULL);
>   2011			v4l2_ctrl_new_custom(hdl_meta_cap,
>   2012					     &vivid_ctrl_meta_has_src_clk, NULL);
>   2013		}
>   2014	
>   2015		if (hdl_user_gen->error)
>   2016			return hdl_user_gen->error;
>   2017		if (hdl_user_vid->error)
>   2018			return hdl_user_vid->error;
>   2019		if (hdl_user_aud->error)
>   2020			return hdl_user_aud->error;
>   2021		if (hdl_streaming->error)
>   2022			return hdl_streaming->error;
>   2023		if (hdl_sdr_cap->error)
>   2024			return hdl_sdr_cap->error;
>   2025		if (hdl_loop_cap->error)
>   2026			return hdl_loop_cap->error;
>   2027	
>   2028		if (dev->autogain)
>   2029			v4l2_ctrl_auto_cluster(2, &dev->autogain, 0, true);
>   2030	
>   2031		if (dev->has_vid_cap) {
>   2032			v4l2_ctrl_add_handler(hdl_vid_cap, hdl_user_gen, NULL, false);
>   2033			v4l2_ctrl_add_handler(hdl_vid_cap, hdl_user_vid, NULL, false);
>   2034			v4l2_ctrl_add_handler(hdl_vid_cap, hdl_user_aud, NULL, false);
>   2035			v4l2_ctrl_add_handler(hdl_vid_cap, hdl_streaming, NULL, false);
>   2036			v4l2_ctrl_add_handler(hdl_vid_cap, hdl_sdtv_cap, NULL, false);
>   2037			v4l2_ctrl_add_handler(hdl_vid_cap, hdl_loop_cap, NULL, false);
>   2038			v4l2_ctrl_add_handler(hdl_vid_cap, hdl_fb, NULL, false);
>   2039			if (hdl_vid_cap->error)
>   2040				return hdl_vid_cap->error;
>   2041			dev->vid_cap_dev.ctrl_handler = hdl_vid_cap;
>   2042		}
>   2043		if (dev->has_vid_out) {
>   2044			v4l2_ctrl_add_handler(hdl_vid_out, hdl_user_gen, NULL, false);
>   2045			v4l2_ctrl_add_handler(hdl_vid_out, hdl_user_aud, NULL, false);
>   2046			v4l2_ctrl_add_handler(hdl_vid_out, hdl_streaming, NULL, false);
>   2047			v4l2_ctrl_add_handler(hdl_vid_out, hdl_fb, NULL, false);
>   2048			if (hdl_vid_out->error)
>   2049				return hdl_vid_out->error;
>   2050			dev->vid_out_dev.ctrl_handler = hdl_vid_out;
>   2051		}
>   2052		if (dev->has_vbi_cap) {
>   2053			v4l2_ctrl_add_handler(hdl_vbi_cap, hdl_user_gen, NULL, false);
>   2054			v4l2_ctrl_add_handler(hdl_vbi_cap, hdl_streaming, NULL, false);
>   2055			v4l2_ctrl_add_handler(hdl_vbi_cap, hdl_sdtv_cap, NULL, false);
>   2056			v4l2_ctrl_add_handler(hdl_vbi_cap, hdl_loop_cap, NULL, false);
>   2057			if (hdl_vbi_cap->error)
>   2058				return hdl_vbi_cap->error;
>   2059			dev->vbi_cap_dev.ctrl_handler = hdl_vbi_cap;
>   2060		}
>   2061		if (dev->has_vbi_out) {
>   2062			v4l2_ctrl_add_handler(hdl_vbi_out, hdl_user_gen, NULL, false);
>   2063			v4l2_ctrl_add_handler(hdl_vbi_out, hdl_streaming, NULL, false);
>   2064			if (hdl_vbi_out->error)
>   2065				return hdl_vbi_out->error;
>   2066			dev->vbi_out_dev.ctrl_handler = hdl_vbi_out;
>   2067		}
>   2068		if (dev->has_radio_rx) {
>   2069			v4l2_ctrl_add_handler(hdl_radio_rx, hdl_user_gen, NULL, false);
>   2070			v4l2_ctrl_add_handler(hdl_radio_rx, hdl_user_aud, NULL, false);
>   2071			if (hdl_radio_rx->error)
>   2072				return hdl_radio_rx->error;
>   2073			dev->radio_rx_dev.ctrl_handler = hdl_radio_rx;
>   2074		}
>   2075		if (dev->has_radio_tx) {
>   2076			v4l2_ctrl_add_handler(hdl_radio_tx, hdl_user_gen, NULL, false);
>   2077			v4l2_ctrl_add_handler(hdl_radio_tx, hdl_user_aud, NULL, false);
>   2078			if (hdl_radio_tx->error)
>   2079				return hdl_radio_tx->error;
>   2080			dev->radio_tx_dev.ctrl_handler = hdl_radio_tx;
>   2081		}
>   2082		if (dev->has_sdr_cap) {
>   2083			v4l2_ctrl_add_handler(hdl_sdr_cap, hdl_user_gen, NULL, false);
>   2084			v4l2_ctrl_add_handler(hdl_sdr_cap, hdl_streaming, NULL, false);
>   2085			if (hdl_sdr_cap->error)
>   2086				return hdl_sdr_cap->error;
>   2087			dev->sdr_cap_dev.ctrl_handler = hdl_sdr_cap;
>   2088		}
>   2089		if (dev->has_meta_cap) {
>   2090			v4l2_ctrl_add_handler(hdl_meta_cap, hdl_user_gen, NULL, false);
>   2091			v4l2_ctrl_add_handler(hdl_meta_cap, hdl_streaming, NULL, false);
>   2092			if (hdl_meta_cap->error)
>   2093				return hdl_meta_cap->error;
>   2094			dev->meta_cap_dev.ctrl_handler = hdl_meta_cap;
>   2095		}
>   2096		if (dev->has_meta_out) {
>   2097			v4l2_ctrl_add_handler(hdl_meta_out, hdl_user_gen, NULL, false);
>   2098			v4l2_ctrl_add_handler(hdl_meta_out, hdl_streaming, NULL, false);
>   2099			if (hdl_meta_out->error)
>   2100				return hdl_meta_out->error;
>   2101			dev->meta_out_dev.ctrl_handler = hdl_meta_out;
>   2102		}
>   2103		if (dev->has_touch_cap) {
>   2104			v4l2_ctrl_add_handler(hdl_tch_cap, hdl_user_gen, NULL, false);
>   2105			v4l2_ctrl_add_handler(hdl_tch_cap, hdl_streaming, NULL, false);
>   2106			if (hdl_tch_cap->error)
>   2107				return hdl_tch_cap->error;
>   2108			dev->touch_cap_dev.ctrl_handler = hdl_tch_cap;
>   2109		}
>   2110		return 0;
>   2111	}
>   2112	
> 


^ permalink raw reply	[flat|nested] 3+ messages in thread

* drivers/media/test-drivers/vivid/vivid-ctrls.c:1799:22: warning: ' Is Connected To' directive output may be truncated writing 16 bytes into a region of size between 10 and 19
@ 2025-03-18 21:30 kernel test robot
  0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2025-03-18 21:30 UTC (permalink / raw)
  To: Dorcas Anono Litunya; +Cc: oe-kbuild-all, linux-kernel, Hans Verkuil

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   81e4f8d68c66da301bb881862735bd74c6241a19
commit: d7c969f37515d78dc1a026d12b94b90e319a5a61 media: vivid: Add 'Is Connected To' menu controls
date:   9 months ago
config: riscv-randconfig-r123-20250318 (https://download.01.org/0day-ci/archive/20250319/202503190528.0rJE681f-lkp@intel.com/config)
compiler: riscv64-linux-gcc (GCC) 8.5.0
reproduce: (https://download.01.org/0day-ci/archive/20250319/202503190528.0rJE681f-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/202503190528.0rJE681f-lkp@intel.com/

All warnings (new ones prefixed by >>):

   drivers/media/test-drivers/vivid/vivid-ctrls.c: In function 'vivid_create_controls':
>> drivers/media/test-drivers/vivid/vivid-ctrls.c:1799:22: warning: ' Is Connected To' directive output may be truncated writing 16 bytes into a region of size between 10 and 19 [-Wformat-truncation=]
         "S-Video %03u-%u Is Connected To", dev->inst, i);
                         ^~~~~~~~~~~~~~~~
   drivers/media/test-drivers/vivid/vivid-ctrls.c:1797:4: note: 'snprintf' output between 30 and 39 bytes into a destination of size 32
       snprintf(dev->ctrl_svid_to_output_names[i],
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         sizeof(dev->ctrl_svid_to_output_names[i]),
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         "S-Video %03u-%u Is Connected To", dev->inst, i);
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/test-drivers/vivid/vivid-ctrls.c:1780:19: warning: ' Is Connected To' directive output may be truncated writing 16 bytes into a region of size between 13 and 22 [-Wformat-truncation=]
         "HDMI %03u-%u Is Connected To", dev->inst, i);
                      ^~~~~~~~~~~~~~~~
   drivers/media/test-drivers/vivid/vivid-ctrls.c:1778:4: note: 'snprintf' output between 27 and 36 bytes into a destination of size 32
       snprintf(dev->ctrl_hdmi_to_output_names[i],
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         sizeof(dev->ctrl_hdmi_to_output_names[i]),
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         "HDMI %03u-%u Is Connected To", dev->inst, i);
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


vim +1799 drivers/media/test-drivers/vivid/vivid-ctrls.c

  1635	
  1636	int vivid_create_controls(struct vivid_dev *dev, bool show_ccs_cap,
  1637			bool show_ccs_out, bool no_error_inj,
  1638			bool has_sdtv, bool has_hdmi)
  1639	{
  1640		struct v4l2_ctrl_handler *hdl_user_gen = &dev->ctrl_hdl_user_gen;
  1641		struct v4l2_ctrl_handler *hdl_user_vid = &dev->ctrl_hdl_user_vid;
  1642		struct v4l2_ctrl_handler *hdl_user_aud = &dev->ctrl_hdl_user_aud;
  1643		struct v4l2_ctrl_handler *hdl_streaming = &dev->ctrl_hdl_streaming;
  1644		struct v4l2_ctrl_handler *hdl_sdtv_cap = &dev->ctrl_hdl_sdtv_cap;
  1645		struct v4l2_ctrl_handler *hdl_loop_cap = &dev->ctrl_hdl_loop_cap;
  1646		struct v4l2_ctrl_handler *hdl_fb = &dev->ctrl_hdl_fb;
  1647		struct v4l2_ctrl_handler *hdl_vid_cap = &dev->ctrl_hdl_vid_cap;
  1648		struct v4l2_ctrl_handler *hdl_vid_out = &dev->ctrl_hdl_vid_out;
  1649		struct v4l2_ctrl_handler *hdl_vbi_cap = &dev->ctrl_hdl_vbi_cap;
  1650		struct v4l2_ctrl_handler *hdl_vbi_out = &dev->ctrl_hdl_vbi_out;
  1651		struct v4l2_ctrl_handler *hdl_radio_rx = &dev->ctrl_hdl_radio_rx;
  1652		struct v4l2_ctrl_handler *hdl_radio_tx = &dev->ctrl_hdl_radio_tx;
  1653		struct v4l2_ctrl_handler *hdl_sdr_cap = &dev->ctrl_hdl_sdr_cap;
  1654		struct v4l2_ctrl_handler *hdl_meta_cap = &dev->ctrl_hdl_meta_cap;
  1655		struct v4l2_ctrl_handler *hdl_meta_out = &dev->ctrl_hdl_meta_out;
  1656		struct v4l2_ctrl_handler *hdl_tch_cap = &dev->ctrl_hdl_touch_cap;
  1657	
  1658		struct v4l2_ctrl_config vivid_ctrl_dv_timings = {
  1659			.ops = &vivid_vid_cap_ctrl_ops,
  1660			.id = VIVID_CID_DV_TIMINGS,
  1661			.name = "DV Timings",
  1662			.type = V4L2_CTRL_TYPE_MENU,
  1663		};
  1664		int i;
  1665	
  1666		v4l2_ctrl_handler_init(hdl_user_gen, 10);
  1667		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_class, NULL);
  1668		v4l2_ctrl_handler_init(hdl_user_vid, 9);
  1669		v4l2_ctrl_new_custom(hdl_user_vid, &vivid_ctrl_class, NULL);
  1670		v4l2_ctrl_handler_init(hdl_user_aud, 2);
  1671		v4l2_ctrl_new_custom(hdl_user_aud, &vivid_ctrl_class, NULL);
  1672		v4l2_ctrl_handler_init(hdl_streaming, 8);
  1673		v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_class, NULL);
  1674		v4l2_ctrl_handler_init(hdl_sdtv_cap, 2);
  1675		v4l2_ctrl_new_custom(hdl_sdtv_cap, &vivid_ctrl_class, NULL);
  1676		v4l2_ctrl_handler_init(hdl_loop_cap, 1);
  1677		v4l2_ctrl_new_custom(hdl_loop_cap, &vivid_ctrl_class, NULL);
  1678		v4l2_ctrl_handler_init(hdl_fb, 1);
  1679		v4l2_ctrl_new_custom(hdl_fb, &vivid_ctrl_class, NULL);
  1680		v4l2_ctrl_handler_init(hdl_vid_cap, 55);
  1681		v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_class, NULL);
  1682		v4l2_ctrl_handler_init(hdl_vid_out, 26);
  1683		if (!no_error_inj || dev->has_fb || dev->num_hdmi_outputs)
  1684			v4l2_ctrl_new_custom(hdl_vid_out, &vivid_ctrl_class, NULL);
  1685		v4l2_ctrl_handler_init(hdl_vbi_cap, 21);
  1686		v4l2_ctrl_new_custom(hdl_vbi_cap, &vivid_ctrl_class, NULL);
  1687		v4l2_ctrl_handler_init(hdl_vbi_out, 19);
  1688		if (!no_error_inj)
  1689			v4l2_ctrl_new_custom(hdl_vbi_out, &vivid_ctrl_class, NULL);
  1690		v4l2_ctrl_handler_init(hdl_radio_rx, 17);
  1691		v4l2_ctrl_new_custom(hdl_radio_rx, &vivid_ctrl_class, NULL);
  1692		v4l2_ctrl_handler_init(hdl_radio_tx, 17);
  1693		v4l2_ctrl_new_custom(hdl_radio_tx, &vivid_ctrl_class, NULL);
  1694		v4l2_ctrl_handler_init(hdl_sdr_cap, 19);
  1695		v4l2_ctrl_new_custom(hdl_sdr_cap, &vivid_ctrl_class, NULL);
  1696		v4l2_ctrl_handler_init(hdl_meta_cap, 2);
  1697		v4l2_ctrl_new_custom(hdl_meta_cap, &vivid_ctrl_class, NULL);
  1698		v4l2_ctrl_handler_init(hdl_meta_out, 2);
  1699		v4l2_ctrl_new_custom(hdl_meta_out, &vivid_ctrl_class, NULL);
  1700		v4l2_ctrl_handler_init(hdl_tch_cap, 2);
  1701		v4l2_ctrl_new_custom(hdl_tch_cap, &vivid_ctrl_class, NULL);
  1702	
  1703		/* User Controls */
  1704		dev->volume = v4l2_ctrl_new_std(hdl_user_aud, NULL,
  1705			V4L2_CID_AUDIO_VOLUME, 0, 255, 1, 200);
  1706		dev->mute = v4l2_ctrl_new_std(hdl_user_aud, NULL,
  1707			V4L2_CID_AUDIO_MUTE, 0, 1, 1, 0);
  1708		if (dev->has_vid_cap) {
  1709			dev->brightness = v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
  1710				V4L2_CID_BRIGHTNESS, 0, 255, 1, 128);
  1711			for (i = 0; i < MAX_INPUTS; i++)
  1712				dev->input_brightness[i] = 128;
  1713			dev->contrast = v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
  1714				V4L2_CID_CONTRAST, 0, 255, 1, 128);
  1715			dev->saturation = v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
  1716				V4L2_CID_SATURATION, 0, 255, 1, 128);
  1717			dev->hue = v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
  1718				V4L2_CID_HUE, -128, 128, 1, 0);
  1719			v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
  1720				V4L2_CID_HFLIP, 0, 1, 1, 0);
  1721			v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
  1722				V4L2_CID_VFLIP, 0, 1, 1, 0);
  1723			dev->autogain = v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
  1724				V4L2_CID_AUTOGAIN, 0, 1, 1, 1);
  1725			dev->gain = v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
  1726				V4L2_CID_GAIN, 0, 255, 1, 100);
  1727			dev->alpha = v4l2_ctrl_new_std(hdl_user_vid, &vivid_user_vid_ctrl_ops,
  1728				V4L2_CID_ALPHA_COMPONENT, 0, 255, 1, 0);
  1729		}
  1730		dev->button = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_button, NULL);
  1731		dev->int32 = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_int32, NULL);
  1732		dev->int64 = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_int64, NULL);
  1733		dev->boolean = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_boolean, NULL);
  1734		dev->menu = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_menu, NULL);
  1735		dev->string = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_string, NULL);
  1736		dev->bitmask = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_bitmask, NULL);
  1737		dev->int_menu = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_int_menu, NULL);
  1738		dev->ro_int32 = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_ro_int32, NULL);
  1739		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_area, NULL);
  1740		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u32_array, NULL);
  1741		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u32_dyn_array, NULL);
  1742		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u16_matrix, NULL);
  1743		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u8_4d_array, NULL);
  1744		dev->pixel_array = v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_u8_pixel_array, NULL);
  1745		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_s32_array, NULL);
  1746		v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_s64_array, NULL);
  1747	
  1748		if (dev->has_vid_cap) {
  1749			/* Image Processing Controls */
  1750			struct v4l2_ctrl_config vivid_ctrl_test_pattern = {
  1751				.ops = &vivid_vid_cap_ctrl_ops,
  1752				.id = VIVID_CID_TEST_PATTERN,
  1753				.name = "Test Pattern",
  1754				.type = V4L2_CTRL_TYPE_MENU,
  1755				.max = TPG_PAT_NOISE,
  1756				.qmenu = tpg_pattern_strings,
  1757			};
  1758	
  1759			dev->test_pattern = v4l2_ctrl_new_custom(hdl_vid_cap,
  1760					&vivid_ctrl_test_pattern, NULL);
  1761			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_perc_fill, NULL);
  1762			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_hor_movement, NULL);
  1763			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_vert_movement, NULL);
  1764			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_osd_mode, NULL);
  1765			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_show_border, NULL);
  1766			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_show_square, NULL);
  1767			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_hflip, NULL);
  1768			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_vflip, NULL);
  1769			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_insert_sav, NULL);
  1770			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_insert_eav, NULL);
  1771			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_insert_hdmi_video_guard_band, NULL);
  1772			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_reduced_fps, NULL);
  1773	
  1774			WARN_ON(dev->num_hdmi_inputs > MAX_HDMI_INPUTS);
  1775			WARN_ON(dev->num_svid_inputs > MAX_SVID_INPUTS);
  1776	
  1777			for (u8 i = 0; i < dev->num_hdmi_inputs; i++) {
  1778				snprintf(dev->ctrl_hdmi_to_output_names[i],
  1779					 sizeof(dev->ctrl_hdmi_to_output_names[i]),
  1780					 "HDMI %03u-%u Is Connected To", dev->inst, i);
  1781			}
  1782	
  1783			for (u8 i = 0; i < dev->num_hdmi_inputs; i++) {
  1784				struct v4l2_ctrl_config ctrl_config = {
  1785					.ops = &vivid_vid_cap_ctrl_ops,
  1786					.id = VIVID_CID_HDMI_IS_CONNECTED_TO_OUTPUT(i),
  1787					.name = dev->ctrl_hdmi_to_output_names[i],
  1788					.type = V4L2_CTRL_TYPE_MENU,
  1789					.max = 1,
  1790					.qmenu = (const char * const *)vivid_ctrl_hdmi_to_output_strings,
  1791				};
  1792				dev->ctrl_hdmi_to_output[i] = v4l2_ctrl_new_custom(hdl_vid_cap,
  1793										   &ctrl_config, NULL);
  1794			}
  1795	
  1796			for (u8 i = 0; i < dev->num_svid_inputs; i++) {
  1797				snprintf(dev->ctrl_svid_to_output_names[i],
  1798					 sizeof(dev->ctrl_svid_to_output_names[i]),
> 1799					 "S-Video %03u-%u Is Connected To", dev->inst, i);
  1800			}
  1801	
  1802			for (u8 i = 0; i < dev->num_svid_inputs; i++) {
  1803				struct v4l2_ctrl_config ctrl_config = {
  1804					.ops = &vivid_vid_cap_ctrl_ops,
  1805					.id = VIVID_CID_SVID_IS_CONNECTED_TO_OUTPUT(i),
  1806					.name = dev->ctrl_svid_to_output_names[i],
  1807					.type = V4L2_CTRL_TYPE_MENU,
  1808					.max = 1,
  1809					.qmenu = (const char * const *)vivid_ctrl_svid_to_output_strings,
  1810				};
  1811				dev->ctrl_svid_to_output[i] = v4l2_ctrl_new_custom(hdl_vid_cap,
  1812										   &ctrl_config, NULL);
  1813			}
  1814	
  1815			if (show_ccs_cap) {
  1816				dev->ctrl_has_crop_cap = v4l2_ctrl_new_custom(hdl_vid_cap,
  1817					&vivid_ctrl_has_crop_cap, NULL);
  1818				dev->ctrl_has_compose_cap = v4l2_ctrl_new_custom(hdl_vid_cap,
  1819					&vivid_ctrl_has_compose_cap, NULL);
  1820				dev->ctrl_has_scaler_cap = v4l2_ctrl_new_custom(hdl_vid_cap,
  1821					&vivid_ctrl_has_scaler_cap, NULL);
  1822			}
  1823	
  1824			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_tstamp_src, NULL);
  1825			dev->colorspace = v4l2_ctrl_new_custom(hdl_vid_cap,
  1826				&vivid_ctrl_colorspace, NULL);
  1827			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_xfer_func, NULL);
  1828			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_ycbcr_enc, NULL);
  1829			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_hsv_enc, NULL);
  1830			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_quantization, NULL);
  1831			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_alpha_mode, NULL);
  1832		}
  1833	
  1834		if (dev->has_vid_out && show_ccs_out) {
  1835			dev->ctrl_has_crop_out = v4l2_ctrl_new_custom(hdl_vid_out,
  1836				&vivid_ctrl_has_crop_out, NULL);
  1837			dev->ctrl_has_compose_out = v4l2_ctrl_new_custom(hdl_vid_out,
  1838				&vivid_ctrl_has_compose_out, NULL);
  1839			dev->ctrl_has_scaler_out = v4l2_ctrl_new_custom(hdl_vid_out,
  1840				&vivid_ctrl_has_scaler_out, NULL);
  1841		}
  1842	
  1843		/*
  1844		 * Testing this driver with v4l2-compliance will trigger the error
  1845		 * injection controls, and after that nothing will work as expected.
  1846		 * So we have a module option to drop these error injecting controls
  1847		 * allowing us to run v4l2_compliance again.
  1848		 */
  1849		if (!no_error_inj) {
  1850			v4l2_ctrl_new_custom(hdl_user_gen, &vivid_ctrl_disconnect, NULL);
  1851			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_dqbuf_error, NULL);
  1852			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_perc_dropped, NULL);
  1853			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_queue_setup_error, NULL);
  1854			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_buf_prepare_error, NULL);
  1855			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_start_streaming_error, NULL);
  1856			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_queue_error, NULL);
  1857	#ifdef CONFIG_MEDIA_CONTROLLER
  1858			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_req_validate_error, NULL);
  1859	#endif
  1860			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_seq_wrap, NULL);
  1861			v4l2_ctrl_new_custom(hdl_streaming, &vivid_ctrl_time_wrap, NULL);
  1862		}
  1863	
  1864		if (has_sdtv && (dev->has_vid_cap || dev->has_vbi_cap)) {
  1865			if (dev->has_vid_cap)
  1866				v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_std_aspect_ratio, NULL);
  1867			dev->ctrl_std_signal_mode = v4l2_ctrl_new_custom(hdl_sdtv_cap,
  1868				&vivid_ctrl_std_signal_mode, NULL);
  1869			dev->ctrl_standard = v4l2_ctrl_new_custom(hdl_sdtv_cap,
  1870				&vivid_ctrl_standard, NULL);
  1871			if (dev->ctrl_std_signal_mode)
  1872				v4l2_ctrl_cluster(2, &dev->ctrl_std_signal_mode);
  1873			if (dev->has_raw_vbi_cap)
  1874				v4l2_ctrl_new_custom(hdl_vbi_cap, &vivid_ctrl_vbi_cap_interlaced, NULL);
  1875		}
  1876	
  1877		if (dev->num_hdmi_inputs) {
  1878			s64 hdmi_input_mask = GENMASK(dev->num_hdmi_inputs - 1, 0);
  1879	
  1880			dev->ctrl_dv_timings_signal_mode = v4l2_ctrl_new_custom(hdl_vid_cap,
  1881						&vivid_ctrl_dv_timings_signal_mode, NULL);
  1882	
  1883			vivid_ctrl_dv_timings.max = dev->query_dv_timings_size - 1;
  1884			vivid_ctrl_dv_timings.qmenu =
  1885				(const char * const *)dev->query_dv_timings_qmenu;
  1886			dev->ctrl_dv_timings = v4l2_ctrl_new_custom(hdl_vid_cap,
  1887				&vivid_ctrl_dv_timings, NULL);
  1888			if (dev->ctrl_dv_timings_signal_mode)
  1889				v4l2_ctrl_cluster(2, &dev->ctrl_dv_timings_signal_mode);
  1890	
  1891			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_dv_timings_aspect_ratio, NULL);
  1892			v4l2_ctrl_new_custom(hdl_vid_cap, &vivid_ctrl_max_edid_blocks, NULL);
  1893			dev->real_rgb_range_cap = v4l2_ctrl_new_custom(hdl_vid_cap,
  1894				&vivid_ctrl_limited_rgb_range, NULL);
  1895			dev->rgb_range_cap = v4l2_ctrl_new_std_menu(hdl_vid_cap,
  1896				&vivid_vid_cap_ctrl_ops,
  1897				V4L2_CID_DV_RX_RGB_RANGE, V4L2_DV_RGB_RANGE_FULL,
  1898				0, V4L2_DV_RGB_RANGE_AUTO);
  1899			dev->ctrl_rx_power_present = v4l2_ctrl_new_std(hdl_vid_cap,
  1900				NULL, V4L2_CID_DV_RX_POWER_PRESENT, 0, hdmi_input_mask,
  1901				0, hdmi_input_mask);
  1902	
  1903		}
  1904		if (dev->num_hdmi_outputs) {
  1905			s64 hdmi_output_mask = GENMASK(dev->num_hdmi_outputs - 1, 0);
  1906	
  1907			/*
  1908			 * We aren't doing anything with this at the moment, but
  1909			 * HDMI outputs typically have this controls.
  1910			 */
  1911			dev->ctrl_tx_rgb_range = v4l2_ctrl_new_std_menu(hdl_vid_out, NULL,
  1912				V4L2_CID_DV_TX_RGB_RANGE, V4L2_DV_RGB_RANGE_FULL,
  1913				0, V4L2_DV_RGB_RANGE_AUTO);
  1914			dev->ctrl_tx_mode = v4l2_ctrl_new_std_menu(hdl_vid_out, NULL,
  1915				V4L2_CID_DV_TX_MODE, V4L2_DV_TX_MODE_HDMI,
  1916				0, V4L2_DV_TX_MODE_HDMI);
  1917			dev->ctrl_display_present = v4l2_ctrl_new_custom(hdl_vid_out,
  1918				&vivid_ctrl_display_present, NULL);
  1919			dev->ctrl_tx_hotplug = v4l2_ctrl_new_std(hdl_vid_out,
  1920				NULL, V4L2_CID_DV_TX_HOTPLUG, 0, hdmi_output_mask,
  1921				0, hdmi_output_mask);
  1922			dev->ctrl_tx_rxsense = v4l2_ctrl_new_std(hdl_vid_out,
  1923				NULL, V4L2_CID_DV_TX_RXSENSE, 0, hdmi_output_mask,
  1924				0, hdmi_output_mask);
  1925			dev->ctrl_tx_edid_present = v4l2_ctrl_new_std(hdl_vid_out,
  1926				NULL, V4L2_CID_DV_TX_EDID_PRESENT, 0, hdmi_output_mask,
  1927				0, hdmi_output_mask);
  1928		}
  1929		if ((dev->has_vid_cap && dev->has_vid_out) ||
  1930		    (dev->has_vbi_cap && dev->has_vbi_out))
  1931			v4l2_ctrl_new_custom(hdl_loop_cap, &vivid_ctrl_loop_video, NULL);
  1932	
  1933		if (dev->has_fb)
  1934			v4l2_ctrl_new_custom(hdl_fb, &vivid_ctrl_clear_fb, NULL);
  1935	
  1936		if (dev->has_radio_rx) {
  1937			v4l2_ctrl_new_custom(hdl_radio_rx, &vivid_ctrl_radio_hw_seek_mode, NULL);
  1938			v4l2_ctrl_new_custom(hdl_radio_rx, &vivid_ctrl_radio_hw_seek_prog_lim, NULL);
  1939			v4l2_ctrl_new_custom(hdl_radio_rx, &vivid_ctrl_radio_rx_rds_blockio, NULL);
  1940			v4l2_ctrl_new_custom(hdl_radio_rx, &vivid_ctrl_radio_rx_rds_rbds, NULL);
  1941			v4l2_ctrl_new_std(hdl_radio_rx, &vivid_radio_rx_ctrl_ops,
  1942				V4L2_CID_RDS_RECEPTION, 0, 1, 1, 1);
  1943			dev->radio_rx_rds_pty = v4l2_ctrl_new_std(hdl_radio_rx,
  1944				&vivid_radio_rx_ctrl_ops,
  1945				V4L2_CID_RDS_RX_PTY, 0, 31, 1, 0);
  1946			dev->radio_rx_rds_psname = v4l2_ctrl_new_std(hdl_radio_rx,
  1947				&vivid_radio_rx_ctrl_ops,
  1948				V4L2_CID_RDS_RX_PS_NAME, 0, 8, 8, 0);
  1949			dev->radio_rx_rds_radiotext = v4l2_ctrl_new_std(hdl_radio_rx,
  1950				&vivid_radio_rx_ctrl_ops,
  1951				V4L2_CID_RDS_RX_RADIO_TEXT, 0, 64, 64, 0);
  1952			dev->radio_rx_rds_ta = v4l2_ctrl_new_std(hdl_radio_rx,
  1953				&vivid_radio_rx_ctrl_ops,
  1954				V4L2_CID_RDS_RX_TRAFFIC_ANNOUNCEMENT, 0, 1, 1, 0);
  1955			dev->radio_rx_rds_tp = v4l2_ctrl_new_std(hdl_radio_rx,
  1956				&vivid_radio_rx_ctrl_ops,
  1957				V4L2_CID_RDS_RX_TRAFFIC_PROGRAM, 0, 1, 1, 0);
  1958			dev->radio_rx_rds_ms = v4l2_ctrl_new_std(hdl_radio_rx,
  1959				&vivid_radio_rx_ctrl_ops,
  1960				V4L2_CID_RDS_RX_MUSIC_SPEECH, 0, 1, 1, 1);
  1961		}
  1962		if (dev->has_radio_tx) {
  1963			v4l2_ctrl_new_custom(hdl_radio_tx,
  1964				&vivid_ctrl_radio_tx_rds_blockio, NULL);
  1965			dev->radio_tx_rds_pi = v4l2_ctrl_new_std(hdl_radio_tx,
  1966				&vivid_radio_tx_ctrl_ops,
  1967				V4L2_CID_RDS_TX_PI, 0, 0xffff, 1, 0x8088);
  1968			dev->radio_tx_rds_pty = v4l2_ctrl_new_std(hdl_radio_tx,
  1969				&vivid_radio_tx_ctrl_ops,
  1970				V4L2_CID_RDS_TX_PTY, 0, 31, 1, 3);
  1971			dev->radio_tx_rds_psname = v4l2_ctrl_new_std(hdl_radio_tx,
  1972				&vivid_radio_tx_ctrl_ops,
  1973				V4L2_CID_RDS_TX_PS_NAME, 0, 8, 8, 0);
  1974			if (dev->radio_tx_rds_psname)
  1975				v4l2_ctrl_s_ctrl_string(dev->radio_tx_rds_psname, "VIVID-TX");
  1976			dev->radio_tx_rds_radiotext = v4l2_ctrl_new_std(hdl_radio_tx,
  1977				&vivid_radio_tx_ctrl_ops,
  1978				V4L2_CID_RDS_TX_RADIO_TEXT, 0, 64 * 2, 64, 0);
  1979			if (dev->radio_tx_rds_radiotext)
  1980				v4l2_ctrl_s_ctrl_string(dev->radio_tx_rds_radiotext,
  1981				       "This is a VIVID default Radio Text template text, change at will");
  1982			dev->radio_tx_rds_mono_stereo = v4l2_ctrl_new_std(hdl_radio_tx,
  1983				&vivid_radio_tx_ctrl_ops,
  1984				V4L2_CID_RDS_TX_MONO_STEREO, 0, 1, 1, 1);
  1985			dev->radio_tx_rds_art_head = v4l2_ctrl_new_std(hdl_radio_tx,
  1986				&vivid_radio_tx_ctrl_ops,
  1987				V4L2_CID_RDS_TX_ARTIFICIAL_HEAD, 0, 1, 1, 0);
  1988			dev->radio_tx_rds_compressed = v4l2_ctrl_new_std(hdl_radio_tx,
  1989				&vivid_radio_tx_ctrl_ops,
  1990				V4L2_CID_RDS_TX_COMPRESSED, 0, 1, 1, 0);
  1991			dev->radio_tx_rds_dyn_pty = v4l2_ctrl_new_std(hdl_radio_tx,
  1992				&vivid_radio_tx_ctrl_ops,
  1993				V4L2_CID_RDS_TX_DYNAMIC_PTY, 0, 1, 1, 0);
  1994			dev->radio_tx_rds_ta = v4l2_ctrl_new_std(hdl_radio_tx,
  1995				&vivid_radio_tx_ctrl_ops,
  1996				V4L2_CID_RDS_TX_TRAFFIC_ANNOUNCEMENT, 0, 1, 1, 0);
  1997			dev->radio_tx_rds_tp = v4l2_ctrl_new_std(hdl_radio_tx,
  1998				&vivid_radio_tx_ctrl_ops,
  1999				V4L2_CID_RDS_TX_TRAFFIC_PROGRAM, 0, 1, 1, 1);
  2000			dev->radio_tx_rds_ms = v4l2_ctrl_new_std(hdl_radio_tx,
  2001				&vivid_radio_tx_ctrl_ops,
  2002				V4L2_CID_RDS_TX_MUSIC_SPEECH, 0, 1, 1, 1);
  2003		}
  2004		if (dev->has_sdr_cap) {
  2005			v4l2_ctrl_new_custom(hdl_sdr_cap,
  2006				&vivid_ctrl_sdr_cap_fm_deviation, NULL);
  2007		}
  2008		if (dev->has_meta_cap) {
  2009			v4l2_ctrl_new_custom(hdl_meta_cap,
  2010					     &vivid_ctrl_meta_has_pts, NULL);
  2011			v4l2_ctrl_new_custom(hdl_meta_cap,
  2012					     &vivid_ctrl_meta_has_src_clk, NULL);
  2013		}
  2014	
  2015		if (hdl_user_gen->error)
  2016			return hdl_user_gen->error;
  2017		if (hdl_user_vid->error)
  2018			return hdl_user_vid->error;
  2019		if (hdl_user_aud->error)
  2020			return hdl_user_aud->error;
  2021		if (hdl_streaming->error)
  2022			return hdl_streaming->error;
  2023		if (hdl_sdr_cap->error)
  2024			return hdl_sdr_cap->error;
  2025		if (hdl_loop_cap->error)
  2026			return hdl_loop_cap->error;
  2027	
  2028		if (dev->autogain)
  2029			v4l2_ctrl_auto_cluster(2, &dev->autogain, 0, true);
  2030	
  2031		if (dev->has_vid_cap) {
  2032			v4l2_ctrl_add_handler(hdl_vid_cap, hdl_user_gen, NULL, false);
  2033			v4l2_ctrl_add_handler(hdl_vid_cap, hdl_user_vid, NULL, false);
  2034			v4l2_ctrl_add_handler(hdl_vid_cap, hdl_user_aud, NULL, false);
  2035			v4l2_ctrl_add_handler(hdl_vid_cap, hdl_streaming, NULL, false);
  2036			v4l2_ctrl_add_handler(hdl_vid_cap, hdl_sdtv_cap, NULL, false);
  2037			v4l2_ctrl_add_handler(hdl_vid_cap, hdl_loop_cap, NULL, false);
  2038			v4l2_ctrl_add_handler(hdl_vid_cap, hdl_fb, NULL, false);
  2039			if (hdl_vid_cap->error)
  2040				return hdl_vid_cap->error;
  2041			dev->vid_cap_dev.ctrl_handler = hdl_vid_cap;
  2042		}
  2043		if (dev->has_vid_out) {
  2044			v4l2_ctrl_add_handler(hdl_vid_out, hdl_user_gen, NULL, false);
  2045			v4l2_ctrl_add_handler(hdl_vid_out, hdl_user_aud, NULL, false);
  2046			v4l2_ctrl_add_handler(hdl_vid_out, hdl_streaming, NULL, false);
  2047			v4l2_ctrl_add_handler(hdl_vid_out, hdl_fb, NULL, false);
  2048			if (hdl_vid_out->error)
  2049				return hdl_vid_out->error;
  2050			dev->vid_out_dev.ctrl_handler = hdl_vid_out;
  2051		}
  2052		if (dev->has_vbi_cap) {
  2053			v4l2_ctrl_add_handler(hdl_vbi_cap, hdl_user_gen, NULL, false);
  2054			v4l2_ctrl_add_handler(hdl_vbi_cap, hdl_streaming, NULL, false);
  2055			v4l2_ctrl_add_handler(hdl_vbi_cap, hdl_sdtv_cap, NULL, false);
  2056			v4l2_ctrl_add_handler(hdl_vbi_cap, hdl_loop_cap, NULL, false);
  2057			if (hdl_vbi_cap->error)
  2058				return hdl_vbi_cap->error;
  2059			dev->vbi_cap_dev.ctrl_handler = hdl_vbi_cap;
  2060		}
  2061		if (dev->has_vbi_out) {
  2062			v4l2_ctrl_add_handler(hdl_vbi_out, hdl_user_gen, NULL, false);
  2063			v4l2_ctrl_add_handler(hdl_vbi_out, hdl_streaming, NULL, false);
  2064			if (hdl_vbi_out->error)
  2065				return hdl_vbi_out->error;
  2066			dev->vbi_out_dev.ctrl_handler = hdl_vbi_out;
  2067		}
  2068		if (dev->has_radio_rx) {
  2069			v4l2_ctrl_add_handler(hdl_radio_rx, hdl_user_gen, NULL, false);
  2070			v4l2_ctrl_add_handler(hdl_radio_rx, hdl_user_aud, NULL, false);
  2071			if (hdl_radio_rx->error)
  2072				return hdl_radio_rx->error;
  2073			dev->radio_rx_dev.ctrl_handler = hdl_radio_rx;
  2074		}
  2075		if (dev->has_radio_tx) {
  2076			v4l2_ctrl_add_handler(hdl_radio_tx, hdl_user_gen, NULL, false);
  2077			v4l2_ctrl_add_handler(hdl_radio_tx, hdl_user_aud, NULL, false);
  2078			if (hdl_radio_tx->error)
  2079				return hdl_radio_tx->error;
  2080			dev->radio_tx_dev.ctrl_handler = hdl_radio_tx;
  2081		}
  2082		if (dev->has_sdr_cap) {
  2083			v4l2_ctrl_add_handler(hdl_sdr_cap, hdl_user_gen, NULL, false);
  2084			v4l2_ctrl_add_handler(hdl_sdr_cap, hdl_streaming, NULL, false);
  2085			if (hdl_sdr_cap->error)
  2086				return hdl_sdr_cap->error;
  2087			dev->sdr_cap_dev.ctrl_handler = hdl_sdr_cap;
  2088		}
  2089		if (dev->has_meta_cap) {
  2090			v4l2_ctrl_add_handler(hdl_meta_cap, hdl_user_gen, NULL, false);
  2091			v4l2_ctrl_add_handler(hdl_meta_cap, hdl_streaming, NULL, false);
  2092			if (hdl_meta_cap->error)
  2093				return hdl_meta_cap->error;
  2094			dev->meta_cap_dev.ctrl_handler = hdl_meta_cap;
  2095		}
  2096		if (dev->has_meta_out) {
  2097			v4l2_ctrl_add_handler(hdl_meta_out, hdl_user_gen, NULL, false);
  2098			v4l2_ctrl_add_handler(hdl_meta_out, hdl_streaming, NULL, false);
  2099			if (hdl_meta_out->error)
  2100				return hdl_meta_out->error;
  2101			dev->meta_out_dev.ctrl_handler = hdl_meta_out;
  2102		}
  2103		if (dev->has_touch_cap) {
  2104			v4l2_ctrl_add_handler(hdl_tch_cap, hdl_user_gen, NULL, false);
  2105			v4l2_ctrl_add_handler(hdl_tch_cap, hdl_streaming, NULL, false);
  2106			if (hdl_tch_cap->error)
  2107				return hdl_tch_cap->error;
  2108			dev->touch_cap_dev.ctrl_handler = hdl_tch_cap;
  2109		}
  2110		return 0;
  2111	}
  2112	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-07-07 11:58 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-07-07 10:26 drivers/media/test-drivers/vivid/vivid-ctrls.c:1799:22: warning: ' Is Connected To' directive output may be truncated writing 16 bytes into a region of size between 10 and 19 kernel test robot
2025-07-07 11:58 ` Hans Verkuil
  -- strict thread matches above, loose matches on Subject: below --
2025-03-18 21:30 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

all inboxes | Powered by JetHome®