diff options
author | Thomas Zimmermann <tzimmermann@suse.de> | 2025-04-07 13:47:40 +0200 |
---|---|---|
committer | Thomas Zimmermann <tzimmermann@suse.de> | 2025-04-07 14:35:48 +0200 |
commit | 1afba39f9305fe4061a4e70baa6ebab9d41459da (patch) | |
tree | 67e7ed686bd75adc559025870151c4de6d649ced /drivers/gpu/nova-core/firmware.rs | |
parent | fbe43810d563a293e3de301141d33caf1f5d5c5a (diff) | |
parent | 0af2f6be1b4281385b618cb86ad946eded089ac8 (diff) |
Merge drm/drm-next into drm-misc-next
Backmerging to get v6.15-rc1 into drm-misc-next. Also fixes a
build issue when enabling CONFIG_DRM_SCHED_KUNIT_TEST.
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Diffstat (limited to 'drivers/gpu/nova-core/firmware.rs')
-rw-r--r-- | drivers/gpu/nova-core/firmware.rs | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/drivers/gpu/nova-core/firmware.rs b/drivers/gpu/nova-core/firmware.rs new file mode 100644 index 000000000000..6e6361c59ca1 --- /dev/null +++ b/drivers/gpu/nova-core/firmware.rs @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: GPL-2.0 + +use crate::gpu; +use kernel::firmware; + +pub(crate) struct ModInfoBuilder<const N: usize>(firmware::ModInfoBuilder<N>); + +impl<const N: usize> ModInfoBuilder<N> { + const VERSION: &'static str = "535.113.01"; + + const fn make_entry_file(self, chipset: &str, fw: &str) -> Self { + ModInfoBuilder( + self.0 + .new_entry() + .push("nvidia/") + .push(chipset) + .push("/gsp/") + .push(fw) + .push("-") + .push(Self::VERSION) + .push(".bin"), + ) + } + + const fn make_entry_chipset(self, chipset: &str) -> Self { + self.make_entry_file(chipset, "booter_load") + .make_entry_file(chipset, "booter_unload") + .make_entry_file(chipset, "bootloader") + .make_entry_file(chipset, "gsp") + } + + pub(crate) const fn create( + module_name: &'static kernel::str::CStr, + ) -> firmware::ModInfoBuilder<N> { + let mut this = Self(firmware::ModInfoBuilder::new(module_name)); + let mut i = 0; + + while i < gpu::Chipset::NAMES.len() { + this = this.make_entry_chipset(gpu::Chipset::NAMES[i]); + i += 1; + } + + this.0 + } +} |