GitHub/LineageOS/android_kernel_motorola_exynos9610.git
9 years agogreybus: loopback: functionally decompose calculation of turn-around times
Bryan O'Donoghue [Tue, 11 Aug 2015 12:50:53 +0000 (13:50 +0100)]
greybus: loopback: functionally decompose calculation of turn-around times

We have a pattern similar to this over and over again gb->elapsed_nsecs =
timeval_to_ns(&te) - timeval_to_ns(&ts); good software practice dictates we
functionally decompose this. This patch decomposes into
gb_loopback_calc_latency().

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: es-drivers: add outbound timestamp to connection
Bryan O'Donoghue [Tue, 11 Aug 2015 12:50:52 +0000 (13:50 +0100)]
greybus: es-drivers: add outbound timestamp to connection

In order to facilitate grabbing a timestamp that doesn't include greybus
overhead, this patch adds a timestamp right before usb_submit_urb() for
both es1.c and es2.c. Long term the timestmaping of messages like this
probably wants to go away but, for the moment it may have some use to the
firmware people instrumenting the performance of the system.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: connection: add a timestamp kfifo to track connection handoff
Bryan O'Donoghue [Tue, 11 Aug 2015 12:50:51 +0000 (13:50 +0100)]
greybus: connection: add a timestamp kfifo to track connection handoff

For the ES2 test activity it may be beneficial to have a performance
metric that doesn't include any of the greybus stack malloc, workqueues
etc. In order to faciltate, this patch adds a simple kfifo structure to
hold two timestamp values. One timestamp will represent the last reasonable
point a greybus outbound timestamp can be taken, the other timestamp will
represent the first reasonable point an inbound timestamp can be taken. In
order to facilitate this model, tracking the timestamps in the connection
structure appears to be the best place to keep store of this data.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: connection: fix jump label on device_add failure
Bryan O'Donoghue [Tue, 11 Aug 2015 12:50:50 +0000 (13:50 +0100)]
greybus: connection: fix jump label on device_add failure

On device_add() failure in gb_connection_create_range() we jump to
err_remove_ida. Instead we should be jumping to err_free_connection, so
change the flow to accomodate.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: protocol: Remove unnecessary params of gb_protocol_get_version()
Viresh Kumar [Tue, 11 Aug 2015 02:06:16 +0000 (07:36 +0530)]
greybus: protocol: Remove unnecessary params of gb_protocol_get_version()

Some of the parameters are not really required, drop them.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: protocol: Drop define_get_version support
Viresh Kumar [Tue, 11 Aug 2015 02:06:15 +0000 (07:36 +0530)]
greybus: protocol: Drop define_get_version support

No more users now, drop it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: svc: preserve major/minor of protocol supported by SVC
Viresh Kumar [Tue, 11 Aug 2015 02:06:14 +0000 (07:36 +0530)]
greybus: svc: preserve major/minor of protocol supported by SVC

These weren't preserved earlier, save them in the connection structure
instead of creating its own fields..

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: vibrator: Drop get_version support
Viresh Kumar [Tue, 11 Aug 2015 02:06:13 +0000 (07:36 +0530)]
greybus: vibrator: Drop get_version support

This is done from a common place now, no need to replicate it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: usb: Drop get_version support
Viresh Kumar [Tue, 11 Aug 2015 02:06:12 +0000 (07:36 +0530)]
greybus: usb: Drop get_version support

This is done from a common place now, no need to replicate it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: uart: Drop get_version support
Viresh Kumar [Tue, 11 Aug 2015 02:06:11 +0000 (07:36 +0530)]
greybus: uart: Drop get_version support

This is done from a common place now, no need to replicate it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: spi: Drop get_version support
Viresh Kumar [Tue, 11 Aug 2015 02:06:10 +0000 (07:36 +0530)]
greybus: spi: Drop get_version support

This is done from a common place now, no need to replicate it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: sdio: Drop get_version support
Viresh Kumar [Tue, 11 Aug 2015 02:06:09 +0000 (07:36 +0530)]
greybus: sdio: Drop get_version support

This is done from a common place now, no need to replicate it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: raw: Drop get_version support
Viresh Kumar [Tue, 11 Aug 2015 02:06:08 +0000 (07:36 +0530)]
greybus: raw: Drop get_version support

