From 96a9b9b0eb2c5b9626bdad02c057fb22f133fc86 Mon Sep 17 00:00:00 2001 From: Johan Hovold Date: Tue, 19 Jan 2016 12:51:20 +0100 Subject: [PATCH] greybus: connection: remove broken protocol-version handling Remove the broken legacy protocol-version handling from core and move it to the legacy driver instead. Note that version handling has always been broken as legacy protocols were looked up and bound to connections before the connections were enabled and version negotiation could take place (over that very connection). Document that in the legacy driver as well. Reviewed-by: Viresh Kumar Signed-off-by: Johan Hovold Signed-off-by: Greg Kroah-Hartman --- drivers/staging/greybus/connection.c | 4 ---- drivers/staging/greybus/connection.h | 2 -- drivers/staging/greybus/legacy.c | 16 +++++++++++++--- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/drivers/staging/greybus/connection.c b/drivers/staging/greybus/connection.c index 7a967befc897..ebd038ea6e8a 100644 --- a/drivers/staging/greybus/connection.c +++ b/drivers/staging/greybus/connection.c @@ -120,8 +120,6 @@ gb_connection_create(struct gb_host_device *hd, int hd_cport_id, struct gb_connection *connection; struct ida *id_map = &hd->cport_id_map; int ida_start, ida_end; - u8 major = 0; - u8 minor = 1; /* * If a manifest tries to reuse a cport, reject it. We @@ -159,8 +157,6 @@ gb_connection_create(struct gb_host_device *hd, int hd_cport_id, connection->intf = intf; connection->protocol_id = protocol_id; - connection->major = major; - connection->minor = minor; connection->bundle = bundle; connection->state = GB_CONNECTION_STATE_DISABLED; diff --git a/drivers/staging/greybus/connection.h b/drivers/staging/greybus/connection.h index 33deeb64dd29..66f37b2f4a38 100644 --- a/drivers/staging/greybus/connection.h +++ b/drivers/staging/greybus/connection.h @@ -39,8 +39,6 @@ struct gb_connection { struct gb_protocol *protocol; u8 protocol_id; - u8 major; - u8 minor; u8 module_major; u8 module_minor; diff --git a/drivers/staging/greybus/legacy.c b/drivers/staging/greybus/legacy.c index a2c0b9bed9a9..186482300682 100644 --- a/drivers/staging/greybus/legacy.c +++ b/drivers/staging/greybus/legacy.c @@ -30,15 +30,25 @@ static int legacy_connection_get_version(struct gb_connection *connection) static int legacy_connection_bind_protocol(struct gb_connection *connection) { struct gb_protocol *protocol; + u8 major, minor; + + /* + * The legacy protocols have always been looked up using a hard-coded + * version of 0.1, despite (or perhaps rather, due to) the fact that + * module version negotiation could not take place until after the + * protocol was bound. + */ + major = 0; + minor = 1; protocol = gb_protocol_get(connection->protocol_id, - connection->major, - connection->minor); + major, + minor); if (!protocol) { dev_err(&connection->hd->dev, "protocol 0x%02x version %u.%u not found\n", connection->protocol_id, - connection->major, connection->minor); + major, minor); return -EPROTONOSUPPORT; } connection->protocol = protocol; -- 2.20.1