mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
Refactor device initialisation
This commit is contained in:
@@ -46,7 +46,8 @@ impl RogCore {
|
|||||||
err
|
err
|
||||||
})?;
|
})?;
|
||||||
// Interface with outputs
|
// Interface with outputs
|
||||||
let mut interface = 0;
|
let mut interface = 2; // The interface with keyboard consumer device and LED control
|
||||||
|
// is #2 on 0x1866 device at least
|
||||||
for iface in dev_config.interfaces() {
|
for iface in dev_config.interfaces() {
|
||||||
for desc in iface.descriptors() {
|
for desc in iface.descriptors() {
|
||||||
for endpoint in desc.endpoint_descriptors() {
|
for endpoint in desc.endpoint_descriptors() {
|
||||||
@@ -70,10 +71,25 @@ impl RogCore {
|
|||||||
error!("Auto-detach kernel driver failed: {:?}", err);
|
error!("Auto-detach kernel driver failed: {:?}", err);
|
||||||
err
|
err
|
||||||
})?;
|
})?;
|
||||||
dev_handle.claim_interface(interface).map_err(|err| {
|
|
||||||
error!("Could not claim keyboard device interface: {:?}", err);
|
if let Err(err) = dev_handle.claim_interface(interface) {
|
||||||
err
|
warn!("Could not claim keyboard device interface: {:?}", err);
|
||||||
})?;
|
warn!("Trying to detach kernel driver then retry");
|
||||||
|
if let Ok(active) = dev_handle.kernel_driver_active(interface) {
|
||||||
|
if active {
|
||||||
|
dev_handle.detach_kernel_driver(interface).map_err(|err| {
|
||||||
|
warn!("Could not detach kernel driver: {:?}", err);
|
||||||
|
err
|
||||||
|
})?;
|
||||||
|
} else {
|
||||||
|
warn!("Kernel driver not active, continue");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dev_handle.claim_interface(interface).map_err(|err| {
|
||||||
|
error!("Could not claim keyboard device interface: {:?}", err);
|
||||||
|
err
|
||||||
|
})?;
|
||||||
|
}
|
||||||
|
|
||||||
Ok(RogCore {
|
Ok(RogCore {
|
||||||
handle: dev_handle,
|
handle: dev_handle,
|
||||||
|
|||||||
Reference in New Issue
Block a user