This is done from a common place now, no need to replicate it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: pwm: Drop get_version support
Viresh Kumar [Tue, 11 Aug 2015 02:06:07 +0000 (07:36 +0530)]
greybus: pwm: Drop get_version support

This is done from a common place now, no need to replicate it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: Drop get_version support
Viresh Kumar [Tue, 11 Aug 2015 02:06:06 +0000 (07:36 +0530)]
greybus: loopback: Drop get_version support

This is done from a common place now, no need to replicate it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: i2c: Drop get_version support
Viresh Kumar [Tue, 11 Aug 2015 02:06:05 +0000 (07:36 +0530)]
greybus: i2c: Drop get_version support

This is done from a common place now, no need to replicate it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: hid: Drop get_version support
Viresh Kumar [Tue, 11 Aug 2015 02:06:04 +0000 (07:36 +0530)]
greybus: hid: Drop get_version support

This is done from a common place now, no need to replicate it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: gpio: Drop get_version support
Viresh Kumar [Tue, 11 Aug 2015 02:06:03 +0000 (07:36 +0530)]
greybus: gpio: Drop get_version support

This is done from a common place now, no need to replicate it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: control: Drop get_version support
Viresh Kumar [Tue, 11 Aug 2015 02:06:02 +0000 (07:36 +0530)]
greybus: control: Drop get_version support

This is done from a common place now, no need to replicate it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: battery: Drop get_version support
Viresh Kumar [Tue, 11 Aug 2015 02:06:01 +0000 (07:36 +0530)]
greybus: battery: Drop get_version support

This is done from a common place now, no need to replicate it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: audio: Drop get_version support
Viresh Kumar [Tue, 11 Aug 2015 02:06:00 +0000 (07:36 +0530)]
greybus: audio: Drop get_version support

This is done from a common place now, no need to replicate it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: connection: request protocol version before initializing connection
Viresh Kumar [Tue, 11 Aug 2015 02:05:59 +0000 (07:35 +0530)]
greybus: connection: request protocol version before initializing connection

This can (should) be done from a common place as its required for most
of the protocols. Do it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: connection: Save major/minor supported by module
Viresh Kumar [Tue, 11 Aug 2015 02:05:58 +0000 (07:35 +0530)]
greybus: connection: Save major/minor supported by module

Save major/minor number supported by the module inside connection
structure, as this can be used later.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: define greybus wide protocol request numbers
Viresh Kumar [Tue, 11 Aug 2015 02:05:57 +0000 (07:35 +0530)]
greybus: define greybus wide protocol request numbers

Some request numbers (like invalid and get_version) are same across all
protocols. Create common macros for them.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: connection: disconnect connection on failures during initialization
Viresh Kumar [Tue, 11 Aug 2015 02:05:56 +0000 (07:35 +0530)]
greybus: connection: disconnect connection on failures during initialization

Its possible for connection_init() to fail, in such cases the
disconnected event must be sent to the module.

It is missing currently, fix it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: svc: error out only for smaller payloads received
Viresh Kumar [Tue, 11 Aug 2015 01:59:19 +0000 (07:29 +0530)]
greybus: svc: error out only for smaller payloads received

!= was used in place of <, while comparing expected and actual payload
size. The module may be running a higher version of the protocol and
might have some extra fields (towards the end) in the structure, and the
AP needs to ignore them.

This also updates the print (expected-payload-size <
actual-payload-size), when the size doesn't match for requests received
by the module. This gives more details required for debugging.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: audio: Add '<' to the print message for short messages
Viresh Kumar [Tue, 11 Aug 2015 01:59:18 +0000 (07:29 +0530)]
greybus: audio: Add '<' to the print message for short messages

This increases readability a bit more, as it tells which value is actual
size and which one is expected size.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: svc: Remove FIXME for firmware download
Viresh Kumar [Fri, 7 Aug 2015 12:36:43 +0000 (18:06 +0530)]
greybus: svc: Remove FIXME for firmware download

