]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/log
mirror_ubuntu-bionic-kernel.git
9 years agogreybus: es{1,2}: remove control endpoint field
Fabien Parent [Wed, 2 Sep 2015 13:50:38 +0000 (15:50 +0200)]
greybus: es{1,2}: remove control endpoint field

There is no need to store the endpoint number of the control requests since
the default control endpoint is used and the USB standard defines for it a fixed
endpoint number of 0.

Remove every instance of the field control_endpoint and replace it with a
hardcoded 0 value.

Signed-off-by: Fabien Parent <fparent@baylibre.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
9 years agogreybus: es2: get cport count from apb1 usb device
Fabien Parent [Wed, 2 Sep 2015 13:50:37 +0000 (15:50 +0200)]
greybus: es2: get cport count from apb1 usb device

Use the control request REQUEST_CPORT_COUNT in order to get the number of
CPorts supported by the UniPro IP.

Signed-off-by: Fabien Parent <fparent@baylibre.com>
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
9 years agogreybus: es2: dynamically allocate array for cport <-> ep mapping
Fabien Parent [Wed, 2 Sep 2015 13:50:36 +0000 (15:50 +0200)]
greybus: es2: dynamically allocate array for cport <-> ep mapping

In order to be able to dynamically determine the number of CPorts supported
by the UniPro IP instead of hardcoding the value we need to dynamically
allocate the array that is doing the cport-ep mapping.

Signed-off-by: Fabien Parent <fparent@baylibre.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
9 years agogreybus: add num_cports field to greybus hd
Fabien Parent [Wed, 2 Sep 2015 13:50:35 +0000 (15:50 +0200)]
greybus: add num_cports field to greybus hd

This commit is doing the preparation work in order to get the number of cports
supported from the UniPro IP instead of using a constant defined in a Kconfig
file.

Greybus host device is now holding the cport count, and all the code will now
use this value instead of the constant CPORT_ID_MAX when referring to an AP's
CPort ID.

Signed-off-by: Fabien Parent <fparent@baylibre.com>
[johan: es1 supports 256 cports, minor style changes ]
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
9 years agogreybus: es2: rename misnamed CPORT_MAX into CPORT_COUNT
Fabien Parent [Wed, 2 Sep 2015 13:50:34 +0000 (15:50 +0200)]
greybus: es2: rename misnamed CPORT_MAX into CPORT_COUNT

Rename the misnamed macro CPORT_MAX into CPORT_COUNT. CPORT_MAX could let
people think that the macro is holding the value of the last CPort ID
usable.

Signed-off-by: Fabien Parent <fparent@baylibre.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
9 years agogreybus: svc: get hd directly from connection
Viresh Kumar [Tue, 1 Sep 2015 11:46:16 +0000 (17:16 +0530)]
greybus: svc: get hd directly from connection

There is no need to perform connection->bundle->intf->hd as the same can
be done with connection->hd.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
9 years agogreybus: pwm: replace pr_err with dev_err
Johan Hovold [Tue, 1 Sep 2015 10:25:28 +0000 (12:25 +0200)]
greybus: pwm: replace pr_err with dev_err

Replace pr_err with the more descriptive dev_err. Also include the error
code on failure to register the PWM chip.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
9 years agogreybus: interface: fix potential attribute-buffer overflow
Johan Hovold [Tue, 1 Sep 2015 10:25:27 +0000 (12:25 +0200)]
greybus: interface: fix potential attribute-buffer overflow

Use scnprintf in the generic attribute helper, which does not currently
check for buffer overflow.

The attribute helper is used to print generic strings, which could
potentially overflow the buffer. Note that the only strings currently
exported are taken from greybus string descriptors and should therefore
be limited to 255 chars.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
9 years agogreybus: svc: fix hot-plug-state allocation flag
Johan Hovold [Tue, 1 Sep 2015 10:25:26 +0000 (12:25 +0200)]
greybus: svc: fix hot-plug-state allocation flag

Use GFP_KERNEL for hot-plug state allocation in
gb_svc_intf_hotplug_recv, which is called from a request handler (i.e.
a work queue).

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
9 years agogreybus: svc: fix device-id allocation flag
Johan Hovold [Tue, 1 Sep 2015 10:25:25 +0000 (12:25 +0200)]
greybus: svc: fix device-id allocation flag

