Expose the `hInternalClient` and `hInternalSubdevice` handles. These are needed for RM control calls.
Signed-off-by: Eliot Courtney <[email protected]> --- drivers/gpu/nova-core/gsp/commands.rs | 16 ++++++++++++++++ drivers/gpu/nova-core/gsp/fw/commands.rs | 10 ++++++++++ 2 files changed, 26 insertions(+) diff --git a/drivers/gpu/nova-core/gsp/commands.rs b/drivers/gpu/nova-core/gsp/commands.rs index 4740cda0b51c..2cadfcaf9a8a 100644 --- a/drivers/gpu/nova-core/gsp/commands.rs +++ b/drivers/gpu/nova-core/gsp/commands.rs @@ -197,6 +197,8 @@ fn init(&self) -> impl Init<Self::Command, Self::InitError> { /// The reply from the GSP to the [`GetGspInfo`] command. pub(crate) struct GetGspStaticInfoReply { gpu_name: [u8; 64], + h_client: u32, + h_subdevice: u32, } impl MessageFromGsp for GetGspStaticInfoReply { @@ -210,6 +212,8 @@ fn read( ) -> Result<Self, Self::InitError> { Ok(GetGspStaticInfoReply { gpu_name: msg.gpu_name_str(), + h_client: msg.h_internal_client(), + h_subdevice: msg.h_internal_subdevice(), }) } } @@ -236,6 +240,18 @@ pub(crate) fn gpu_name(&self) -> core::result::Result<&str, GpuNameError> { .to_str() .map_err(GpuNameError::InvalidUtf8) } + + /// Returns the internal client handle allocated by GSP-RM. + #[expect(dead_code)] + pub(crate) fn h_client(&self) -> u32 { + self.h_client + } + + /// Returns the internal subdevice handle allocated by GSP-RM. + #[expect(dead_code)] + pub(crate) fn h_subdevice(&self) -> u32 { + self.h_subdevice + } } /// Send the [`GetGspInfo`] command and awaits for its reply. diff --git a/drivers/gpu/nova-core/gsp/fw/commands.rs b/drivers/gpu/nova-core/gsp/fw/commands.rs index 67f44421fcc3..aaf3509a0207 100644 --- a/drivers/gpu/nova-core/gsp/fw/commands.rs +++ b/drivers/gpu/nova-core/gsp/fw/commands.rs @@ -115,6 +115,16 @@ impl GspStaticConfigInfo { pub(crate) fn gpu_name_str(&self) -> [u8; 64] { self.0.gpuNameString } + + /// Returns the internal client handle allocated by GSP-RM. + pub(crate) fn h_internal_client(&self) -> u32 { + self.0.hInternalClient + } + + /// Returns the internal subdevice handle allocated by GSP-RM. + pub(crate) fn h_internal_subdevice(&self) -> u32 { + self.0.hInternalSubdevice + } } // SAFETY: Padding is explicit and will not contain uninitialized data. -- 2.53.0