Its handled by the firmware driver now, drop the FIXME comment from svc
code.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: vibrator: Use (already defined) major/minor macros
Viresh Kumar [Sat, 8 Aug 2015 04:55:41 +0000 (10:25 +0530)]
greybus: vibrator: Use (already defined) major/minor macros

We already have macros for these, use them instead of writing fixed
values.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: usb: Use (already defined) major/minor macros
Viresh Kumar [Sat, 8 Aug 2015 04:55:40 +0000 (10:25 +0530)]
greybus: usb: Use (already defined) major/minor macros

We already have macros for these, use them instead of writing fixed
values.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: uart: Use (already defined) major/minor macros
Viresh Kumar [Sat, 8 Aug 2015 04:55:39 +0000 (10:25 +0530)]
greybus: uart: Use (already defined) major/minor macros

We already have macros for these, use them instead of writing fixed
values.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: spi: Use (already defined) major/minor macros
Viresh Kumar [Sat, 8 Aug 2015 04:55:38 +0000 (10:25 +0530)]
greybus: spi: Use (already defined) major/minor macros

We already have macros for these, use them instead of writing fixed
values.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: pwm: Use (already defined) major/minor macros
Viresh Kumar [Sat, 8 Aug 2015 04:55:37 +0000 (10:25 +0530)]
greybus: pwm: Use (already defined) major/minor macros

We already have macros for these, use them instead of writing fixed
values.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: i2c: Use (already defined) major/minor macros
Viresh Kumar [Sat, 8 Aug 2015 04:55:36 +0000 (10:25 +0530)]
greybus: i2c: Use (already defined) major/minor macros

We already have macros for these, use them instead of writing fixed
values.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: hid: Use (already defined) major/minor macros
Viresh Kumar [Sat, 8 Aug 2015 04:55:35 +0000 (10:25 +0530)]
greybus: hid: Use (already defined) major/minor macros

We already have macros for these, use them instead of writing fixed
values.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: gpio: Use (already defined) major/minor macros
Viresh Kumar [Sat, 8 Aug 2015 04:55:34 +0000 (10:25 +0530)]
greybus: gpio: Use (already defined) major/minor macros

We already have macros for these, use them instead of writing fixed
values.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: battery: Use (already defined) major/minor macros
Viresh Kumar [Sat, 8 Aug 2015 04:55:33 +0000 (10:25 +0530)]
greybus: battery: Use (already defined) major/minor macros

We already have macros for these, use them instead of writing fixed
values.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: hid: spell fix (s/infomation/information)
Viresh Kumar [Sat, 8 Aug 2015 04:55:32 +0000 (10:25 +0530)]
greybus: hid: spell fix (s/infomation/information)

Minor spell fix.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: sdio: error out only for smaller payloads received
Viresh Kumar [Sat, 8 Aug 2015 02:39:32 +0000 (08:09 +0530)]
greybus: sdio: error out only for smaller payloads received

!= was used in place of <, while comparing expected and actual payload
size. The module may be running a higher version of the protocol and
might have some extra fields (towards the end) in the structure, and the
AP needs to ignore them.

This also updates the print (expected-payload-size <
actual-payload-size), when the size doesn't match for requests received
by the module. This gives more details required for debugging.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: gpio: Print expected/actual payload size on mismatch
Viresh Kumar [Thu, 6 Aug 2015 07:14:51 +0000 (12:44 +0530)]
greybus: gpio: Print expected/actual payload size on mismatch

Print (expected-payload-size actual-payload-size), when the size doesn't
match for requests received by the module. This gives more details
required for debugging the issue.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: raw: Print expected/actual payload size on mismatch
Viresh Kumar [Thu, 6 Aug 2015 07:14:52 +0000 (12:44 +0530)]
greybus: raw: Print expected/actual payload size on mismatch

Print (expected-payload-size actual-payload-size), when the size doesn't
match for requests received by the module. This gives more details
required for debugging the issue.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: kernel_ver.h: define U32_MAX and U64_MAX
Alex Elder [Tue, 4 Aug 2015 18:44:10 +0000 (13:44 -0500)]
greybus: kernel_ver.h: define U32_MAX and U64_MAX

These were not defined, and I just posted patches that use them.

