mirror of https://gitee.com/openkylin/linux.git
greybus: fix vendor and product matching
Fix vendor and product matching by matching on the 32-bit Ara vendor and product ids. Remove the "fake" 16-bit vendor and product ids and export the Ara ids using the "vendor" and "product" interface attributes instead. Signed-off-by: Johan Hovold <johan@hovoldconsulting.com> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
parent
8034bd561d
commit
f65fa47f28
|
@ -41,7 +41,7 @@ static int download_firmware(struct gb_firmware *firmware, u8 stage)
|
|||
snprintf(firmware_name, sizeof(firmware_name),
|
||||
"ara:%08x:%08x:%08x:%08x:%02x.tftf",
|
||||
intf->unipro_mfg_id, intf->unipro_prod_id,
|
||||
intf->ara_vend_id, intf->ara_prod_id, stage);
|
||||
intf->vendor, intf->product, stage);
|
||||
|
||||
return request_firmware(&firmware->fw, firmware_name,
|
||||
&connection->bundle->dev);
|
||||
|
|
|
@ -11,8 +11,8 @@
|
|||
|
||||
struct greybus_bundle_id {
|
||||
__u16 match_flags;
|
||||
__u16 vendor;
|
||||
__u16 product;
|
||||
__u32 vendor;
|
||||
__u32 product;
|
||||
__u8 class;
|
||||
|
||||
kernel_ulong_t driver_info __aligned(sizeof(kernel_ulong_t));
|
||||
|
|
|
@ -22,16 +22,14 @@ struct gb_interface {
|
|||
u8 device_id; /* Device id allocated for the interface block by the SVC */
|
||||
|
||||
/* Information taken from the manifest descriptor */
|
||||
u16 vendor;
|
||||
u16 product;
|
||||
char *vendor_string;
|
||||
char *product_string;
|
||||
|
||||
/* Information taken from the hotplug event */
|
||||
u32 unipro_mfg_id;
|
||||
u32 unipro_prod_id;
|
||||
u32 ara_vend_id;
|
||||
u32 ara_prod_id;
|
||||
u32 vendor;
|
||||
u32 product;
|
||||
|
||||
struct gb_module *module;
|
||||
struct gb_host_device *hd;
|
||||
|
|
|
@ -392,11 +392,6 @@ static bool gb_manifest_parse_interface(struct gb_interface *intf,
|
|||
if (IS_ERR(intf->product_string))
|
||||
goto out_free_vendor_string;
|
||||
|
||||
// FIXME
|
||||
// Vendor, Product and Unique id must come via control protocol
|
||||
intf->vendor = 0xffff;
|
||||
intf->product = 0x0001;
|
||||
|
||||
/* Release the interface descriptor, now that we're done with it */
|
||||
release_manifest_descriptor(interface_desc);
|
||||
|
||||
|
|
|
@ -460,8 +460,8 @@ static void svc_process_hotplug(struct work_struct *work)
|
|||
|
||||
intf->unipro_mfg_id = le32_to_cpu(hotplug->data.unipro_mfg_id);
|
||||
intf->unipro_prod_id = le32_to_cpu(hotplug->data.unipro_prod_id);
|
||||
intf->ara_vend_id = le32_to_cpu(hotplug->data.ara_vend_id);
|
||||
intf->ara_prod_id = le32_to_cpu(hotplug->data.ara_prod_id);
|
||||
intf->vendor = le32_to_cpu(hotplug->data.ara_vend_id);
|
||||
intf->product = le32_to_cpu(hotplug->data.ara_prod_id);
|
||||
|
||||
/*
|
||||
* Create a device id for the interface:
|
||||
|
|
Loading…
Reference in New Issue