Use GFP_KERNEL for device-id allocation in svc_process_hotplug, which is
called from a work queue.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
9 years agogreybus: endo: fix endo-id allocation flag
Johan Hovold [Tue, 1 Sep 2015 10:25:24 +0000 (12:25 +0200)]
greybus: endo: fix endo-id allocation flag

Use GFP_KERNEL for endo ida allocation in gb_endo_register, which is not
called from atomic context.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
9 years agogreybus: sdio: fix command type defines
Rui Miguel Silva [Thu, 20 Aug 2015 14:20:17 +0000 (15:20 +0100)]
greybus: sdio: fix command type defines

Broadcast command with response and without response where swapped
related to what is defined in greybus specification.

Make it coherent with the document.

Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
9 years agogreybus: firmware: fix potential stack corruption
Johan Hovold [Fri, 28 Aug 2015 09:58:24 +0000 (11:58 +0200)]
greybus: firmware: fix potential stack corruption

Use snprintf when generating the firmware name to avoid stack corruption
if the fixed-size buffer overflows.

Note that the current buffer size appears to expect 16-bit ids while
the they are actually 32-bit, something which could trigger the
corruption.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
9 years agogreybus: es1/es2: set transfer flag to send a zero-length packet
Alexandre Bailon [Mon, 31 Aug 2015 07:00:16 +0000 (09:00 +0200)]
greybus: es1/es2: set transfer flag to send a zero-length packet