Signed-off-by: Alex Elder <elder@linaro.org>
Tested-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: fix connection cleanup paths
Alex Elder [Mon, 3 Aug 2015 17:57:20 +0000 (12:57 -0500)]
greybus: loopback: fix connection cleanup paths

The error paths in gb_loopback_connection_init() are kind of screwed
up--not in proper order, and the label naming convention seems a
little inconsistent.

Fix this, ensuring each error cleans up the setup that's been done
up to that point.  Use the convention that the label indicates the
first thing that needs to be cleaned up.

Reorder the statements in gb_loopback_connection_exit() to match
the order of cleanup in gb_loopback_connection_init().

Signed-off-by: Alex Elder <elder@linaro.org>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: compute average stats on demand only
Alex Elder [Mon, 3 Aug 2015 17:57:19 +0000 (12:57 -0500)]
greybus: loopback: compute average stats on demand only

Stop recording and updating the average every time a sample
is recorded.  Instead, compute it from the sum and count only
when it's required.

Signed-off-by: Alex Elder <elder@linaro.org>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: use separate attribute macro for average
Alex Elder [Mon, 3 Aug 2015 17:57:18 +0000 (12:57 -0500)]
greybus: loopback: use separate attribute macro for average

Define a separate macro for displaying the average of the samples
collected.  This will be used so we can calculate the average only
when requested, rather than every time a new value gets recorded.

Signed-off-by: Alex Elder <elder@linaro.org>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: all read-only attributes are unsigned
Alex Elder [Mon, 3 Aug 2015 17:57:17 +0000 (12:57 -0500)]
greybus: loopback: all read-only attributes are unsigned

The only values passed to the gb_loopback_ro_attr() macro are
unsigned 32-bit values.  So there's no need to pass a "type"
format specifier.

Signed-off-by: Alex Elder <elder@linaro.org>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: error is an unsigned attribute
Alex Elder [Mon, 3 Aug 2015 17:57:16 +0000 (12:57 -0500)]
greybus: loopback: error is an unsigned attribute

The error count is unsigned, so fix the format specifier used in its
attribute definition.

Signed-off-by: Alex Elder <elder@linaro.org>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: use a 32-bit count
Alex Elder [Mon, 3 Aug 2015 17:57:15 +0000 (12:57 -0500)]
greybus: loopback: use a 32-bit count

The count of statistical samples recorded is currently a 64-bit
value.  32 bits is sufficient, and in fact anything more than
that won't work for the do_div() call it's pass to anyway.  So make
the count field be 32 bits.

Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: record 32-bit min and max
Alex Elder [Mon, 3 Aug 2015 17:57:14 +0000 (12:57 -0500)]
greybus: loopback: record 32-bit min and max

The minimum and maximum values for stats values are always 32 bits.
Change the type for these fields to reflect this.

Signed-off-by: Alex Elder <elder@linaro.org>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: use u32 for stats update
Alex Elder [Mon, 3 Aug 2015 17:57:13 +0000 (12:57 -0500)]
greybus: loopback: use u32 for stats update

The only values supplied to gb_loopback_update_stats() are 32-bits,
so change the type of the second argument to reflect that.

Signed-off-by: Alex Elder <elder@linaro.org>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: use U64_MAX for initialization
Alex Elder [Mon, 3 Aug 2015 17:57:12 +0000 (12:57 -0500)]
greybus: loopback: use U64_MAX for initialization

Use the largest representable value when initializing the "min"
field when resetting loopback statistics.

Signed-off-by: Alex Elder <elder@linaro.org>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: drop unneeded casts for void pointers
Alex Elder [Mon, 3 Aug 2015 17:57:11 +0000 (12:57 -0500)]
greybus: loopback: drop unneeded casts for void pointers

There is no need to cast a void pointer to a particular type.
Drop the casts used in this way, mainly in the attribute definition
macros.

Signed-off-by: Alex Elder <elder@linaro.org>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: looback: fix two typos
Alex Elder [Mon, 3 Aug 2015 17:57:10 +0000 (12:57 -0500)]
greybus: looback: fix two typos

Fix two misspellings.  And add spaces around a '%' operator.

Signed-off-by: Alex Elder <elder@linaro.org>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: interface: declare gb_interface_destroy()
Alex Elder [Mon, 3 Aug 2015 17:57:09 +0000 (12:57 -0500)]
greybus: interface: declare gb_interface_destroy()

