Johan Hovold [Sat, 23 Apr 2016 16:47:24 +0000 (18:47 +0200)]
greybus: core: add module abstraction
Add Greybus module abstraction that will be used to implement controlled
module removal (eject) and represent module geometry.
Greybus module devices correspond to physical modules and have one or
more interfaces. Modules have an id that is identical to the id of their
primary interface, which in turn is the interface with lowest numbered
id. The module name is constructed from the bus and module id:
<bus_id>-<module_id>
Interfaces, bundles, and control devices are consequently renamed as
<bus_id>-<module_id>.<interface_id>
<bus_id>-<module_id>.<interface_id>.<bundle_id>
<bus_id>-<module_id>.<interface_id>.ctrl
As before, interface ids (and therefore in a sense now also module ids)
correspond to physical interface positions on the frame.
Modules have the following attributes:
module_id
num_interfaces
where module_id is the id of the module and num_interface the number of
interfaces the module has.
Note that until SVC module-size detection has been implemented, all
interfaces are considered to be part of 1x2 modules. Specifically, the
two interfaces of a 2x2 module will be presented as two 1x2 modules for
now.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Sat, 23 Apr 2016 16:47:23 +0000 (18:47 +0200)]
greybus: svc: refactor interface re-enable
Add interface re-enable helper that is used during mode switch to
disable and re-enable (enumerate) an interface.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Sat, 23 Apr 2016 16:47:22 +0000 (18:47 +0200)]
greybus: Documentation/sysfs: sort entries alphabetically
The attribute entries have been kept mostly sorted within each device
type. Let's move the three more-recently added interface attributes
that were not.
Suggested-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Sat, 23 Apr 2016 16:47:21 +0000 (18:47 +0200)]
greybus: Documentation/sysfs: add entry for control device
Add an entry for the recently added interface control device.
Also move the bundle-device entry below the control-device entries.
Reported-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Sat, 23 Apr 2016 16:47:20 +0000 (18:47 +0200)]
greybus: svc: use a common prefix for debugfs functions
Use the common gb_svc functions also for the recently added svc
functions. Having a common prefix clearly signals where the code
resides, something which improves readability and helps during
debugging (e.g. stack traces).
Note that all functions in svc.c except for these three use the common
prefix with the exception of the pwr_debugfs callbacks (that still use
*a* common prefix) and the attribute accessors (than can not have a
common prefix due to some macro magic).
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Vaibhav Agarwal [Mon, 25 Apr 2016 11:48:17 +0000 (17:18 +0530)]
greybus: audio: acquire wakelock during active playback
This change was missed while merging original patch
commit-id:
53c765c33f4a69c31027ec012e717d303bd4feca
Thus submitting it again.
Signed-off-by: Vaibhav Agarwal <vaibhav.agarwal@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Viresh Kumar [Wed, 20 Apr 2016 06:18:37 +0000 (11:48 +0530)]
greybus: arche-ctrl: Don't expose driver internals to arche-platform driver
We have chosen the *ugly* way of registering two platform drivers from
the module_init() of only one of them, so that we can avoid having two
separate modules for them.
But we should still be doing this in a sane way. There is no need to
expose internals of arche-ctrl to arche-platform, like PM-ops, probe,
resume, id-table, etc. Just expose an init and a exit callback.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Vaibhav Agarwal [Fri, 22 Apr 2016 18:13:19 +0000 (11:13 -0700)]
greybus: audio: acquire wakelock during active playback
use pm_stay_awake & pm_relax to avoid suspend sequence during
active playback
testing Done:
Music Playback ongoing
$ cat /sys/devices/soc.0/qcom,ara-codec.82/power/wakeup_active
1
Music Playback stopped
$ cat /sys/devices/soc.0/qcom,ara-codec.82/power/wakeup_active
0
Tested-by: David Lin <dtwlin@google.com>
Reviewed-by: David Lin <dtwlin@google.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Akash Choudhari <akashtc@google.com>
Signed-off-by: Vaibhav Agarwal <vaibhav.agarwal@linaro.org>
Johan Hovold [Thu, 21 Apr 2016 09:43:38 +0000 (11:43 +0200)]
greybus: svc: fix function-parameter indentation
We really shouldn't be passing response structures around this way, but
since we now are, let's at least make sure not to break the 80 col
limit.
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>
Johan Hovold [Thu, 21 Apr 2016 09:43:37 +0000 (11:43 +0200)]
greybus: svc: fix pwrmon return value
Errno -ENOSYS is reserved for missing syscalls, replace it with ENOMSG.
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>
Johan Hovold [Thu, 21 Apr 2016 09:43:36 +0000 (11:43 +0200)]
greybus: svc: keep error messages uniform
All SVC error messages, except for a few recently added ones, place the
errno last after a colon (:). Let's at least try to be consistent
within the svc code.
Note that this format also allows for more concise messages without risk
for ambiguity.
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>
Viresh Kumar [Thu, 21 Apr 2016 06:01:16 +0000 (11:31 +0530)]
greybus: es2: move ap_disconnect() below ap_probe()
This makes it more readable, as the functions are present in this order
in the structure as well. Also keeping these two makes more sense.
Tested by removing the gb-es2.ko module on both EVT1.5 and qemu with
gbsim.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Viresh Kumar [Thu, 21 Apr 2016 06:01:15 +0000 (11:31 +0530)]
greybus: es2: don't protest when getting -ENOENT/ESHUTDOWN USB errors
-ENOENT or -ESHUTDOWN happens when the urbs are being killed from
->disconnect() callback. Don't complain to userspace about this, as the
user will see this on es2 module removal.
Tested by removing the gb-es2.ko module on both EVT1.5 and qemu with
gbsim. The driver doesn't throw anymore errors like:
"urb cport in error -2 (dropped)".
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Tested-by: David Lin <dtwlin@google.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Viresh Kumar [Thu, 21 Apr 2016 06:01:14 +0000 (11:31 +0530)]
greybus: es2: disable cport-in after remove greybus host device
This allows greybus to do operations before being removed.
Tested by removing the gb-es2.ko module on both EVT1.5 and qemu with
gbsim. The driver removes the greybus host device successfully before
disabling the urbs. The errors are still coming ("urb cport in error -2
(dropped)"), but with an error value -2 (ENOENT) instead of -108. And
that happens while the urbs are disabled, not while doing greybus
operations.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Acked-by: David Lin <dtwlin@google.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Viresh Kumar [Thu, 21 Apr 2016 06:01:13 +0000 (11:31 +0530)]
greybus: es2: Allow proper release of greybus host device
The usb core disables the Interface prior to calling ->disconnect() for
the usb driver. That disallows the es2 driver to remove the greybus host
device and every entity below it in a clean way, as the greybus core may
want to do few operations over the usb connection before getting
removed.
And so we see bunch of errors while we remove the es2 module, like:
"urb cport in error -108 (dropped)"
The usb core has a special per-driver flag, 'soft_unbind', for such usb
drivers. If this flag is set by a driver, the usb core doesn't disable
the Interface prior to calling ->disconnect().
Set that flag for es2.
Tested by removing the gb-es2.ko module on both EVT1.5 and qemu with
gbsim. The interface isn't disabled by the core and the driver is still
able initiate greybus operations over the Interface. This can be
properly tested only after the next patch which removes the greybus host
device before disabling the urbs.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Viresh Kumar [Thu, 21 Apr 2016 02:41:57 +0000 (08:11 +0530)]
greybus: audio-codec: Staticize few routines to fix build warnings
This fixes below warnings ..
greybus/audio_codec.c:20:32: warning: symbol 'find_data' was not declared. Should it be static?
greybus/audio_codec.c:955:6: warning: symbol 'gbaudio_codec_cleanup' was not declared. Should it be static?
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Vaibhav Agarwal <vaibhav.agarwal@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Viresh Kumar [Thu, 21 Apr 2016 02:43:01 +0000 (08:13 +0530)]
greybus: bootrom: fix typo
s/Firware/Firmware
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Evgeniy Borisov [Mon, 18 Apr 2016 13:27:36 +0000 (16:27 +0300)]
greybus: camera-gb: Remove hardcode for CSI TX number of lanes
The number of CSI TX lanes is hardcoded to 4. Removing
this and start using value from configure stream response.
NOTE: The patch depends on the CSI init change:
"Use GB CSI params to init camera sub-devs"
Signed-off-by: Evgeniy Borisov <eborisov@mm-sol.com>
Reviewed-by: Gjorgji Rosikopulos <grosikopulos@mm-sol.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
David Lin [Wed, 20 Apr 2016 23:55:08 +0000 (16:55 -0700)]
greybus: svc: add AP power measurements debugfs support
This change adds the AP Power Monitor functions to
read out all the rails power information monitored by
the SVC.
Testing Done:
- $ cat /d/greybus/1-svc/pwrmon/*/*
and validate the output with the svc stub power
monitor functions
- $ tree /d/greybus/1-svc/pwrmon
| | | |---pwrmon
| | | | |---DUMMY_RAIL_1
| | | | | |---current_now
| | | | | |---power_now
| | | | | |---voltage_now
| | | | |---DUMMY_RAIL_2
| | | | | |---current_now
| | | | | |---power_now
| | | | | |---voltage_now
| | | | |---DUMMY_RAIL_3
| | | | | |---current_now
| | | | | |---power_now
| | | | | |---voltage_now
| | | | |---DUMMY_RAIL_4
| | | | | |---current_now
| | | | | |---power_now
| | | | | |---voltage_now
Signed-off-by: David Lin <dtwlin@google.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
David Lin [Mon, 18 Apr 2016 20:11:31 +0000 (13:11 -0700)]
greybus: es2: Fix apb_log null pointer exception
Read on apb_log causes null pointer exception due to the missing es2
device pointer passing to the debugfs.
Testing done:
- Enable apb_log and cat it
Signed-off-by: David Lin <dtwlin@google.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Axel Haslam [Wed, 20 Apr 2016 18:47:20 +0000 (20:47 +0200)]
greybus: uart: Update line coding settings only when needed
The check for line coding changed should use memcmp and not memcpy.
Testing done: trivial
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Axel Haslam <ahaslam@baylibre.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Wed, 13 Apr 2016 17:19:09 +0000 (19:19 +0200)]
greybus: svc: remove interface-remove helper
Remove unnecessary interface-remove helper.
Also add comment about why the disconnected flag is set.
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>
Johan Hovold [Wed, 13 Apr 2016 17:19:08 +0000 (19:19 +0200)]
greybus: svc: keep interfaces registered during mode switch
Keep a detected interface registered until it is physically removed.
Specifically, do not re-register an interface that is switching mode.
Note that this also allows us to get rid of some nasty hacks from core.
The Ara VID/PID bootrom hack for ES2 will continue to work, but is now
mostly confined to the bootrom driver.
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>
Johan Hovold [Wed, 13 Apr 2016 17:19:07 +0000 (19:19 +0200)]
greybus: svc: make sure to deactivate all interfaces on disconnect
Make sure to deactivate all interfaces when the svc is going away.
This is needed to eventually be able to do controlled teardown of the
unipro network.
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>
Johan Hovold [Wed, 13 Apr 2016 17:19:06 +0000 (19:19 +0200)]
greybus: interface: reduce control-device lifetime
Make the control-device lifetime coincide with when the interface is
enabled (enumerated).
This is needed to be able register a new control device after a mode
switch.
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>
Johan Hovold [Wed, 13 Apr 2016 17:19:05 +0000 (19:19 +0200)]
greybus: control: return error pointer when failing to create control device
Return an error pointer when failing to create a control device.
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>
Johan Hovold [Wed, 13 Apr 2016 17:19:04 +0000 (19:19 +0200)]
greybus: interface: move vendor and product strings to control device
The control device is an abstraction of the control connection over
which a greybus manifest is retrieved. As interfaces switch modes (e.g.
after boot-over-unipro) they expose new manifests, which can contain
different vendor and product strings.
Eventually control devices will be deregistered and recreated after an
interface mode switch, while the interface itself remains registered.
Note that only interfaces of type greybus will have control devices.
Specifically, dummy interfaces will not.
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>
Johan Hovold [Wed, 13 Apr 2016 17:19:03 +0000 (19:19 +0200)]
greybus: interface: register control device at hotplug
Make sure to register also the control device along with any bundles
when registering an interface.
Note that we currently ignore failures to register the control device
just as we do for bundle devices.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Wed, 13 Apr 2016 17:19:02 +0000 (19:19 +0200)]
greybus: core: make the control object be a device
Make the control object be a greybus device.
The control device will be used to expose attributes specific to
greybus-type interfaces.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Wed, 13 Apr 2016 17:19:01 +0000 (19:19 +0200)]
greybus: control: move timesync-operation functions
Move the timesync-operation functions above the control-object
management functions, which is where all other operation implementations
reside.
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>
Johan Hovold [Wed, 13 Apr 2016 17:19:00 +0000 (19:19 +0200)]
greybus: interface: disable interface on registration failures
Disable and deactivate an interface immediately on registration
failures.
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>
Johan Hovold [Wed, 13 Apr 2016 17:18:59 +0000 (19:18 +0200)]
greybus: Documentation/sysfs: add example control devices
Add control devices to the example sysfs tree.
Control devices are named
<bus_id>-<module_id>.<intf_id>.ctrl
and expose attributes that are specific to the greybus interface type.
Specifically, dummy interfaces do not have a control device.
Currently, only the vendor and product strings extracted from the
manifest are exported.
A subtree of the example tree now looks as follows:
greybus1/
├── 1-5
│  ├── 1-5.5
│  │  ├── 1-5.5.2
│  │  │  ├── bundle_class
│  │  │  ├── bundle_id
│  │  │  └── state
│  │  ├── 1-5.5.ctrl
│  │  │  ├── product_string
│  │  │  └── vendor_string
│  │  ├── ddbl1_manufacturer_id
│  │  ├── ddbl1_product_id
│  │  ├── interface_id
│  │  ├── product_id
│  │  ├── serial_number
│  │  └── vendor_id
│  ├── 1-5.6
│  │  └── interface_id
│  ├── eject
│  ├── module_id
│  └── num_interfaces
└── 1-svc
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>
Johan Hovold [Wed, 13 Apr 2016 17:18:58 +0000 (19:18 +0200)]
greybus: Documentation/sysfs: rename the svc eject attribute
The svc eject attribute was added as an interim solution and is still
used to implement a form of forced ejection.
This will soon be superseded by the module eject attribute, which will
provide an interface for clean eject. We may keep the forced-eject
mechanism around indefinitely, albeit possibly with a different name
(e.g. forced_intf_eject). Either way, update the example tree to reflect
the actual name, intf_eject, which currently used for this svc attribute.
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>
Johan Hovold [Wed, 13 Apr 2016 17:18:57 +0000 (19:18 +0200)]
greybus: Documentation/sysfs: remove interface unique_id attribute
Remove the interface unique_id attribute, which there is currently no
plan to ever implement.
Note that the Ara serial numbers are already exposed through the
serial_number attribute.
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>
Johan Hovold [Wed, 13 Apr 2016 17:18:56 +0000 (19:18 +0200)]
greybus: Documentation: move the interface power attributes
Move the interface power attributes after the other interface attributes
to keep the attributes grouped by device type.
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>
Johan Hovold [Wed, 13 Apr 2016 17:18:55 +0000 (19:18 +0200)]
greybus: manifest: fix illegal free in error path
The manifest-parsing code could end up leaving the interface
vendor_string set to an error pointer that we'd eventually try to free
when destroying the interface.
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>
Rui Miguel Silva [Wed, 20 Apr 2016 13:40:23 +0000 (14:40 +0100)]
greybus: spi: use timeout request send operation
When transfer speed is too slow (less than 17Khz) the operation can take
longer than the default greybus timeout. Because of this we need to use
the request_send_sync_timeout and calculate the correct timeout for each
operation.
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Tested-by: Philip Yang <philipy@bsquare.com>
Tested-by: Axel Haslam <ahaslam@baylibre.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Rui Miguel Silva [Wed, 20 Apr 2016 13:40:22 +0000 (14:40 +0100)]
greybus: spi: fix message transfer over greybus
The actual implementation of transfer_one_message have problems with
some cases in the possible transfer options. We try to maximize the
number of spi transfers in one greybus operation and need to save state
until the full message is dispatch over greybus.
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Tested-by: Philip Yang <philipy@bsquare.com>
Tested-by: Axel Haslam <ahaslam@baylibre.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
David Lin [Fri, 15 Apr 2016 19:45:16 +0000 (01:15 +0530)]
greybus: svc watchdog: Disable watchdog upon entering suspend
SVC watchdog should be disabled when device is entering suspend mode.
Testing done:
- Sanity tested on EVT1.5
- Check no SVC ping during the suspend process
- Check SVC watchdog is back on pinging once device is resumed
Signed-off-by: David Lin <dtwlin@google.com>
Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
[vaibhav.hiremath@linaro.org: Removed unwanted check in notifier callback and
Updated commit description]
Tested-by: Sandeep Patil <sspatil@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
David Lin [Fri, 15 Apr 2016 19:45:15 +0000 (01:15 +0530)]
greybus: arche-platform: Power-off unipro subsystem upon suspend
Switch off APBs/SVC/Switch in the suspend call notifier. Note that
this is an interim solution to enable fishfooding.
Testing done:
- Passed QA sanity test on EVT1.5
- Suspend current measured at ~70mW
Signed-off-by: David Lin <dtwlin@google.com>
Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
[vaibhav.hiremath@linaro.org: Updated commit description]
Tested-by: Sandeep Patil <sspatil@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Bryan O'Donoghue [Tue, 12 Apr 2016 16:15:11 +0000 (17:15 +0100)]
greybus: Fixup __u64, __u32 to __le64, __le32 in timesync declarations
A number of data in TimeSync command structures are declared __u64/__u32
instead of __le64/__le32, I forgot to put this through an x86_64 compile
before presentation for merge and as a result didn't catch this error. This
patch fixes.
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Vaibhav Hiremath [Tue, 12 Apr 2016 11:48:47 +0000 (17:18 +0530)]
greybus: arche-platfrom: Get rid of 2sec delay in USB3613 configuration
Earlier during boot sequence implementation, we had seen race between
USb3613 and APB boot, and since APB boot time is ~2sec, we delayed
USb3613 configuration for 2sec after APB deassertion of reset.
This obviously won't work in the case of suspend/resume, where we would
like to put APB into OFF state and coldboot in resume.
With the latest FW changes, we do not see any race issue. I have done
regression testing (> 50 iteration of reboot + unipro link up and down)
without any issues.
So lets get rid of the 2sec delay with this patch.
Testing Done: Tested on EVT 1.5 platform.
Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
Tested-by: David Lin <dtwlin@google.com>
Reviewed-by: David Lin <dtwlin@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Evgeniy Borisov [Wed, 6 Apr 2016 12:22:45 +0000 (15:22 +0300)]
greybus: camera-gb: Extend the configure streams interface
Extending the configure streams interface with CSI params.
Getting CSI frequency data form configure streams response.
* num_lanes - Number of CSI data lanes
* clk_freq - CSI clock frequency in Hz
* lines_per_second - Total number of lines in a second of
transmission (blanking included)
From the AP side we need to know for the CSI speed
configuration. This information is needed for dynamically
bandwidth calculations.
NOTE: Change should be along merged with corresponding
interface change in kernel:
"camera: Extend the configure streams
interface with CSI params"
Signed-off-by: Evgeniy Borisov <eborisov@mm-sol.com>
Reviewed-by: Gjorgji Rosikopulos <grosikopulos@mm-sol.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
David Lin [Fri, 8 Apr 2016 03:15:30 +0000 (20:15 -0700)]
greybus: svc: add Interface power measurements support
This change implements the AP Power Monitor functions for obtaining
current/voltage/power on a specific rail of an Interface.
Testing Done:
$ cat /sys/bus/greybus/devices/1-3/current_now
103
$ cat /sys/bus/greybus/devices/1-3/power_now
303
$ cat /sys/bus/greybus/devices/1-3/voltage_now
203
Signed-off-by: David Lin <dtwlin@google.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Vaibhav Agarwal [Wed, 30 Mar 2016 07:53:56 +0000 (13:23 +0530)]
greybus: audio: Update device type based on widget types
Device type info shared to above HAL is currently hard coded
to SPK only. Actual device type is identifed while parsing
widget types from topology FW shared by codec module.
Signed-off-by: Vaibhav Agarwal <vaibhav.agarwal@linaro.org>
Reviewed-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Vaibhav Agarwal [Wed, 30 Mar 2016 07:53:55 +0000 (13:23 +0530)]
greybus: audio_manager: Split device type into i/p & o/p devices
Currently, single field is used to report device type say SPK,
MIC, HS, HP, etc. However above HAL expects separate fields for
input & ouput device types.
Signed-off-by: Vaibhav Agarwal <vaibhav.agarwal@linaro.org>
Reviewed-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Gjorgji Rosikopulos [Fri, 1 Apr 2016 14:32:43 +0000 (17:32 +0300)]
greybus: camera: Add metadata format
Add support for greybus metadata format.
Greybus metadata format id is 0x41.
Signed-off-by: Gjorgji Rosikopulos <grosikopulos@mm-sol.com>
Acked-by: Laurent Pinchart <laurent.pinchart@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Viresh Kumar [Sun, 3 Apr 2016 06:48:35 +0000 (12:18 +0530)]
greybus: firmware: Rename to bootrom protocol
Align with Greybus specifications and rename Firmware Protocol driver as
Bootrom Protocol driver.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Viresh Kumar [Fri, 1 Apr 2016 05:45:42 +0000 (11:15 +0530)]
greybus: checkpatch.pl: Mark --no-tree as default option
Don't know why, but checkpatch checks if we are running it from top of a
kernel tree or not, but then it also provides an option to suppress the
warning using --no-tree.
Instead of forcing everyone to use this every time, lets make this
behavior default.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Akash Choudhari [Sat, 2 Apr 2016 03:10:01 +0000 (20:10 -0700)]
greybus: Revert "Added a sysfs entry to power down the SVC"
This reverts commit
a1d8f2c3856804ed26157104bb203edf4c882a6c.
Georgi Dobrev [Thu, 24 Mar 2016 11:37:21 +0000 (13:37 +0200)]
greybus: Added a sysfs entry to power down the SVC
Added a sysfs entry called pwr_off. When a "1" is passed to it,
it sends a GB_SVC_TYPE_PWR_DOWN command to the SVC, powering it down
along with the switch and INA231 chips.
Testing Done: Tested on EVT1_5, works.
Signed-off-by: Georgi Dobrev <dobrev_georgi@projectara.com>
Greg Kroah-Hartman [Fri, 1 Apr 2016 05:35:24 +0000 (22:35 -0700)]
greybus: scripts: create subdir for checkpatch and spelling.txt
They belong in a subdir.
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Greg Kroah-Hartman [Fri, 1 Apr 2016 05:26:39 +0000 (22:26 -0700)]
greybus: trivial: add checkpatch.pl to the tree
For those who are stuck using old kernel trees, let's include the latest
version of checkpatch.pl into our tree to help prevent coding style
mistakes from creeping in.
Also add spelling.txt to catch spelling errors in comments.
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Vaibhav Agarwal [Tue, 29 Mar 2016 11:02:37 +0000 (16:32 +0530)]
greybus: audio: Add I2S_RX path related settings
Capture path related settings during startup, perpare &
hwparams were earlier missing.
Signed-off-by: Vaibhav Agarwal <vaibhav.agarwal@linaro.org>
Reviewed-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Vaibhav Agarwal [Tue, 29 Mar 2016 11:02:36 +0000 (16:32 +0530)]
greybus: audio: Added jack support to audio module
Register jack with ASoC sound card in case audio module
populates it via codec FW. Currently, only a single jack
with 4 buttons can be registered for each module.
Signed-off-by: Vaibhav Agarwal <vaibhav.agarwal@linaro.org>
Reviewed-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Vaibhav Agarwal [Tue, 29 Mar 2016 11:02:35 +0000 (16:32 +0530)]
greybus: audio: Fix widget pointer update during control parsing
widget pointer was incorrectly modfied while parsing kcontrol
Signed-off-by: Vaibhav Agarwal <vaibhav.agarwal@linaro.org>
Reviewed-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Gjorgji Rosikopulos [Thu, 31 Mar 2016 11:12:45 +0000 (14:12 +0300)]
greybus: camera: Use pointer for gb camera module ops
No need to duplicate module ops on every registration.
NOTE: Change should be along merged with:
"msm: camera: Change gb_camera_module ops to pointer"
Signed-off-by: Gjorgji Rosikopulos <grosikopulos@mm-sol.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 29 Mar 2016 22:56:12 +0000 (18:56 -0400)]
greybus: interface: add Ara serial-number support
Add support for reading the Ara serial-number attributes.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 29 Mar 2016 22:56:11 +0000 (18:56 -0400)]
greybus: interface: clean up DME attribute handling
Move all DME defines to the interface code and rename them using common
prefixes (e.g. DME_T and DME_TOSHIBA).
The DDB L1 attributes are defined by MIPI and the Ara attributes are
currently Toshiba specific so move them all out of the Greybus protocol
header.
Also rename the Greybus init-status values using a GB_INIT prefix.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 29 Mar 2016 22:56:10 +0000 (18:56 -0400)]
greybus: interface: clean up ES2 VID/PID hack
Clean up the ES2 VID/PID hack using a new quirk flag.
Note that the hack is now used if and only if the interface is a Toshiba
ES2 bridge (and not if the attributes read zero).
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 29 Mar 2016 22:56:09 +0000 (18:56 -0400)]
greybus: interface: add ES2 init-status quirk flag
Add ES2 init-status quirk flag instead of checking MID/PID directly.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 29 Mar 2016 22:56:08 +0000 (18:56 -0400)]
greybus: interface: read DME attributes at activation
Read the DDBL1 and Ara DME attributes when activating an interface.
These values are currently provided by the SVC in the intf_hotplug
request, which is about to go away.
Note that there are currently no standard Ara VID and PID attributes and
that Toshiba uses attributes from the reserved space in ES3. For now, we
therefore refuse to enumerate any non-Toshiba bridges.
Also note that the Ara serial number is currently not supported.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 29 Mar 2016 22:56:07 +0000 (18:56 -0400)]
greybus: greybus_protocols: rename NULL DME selector index
Add NULL suffix to the don't-care DME selector index.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 29 Mar 2016 22:56:06 +0000 (18:56 -0400)]
greybus: interface: clean up device-id handling
Clean up the device id-handling and make sure we never allocate invalid
device ids due to a missing upper bound.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 29 Mar 2016 22:56:05 +0000 (18:56 -0400)]
greybus: interface: deactivate interface on enumeration failure
Deactivate an interface immediately on enumeration failure.
Note that an interface is always registered.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 29 Mar 2016 22:56:04 +0000 (18:56 -0400)]
greybus: interface: move route creation to interface activation
Creating and destroying a route to an interface is arguably an interface
operation and belongs with the interface code.
Add new interface_activate and interface_deactivate helpers that will be
used to activate and deactivate an interface in the new interface boot
sequence.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 29 Mar 2016 22:56:03 +0000 (18:56 -0400)]
greybus: interface: clean up ES3-bootroom-quirk handling
Clean up handling of the ES3-bootrom quirks by adding an interface
quirk-flags field that is set appropriately when we detect that the ES3
bootrom is running.
Note that we need to reserve the DME_DIS_UNIPRO_BOOT_STARTED and
DME_DIS_FALLBACK_UNIPRO_BOOT_STARTED status values for the ES3 bootrom,
which does not support any CPort features (unlike later boot stages).
Add a BOOTROM infix to the defines to make this more clear.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 29 Mar 2016 22:56:02 +0000 (18:56 -0400)]
greybus: interface: clean up and rename init-status helper
Clean up and rename the interface-init-status helper.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 29 Mar 2016 22:56:01 +0000 (18:56 -0400)]
greybus: interface: fix es2 boot-status mask
The ES2 boot status is stored in the least significant byte.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 29 Mar 2016 22:56:00 +0000 (18:56 -0400)]
greybus: interface: move boot-status clearing to interface enable
Reading and clearing the boot status of an interface is an interface
operation and belongs in the interface code.
As part of the reworked interface boot sequence, we also want to do this
when enabling (enumerating) a Greybus interface.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 29 Mar 2016 22:55:59 +0000 (18:55 -0400)]
greybus: svc: indent CPort flag defines properly
Use tabs to indent CPort-flag values.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 29 Mar 2016 22:55:58 +0000 (18:55 -0400)]
greybus: greybus_protocols: remove bogus comment about svc bundle
The SVC connection is special and does not belong to neither an
interface or a bundle.
Remove the unused SVC bundle-id define.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 29 Mar 2016 22:55:57 +0000 (18:55 -0400)]
greybus: svc: remove bogus interface-reset helper
Remove unused, bogus interface-reset helper.
The interface-reset operation is initiated by the SVC, not the AP.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 29 Mar 2016 22:55:56 +0000 (18:55 -0400)]
greybus: greybus_protocols: align DME-attribute values
Align the DME-attribute values in the protocol header.
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 [Wed, 30 Mar 2016 20:53:17 +0000 (16:53 -0400)]
greybus: core: fix two container-of macros
Fix two greybus container-of macros that used the pointer name for the
member.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Vaibhav Agarwal [Tue, 29 Mar 2016 18:01:43 +0000 (23:31 +0530)]
greybus: audio: fix to resolve multiple audio module playback issue
Cleanup APBridge sequence only in case of last module plugged-out.
For other modules, unregister cportid is sufficient.
Signed-off-by: Vaibhav Agarwal <vaibhav.agarwal@linaro.org>
Reviewed-by: Mark Greer <mark.greer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Vaibhav Agarwal [Tue, 29 Mar 2016 18:01:42 +0000 (23:31 +0530)]
greybus: audio: Add module specific driver
Use seperate driver to process GB Audio modules plugged-in.
It'll use helper function register_module to attach itself
to gbaudio-codec driver.
Signed-off-by: Vaibhav Agarwal <vaibhav.agarwal@linaro.org>
Reviewed-by: Mark Greer <mark.greer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Vaibhav Agarwal [Tue, 29 Mar 2016 18:01:41 +0000 (23:31 +0530)]
greybus: audio: Use single codec driver registration
We have single I2S port via APB1 for communication with all
audio modules. Thus, we should register single codec driver
and manage all individual audio modules internally within
this driver.
Signed-off-by: Vaibhav Agarwal <vaibhav.agarwal@linaro.org>
Reviewed-by: Mark Greer <mark.greer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Greg Kroah-Hartman [Tue, 22 Mar 2016 18:30:35 +0000 (14:30 -0400)]
greybus: convert drivers to use connection->private set/get
This converts all drivers to use the gb_connection_get_data() and
gb_connection_set_data() functions to make it a bit more explicit as to
what is going on.
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Greg Kroah-Hartman [Tue, 22 Mar 2016 18:30:16 +0000 (14:30 -0400)]
greybus: connection: add functions to get/set private data
Add gb_connection_get_data() and gb_connection_set_data() to get and set
the private data of a connection, instead of "open coding" it
everywhere.
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
David Lin [Sat, 19 Mar 2016 01:30:50 +0000 (18:30 -0700)]
greybus: greybus_trace: Fix broken greybus ftrace
Enabling greybus ftrace event causes null pointer access due to
that gb_message to SVC has no Bundle. Fix it by handling this in
the trace header.
Testing Done:
$ echo 1 > /d/tracing/event/greybus/enable
[002] ...1 54.504426: gb_message_send: greybus:1-svc op=0023 if_id=0 hd_id=0 l=0
[002] ...1 54.504461: gb_host_device_send: greybus:greybus1 if_id=0 l=8
Signed-off-by: David Lin <dtwlin@google.com>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Mark Greer [Thu, 17 Mar 2016 17:32:37 +0000 (10:32 -0700)]
greybus: audio: Use CSD instead of E2EFC for audio data connections
There is no reason to use end-to-end flow control for Greybus
audio data connections so disable it and enable Controlled
Segment Dropping (CSD).
Testing Done: Played music using audio modules on an EVT1.5.
CC: Vaibhav Agarwal <vaibhav.agarwal@linaro.org>
CC: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Gjorgji Rosikopulos [Mon, 14 Mar 2016 16:44:53 +0000 (18:44 +0200)]
greybus: camera: Improve module registration mechanism
Registering more then one module at same time was not
possible with previous implementation. Also unregistering
of the module was missing leading to many instability issues
when camera module is ejected when camera is still active.
Signed-off-by: Gjorgji Rosikopulos <grosikopulos@mm-sol.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Jacopo Mondi [Thu, 17 Mar 2016 10:02:03 +0000 (11:02 +0100)]
greybus: camera: Register capabilities operation
Register the greybus camera driver capabilities operation to the
ara_camera subdevice
Signed-off-by: Jacopo Mondi <jacopo.mondi@linaro.org>
Reviewed-by: Gjorgji Rosikopulos <grosikopulos@mm-sol.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Laurent Pinchart [Thu, 17 Mar 2016 10:02:02 +0000 (11:02 +0100)]
greybus: camera: Implement the capabilities operation
The operation queries the camera module for its capabilities. The
debugfs interface just prints a hex dump of the binary message.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo.mondi@linaro.org>
Reviewed-by: Gjorgji Rosikopulos <grosikopulos@mm-sol.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Sandeep Patil [Tue, 15 Mar 2016 19:28:38 +0000 (12:28 -0700)]
greybus: power_supply: reverse version check for new psy API
Reversing the kernel version check for new power supply APIs will
easily allow us to use older kernels with backported power supply APIs
by defining "CORE_OWNS_PSY_STRUCT" in power supply core header
Testing Done:
- Build tested with arche kernel with backported power supply APIs
- Build tested also with current arche kernel to make sure we build with
3.10 kernels
Signed-off-by: Sandeep Patil <sspatil@google.com>
Reviewed-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Axel Haslam [Fri, 11 Mar 2016 12:19:30 +0000 (13:19 +0100)]
greybus: loopback_test: handle SIGINT signal
Adding a default timeout may not be representative of every
usecase for gb_loopback. Also, tests may continue to run
on the driver in case of a timeout.
To avoid adding a default timeout, handle SIGINT so that when the user
presses ctrl-c the test are stoped. The user can still specify a timeout
value with the -O option.
Signed-off-by: Axel Haslam <ahaslam@baylibre.com>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Bryan O'Donoghue [Wed, 16 Mar 2016 11:29:59 +0000 (11:29 +0000)]
greybus: Ensure gb->mutex is held when adding timer
Currently in loopback on the async path we issue an operation and then add
a timer to time-out that operation should it fail to complete. Looking at a
backtrace given in its feasible op_async->pending can be true and
del_timer() can run before add_timer() has run. In the callback handler we
already hold gb->mutex. This patch fixes that potential race by ensuring we
hold gb->mutex both when we are adding and when we are removing the
relevant timer.
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reported-and-tested-by: Axel Haslam <ahaslam@baylibre.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Alexandre Bailon [Fri, 11 Mar 2016 16:23:37 +0000 (17:23 +0100)]
greybus: loopback: Fix broken loopback min values
Currently, when a loopback test completely fail,
loopback will return
4294967295 for every min value.
Return 0 instead of
4294967295 in such case.
Signed-off-by: Alexandre Bailon <abailon@baylibre.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Wed, 9 Mar 2016 11:20:46 +0000 (12:20 +0100)]
greybus: greybus_protocols: remove svc-eject timeout define
The SVC eject timeout is implementation specific and does not belong in
the protocol header so move it to the svc module.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Wed, 9 Mar 2016 11:20:45 +0000 (12:20 +0100)]
greybus: svc: print an error message on failed eject attempts
Print an error message when the SVC fails to eject an interface.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Jeffrey Carlyle <jcarlyle@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Wed, 9 Mar 2016 11:20:44 +0000 (12:20 +0100)]
greybus: svc: unexport eject helper
Do no export the interface-eject helper, which is only supposed to be
used by core.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Jeffrey Carlyle <jcarlyle@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Wed, 9 Mar 2016 11:20:43 +0000 (12:20 +0100)]
greybus: interface: separate disabling from removal
Separate interface disable from interface removal.
Disabling an interface means tearing down its control connection and
destroying (i.e. deregistering and releasing) its bundles, while
removing it means deregistering and releasing the interface itself.
This is needed to implement controlled module removal, where the module
interfaces are disabled before being physically ejected.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Jeffrey Carlyle <jcarlyle@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Wed, 9 Mar 2016 11:20:42 +0000 (12:20 +0100)]
greybus: interface: rename initialisation function
Rename the interface-initialisation function gb_interface_enable(),
which is more descriptive.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Jeffrey Carlyle <jcarlyle@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Wed, 9 Mar 2016 11:20:41 +0000 (12:20 +0100)]
greybus: interface: move interface-removal helper
Move helper to remove all interfaces of a host-device to the svc code
and call it when removing the svc device as this needs to be coordinated
with flushing the SVC work queue.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Jeffrey Carlyle <jcarlyle@google.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Wed, 9 Mar 2016 11:20:40 +0000 (12:20 +0100)]
greybus: interface: remove useless spinlock
Remove useless global interface spinlock that appeared to protect the
host-device interface list, but really did not as we are doing lock-less
look-ups by relying on the single-threaded SVC workqueue.
Document the locking assumptions.
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>
Johan Hovold [Wed, 9 Mar 2016 11:20:39 +0000 (12:20 +0100)]
greybus: interface: disable control connection on initialisation errors
Disable the control connection immediately on any errors during
interface initialisation as there's no need to keep it around for an
interface in an error state.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Jeffrey Carlyle <jcarlyle@google.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Wed, 9 Mar 2016 11:20:38 +0000 (12:20 +0100)]
greybus: svc: always register interfaces at hotplug
Always register interfaces at hotplug regardless of whether
initialisation succeeded or not.
Even if a module failed to initialise we want it to have a
representation while it is physically present.
Note that the vendor and product-string attribute will read as "(null)"
for now on an interface that failed (early) initialisation.
Also note that the switch route is kept until the interface is finally
removed also on initialisation errors.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Jeffrey Carlyle <jcarlyle@google.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Wed, 9 Mar 2016 11:20:37 +0000 (12:20 +0100)]
greybus: interface: free bundles on initialisation errors
Immediately free any created bundle structures on interface
initialisation errors.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Jeffrey Carlyle <jcarlyle@google.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Wed, 9 Mar 2016 11:20:36 +0000 (12:20 +0100)]
greybus: interface: separate initialisation and registration
Separate interface initialisation from registration of the interface and
its bundles.
This is a step towards registering also interfaces that failed to
initialise (e.g. a dummy interface).
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Jeffrey Carlyle <jcarlyle@google.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>