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

#ifdef IN_MPERS

extern const struct xlat mtd_otp_options[];

#else

# if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
static
# endif
const struct xlat mtd_otp_options[] = {
#if defined(MTD_OTP_OFF) || (defined(HAVE_DECL_MTD_OTP_OFF) && HAVE_DECL_MTD_OTP_OFF)
  XLAT(MTD_OTP_OFF),
#endif
#if defined(MTD_OTP_FACTORY) || (defined(HAVE_DECL_MTD_OTP_FACTORY) && HAVE_DECL_MTD_OTP_FACTORY)
  XLAT(MTD_OTP_FACTORY),
#endif
#if defined(MTD_OTP_USER) || (defined(HAVE_DECL_MTD_OTP_USER) && HAVE_DECL_MTD_OTP_USER)
  XLAT(MTD_OTP_USER),
#endif
 XLAT_END
};

#endif /* !IN_MPERS */
