/* Generated by ./xlat/gen.sh from ./xlat/v4l2_control_id_bases.in; do not edit. */

#include "gcc_compat.h"
#include "static_assert.h"

#if defined(V4L2_CID_BASE) || (defined(HAVE_DECL_V4L2_CID_BASE) && HAVE_DECL_V4L2_CID_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_BASE) == ((V4L2_CTRL_CLASS_USER | 0x900)), "V4L2_CID_BASE != (V4L2_CTRL_CLASS_USER | 0x900)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900)
#endif
#if defined(V4L2_CID_USER_MEYE_BASE) || (defined(HAVE_DECL_V4L2_CID_USER_MEYE_BASE) && HAVE_DECL_V4L2_CID_USER_MEYE_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_USER_MEYE_BASE) == ((V4L2_CID_BASE | 0x1000)), "V4L2_CID_USER_MEYE_BASE != (V4L2_CID_BASE | 0x1000)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_USER_MEYE_BASE (V4L2_CID_BASE | 0x1000)
#endif
#if defined(V4L2_CID_USER_BTTV_BASE) || (defined(HAVE_DECL_V4L2_CID_USER_BTTV_BASE) && HAVE_DECL_V4L2_CID_USER_BTTV_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_USER_BTTV_BASE) == ((V4L2_CID_BASE | 0x1010)), "V4L2_CID_USER_BTTV_BASE != (V4L2_CID_BASE | 0x1010)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_USER_BTTV_BASE (V4L2_CID_BASE | 0x1010)
#endif
#if defined(V4L2_CID_USER_S2255_BASE) || (defined(HAVE_DECL_V4L2_CID_USER_S2255_BASE) && HAVE_DECL_V4L2_CID_USER_S2255_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_USER_S2255_BASE) == ((V4L2_CID_BASE | 0x1030)), "V4L2_CID_USER_S2255_BASE != (V4L2_CID_BASE | 0x1030)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_USER_S2255_BASE (V4L2_CID_BASE | 0x1030)
#endif
#if defined(V4L2_CID_USER_SI476X_BASE) || (defined(HAVE_DECL_V4L2_CID_USER_SI476X_BASE) && HAVE_DECL_V4L2_CID_USER_SI476X_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_USER_SI476X_BASE) == ((V4L2_CID_BASE | 0x1040)), "V4L2_CID_USER_SI476X_BASE != (V4L2_CID_BASE | 0x1040)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_USER_SI476X_BASE (V4L2_CID_BASE | 0x1040)
#endif
#if defined(V4L2_CID_USER_TI_VPE_BASE) || (defined(HAVE_DECL_V4L2_CID_USER_TI_VPE_BASE) && HAVE_DECL_V4L2_CID_USER_TI_VPE_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_USER_TI_VPE_BASE) == ((V4L2_CID_BASE | 0x1050)), "V4L2_CID_USER_TI_VPE_BASE != (V4L2_CID_BASE | 0x1050)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_USER_TI_VPE_BASE (V4L2_CID_BASE | 0x1050)
#endif
#if defined(V4L2_CID_USER_SAA7134_BASE) || (defined(HAVE_DECL_V4L2_CID_USER_SAA7134_BASE) && HAVE_DECL_V4L2_CID_USER_SAA7134_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_USER_SAA7134_BASE) == ((V4L2_CID_BASE | 0x1060)), "V4L2_CID_USER_SAA7134_BASE != (V4L2_CID_BASE | 0x1060)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_USER_SAA7134_BASE (V4L2_CID_BASE | 0x1060)
#endif
#if defined(V4L2_CID_USER_ADV7180_BASE) || (defined(HAVE_DECL_V4L2_CID_USER_ADV7180_BASE) && HAVE_DECL_V4L2_CID_USER_ADV7180_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_USER_ADV7180_BASE) == ((V4L2_CID_BASE | 0x1070)), "V4L2_CID_USER_ADV7180_BASE != (V4L2_CID_BASE | 0x1070)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_USER_ADV7180_BASE (V4L2_CID_BASE | 0x1070)
#endif
#if defined(V4L2_CID_USER_TC358743_BASE) || (defined(HAVE_DECL_V4L2_CID_USER_TC358743_BASE) && HAVE_DECL_V4L2_CID_USER_TC358743_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_USER_TC358743_BASE) == ((V4L2_CID_BASE | 0x1080)), "V4L2_CID_USER_TC358743_BASE != (V4L2_CID_BASE | 0x1080)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_USER_TC358743_BASE (V4L2_CID_BASE | 0x1080)
#endif
#if defined(V4L2_CID_USER_MAX217X_BASE) || (defined(HAVE_DECL_V4L2_CID_USER_MAX217X_BASE) && HAVE_DECL_V4L2_CID_USER_MAX217X_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_USER_MAX217X_BASE) == ((V4L2_CID_BASE | 0x1090)), "V4L2_CID_USER_MAX217X_BASE != (V4L2_CID_BASE | 0x1090)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_USER_MAX217X_BASE (V4L2_CID_BASE | 0x1090)
#endif
#ifndef STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE
# define STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE
# undef V4L2_CID_USER_IMX_BASE
#endif
#if defined(V4L2_CID_USER_IMX_BASE) || (defined(HAVE_DECL_V4L2_CID_USER_IMX_BASE) && HAVE_DECL_V4L2_CID_USER_IMX_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_USER_IMX_BASE) == ((V4L2_CID_BASE | 0x10b0)), "V4L2_CID_USER_IMX_BASE != (V4L2_CID_BASE | 0x10b0)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_USER_IMX_BASE (V4L2_CID_BASE | 0x10b0)
#endif
#if defined(V4L2_CID_MPEG_BASE) || (defined(HAVE_DECL_V4L2_CID_MPEG_BASE) && HAVE_DECL_V4L2_CID_MPEG_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_MPEG_BASE) == ((V4L2_CTRL_CLASS_MPEG | 0x900)), "V4L2_CID_MPEG_BASE != (V4L2_CTRL_CLASS_MPEG | 0x900)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900)
#endif
#if defined(V4L2_CID_MPEG_CX2341X_BASE) || (defined(HAVE_DECL_V4L2_CID_MPEG_CX2341X_BASE) && HAVE_DECL_V4L2_CID_MPEG_CX2341X_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_MPEG_CX2341X_BASE) == ((V4L2_CTRL_CLASS_MPEG | 0x1000)), "V4L2_CID_MPEG_CX2341X_BASE != (V4L2_CTRL_CLASS_MPEG | 0x1000)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000)
#endif
#if defined(V4L2_CID_MPEG_MFC51_BASE) || (defined(HAVE_DECL_V4L2_CID_MPEG_MFC51_BASE) && HAVE_DECL_V4L2_CID_MPEG_MFC51_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_MPEG_MFC51_BASE) == ((V4L2_CTRL_CLASS_MPEG | 0x1100)), "V4L2_CID_MPEG_MFC51_BASE != (V4L2_CTRL_CLASS_MPEG | 0x1100)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_MPEG_MFC51_BASE (V4L2_CTRL_CLASS_MPEG | 0x1100)
#endif
#if defined(V4L2_CID_CAMERA_CLASS_BASE) || (defined(HAVE_DECL_V4L2_CID_CAMERA_CLASS_BASE) && HAVE_DECL_V4L2_CID_CAMERA_CLASS_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_CAMERA_CLASS_BASE) == ((V4L2_CTRL_CLASS_CAMERA | 0x900)), "V4L2_CID_CAMERA_CLASS_BASE != (V4L2_CTRL_CLASS_CAMERA | 0x900)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_CAMERA_CLASS_BASE (V4L2_CTRL_CLASS_CAMERA | 0x900)
#endif
#if defined(V4L2_CID_FM_TX_CLASS_BASE) || (defined(HAVE_DECL_V4L2_CID_FM_TX_CLASS_BASE) && HAVE_DECL_V4L2_CID_FM_TX_CLASS_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_FM_TX_CLASS_BASE) == ((V4L2_CTRL_CLASS_FM_TX | 0x900)), "V4L2_CID_FM_TX_CLASS_BASE != (V4L2_CTRL_CLASS_FM_TX | 0x900)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900)
#endif
#if defined(V4L2_CID_FLASH_CLASS_BASE) || (defined(HAVE_DECL_V4L2_CID_FLASH_CLASS_BASE) && HAVE_DECL_V4L2_CID_FLASH_CLASS_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_FLASH_CLASS_BASE) == ((V4L2_CTRL_CLASS_FLASH | 0x900)), "V4L2_CID_FLASH_CLASS_BASE != (V4L2_CTRL_CLASS_FLASH | 0x900)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_FLASH_CLASS_BASE (V4L2_CTRL_CLASS_FLASH | 0x900)
#endif
#if defined(V4L2_CID_JPEG_CLASS_BASE) || (defined(HAVE_DECL_V4L2_CID_JPEG_CLASS_BASE) && HAVE_DECL_V4L2_CID_JPEG_CLASS_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_JPEG_CLASS_BASE) == ((V4L2_CTRL_CLASS_JPEG | 0x900)), "V4L2_CID_JPEG_CLASS_BASE != (V4L2_CTRL_CLASS_JPEG | 0x900)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_JPEG_CLASS_BASE (V4L2_CTRL_CLASS_JPEG | 0x900)
#endif
#if defined(V4L2_CID_IMAGE_SOURCE_CLASS_BASE) || (defined(HAVE_DECL_V4L2_CID_IMAGE_SOURCE_CLASS_BASE) && HAVE_DECL_V4L2_CID_IMAGE_SOURCE_CLASS_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_IMAGE_SOURCE_CLASS_BASE) == ((V4L2_CTRL_CLASS_IMAGE_SOURCE | 0x900)), "V4L2_CID_IMAGE_SOURCE_CLASS_BASE != (V4L2_CTRL_CLASS_IMAGE_SOURCE | 0x900)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_IMAGE_SOURCE_CLASS_BASE (V4L2_CTRL_CLASS_IMAGE_SOURCE | 0x900)
#endif
#if defined(V4L2_CID_IMAGE_PROC_CLASS_BASE) || (defined(HAVE_DECL_V4L2_CID_IMAGE_PROC_CLASS_BASE) && HAVE_DECL_V4L2_CID_IMAGE_PROC_CLASS_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_IMAGE_PROC_CLASS_BASE) == ((V4L2_CTRL_CLASS_IMAGE_PROC | 0x900)), "V4L2_CID_IMAGE_PROC_CLASS_BASE != (V4L2_CTRL_CLASS_IMAGE_PROC | 0x900)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_IMAGE_PROC_CLASS_BASE (V4L2_CTRL_CLASS_IMAGE_PROC | 0x900)
#endif
#if defined(V4L2_CID_DV_CLASS_BASE) || (defined(HAVE_DECL_V4L2_CID_DV_CLASS_BASE) && HAVE_DECL_V4L2_CID_DV_CLASS_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_DV_CLASS_BASE) == ((V4L2_CTRL_CLASS_DV | 0x900)), "V4L2_CID_DV_CLASS_BASE != (V4L2_CTRL_CLASS_DV | 0x900)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_DV_CLASS_BASE (V4L2_CTRL_CLASS_DV | 0x900)
#endif
#if defined(V4L2_CID_FM_RX_CLASS_BASE) || (defined(HAVE_DECL_V4L2_CID_FM_RX_CLASS_BASE) && HAVE_DECL_V4L2_CID_FM_RX_CLASS_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_FM_RX_CLASS_BASE) == ((V4L2_CTRL_CLASS_FM_RX | 0x900)), "V4L2_CID_FM_RX_CLASS_BASE != (V4L2_CTRL_CLASS_FM_RX | 0x900)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_FM_RX_CLASS_BASE (V4L2_CTRL_CLASS_FM_RX | 0x900)
#endif
#if defined(V4L2_CID_RF_TUNER_CLASS_BASE) || (defined(HAVE_DECL_V4L2_CID_RF_TUNER_CLASS_BASE) && HAVE_DECL_V4L2_CID_RF_TUNER_CLASS_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_RF_TUNER_CLASS_BASE) == ((V4L2_CTRL_CLASS_RF_TUNER | 0x900)), "V4L2_CID_RF_TUNER_CLASS_BASE != (V4L2_CTRL_CLASS_RF_TUNER | 0x900)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_RF_TUNER_CLASS_BASE (V4L2_CTRL_CLASS_RF_TUNER | 0x900)
#endif
#if defined(V4L2_CID_DETECT_CLASS_BASE) || (defined(HAVE_DECL_V4L2_CID_DETECT_CLASS_BASE) && HAVE_DECL_V4L2_CID_DETECT_CLASS_BASE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CID_DETECT_CLASS_BASE) == ((V4L2_CTRL_CLASS_DETECT | 0x900)), "V4L2_CID_DETECT_CLASS_BASE != (V4L2_CTRL_CLASS_DETECT | 0x900)");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CID_DETECT_CLASS_BASE (V4L2_CTRL_CLASS_DETECT | 0x900)
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