Add a public declaration for gb_interface_destroy(), matching
gb_interface_create().

It's not yet used outside "interface.c" but I suppose it
could be, and its scope is currently public.

Signed-off-by: Alex Elder <elder@linaro.org>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: greybus_protocols: use only type attributes for message packing
Johan Hovold [Sat, 1 Aug 2015 09:50:41 +0000 (11:50 +0200)]
greybus: greybus_protocols: use only type attributes for message packing

For consistency reasons, use only type attributes for message packing.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: sdio: fix message packing
Johan Hovold [Sat, 1 Aug 2015 09:50:40 +0000 (11:50 +0200)]
greybus: sdio: fix message packing

Add missing packed attributes to prevent implicit structure padding.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: uart: fix message packing
Johan Hovold [Sat, 1 Aug 2015 09:50:39 +0000 (11:50 +0200)]
greybus: uart: fix message packing

Add missing packed attributes to prevent implicit structure padding.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: svc: fix message packing
Johan Hovold [Sat, 1 Aug 2015 09:50:38 +0000 (11:50 +0200)]
greybus: svc: fix message packing

Add missing packed attributes to prevent implicit structure padding.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: greybus_protocols: fix typo in comment
Johan Hovold [Sat, 1 Aug 2015 09:50:37 +0000 (11:50 +0200)]
greybus: greybus_protocols: fix typo in comment

Fix misspelled variable name in comment.

Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: operation: Move operation header to greybus_protocols.h
Viresh Kumar [Wed, 29 Jul 2015 06:12:54 +0000 (11:42 +0530)]
greybus: operation: Move operation header to greybus_protocols.h

This should be exposed to external users (like gbsim). Move it to
greybus_protocols.h.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: operation: Drop alignment attribute from operation message header
Viresh Kumar [Wed, 29 Jul 2015 06:12:53 +0000 (11:42 +0530)]
greybus: operation: Drop alignment attribute from operation message header

The buffers allocated for message header is already 64 bit aligned and
we have explicit pad bytes in the header structure, to 64 bit align the
operation specific data.

And so there is no need to add the aligned attribute to the operation
message header. Drop it.

Suggested-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Alex Elder <elder@linaro.org>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: usb: disable protocol driver
Johan Hovold [Thu, 30 Jul 2015 18:30:41 +0000 (20:30 +0200)]
greybus: usb: disable protocol driver

The USB bridged-PHY protocol driver currently depends on changes to USB
core that are not yet upstream.

Disable for now.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: usb: implement hub_control callback
Johan Hovold [Thu, 30 Jul 2015 18:30:40 +0000 (20:30 +0200)]
greybus: usb: implement hub_control callback

Implement the hub_control callback.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: usb: fix hc_driver fields
Johan Hovold [Thu, 30 Jul 2015 18:30:39 +0000 (20:30 +0200)]
greybus: usb: fix hc_driver fields

Fix hc_driver description, product_desc and flags fields.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: usb: fix hcd allocation, deregistration and deallocation
Johan Hovold [Thu, 30 Jul 2015 18:30:38 +0000 (20:30 +0200)]
greybus: usb: fix hcd allocation, deregistration and deallocation

Fix allocation, deregistration and deallocation of USB HCD, and update
the hcd_priv helper functions.

The HCD private data was not allocated correctly, something which would
lead to a crash when accessed in hcd_start. The HCD was neither
reregistered or deallocated on connection tear down.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: usb: renumber operation types
Johan Hovold [Thu, 30 Jul 2015 18:30:37 +0000 (20:30 +0200)]
greybus: usb: renumber operation types

Renumber the current operation types.

NOTE: Protocol change.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: usb: clean up driver
Johan Hovold [Thu, 30 Jul 2015 18:30:36 +0000 (20:30 +0200)]
greybus: usb: clean up driver

Remove unused, broken or unneeded code and constructs.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: connection: remove special check for svc cport id
Viresh Kumar [Thu, 30 Jul 2015 16:43:27 +0000 (22:13 +0530)]
greybus: connection: remove special check for svc cport id

This is required to get things working for now, after the latest revert
of svc protocol is done.

