Чем плохо проверять аргумент функции на допустимые значения внутри функции?
assert в драйвере - это как-то перебор.
Просто обнуляйте младший бит принудительно и будет у вас всегда четное число.
А в инструкции опишите, что значение приводится к ближайшему меньшему четному.
Для 1 байтового значения это будет так:
val & 0xfe
 а проверить, работает ли оно как положеноЧастоту задают при инициализации девайса. Меняют редко. 
Так и нужно проверять частоту при настройке, что бы она могла делиться на чётное число, то есть была чётной. А с делителем не понятно: если это настройка — проверять, если нет — округлять.