Johan Hovold [Tue, 7 Apr 2015 09:27:15 +0000 (11:27 +0200)]
greybus: operation: move message-header definition to header file
Move operation message-header to operation.h so that it can be used
by host drivers.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 7 Apr 2015 09:27:14 +0000 (11:27 +0200)]
greybus: remove obsolete buffer-alignment requirement
Remove unused and unnecessary buffer-alignment define that host driver
were supposed to use.
We can handle unaligned incoming buffers just fine by accessing the
operation-message header via a copy in the receive path, rather than
requiring host drivers to make sure the alignment is correct.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 7 Apr 2015 09:27:13 +0000 (11:27 +0200)]
greybus: operation: fix unaligned memory accesses in receive path
The buffer received from our current host driver is 1-byte aligned and
will therefore cause unaligned memory accesses if simply cast to an
operation-message header.
Fix this by making a properly aligned copy of the header in
gb_connection_recv_response before accessing its fields.
Note that this does not affect protocol drivers as the whole buffer is
copied when creating the corresponding request or response before being
forwarded.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 7 Apr 2015 09:27:12 +0000 (11:27 +0200)]
greybus: es2: sync up with recent es1 changes
Fix two bugs in es2 and do some minor clean up.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 7 Apr 2015 09:27:11 +0000 (11:27 +0200)]
greybus: es1: fix buffer-size limit
The maximum buffer size does not include the headroom, so subtract the
headroom size from the actual buffer size.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 7 Apr 2015 09:27:10 +0000 (11:27 +0200)]
greybus: es1: fix DMA-buffer on stack
A stack-allocated buffer is not generally DMA-able and must not be used
for USB control transfers.
Note that the memset and extra buffer byte were redundant as no more
than the bytes actually transferred was ever added to the fifo.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 7 Apr 2015 09:27:09 +0000 (11:27 +0200)]
greybus: es1: drop unnecessary casts
Drop unnecessary explicit casts.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Viresh Kumar [Mon, 6 Apr 2015 10:19:36 +0000 (15:49 +0530)]
greybus: bundle: s/class_type/class
Alex suggested to name it class instead of class type.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Viresh Kumar [Wed, 1 Apr 2015 15:02:04 +0000 (20:32 +0530)]
greybus: driver corresponds to a bundle, not interface
A Greybus driver will bind to a bundle, not an interface. Lets follow
this rule in code.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Viresh Kumar [Wed, 1 Apr 2015 15:02:03 +0000 (20:32 +0530)]
greybus: drop module descriptors
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Viresh Kumar [Wed, 1 Apr 2015 15:02:02 +0000 (20:32 +0530)]
greybus: manifest: Use interface descriptor instead of module descriptor to get information
A module can have more than one interfaces and we get hotplug events or
manifests for interfaces, not modules. Details like version, vendor,
product id, etc. can be different for different interfaces within the
same module and so shall be fetched from interface descriptor instead of
module descriptor.
So what we have been doing for module descriptors until now must be done
for interface descriptors. There can only be one interface descriptor in
the manifest. Module descriptor isn't used anymore and probably most of
its fields can be removed now.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Viresh Kumar [Wed, 1 Apr 2015 15:02:01 +0000 (20:32 +0530)]
greybus: bundle: Initialize all bundles on link-up
An interface can have 1 or more bundles. On link-up event, we must initialize
all the bundles associated with the interface.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Viresh Kumar [Wed, 1 Apr 2015 15:02:00 +0000 (20:32 +0530)]
greybus: bundle: Create bundles using bundle descriptors
Currently we are creating bundles based on interface descriptors. An interface
can have one or more bundles associated with it and so a bundle must be created
based on a bundle descriptor.
Also get class_type from bundle descriptor.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Viresh Kumar [Fri, 3 Apr 2015 06:30:48 +0000 (12:00 +0530)]
greybus: hid: Use payload-size to get report size
Report size isn't passed as first two bytes of the report according to
USB-HID spec. Get it from payload-size.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Viresh Kumar [Wed, 1 Apr 2015 15:01:59 +0000 (20:31 +0530)]
greybus: Add bundle descriptor type
A bundle corresponds to a device and a greybus driver binds to it. This patch
adds a type and descriptor for bundle.
This also shuffles the values of 'enum greybus_descriptor_type' to align
them with Greybus Specifications.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Viresh Kumar [Wed, 1 Apr 2015 15:01:58 +0000 (20:31 +0530)]
greybus: interface: Fetch interface id instead of module id during setup
There can be more than one interface on a module and we need to know the
interface for which the event has occurred.
But at the same time we may not need the module id at all. During initial phase
when AP is probed, the AP will receive the unique Endo id which shall be enough
to draw relationships between interface and module ids.
Code for that isn't available today and so lets create another routine to get
module id (which needs to be fixed separately), which will simply return
interface id passed to it.
Now that we have interface id, update rest of the code to use it.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Viresh Kumar [Thu, 2 Apr 2015 12:23:47 +0000 (17:53 +0530)]
greybus: Unregister devices to get them freed
Devices registered with the device-core needs to be freed by calling
device_unregister(). For module we are calling just put_device() and for
bundle, connection and interface we are calling device_del().
All of these are incomplete and so none of them get freed, i.e. the
.release() routine is never called for their devices.
Module being a special case that it needs to maintain a refcount or a
list of interfaces to trace its usage count. I have chosen refcount.
And so once the refcount is zero, we can Unregister the device and
module will get free as well.
Because of this bug in freeing devices, their sysfs directories were not
getting removed properly and after a manifest is parsed with the help of
gbsim, removing modules was creating problems. The sysfs directory
'greybus' wasn't getting removed. And inserting the modules again
resulted in warnings and insmod failure.
WARNING: CPU: 3 PID: 4277 at
/build/buildd/linux-3.13.0/fs/sysfs/dir.c:486
sysfs_warn_dup+0x86/0xa0()
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Mark Greer [Tue, 31 Mar 2015 23:49:56 +0000 (16:49 -0700)]
greybus: Initial I2S definitions
These are definitions from Mark that I've consolidated into
one header file. I'd like to get these merged at some point
soon, so the audio driver and gbsim work can avoid having
out-of-tree dependencies.
Signed-off-by: Mark A. Greer <mgreer@animalcreek.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Greg Kroah-Hartman [Sat, 4 Apr 2015 08:54:25 +0000 (10:54 +0200)]
greybus: Documentation/sysfs: add a proposed sysfs tree for greybus
This adds a proposed sysfs layout for greybus to Documentation to make
it easier for people to discuss / test things. It includes a module, an
interface, a bundle, and a gpbridge binding to that bundle.
This was discussed on the projectara software mailing list.
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Alex Elder [Fri, 27 Mar 2015 02:25:08 +0000 (21:25 -0500)]
greybus: reduce the ranting
Cut out some comments that are no longer operative.
Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Greg Kroah-Hartman [Tue, 31 Mar 2015 23:36:23 +0000 (01:36 +0200)]
greybus: kernel_ver.h: add sysfs_create_groups() and sysfs_remove_groups()
These functions showed up in 3.12 or so, and we are stuck on 3.10 for
various reasons, so provide backports in kernel_ver.h so that we can
rely on these functions.
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Greg Kroah-Hartman [Tue, 31 Mar 2015 21:02:34 +0000 (23:02 +0200)]
greybus: loopback: use the attribute groups, not group
We should use the attribute groups, not group, for the device, so
add and remove it. No one should ever be updating a sysfs group for a
device, as that can be pretty dangerous if you don't duplicate _all_
existing attribute for that device, and I don't think we were doing that
here.
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Greg Kroah-Hartman [Tue, 31 Mar 2015 21:01:45 +0000 (23:01 +0200)]
greybus: loopback: fix build breakage about SZ_4K
x86 doesn't include SZ_4K somehow so explicitly include <linux/sizes.h>
to fix the build breakage.
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Alexandre Bailon [Tue, 31 Mar 2015 07:51:59 +0000 (09:51 +0200)]
greybus: Add loopback protocol
Add a simple Greybus protocol in order to stress USB and Greybus.
This protocol currently support 2 requests: ping and transfer.
ping request is useful to measure latency.
Kernel send a ping request and firmware should respond with a ping.
The transfer request request is useful to stress Greybus and USB.
Kernel can send data from 0 to 4k and the firmware must send back the data to kernel.
This behaviour of gb-loopback module is controlled via sysfs.
Curently, connection sysfs folder is updated with new entries:
- type: Type of loopback message to send
* 0 => Don't send message
* 1 => Send ping message continuously (message without payload)
* 2 => Send transer message continuously (message with payload)
- size: Size of transfer message payload: 0-4096 bytes
- ms_wait: Time to wait between two messages: 0-1024 ms
Module also export some statistics about connection:
- latency: Time to send and receive one message
- frequency: Number of packet sent per second on this cport
- throughput: Quantity of data sent and received on this cport
- error
All this statistics are cleared everytime type, size or ms_wait entries are updated.
Signed-off-by: Alexandre Bailon <abailon@baylibre.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Alex Elder [Fri, 27 Mar 2015 20:20:49 +0000 (15:20 -0500)]
greybus: es2: test apb1_log_task safely
When usb_log_enable() is called, the global apb1_log_task is used to
hold the result of kthread_run(). It is possible for kthread_run()
to return an error pointer, so tests of apb_log_task against NULL
are insufficient to determine its validity.
Note that kthread_run() never returns NULL so we don't have to check
for that. But apb1_log_task is initially NULL, so that global must
be both non-null and not an error in order to be considered valid.
Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Alex Elder [Fri, 27 Mar 2015 20:20:49 +0000 (15:20 -0500)]
greybus: es1: test apb1_log_task safely
When usb_log_enable() is called, the global apb1_log_task is used to
hold the result of kthread_run(). It is possible for kthread_run()
to return an error pointer, so tests of apb_log_task against NULL
are insufficient to determine its validity.
Note that kthread_run() never returns NULL so we don't have to check
for that. But apb1_log_task is initially NULL, so that global must
be both non-null and not an error in order to be considered valid.
Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Alex Elder [Fri, 27 Mar 2015 20:06:24 +0000 (15:06 -0500)]
greybus: manifest: use size_t for a size variable
In identify_descriptor(), the variable desc_size represents the size
of a memory object. So change its type from int to size_t.
The return value for this function can be desc_size cast to int.
One can verify by inspection this will never exceed INT_MAX.
Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Fri, 27 Mar 2015 11:45:49 +0000 (12:45 +0100)]
greybus: operation: refactor response handling
Send response to incoming requests from the operation request handler
rather than in every protocol request_recv callback.
This simplifies request_recv error handling and allows for further code
reuse.
Note that if we ever get protocols that need to hold off sending
responses we could implement this by letting them return a special
value (after acquiring the necessary operation references) to suppress
the response from being sent by greybus core.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Fri, 27 Mar 2015 11:45:48 +0000 (12:45 +0100)]
greybus: hid: fix missing response on request errors
Send response also to incoming requests that cannot be fulfilled.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Fri, 27 Mar 2015 11:45:47 +0000 (12:45 +0100)]
greybus: hid: fix missing input verification of report events
Add minimal verification of incoming report size, before using it to
determine what buffer and size to pass on to HID core.
Add comment about protocol needing to be revisited. If we are going to
be parsing the report data received, then those fields have to be
defined in the Greybus specification at least.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Fri, 27 Mar 2015 11:45:46 +0000 (12:45 +0100)]
greybus: hid: fix null-deref on short report requests
Make sure to verify the length of incoming requests before trying to
parse the request buffer, which can even be NULL on empty requests.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Fri, 27 Mar 2015 11:45:45 +0000 (12:45 +0100)]
greybus: hid: fix success response being sent on errors
Make sure to only send a success response if we did not detect any
errors.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Fri, 27 Mar 2015 11:45:44 +0000 (12:45 +0100)]
greybus: hid: replace pr_err with dev_err
Replace pr_err with dev_err and clean up error messages somewhat.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Fri, 27 Mar 2015 11:45:43 +0000 (12:45 +0100)]
greybus: gpio: fix missing response on request errors
Send response also to incoming requests that cannot be fulfilled.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Fri, 27 Mar 2015 11:45:42 +0000 (12:45 +0100)]
greybus: gpio: fix null-deref on unexpected irq requests
Fix null-pointer dereference on failure to look up irq due to missing
error handling.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Fri, 27 Mar 2015 11:45:41 +0000 (12:45 +0100)]
greybus: gpio: fix null-deref on short irq requests
Make sure to verify the length of incoming requests before trying to
parse the request buffer, which can even be NULL on empty requests.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Fri, 27 Mar 2015 11:41:20 +0000 (12:41 +0100)]
greybus: operation: make incomplete-message errors more informative
Include the operation id as well as the received and expected size
(from header) when reporting incomplete messages.
This information is useful when debugging communication errors.
Also invert the size test to match the error message and increase
readability.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Fri, 27 Mar 2015 11:41:19 +0000 (12:41 +0100)]
greybus: operation: replace pr_err with dev_err
Use dev_err whenever we have a connection for more informative error
messages.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Fri, 27 Mar 2015 11:41:18 +0000 (12:41 +0100)]
greybus: operation: fix incoming request payload size
Fix the payload size of incoming requests, which should not include the
operation message-header size.
When creating requests we pass the sizes of request and response
payloads and greybus core allocates buffers and adds the required
headers. Specifically, the payload sizes do not include the
message-header size.
This is currently not the case for incoming requests however, something
which prevents protocol drivers from implementing appropriate input
verification and could lead to random data being treated as a valid
message in case of a short request.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Fri, 27 Mar 2015 11:41:17 +0000 (12:41 +0100)]
greybus: operation: fix null-deref on operation destroy
Incoming operations are created without a response message. If a
protocol driver fails to send a response, or if the operation were to be
cancelled before it has been fully processed, we get a null-pointer
dereference when the operation is released.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Fri, 27 Mar 2015 11:41:16 +0000 (12:41 +0100)]
greybus: operation: fix null-deref on operation cancel
Incoming operations are created without a response message. If an
operation were to be cancelled before it has been fully processed (e.g.
on connection destroy), we would get a null-pointer dereference in
gb_operation_cancel.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Fri, 27 Mar 2015 11:41:15 +0000 (12:41 +0100)]
greybus: operation: fix use-after-free and infinite loop on unhandled requests
Make sure to return a proper response in case we get a request we do not
recognise.
This fixes an infinite loop and use-after-free bug, where the freed
operations structure would get re-added to the work queue indefinitely.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Fri, 27 Mar 2015 11:41:14 +0000 (12:41 +0100)]
greybus: operation: fix memory leak in request_send error path
Make sure to drop the operation reference when sending the request fails
to avoid leaking the operation structures.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Fri, 27 Mar 2015 11:41:13 +0000 (12:41 +0100)]
greybus: operation: fix use-after-free when sending responses
Fix use-after-free when sending responses due to reference imbalance.
Make sure to take a reference to the operation when sending responses.
This reference is dropped in greybus_data_sent when the message has been
sent, while the initial reference is dropped in gb_operation_work after
processing the corresponding request.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Fri, 27 Mar 2015 11:41:12 +0000 (12:41 +0100)]
greybus: operation: fix callback handling and documentation
Fix up obsolete comments referring to null callback pointers for
synchronous operations, and make sure a callback is always provided when
sending a request.
Also document that the callback is responsible for dropping the initial
(and not necessarily final) reference to the operation.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Fri, 27 Mar 2015 11:41:11 +0000 (12:41 +0100)]
greybus: operation: fix typo in comment
Fix typo in comment.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Fri, 27 Mar 2015 11:41:10 +0000 (12:41 +0100)]
greybus: operation: fix missing symbol exports
Add missing EXPORT_SYMBOL_GPL for gb_operation_response_alloc,
gb_operation_result, gb_operation_get, gb_operation_request_send and
gb_operation_cancel, which are all supposed to be accessible from
protocol handlers.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Viresh Kumar [Fri, 27 Mar 2015 11:02:56 +0000 (16:32 +0530)]
greybus: kernel_ver.h: include <linux/kernel.h> to fix warning
And this is the warning I was getting on kernel version > 3.14
CC [M] greybus/connection.o
In file included from
include/asm-generic/gpio.h:4:0,
from arch/arm/include/asm/gpio.h:9,
from include/linux/gpio.h:48,
from greybus/kernel_ver.h:59,
from greybus/connection.c:12:
include/linux/kernel.h:35:0: warning: "U16_MAX" redefined
kernel_ver.h is taking care of defining U16_MAX only if is not defined earlier,
but it is often included as the first .h file. <linux/kernel.h> might be
included later, which always defines it, unconditionally. And so this warning.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Greg Kroah-Hartman [Fri, 27 Mar 2015 10:38:07 +0000 (11:38 +0100)]
greybus: es2: sync up with recent es1.c changes
This brings the debug log functionality of es1.c to es2.c, along with
some other minor cleanups.
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Greg Kroah-Hartman [Fri, 27 Mar 2015 10:38:06 +0000 (11:38 +0100)]
greybus: debugfs: we shouldn't care if debugfs is working or not
This removes the error checking for debugfs initialization as we really
don't care if it failed or not.
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Alex Elder [Fri, 27 Mar 2015 02:25:06 +0000 (21:25 -0500)]
greybus: get rid of {conceal,reveal}_urb()
These clever macros were fine for early development, but they're
more of a distraction now.
Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Alex Elder [Fri, 27 Mar 2015 02:25:01 +0000 (21:25 -0500)]
greybus: clean up some small messes
This is an old patch that I neglected to send out. It's cleaning
up a couple things that got committed before I had a chance to
comment on them.
In operation.c there is a "FIXME" comment that is easily proven
wrong by inspection.
In gb_protocol_put(), there is another wrong "FIXME" comment as
well. We can also use our cached copies of the protocol major
and minor version number in another spot. And balance that
out by using a cached copy of the protocol id.
Signed-off-by: Alex Elder <elder@linaro.org>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Greg Kroah-Hartman [Wed, 25 Mar 2015 08:26:13 +0000 (09:26 +0100)]
greybus: Merge branch 'es1-fixes' into master
Merge the es1 log file fixes into master.
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Viresh Kumar [Tue, 24 Mar 2015 14:44:29 +0000 (20:14 +0530)]
greybus: interface: put module->dev on failures
In order to decrement the reference count of module on failures, we must call
put_device(module->dev). This was missing for one of the error cases, fix it.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Viresh Kumar [Tue, 24 Mar 2015 14:44:28 +0000 (20:14 +0530)]
greybus: Greybus: Place module_init/exit() right after respective routines
As mentioned in kernel coding guidelines.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Viresh Kumar [Tue, 24 Mar 2015 11:38:14 +0000 (17:08 +0530)]
greybus: manifest: don't need to check for desc_size == 0 anymore
identify_descriptor() doesn't return 0 anymore and so we don't need to check the
returned value against 0.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Viresh Kumar [Tue, 24 Mar 2015 11:38:13 +0000 (17:08 +0530)]
greybus: manifest: descriptor size should be >= header size
We are calculating descriptors expected size differently based on the type of
descriptor, that's fine but at few places we aren't taking size of the header
into account. And that looks wrong.
Lets make sure it is atleast as big as descriptor's header.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Greg Kroah-Hartman [Tue, 24 Mar 2015 19:47:24 +0000 (20:47 +0100)]
greybus: es1: allow the debug log to be stopped
If you write 0 to the debugfs file, the log will stop being updated.
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Greg Kroah-Hartman [Tue, 24 Mar 2015 19:45:31 +0000 (20:45 +0100)]
greybus: es1: separate usb_log enable/disable logic into different functions
One function shouldn't do two different things depending on a parameter
passed to it, so split usb_log_enable() into usb_log_disable()
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Greg Kroah-Hartman [Tue, 24 Mar 2015 19:34:02 +0000 (20:34 +0100)]
greybus: es1: fix checkpatch warning about blank lines needed
Add a blank line in apb1_log_enable_read() to make checkpatch happy.
Oh, and it makes the code more readable too...
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Greg Kroah-Hartman [Tue, 24 Mar 2015 19:32:40 +0000 (20:32 +0100)]
greybus: es1: move debugfs function to use kstrotoint_from_user()
No need to duplicate built-in functions that the kernel has, so have the
core kernel parse the userspace string. Saves us an allocation and
makes the logic simpler.
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Greg Kroah-Hartman [Tue, 24 Mar 2015 19:10:58 +0000 (20:10 +0100)]
greybus: es1: decimal modes are not what are wanted for debugfs
decimal is not octal, so use the proper mode settings for the debugfs
files.
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Greg Kroah-Hartman [Tue, 24 Mar 2015 19:08:12 +0000 (20:08 +0100)]
greybus: es1: struct file_operations needs to be const
We aren't changing these pointers, so mark them read-only as that is the
preferred way.
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Greg Kroah-Hartman [Tue, 24 Mar 2015 19:06:41 +0000 (20:06 +0100)]
greybus: es1: no need to check for NULL on debugfs_remove()
The function can, and even expects NULL, so don't check.
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Greg Kroah-Hartman [Tue, 24 Mar 2015 19:04:49 +0000 (20:04 +0100)]
greybus: es1: use <linux/uaccess.h> and not <asm/uaccess.h>
Asm is only for when you are doing arch-specific stuff, which we aren't
doing here.
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Greg Kroah-Hartman [Tue, 24 Mar 2015 19:03:39 +0000 (20:03 +0100)]
greybus: es1: fix tiny whitespace issues
No trailing spaces or spaces before tabs are allowed.
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Greg Kroah-Hartman [Tue, 24 Mar 2015 18:55:14 +0000 (19:55 +0100)]
greybus: es1: fix build warning for apb1_log_enable_write
It's "const char __user *buf", not "char __user *buf".
'make check' is your friend.
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Alexandre Bailon [Mon, 23 Mar 2015 16:52:37 +0000 (17:52 +0100)]
greybus: Dump log from APB1
On AP module (form factor), we don't have access to APBridge JTAG or UART.
But sometime, we still need to get log from APBridge. Add a new request in control endpoint
to get APBridge logs.
Logs can be accessed using debugfs (greybus/apb1_log).
Signed-off-by: Alexandre Bailon <abailon@baylibre.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Viresh Kumar [Fri, 20 Mar 2015 14:59:13 +0000 (20:29 +0530)]
greybus: core: Don't initialize greybus if it is disabled
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Johan Hovold [Thu, 19 Mar 2015 15:55:23 +0000 (16:55 +0100)]
greybus: gpio: add error messages to callbacks not propagating errors
Add error messages on failures to deactivate, set and get operation
handlers as any errors would not be detected by the upper layers (either
because the callbacks are declared void or expected to return a boolean
value).
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Thu, 19 Mar 2015 15:55:22 +0000 (16:55 +0100)]
greybus: gpio: refuse to set value of input pins
Add warning and refuse to set output value for pin configured as input,
as the result of such an operation is undefined.
Remove incorrect todo-comment suggesting that the driver could
implicitly switch direction as part of the call.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Thu, 19 Mar 2015 15:51:17 +0000 (16:51 +0100)]
greybus: gpio: clean up line-state allocation
Clean up allocation of line-state array.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Thu, 19 Mar 2015 15:51:16 +0000 (16:51 +0100)]
greybus: gpio: use dev_err and dev_warn
Use the more informative dev_err and dev_warn for messages, and make the
messages more uniform.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Thu, 19 Mar 2015 15:51:15 +0000 (16:51 +0100)]
greybus: gpio: fix error handling
Make sure to propagate any errors detected up the call chain.
This specifically means that we will detect failed connection init,
something which is now handled more gracefully by greybus core.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Thu, 19 Mar 2015 15:51:14 +0000 (16:51 +0100)]
greybus: gpio: make gb_gpio_controller pointer naming consistent
Rename all struct gb_gpio_controller-pointer variables "ggc" for
consistency and readability reason.
This also fixes a bunch of lines that exceeded the 80 columns limit.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Thu, 19 Mar 2015 15:51:13 +0000 (16:51 +0100)]
greybus: gpio: remove unnecessary explicit cast
Remove unnecessary explicit cast of line value.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Thu, 19 Mar 2015 15:51:12 +0000 (16:51 +0100)]
greybus: gpio: remove overly defensive argument verification
Remove overly defensive argument verification in gpio-chip callbacks. We
should trust gpiolib to get this right (or we would not even get any
callback) just like the other gpio drivers do.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Thu, 19 Mar 2015 15:51:11 +0000 (16:51 +0100)]
greybus: gpio: remove redundant argument verification
Remove redundant verification of gpio numbers (which have already been
verified in the gpio-chip callbacks) from greybus-operation helpers.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Thu, 19 Mar 2015 15:51:10 +0000 (16:51 +0100)]
greybus: gpio: remove incorrect todo comments
The module reference count is incremented by gpiolib when a gpio is
requested, and the driver callbacks certainly do sleep.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Thu, 19 Mar 2015 15:51:09 +0000 (16:51 +0100)]
greybus: gpio: fix truncated debounce times
Fix set_debounce, which silently truncated the time argument to 255us
even though we support 16-bit values.
Also remove the unnecessary explicit cast when verifying the argument.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Thu, 19 Mar 2015 15:46:19 +0000 (16:46 +0100)]
greybus: operation: remove unnecessary cast
Remove unnecessary cast of the message size in gb_connection_recv.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Thu, 19 Mar 2015 15:46:18 +0000 (16:46 +0100)]
greybus: operation: use dev_err in gb_operation_sync
Use the more informative dev_err in gb_operation_sync, which includes
the connection device name in the error message (which in turn encodes
the module, interface, bundle and cport ids).
Add missing braces to conditional-construct branches while at it.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Thu, 19 Mar 2015 15:46:17 +0000 (16:46 +0100)]
greybus: connection: replace custom error function with dev_err
Remove custom connection error function and replace it with dev_err.
The standard error function provides more information in the message
prefix (e.g. includes the interface id), has a well-known semantics
(e.g. does does not add newlines to messages), and is even somewhat
shorter to type.
Note that some uses of the custom function were already adding double
newlines due to the non-standard semantics.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Thu, 19 Mar 2015 15:46:16 +0000 (16:46 +0100)]
greybus: ap: clean up svc link management error path
Return immediately on bundle-init failure when processing SVC link up.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Thu, 19 Mar 2015 15:46:15 +0000 (16:46 +0100)]
greybus: ap: fix typo in comment
Fix typo in svc_hotplug comment.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Thu, 19 Mar 2015 15:46:14 +0000 (16:46 +0100)]
greybus: ap: fix svc handshake protocol check
Fix incorrect SVC handshake protocol check, which would only bail out if
both major and minor protocol versions supported by the SVC differed.
Since we currently only support one version of the protocol, upgrade the
debug message to warning and bail unless the protocol versions match
perfectly for now.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Thu, 19 Mar 2015 15:46:13 +0000 (16:46 +0100)]
greybus: usb: silence compiler warning
This driver is being rewritten, but let's silence a pointer-to-int-cast
compiler warning meanwhile.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Viresh Kumar [Wed, 18 Mar 2015 06:11:39 +0000 (11:41 +0530)]
greybus: hid: don't support OUTPUT report over interrupt channel
There is no interrupt channel as such and so no need to support
->output_report().
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Viresh Kumar [Thu, 19 Mar 2015 11:32:49 +0000 (17:02 +0530)]
greybus: core: place module_{init|exit}() right below the routines
To follow coding guidelines a bit :)
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Viresh Kumar [Thu, 19 Mar 2015 11:32:48 +0000 (17:02 +0530)]
greybus: interface: remove double underscore from fn name
Also bring * closer to gb_interface_get_drvdata :)
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Viresh Kumar [Thu, 19 Mar 2015 11:32:46 +0000 (17:02 +0530)]
greybus: operation: Fix comment mistake
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Viresh Kumar [Thu, 19 Mar 2015 11:32:45 +0000 (17:02 +0530)]
greybus: operation: s/status/result to match field name
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Alexandre Bailon [Wed, 18 Mar 2015 14:42:51 +0000 (15:42 +0100)]
greybus: Export greybus debugfs folder
Add gb_debugfs_get method to access to gb_debug_root dentry,
in order to use it from other greybus modules.
Signed-off-by: Alexandre Bailon <abailon@baylibre.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Tue, 17 Mar 2015 17:24:30 +0000 (18:24 +0100)]
greybus: uart: remove packed-attribute from line-coding struct
Remove packed-attribute from line-coding struct, whose members are all
naturally aligned.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Tue, 17 Mar 2015 17:24:29 +0000 (18:24 +0100)]
greybus: pwm: fix config-request alignment
Fix alignment of the duty and period-fields in the config request,
which should follow the which-field without any inserted padding.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Tue, 17 Mar 2015 17:24:28 +0000 (18:24 +0100)]
greybus: gpio: fix set-debounce request alignment
Fix alignment of the usec-field in the set-debounce request, which
should follow the which-field without any inserted padding.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Tue, 17 Mar 2015 09:55:52 +0000 (10:55 +0100)]
greybus: connection: fix oops after failed init
Make sure not to call connection_exit for connections that have never
been initialised (e.g. due to failure to init).
This fixes oopses due to null-dereferences and use-after-free in
connection_exit callbacks (e.g. trying to remove a gpio-chip that has
never been added) when the bundle and interface are ultimately
destroyed.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Tue, 17 Mar 2015 09:55:51 +0000 (10:55 +0100)]
greybus: vibrator: fix memory leak in error path
Fix memory leak in connection_init error path.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Johan Hovold [Tue, 17 Mar 2015 09:55:50 +0000 (10:55 +0100)]
greybus: pwm: fix memory leak in error path
Fix memory leak in connection_init error path.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Viresh Kumar [Mon, 16 Mar 2015 11:19:37 +0000 (16:49 +0530)]
greybus: hid: add HID class driver
This adds HID transport layer driver for Greybus. Most of the stuff is
implemented, but is untested.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>