Currently svc's cport id is set to 2 and that hd cport id will be used
for the third connection we make. And that protocol (which is i2c in one
of the cases), may not work as the (dis)connected event isn't sent for
it.

Fix this by getting rid of svc protocol check from (dis)connected
events for now. This must be reverted later, once svc protocol is
included again.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Tested-by: Mark Greer <mgreer@animalcreek.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: svc: revert svc changes to keep things working for a while.
Greg Kroah-Hartman [Wed, 29 Jul 2015 17:05:09 +0000 (10:05 -0700)]
greybus: svc: revert svc changes to keep things working for a while.

The firmware for the svc changes isn't quite ready, so revert the whole
set of patches in one hunk to get things back to a working state for the
other firmware developers.  The svc patches will be added back in a
separate branch.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: warn user if kfifo cannot log all data
Bryan O'Donoghue [Tue, 28 Jul 2015 17:34:39 +0000 (18:34 +0100)]
greybus: loopback: warn user if kfifo cannot log all data

The depth of the kfifo used to log the latency data for user-space can be
moved upwards or downward by way of a module parameter. The user may still
specify a test set that's larger than the number of kfifo elements we have
available. If the user specifies more iterations than can be logged give a
warning as feedback and continue with the test.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: provide interface to read all latency data-points
Bryan O'Donoghue [Tue, 28 Jul 2015 17:34:38 +0000 (18:34 +0100)]
greybus: loopback: provide interface to read all latency data-points

The current loopback code provides the minimum, maximum and average latency
values for a given test set. It would be highly useful for user-space to
have access to each one of the latency metrics in order to graph outliers.

This patch adds a simple character device interface implmenting a read()
interface that allows user-space to read out the saved latency metrics
which have been stored in a kfifo for this purpose.

A module parameter is provided to allow varying the depth of the kfifo in
order to allow a user to capture potentially large data sets. This version
sets the default depth for the kfifo at 8192 dwords.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: make loopback code thread safe
Bryan O'Donoghue [Tue, 28 Jul 2015 17:34:36 +0000 (18:34 +0100)]
greybus: loopback: make loopback code thread safe

Current code allows a sysfs callback and a kernel worker thread to write
all over and act upon data that could be in the process of being updated by
the other. This patch adds a reasonably coarse mutex to enscure sync
between the two.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: remove redundant timestamping
Bryan O'Donoghue [Tue, 28 Jul 2015 17:34:35 +0000 (18:34 +0100)]
greybus: loopback: remove redundant timestamping

It is of more interest to graphing system performance to base our
timestamps on the time it takes a greybus_operation_sync() to complete.
Higher level timestamping code is less accurate and not relevant to
throughput and latency characterization.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: initialize svc connection while creating hd
Viresh Kumar [Tue, 28 Jul 2015 01:58:42 +0000 (07:28 +0530)]
greybus: initialize svc connection while creating hd

Its really part of initializing the host device and is required for
every 'hd' that is created. Lets move the call to do basic
initialization of svc connection to greybus_create_hd().

Also add a comment to specify why we need to do it that early.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: core: clean up ida memory for host controller
Greg Kroah-Hartman [Mon, 27 Jul 2015 21:23:44 +0000 (14:23 -0700)]
greybus: core: clean up ida memory for host controller

We forgot to free any ida internal structures that were used by this
host controller structure when we free the memory for the controller.
So fix that up by doing so in the release function.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
9 years agogreybus: remove svc_msg.h
Viresh Kumar [Sat, 25 Jul 2015 04:40:06 +0000 (10:10 +0530)]
greybus: remove svc_msg.h

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: es1: create svc connection early enough
Viresh Kumar [Sat, 25 Jul 2015 04:40:05 +0000 (10:10 +0530)]
greybus: es1: create svc connection early enough

The svc connection needs to be ready before creating the URBs, otherwise
the svc version request might come in before the AP was ready to parse
them.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: interface: make gb_interface_destroy() static
Greg Kroah-Hartman [Sat, 25 Jul 2015 00:21:25 +0000 (17:21 -0700)]
greybus: interface: make gb_interface_destroy() static

The function is only called locally, so mark it static to make sparse
happy.

