xref: /linux/drivers/gpu/nova-core/util.rs (revision 4f9786035f9e519db41375818e1d0b5f20da2f10)
1*54e6baf1SDanilo Krummrich // SPDX-License-Identifier: GPL-2.0
2*54e6baf1SDanilo Krummrich 
3*54e6baf1SDanilo Krummrich pub(crate) const fn to_lowercase_bytes<const N: usize>(s: &str) -> [u8; N] {
4*54e6baf1SDanilo Krummrich     let src = s.as_bytes();
5*54e6baf1SDanilo Krummrich     let mut dst = [0; N];
6*54e6baf1SDanilo Krummrich     let mut i = 0;
7*54e6baf1SDanilo Krummrich 
8*54e6baf1SDanilo Krummrich     while i < src.len() && i < N {
9*54e6baf1SDanilo Krummrich         dst[i] = (src[i] as char).to_ascii_lowercase() as u8;
10*54e6baf1SDanilo Krummrich         i += 1;
11*54e6baf1SDanilo Krummrich     }
12*54e6baf1SDanilo Krummrich 
13*54e6baf1SDanilo Krummrich     dst
14*54e6baf1SDanilo Krummrich }
15*54e6baf1SDanilo Krummrich 
16*54e6baf1SDanilo Krummrich pub(crate) const fn const_bytes_to_str(bytes: &[u8]) -> &str {
17*54e6baf1SDanilo Krummrich     match core::str::from_utf8(bytes) {
18*54e6baf1SDanilo Krummrich         Ok(string) => string,
19*54e6baf1SDanilo Krummrich         Err(_) => kernel::build_error!("Bytes are not valid UTF-8."),
20*54e6baf1SDanilo Krummrich     }
21*54e6baf1SDanilo Krummrich }
22