cfg->yk_major_version > 2;
}
+static bool vcheck_neo(const YKP_CONFIG *cfg)
+{
+ return (cfg->yk_major_version == 2 &&
+ cfg->yk_minor_version == 1 &&
+ cfg->yk_build_version >= 4 &&
+ cfg->yk_build_version != 9);
+
+}
+
+static bool vcheck_neo_after_4(const YKP_CONFIG *cfg)
+{
+ return (cfg->yk_major_version == 2 &&
+ cfg->yk_minor_version == 1 &&
+ cfg->yk_build_version > 4 &&
+ cfg->yk_build_version != 9);
+}
+
static bool capability_has_hidtrig(const YKP_CONFIG *cfg)
{
return vcheck_v1(cfg);
static bool capability_has_static(const YKP_CONFIG *cfg)
{
- return vcheck_all(cfg);
+ return vcheck_all(cfg) && !vcheck_neo_after_4(cfg);
}
static bool capability_has_static_extras(const YKP_CONFIG *cfg)
{
- return vcheck_no_v1(cfg);
+ return vcheck_no_v1(cfg) && !vcheck_neo_after_4(cfg);
}
static bool capability_has_slot_two(const YKP_CONFIG *cfg)
{
- return vcheck_no_v1(cfg);
+ return vcheck_no_v1(cfg) && !vcheck_neo(cfg);
}
static bool capability_has_chal_resp(const YKP_CONFIG *cfg)
static bool capability_has_oath_imf(const YKP_CONFIG *cfg)
{
- return vcheck_v22_or_greater(cfg);
+ return vcheck_v22_or_greater(cfg) || vcheck_neo(cfg);
}
static bool capability_has_serial(const YKP_CONFIG *cfg)
{
- return vcheck_v22_or_greater(cfg);
+ return vcheck_v22_or_greater(cfg) || vcheck_neo(cfg);
}
static bool capability_has_oath(const YKP_CONFIG *cfg)
{
- return vcheck_v21_or_greater(cfg);
+ return vcheck_v21_or_greater(cfg) || vcheck_neo(cfg);
}
static bool capability_has_ticket_mods(const YKP_CONFIG *cfg)