Tested-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: remove submit_svc from the host driver
Greg Kroah-Hartman [Sat, 25 Jul 2015 00:19:21 +0000 (17:19 -0700)]
greybus: remove submit_svc from the host driver

The callback is never used anymore, so remove it from struct
greybus_host_driver as well as from the es1 and es2 drivers.

Tested-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: greybus.h: remove greybus_svc_in()
Greg Kroah-Hartman [Sat, 25 Jul 2015 00:15:59 +0000 (17:15 -0700)]
greybus: greybus.h: remove greybus_svc_in()

The function is gone, remove it from the header file as well.

Tested-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: svc: add flags and traffic class parameter to connection create op
Perry Hung [Fri, 24 Jul 2015 23:02:34 +0000 (19:02 -0400)]
greybus: svc: add flags and traffic class parameter to connection create op

The AP needs to be able to specify L4 CPort flags and traffic class
parameters on a connection-by-connection basis. Extend the connection
create operation to accept these. Since there's no policy to decide
these, fix them at TC0 with end-to-end-flow control, controlled segment
dropping, and CPort safety valve enabled.

Tested-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: svc: connection: ask SVC to create connections
Perry Hung [Fri, 24 Jul 2015 23:02:33 +0000 (19:02 -0400)]
greybus: svc: connection: ask SVC to create connections

Ask the SVC to do all the necessary bits for creating a new connection.
This is skipped for the initial SVC connection.

Tested-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: svc: create bidirectional routes on hotplug request
Perry Hung [Fri, 24 Jul 2015 23:02:32 +0000 (19:02 -0400)]
greybus: svc: create bidirectional routes on hotplug request

Upon receiving a hotplug request, we need to prepare the routing table
to allow packets to flow between the AP interface and the newly detected
interface.

Tested-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: svc: add route create operation
Perry Hung [Fri, 24 Jul 2015 23:02:31 +0000 (19:02 -0400)]
greybus: svc: add route create operation

Implement the SVC Protocol Route Create Operation.

Tested-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: get rid of old svc-protocol
Viresh Kumar [Fri, 24 Jul 2015 10:02:26 +0000 (15:32 +0530)]
greybus: get rid of old svc-protocol

Its not used anymore as we have more sophisticated svc protocol in
place, lets get rid of earlier code.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Tested-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: es2: remove svc endpoint message handling
Greg Kroah-Hartman [Sat, 25 Jul 2015 00:09:48 +0000 (17:09 -0700)]
greybus: es2: remove svc endpoint message handling

We have switched over to use the "new" svc messages, no more need to
have a special USB endpoint to handle them, they come through the normal
CPort messages.

Based on a patch from Viresh.

Tested-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: es1: remove svc endpoint message handling
Greg Kroah-Hartman [Fri, 24 Jul 2015 23:47:07 +0000 (16:47 -0700)]
greybus: es1: remove svc endpoint message handling

We have switched over to use the "new" svc messages, no more need to
have a special USB endpoint to handle them, they come through the normal
CPort messages.

Based on a patch from Viresh.

Tested-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: Switch to Cport 0 for svc and control protocol
Viresh Kumar [Fri, 24 Jul 2015 10:02:24 +0000 (15:32 +0530)]
greybus: Switch to Cport 0 for svc and control protocol

Initially we fixed it to Cport 2, but its changed to Cport 0 now. Lets
switch that in code as well.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Tested-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: es1/2: Lets start using svc protocol
Viresh Kumar [Fri, 24 Jul 2015 10:02:23 +0000 (15:32 +0530)]
greybus: es1/2: Lets start using svc protocol

All bits and pieces are in place now. Lets start using svc protocol
instead of stuff present in ap.c.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Tested-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: connection: compare hd_cport_id for matching SVC protocol
Viresh Kumar [Fri, 24 Jul 2015 13:12:03 +0000 (18:42 +0530)]
greybus: connection: compare hd_cport_id for matching SVC protocol

SVC protocol isn't per interface, but per entire entire endo. And so svc
cport id must be matched against hd_cport_id, not per-interface cport
id.

