--- files/patch-hald_freebsd_hf-usb2.c 2009-11-29 09:06:02.000000000 +1300 +++ files/patch-hald_freebsd_hf-usb2.c 2010-01-21 11:22:28.000000000 +1300 @@ -1,6 +1,6 @@ ---- hald/freebsd/hf-usb2.c.orig 2009-11-21 19:57:40.000000000 -0500 -+++ hald/freebsd/hf-usb2.c 2009-11-21 19:58:07.000000000 -0500 -@@ -0,0 +1,312 @@ +--- hald/freebsd/hf-usb2.c.orig 2010-01-21 11:13:33.000000000 +1300 ++++ hald/freebsd/hf-usb2.c 2010-01-21 11:22:12.000000000 +1300 +@@ -0,0 +1,296 @@ +/*************************************************************************** + * CVSID: $Id$ + * @@ -45,22 +45,6 @@ +static struct libusb20_backend *hf_usb2_be = NULL; + +static void -+hf_usb2_copy_parent (HalDevice *parent, -+ const char *key, -+ gpointer user_data) -+{ -+ HalDevice *device; -+ -+ g_return_if_fail(HAL_IS_DEVICE(parent)); -+ g_return_if_fail(HAL_IS_DEVICE(user_data)); -+ -+ device = HAL_DEVICE(user_data); -+ -+ if (! strncmp(key, "usb_device.", strlen("usb_device."))) -+ hal_device_copy_property(parent, key, device, key); -+} -+ -+static void +hf_usb2_probe_interfaces(HalDevice *parent) +{ + int num_interfaces; @@ -82,9 +66,9 @@ + + hal_device_property_set_string(device, "info.subsystem", "usb"); + hal_device_property_set_int(device, "usb.interface.number", i); -+ hal_device_property_foreach(parent, hf_usb2_copy_parent, device); + hal_device_copy_property(parent, "info.product", device, "info.product"); + hal_device_copy_property(parent, "info.vendor", device, "info.vendor"); ++ hal_device_merge_with_rewrite(device, parent, "usb.", "usb_device."); + + if (hf_device_preprobe(device)) + {