Most C drivers use a pointer (and cast to kernel_ulong_t) for driver_data fields in device_id. Rust code currently does not do this, but rather use indices. These indices then needs to be translated to `&IdInfo` separately and this is by a side table.
This leads to open-coded ACPI/OF handling in driver.rs, which is not desirable. Convert the code to use pointers (or rather, static references) instead. Signed-off-by: Gary Guo <[email protected]> --- Gary Guo (10): rust: driver: remove `IdTable::id` rust: driver: simplify `IdArray::new_without_index` rust: pci: use `Option<&IdInfo>` for device ID info rust: net/phy: remove expansion from doc rust: driver: centralize device ID handling rust: driver: remove `$module_table_name` from `module_device_table` rust: driver: store pointers in `DeviceId` rust: driver: remove open-coded matching logic rust: driver: remove duplicate ID table RFC: rust: driver: support map-like syntax for ID table drivers/cpufreq/rcpufreq_dt.rs | 1 - drivers/gpu/drm/nova/driver.rs | 1 - drivers/gpu/drm/tyr/driver.rs | 1 - drivers/gpu/nova-core/driver.rs | 3 +- drivers/pwm/pwm_th1520.rs | 1 - rust/kernel/acpi.rs | 14 +-- rust/kernel/auxiliary.rs | 18 +-- rust/kernel/device_id.rs | 205 +++++++++++++++++++--------------- rust/kernel/driver.rs | 114 ++----------------- rust/kernel/i2c.rs | 26 ++--- rust/kernel/net/phy.rs | 66 +---------- rust/kernel/of.rs | 14 +-- rust/kernel/pci.rs | 24 ++-- rust/kernel/platform.rs | 5 +- rust/kernel/usb.rs | 18 +-- samples/rust/rust_debugfs.rs | 1 - samples/rust/rust_dma.rs | 3 +- samples/rust/rust_driver_auxiliary.rs | 4 +- samples/rust/rust_driver_i2c.rs | 3 - samples/rust/rust_driver_pci.rs | 11 +- samples/rust/rust_driver_platform.rs | 2 - samples/rust/rust_driver_usb.rs | 1 - samples/rust/rust_i2c_client.rs | 2 - samples/rust/rust_soc.rs | 2 - 24 files changed, 166 insertions(+), 374 deletions(-) --- base-commit: 4fa3f5fabb30bf00d7475d5a33459ea83d639bf9 change-id: 20260612-id_info-23eca472ccd8 Best regards, -- Gary Guo <[email protected]>