Fixes: 82edfac17e5f ("connection: don't send connected/disconnected events for SVC connection")
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: connection: silence warning on unbound protocols
Perry Hung [Fri, 24 Jul 2015 23:02:30 +0000 (19:02 -0400)]
greybus: connection: silence warning on unbound protocols

If a protocol was not successfully created, we can't drop the refcount
on it. This might happen for example if the connection fails to bind a
protocol.

Silences a warning on cleanup.

Signed-off-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: battery: fix panic on operation error
Perry Hung [Fri, 24 Jul 2015 23:02:29 +0000 (19:02 -0400)]
greybus: battery: fix panic on operation error

If an operation times out or otherwise returns an error, val->intval
should not be set and an error-code should be returned.

Fixes a panic on unload while receiving -ENOTCONN.

Signed-off-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: interface: localize gb_interface_destroy()
Viresh Kumar [Fri, 24 Jul 2015 10:02:22 +0000 (15:32 +0530)]
greybus: interface: localize gb_interface_destroy()

Its not referenced by svc or any other code anymore, lets stop exposing
it to rest of the files.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Tested-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: svc: remove interface->svc pointer
Viresh Kumar [Fri, 24 Jul 2015 10:02:21 +0000 (15:32 +0530)]
greybus: svc: remove interface->svc pointer

Its not updated/used anymore, remove it. Also move back the struct
gb_svc to svc.c as its not referenced by external users anymore.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Tested-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: svc: connection is created only once now
Viresh Kumar [Fri, 24 Jul 2015 10:02:20 +0000 (15:32 +0530)]
greybus: svc: connection is created only once now

We no longer create a fresh connection on receiving svc-hello message,
but rather update the initial one.

Update 'initial_svc_connection' after the connection is fully
initialized. Look for the partially initialized connection while
removing hd, as hd might be removed before getting svc-hello requests
from svc.

Also update gb_svc_connection_init() to initialize id_map on the first
(and the only) call to connection-init function.

We also can't update connection->bundle->intf->svc, as its a bundle-less
connection. Lets stop updating intf->svc as its not really used.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Tested-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: svc: fully initialize the partially initialized connection
Viresh Kumar [Fri, 24 Jul 2015 10:02:19 +0000 (15:32 +0530)]
greybus: svc: fully initialize the partially initialized connection

SVC hello message is received now and we should fully initialize the
partially initialized connection. This can be done by removing and
re-adding the device corresponding to the connection.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Tested-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: convert loopback wake/sleep to a waitqueue
Bryan O'Donoghue [Fri, 24 Jul 2015 09:02:56 +0000 (10:02 +0100)]
greybus: loopback: convert loopback wake/sleep to a waitqueue

Current code will incrementally poll for gb->type == 0 and sleep.
This type of polling strategy wastes cycles.

This patch changes the sleep strategy by introducing a wait-queue which
waits for gb->type != 0 or kthread_should_stop() to wake-up and work or
to wake-up and terminate.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: add poll support to the iteration_count sysfs file
Greg Kroah-Hartman [Wed, 22 Jul 2015 18:09:23 +0000 (11:09 -0700)]
greybus: loopback: add poll support to the iteration_count sysfs file

This adds the ability to poll on "iteration_count" in sysfs and be woken
up when it changes, saving some cycles constantly hammering on the file
waiting for it to change.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Tested-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
9 years agogreybus: operation: add completion work queue
Johan Hovold [Thu, 23 Jul 2015 08:50:03 +0000 (10:50 +0200)]
greybus: operation: add completion work queue

Add dedicated bound work queue for operation completions and use the
connection work queues for incoming requests only.

There is no need to keep responses ordered internally or with respect to
requests. Instead allow operations to complete as soon as possible when
a response arrives (or the operation is cancelled).

Note that this also allows synchronous requests to be submitted from
request handlers as responses will no longer be blocked on the same
single-threaded work queue. Similarly, operations can now also be
cancelled from a request handler.

Tested-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: operation: use per-connection work queues
Johan Hovold [Thu, 23 Jul 2015 08:50:02 +0000 (10:50 +0200)]
greybus: operation: use per-connection work queues

Replace the global operation work queue with per-connection work queues.

There is no need to keep operations strictly ordered across connections,
something which only adds unnecessary latency.

Tested-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>