Commit f65fa47f authored by Johan Hovold's avatar Johan Hovold Committed by Greg Kroah-Hartman

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: default avatarJohan Hovold <johan@hovoldconsulting.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
parent 8034bd56
...@@ -41,7 +41,7 @@ static int download_firmware(struct gb_firmware *firmware, u8 stage) ...@@ -41,7 +41,7 @@ static int download_firmware(struct gb_firmware *firmware, u8 stage)
snprintf(firmware_name, sizeof(firmware_name), snprintf(firmware_name, sizeof(firmware_name),
"ara:%08x:%08x:%08x:%08x:%02x.tftf", "ara:%08x:%08x:%08x:%08x:%02x.tftf",
intf->unipro_mfg_id, intf->unipro_prod_id, 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, return request_firmware(&firmware->fw, firmware_name,
&connection->bundle->dev); &connection->bundle->dev);
......
...@@ -11,8 +11,8 @@ ...@@ -11,8 +11,8 @@
struct greybus_bundle_id { struct greybus_bundle_id {
__u16 match_flags; __u16 match_flags;
__u16 vendor; __u32 vendor;
__u16 product; __u32 product;
__u8 class; __u8 class;
kernel_ulong_t driver_info __aligned(sizeof(kernel_ulong_t)); kernel_ulong_t driver_info __aligned(sizeof(kernel_ulong_t));
......
...@@ -22,16 +22,14 @@ struct gb_interface { ...@@ -22,16 +22,14 @@ struct gb_interface {
u8 device_id; /* Device id allocated for the interface block by the SVC */ u8 device_id; /* Device id allocated for the interface block by the SVC */
/* Information taken from the manifest descriptor */ /* Information taken from the manifest descriptor */
u16 vendor;
u16 product;
char *vendor_string; char *vendor_string;
char *product_string; char *product_string;
/* Information taken from the hotplug event */ /* Information taken from the hotplug event */
u32 unipro_mfg_id; u32 unipro_mfg_id;
u32 unipro_prod_id; u32 unipro_prod_id;
u32 ara_vend_id; u32 vendor;
u32 ara_prod_id; u32 product;
struct gb_module *module; struct gb_module *module;
struct gb_host_device *hd; struct gb_host_device *hd;
......
...@@ -392,11 +392,6 @@ static bool gb_manifest_parse_interface(struct gb_interface *intf, ...@@ -392,11 +392,6 @@ static bool gb_manifest_parse_interface(struct gb_interface *intf,
if (IS_ERR(intf->product_string)) if (IS_ERR(intf->product_string))
goto out_free_vendor_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 the interface descriptor, now that we're done with it */
release_manifest_descriptor(interface_desc); release_manifest_descriptor(interface_desc);
......
...@@ -460,8 +460,8 @@ static void svc_process_hotplug(struct work_struct *work) ...@@ -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_mfg_id = le32_to_cpu(hotplug->data.unipro_mfg_id);
intf->unipro_prod_id = le32_to_cpu(hotplug->data.unipro_prod_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->vendor = le32_to_cpu(hotplug->data.ara_vend_id);
intf->ara_prod_id = le32_to_cpu(hotplug->data.ara_prod_id); intf->product = le32_to_cpu(hotplug->data.ara_prod_id);
/* /*
* Create a device id for the interface: * Create a device id for the interface:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment