The trait you are looking for is Into, so you can specify T : Into<u64>. This is preferred to defining trait bounds in terms of From, since everything that implements From implements Into, but some things just implement Into.
To answer the question as asked: you use a where clause to apply free-form constraints to a function or struct.
Example (don't use this)
fn foo<T>(val_1: u64, val_2: T)
where
u64: From<T>
However, @jameseb7 is correct that Into is preferable to From for bounds because it's easier to satisfy. This also means you should change the body of your function to use val_2.into() instead of u64::from(val_2).