Greybus messages with a multiple size of 512B generate timeouts
(any other message size doesn't).
512B is exactly the packet size of a bulk out endpoint.
Hence USB device is expecting a short (< 512B)
or zero-length packet to finish the transfer,
which is never generated and causes the timeout.

Set the transfer flag to send a zero-length packet in this situation.

Signed-off-by: Alexandre Bailon <abailon@baylibre.com>
Reviewed-by: Patrick Titiano <ptitiano@baylibre.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
9 years agogreybus: loopback: fix typo in comment
Bryan O'Donoghue [Sun, 16 Aug 2015 23:55:12 +0000 (00:55 +0100)]
greybus: loopback: fix typo in comment

Alex previously post a patch to fix this typo. Somehow it fell through the
cracks in the meantime. Do it again 'stastic' is a word 'statistic' is not.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: add module level sys/debug fs data points
Bryan O'Donoghue [Sun, 16 Aug 2015 23:55:11 +0000 (00:55 +0100)]
greybus: loopback: add module level sys/debug fs data points

Code this far has used the first connection's sysfs entry to present
variables intended to control the entire test - across multiple
connections. This patch changes that so that the module level variables
only appear at the end0:x level in sysfs.

Example:

Total counts for errors over the entire set of connections will be here
/sys/bus/greybus/devices/endo0:x/error_dev

In contrast an error for each connection will be presented like this
/sys/bus/greybus/devices/endo0:x:y:z:w/error_con

x = <module-id>
y = <interface-id>
z = <bundle-id>
w = <cport-id>

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: remove checkpatch error causing macro
Bryan O'Donoghue [Sun, 16 Aug 2015 23:55:10 +0000 (00:55 +0100)]
greybus: loopback: remove checkpatch error causing macro

checkpatch.pl is choking on a later change to dev_stats_attrs, where
checkpatch expects to see the values encapsulated in curly brackets.
Encapsulating in curly brackets will cause a compiler error. To resolve the
dichotomy this patch drops the macros and adds the arrary declarations
directly.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: initialized ms_wait negate warning
Bryan O'Donoghue [Sun, 16 Aug 2015 23:55:09 +0000 (00:55 +0100)]
greybus: loopback: initialized ms_wait negate warning

ms_wait = 0; caught by a compiler warning.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: add bitmask of connections to include in test
Bryan O'Donoghue [Sun, 16 Aug 2015 23:55:08 +0000 (00:55 +0100)]
greybus: loopback: add bitmask of connections to include in test

Feature add which enables the ability to select a bit-mask of connections
to run when executing a loopback test set. This is a feature add to
facilitate testing on the firmware side minus the necessity to recompile
firmware to support unicast (v) multicast (v) bitmask.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: graph round-trip time for all threads
Bryan O'Donoghue [Sun, 16 Aug 2015 23:55:07 +0000 (00:55 +0100)]
greybus: loopback: graph round-trip time for all threads

This patch adds the ability to time the delta between all threads like this

t1 = timestmap();
thread1:gb_operation_sync();
thread2:gb_operation_sync();
t2 = timestamp();

In order to enable that behaviour without forcing an undesirable
checkpointing scheme this patch introduces a kfifo for each thread to store
the raw timestamps and calculate a time difference.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: functionally decompose gb_loopback_calc_latency
Bryan O'Donoghue [Sun, 16 Aug 2015 23:55:06 +0000 (00:55 +0100)]
greybus: loopback: functionally decompose gb_loopback_calc_latency

The __gb_loopback_calc_latency will be useful in later patches. Provide it
here and use as intended. Later on we just want to use the timestamp
rollover detection, so split it out now.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: add gb_loopback_nsec_to_usec_latency
Bryan O'Donoghue [Sun, 16 Aug 2015 23:55:05 +0000 (00:55 +0100)]
greybus: loopback: add gb_loopback_nsec_to_usec_latency

A helper function to convert from a nanosecond value to a latency value
expressed in mircoseconds. This will be used again in subsequent patches.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: support synchronized tests over multiple cports
Bryan O'Donoghue [Sun, 16 Aug 2015 23:55:04 +0000 (00:55 +0100)]
greybus: loopback: support synchronized tests over multiple cports

The loopback code as currently implemented allows free running threads to
blast data to cports in isolation, however no overall stastics are gathered
for the aggregate throughput to a given module.

This patch moves derivation of stastics for all cports to one structure
so that 1 to n cports will report their overall stastics in one place.
Later patches update the sysfs/debugfs accessor functions to provide the
per-module and per-connection data separately.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: convert sample report interface to debugfs
Bryan O'Donoghue [Sun, 16 Aug 2015 23:55:03 +0000 (00:55 +0100)]
greybus: loopback: convert sample report interface to debugfs

Greg previously suggested switching over to debugfs instead of a char
interface to report raw samples to user-space. At the time we agreed not
to go for that change. However later patches in this series are made
simpler if debugfs is used instead of /dev, so it makes sense to make the
conversion now for that reason. This patch removes the char interface and
replaces it with a debugfs interface. Raw samples will be acquired from
/sys/kernel/debug/gb_loopback/raw_latency_endo0:x:y:z:w where

x = <module-id>
y = <interface-id>
z = <bundle-id>
w = <cport-number>

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: add ability to graph greybus latency
Bryan O'Donoghue [Sun, 16 Aug 2015 23:55:02 +0000 (00:55 +0100)]
greybus: loopback: add ability to graph greybus latency

This patch adds the ability to graph the latency of the overhead introduced
by the greybus stack in the roundtrip time AP->Module->AP.

Since this is a small number it is reported in nanoseconds, not
mircoseconds. This data can also be derived with tracepoints but it's being
provided in this format to export to CSV file more easily than with
tracepoints.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: interface: change typo replicable => replaceable
Bryan O'Donoghue [Sun, 16 Aug 2015 23:57:16 +0000 (00:57 +0100)]
greybus: interface: change typo replicable => replaceable

'user-replicable' means something that a user can replicate.
'user-replaceable' means something that a user can replace. We defintely
mean to say replaceable not replicable here.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: greybus_protocol: remove unused lights macros
Rui Miguel Silva [Mon, 17 Aug 2015 16:03:43 +0000 (17:03 +0100)]
greybus: greybus_protocol: remove unused lights macros

Greybus core now handle the _INVALID and PROTOCOL_VERSION types, so no
need to have specific protocol macros for this. Just drop them.

Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: operation: Fix wrong order of arguments
Viresh Kumar [Sat, 15 Aug 2015 03:24:18 +0000 (08:54 +0530)]
greybus: operation: Fix wrong order of arguments

The order of arguments is wrong and that shows up as a warning only on
64 bit machines.

Fixes: cb0ef0c019ab ("operation: print message type on errors")
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: makefile: use POSIX functions for kernel cmp
Rui Miguel Silva [Sat, 15 Aug 2015 23:48:03 +0000 (00:48 +0100)]
greybus: makefile: use POSIX functions for kernel cmp

[[, == and echo -e are bash/zsh-ism and not POSIX, so when using a POSIX
shell the kernel_cmp can issue some warnings and not work properly.

Use only POSIX operators for kernel version compare.

Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Tested-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: lights: add lights implementation
Rui Miguel Silva [Fri, 14 Aug 2015 12:58:19 +0000 (13:58 +0100)]
greybus: lights: add lights implementation

This patch adds lights implementation for Greybus Lights class, it
allows multiplexing of lights devices using the same connection. Also
adds two sysfs entries to led class (color, fade) which are commonly
used in several existing LED devices.

It support 2 major class of devices (normal LED and flash type), for
the first it registers to led_classdev, for the latest it registers in
the led_classdev_flash and v4l2_flash, depending on the support of the
kernel version.

Each Module can have N light devices attach and each light can have
multiple channel associated:
glights
   |->light0
   |     |->channel0
   |     |->channel1
   |     | ....
   |     |->channeln
   |->...
   |->lightn
         |->channel0
         |->channel1
         | ....
         |->channeln

Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: makefile: add needed config options for lights
Rui Miguel Silva [Fri, 14 Aug 2015 12:58:18 +0000 (13:58 +0100)]
greybus: makefile: add needed config options for lights

Add a function to check kernel versions and append the necessary
options to support LEDS_CLASS, LEDS_CLASS_FLASH and  V4L2_FLASH_LED_CLASS
depending of the kernel version.

Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: Print error on data mismatch
Viresh Kumar [Fri, 14 Aug 2015 11:37:11 +0000 (17:07 +0530)]
greybus: loopback: Print error on data mismatch

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Bryan O'Donoghue <bryan.odnoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: Send some sensible data
Viresh Kumar [Fri, 14 Aug 2015 11:37:10 +0000 (17:07 +0530)]
greybus: loopback: Send some sensible data

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Bryan O'Donoghue <bryan.odnoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: operation: print message type on errors
Viresh Kumar [Fri, 14 Aug 2015 02:42:30 +0000 (08:12 +0530)]
greybus: operation: print message type on errors

This can be very useful debug information, print it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: Drop protocol specific _PROTOCOL_VERSION and _INVALID macros
Viresh Kumar [Fri, 14 Aug 2015 02:27:38 +0000 (07:57 +0530)]
greybus: Drop protocol specific _PROTOCOL_VERSION and _INVALID macros

Greybus core supports protocol independent macros for this now, use
them.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: connection: Don't free resources freed by gb_connection_release()
Viresh Kumar [Thu, 13 Aug 2015 05:10:28 +0000 (10:40 +0530)]
greybus: connection: Don't free resources freed by gb_connection_release()

We are already doing put_device() here and so don't need to free
resources directly, except ida.

Fixes: afde17fe0b61 ("greybus/connection: fix jump label on device_add failure")
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: connection: Destroy wq on failure
Viresh Kumar [Thu, 13 Aug 2015 05:05:29 +0000 (10:35 +0530)]
greybus: connection: Destroy wq on failure

Need to destroy the wq created earlier, do it.

Fixes: d0f1778a6b67 ("greybus/connection: add a timestamp kfifo to track connection handoff")
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: raw: Move request/response structure/definitions to greybus_protocols.h
Viresh Kumar [Thu, 13 Aug 2015 04:34:45 +0000 (10:04 +0530)]
greybus: raw: Move request/response structure/definitions to greybus_protocols.h

These must be exposed to external modules, like gbsim. Move them to
greybus_protocols.h file.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: hid: Move request/response structure/definitions to greybus_protocols.h
Viresh Kumar [Wed, 12 Aug 2015 06:21:11 +0000 (11:51 +0530)]
greybus: hid: Move request/response structure/definitions to greybus_protocols.h

These must be exposed to external modules, like gbsim. Move them to
greybus_protocols.h file.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: battery: Move request/response structure/definitions to greybus_protocols.h
Viresh Kumar [Wed, 12 Aug 2015 06:21:10 +0000 (11:51 +0530)]
greybus: battery: Move request/response structure/definitions to greybus_protocols.h

These must be exposed to external modules, like gbsim. Move them to
greybus_protocols.h file.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: protocol: send own protocol version while requesting it
Viresh Kumar [Wed, 12 Aug 2015 05:34:06 +0000 (11:04 +0530)]
greybus: protocol: send own protocol version while requesting it

The greybus specifications clearly say (for all protocols) that the
sender is responsible for sending the highest version of protocol it
supports, while it requests the same from the receiver.

But the greybus code never followed that.

Fix, this by always sending AP's version of the protocol, while
requesting the same from svc/module.

This also renames 'response' to 'version' in gb_protocol_get_version()
as it is used for both request/response.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: Merge branch 'master' into branch 'svc'.
Greg Kroah-Hartman [Wed, 12 Aug 2015 05:14:06 +0000 (22:14 -0700)]
greybus: Merge branch 'master' into branch 'svc'.

This drags in the firmware driver, and the start of some loopback
changes.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: connection: Send protocol version for firmware protocol
Viresh Kumar [Wed, 12 Aug 2015 03:49:34 +0000 (09:19 +0530)]
greybus: connection: Send protocol version for firmware protocol

As per greybus specs, we need to send the protocol version for firmware
protocol and so this special case Hack.

Probably we should always send the protocol version AP supports and kill
this hack completely. But then it requires updates to specs as well, and
that should be done after some discussion.

For now, add a FIXME for that and a special case for firmware protocol.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: Add firmware protocol driver
Viresh Kumar [Wed, 12 Aug 2015 03:49:33 +0000 (09:19 +0530)]
greybus: Add firmware protocol driver

This adds firmware protocol driver based on the latest specs available
on mailing lists. This uses the firmware framework present in kernel.

Refer Documentation/firmware_class/README on how it works.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: protocol: Create request structure from within gb_protocol_get_version()
Viresh Kumar [Wed, 12 Aug 2015 03:49:32 +0000 (09:19 +0530)]
greybus: protocol: Create request structure from within gb_protocol_get_version()

The version request can only send the version of protocol for which it
is initiated and gb_protocol_get_version() has all the information to
create the request structure.

Replace the 'request' and 'request_size' arguments to
gb_protocol_get_version() with a bool to know if the version information
of the protocol should be sent or not.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: interface: Preserve data received during hotplug event
Viresh Kumar [Wed, 12 Aug 2015 03:49:31 +0000 (09:19 +0530)]
greybus: interface: Preserve data received during hotplug event

This shall be used later to find a firmware blob for the interface, lets
save it in the interface structure.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
9 years agogreybus: loopback: handle timestamp roll-over
Bryan O'Donoghue [Tue, 11 Aug 2015 12:50:54 +0000 (13:50 +0100)]
greybus: loopback: handle timestamp roll-over

This patch ensures we account for roll-over in the loopback driver.
do_gettimeofday() is used to grab a timestamp. Two timestamps are derived
one before and one after a gb_operation_sync(), however since
do_gettimeofday() returns the number of seconds and mircoseconds that have
elapsed today - we need to account for a situation where the timestamp
starts at say 23:59:999us rolls over and the end time is now earlier than
the start time.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
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: Merge branch 'master' into branch 'svc'.
Greg Kroah-Hartman [Wed, 12 Aug 2015 02:39:27 +0000 (19:39 -0700)]
greybus: Merge branch 'master' into branch 'svc'.

This required some hand-tweaking in connection.c, hopefully I got it all
correct...

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: svc: Handle hotplug request from a workqueue
Viresh Kumar [Thu, 6 Aug 2015 07:14:55 +0000 (12:44 +0530)]
greybus: svc: Handle hotplug request from a workqueue

Bringing up a module can be time consuming, as that may require lots of
initialization on the module side. Over that, we may also need to
download the firmware first and flash that on the module.

In order to make other hotplug events to not wait for all this to
finish, handle most of module hotplug stuff outside of the hotplug
callback, with help of a workqueue.

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: svc: Print expected/actual payload size on mismatch
Viresh Kumar [Thu, 6 Aug 2015 07:14:54 +0000 (12:44 +0530)]
greybus: svc: 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: Merge branch 'master' into svc
Greg Kroah-Hartman [Tue, 11 Aug 2015 00:29:12 +0000 (17:29 -0700)]
greybus: Merge branch 'master' into svc

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>