extern const struct xlat v4l2_control_id_bases[];

# else

#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
static
#  endif
const struct xlat v4l2_control_id_bases[] = {
 XLAT(V4L2_CID_BASE),
 XLAT(V4L2_CID_USER_MEYE_BASE),
 XLAT(V4L2_CID_USER_BTTV_BASE),
 XLAT(V4L2_CID_USER_S2255_BASE),
 XLAT(V4L2_CID_USER_SI476X_BASE),
 XLAT(V4L2_CID_USER_TI_VPE_BASE),
 XLAT(V4L2_CID_USER_SAA7134_BASE),
 XLAT(V4L2_CID_USER_ADV7180_BASE),
 XLAT(V4L2_CID_USER_TC358743_BASE),
 XLAT(V4L2_CID_USER_MAX217X_BASE),
#ifndef STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE
# define STRACE_WORKAROUND_FOR_V4L2_CID_USER_IMX_BASE
/*
* Linux kernel commit v4.18-rc2-106-g421860b9d47053badce4b247576fa48df9ab4c48
* has changed the value of V4L2_CID_USER_IMX_BASE constant introduced
* by commit v4.13-rc1~141^2~121 because the old value was already used
* by V4L2_CID_USER_MAX217X_BASE.
* This is of course an ABI breakage that affects Linux kernels starting
* with 4.13 and up to 4.18, as well as their LTS derivatives.
* Since the imx driver didn't provide any public control ID definitions,
* it looks like the best way to handle this situation is to pretend that
* the old value of V4L2_CID_USER_IMX_BASE didn't exist.
*/
# undef V4L2_CID_USER_IMX_BASE
#endif
 XLAT(V4L2_CID_USER_IMX_BASE),
 XLAT(V4L2_CID_MPEG_BASE),
 XLAT(V4L2_CID_MPEG_CX2341X_BASE),
 XLAT(V4L2_CID_MPEG_MFC51_BASE),
 XLAT(V4L2_CID_CAMERA_CLASS_BASE),
 XLAT(V4L2_CID_FM_TX_CLASS_BASE),
 XLAT(V4L2_CID_FLASH_CLASS_BASE),
 XLAT(V4L2_CID_JPEG_CLASS_BASE),
 XLAT(V4L2_CID_IMAGE_SOURCE_CLASS_BASE),
 XLAT(V4L2_CID_IMAGE_PROC_CLASS_BASE),
 XLAT(V4L2_CID_DV_CLASS_BASE),
 XLAT(V4L2_CID_FM_RX_CLASS_BASE),
 XLAT(V4L2_CID_RF_TUNER_CLASS_BASE),
 XLAT(V4L2_CID_DETECT_CLASS_BASE),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
