Commit Graph

1513 Commits

Author SHA1 Message Date
Rui Miguel Silva
c5d55fb359 greybus: svc: add interface eject operation
Add a new svc operation which will be used to send a request to eject a
given interface.

Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Reviewed-by: Jeffrey Carlyle <jcarlyle@google.com>
2016-01-12 17:00:12 -08:00
Rui Miguel Silva
adb57cff54 greybus: power_supply: fix check for configured supply
The correct check for if the power supply is ready to receive event is
wrong and it should check for the registered flag.

Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Reported-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-01-12 11:21:35 -08:00
Greg Kroah-Hartman
e527338104 greybus: APBridge: move APBridge request protocol to a common .h file
This moves all of the APBridge request protocol commands that are
currently used to a common .h file for everyone to be able to use them
in the future, where needed.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Tested-by: Mark Greer <mgreer@animalcreek.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
2016-01-12 11:12:25 -08:00
Greg Kroah-Hartman
ed4596e9b1 greybus: host: provide "generic" apbridge output calls
Provide a new function, gb_hd_output() to send data to the apbridge.
This is useful for the camera and audio drivers that need to do this
type of messaging.

The camera driver is converted to use this new function, the audio
driver can use it when it gets merged later.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Tested-by: Mark Greer <mgreer@animalcreek.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
2016-01-12 11:11:49 -08:00
Rui Miguel Silva
accad1ba7d greybus: power_supply: fix use after free of power supply
Individual power supply were being freed and checked using the wrong
pointers and at the wrong place, which would make several issues, like
used after free and so on.
Fix it by freeing all allocated memory after release individual power
supply.

Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Reported-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-01-11 19:18:14 -08:00
Rui Miguel Silva
f921fb139b greybus: power_supply: fix leak getting string properties
When fetching string properties, memory was being allocated and leaked
when it was not necessary to do so.

Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-01-11 19:18:14 -08:00
Rui Miguel Silva
d9eafd58e3 greybus: power_supply: fix error path at supplies setup
If something goes wrong at setup time for the supplies, we need to
release all the resources allocated already.

Call the supplies release function which will handle the correct
teardown of the supplies.

Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Reported-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-01-11 19:18:14 -08:00
Rui Miguel Silva
23f25ba6ed greybus: power_supply: free supplies at release
After freeing each individual power_supply, free the top controller, if
not it will leak memory at each module insert/remove.

Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Reported-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-01-11 19:18:14 -08:00
Rui Miguel Silva
ff85f723ca greybus: power_supply: fix unregister on error path
If setup fail the release for each supply needs to know the status at
unregister time. So, add the field to the structure, update it at setup
time and use it at release.

Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Reported-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-01-11 19:18:14 -08:00
Rui Miguel Silva
7ccac20d59 greybus: power_supply: do not release failed supply alloc
If allocation of memory for each supply fail, we should get out of
release any individual supply.

Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Reported-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-01-11 19:18:14 -08:00
Johan Hovold
e0d91ff127 greybus: power_supply: fix lock imbalance in init error path
Make sure to release the supplies_lock before returning on errors in
gb_power_supplies_setup().

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-01-11 19:16:12 -08:00
Vaibhav Hiremath
a463fc1533 greybus: arche-platform: Add wake/detect support along with handshaking with AP
Add wake_detect support to arche-platform driver which is responsible
for SVC control. This patch also adds code for handshaking between
AP <=> SVC. The sequence is,

1.   AP boots
     To keep compatibility between DB3 and EVT platform, SVC will be
     help in reset and AP driver would release it at appropriate time.
	 wake/detect pin (WD8A) = Low
	 reset (SVC/APB1/APB2) = Asserted (as per polarity)
2.   AP Driver gets inserted
  2.1. AP will deassert reset to SVC (following power on sequence)
  2.2. SVC allows 360 milliseconds to elapse after switch boots to work
       around bug described in ENG-330.
  2.3. AP asserts wake/detect pin (WD8A = HIGH)
3.   SVC detects assertion of wake/detect pin, and sends "wake out" signal to AP
4.   AP receives "wake out" signal, takes AP Bridges through their power
     on reset sequence as defined in the bridge ASIC reference manuals
5.   AP takes USB3613 through its power on reset sequence
6.   AP should enumerates AP Bridges

Note: ISR has been deliberately removed (not merged) as we are still
not sure how it will be used, in runtime usage context. Driver as such
doesn't do anything for runtime assert-n-deassert of reset to SVC/APB's,
it just simply offloads it to user by exporting required gpio's.
The exported gpio's are required for FW flashing from user space.
When it comes to usersace manipulated control sequence, user has to manage.

Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
Tested-by: Michael Scott <michael.scott@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-01-11 15:58:10 -08:00
Vaibhav Hiremath
f1e9cbd5a0 greybus: arche-apb-ctrl: deassert reset at the end of probe
Now the complete handshaking between AP<=>SVC would be
offloaded to parent driver (arche-platform) who is
responsible for SVC control, so the apb-ctrl driver can
just simply bring APB's out of reset during probe itself.

Along with deasserting reset, this patch renames the local fn
to exclusively use it for reset purpose.

Note that, driver is exporting reset gpio to
user, so user can still flash FW from prompt.

Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
Tested-by: Michael Scott <michael.scott@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-01-11 15:58:10 -08:00
Vaibhav Hiremath
33036178bf greybus: arche-apb-ctrl: Remove wake_detect gpio and related code
With TIME_SYNC functionality, assignment of wake/detect pin
will change,
  WD_8A => to bring APB's out of reset
  WD_8B => TIME_SYNC operation

So in order to support this, we can no longer keep wake_detect
gpio in apb-ctrl driver. So remove it.
In the subsequent patches, wake_detect support will be added
to parent SVC driver (arche-platform) who is responsible for SVC control.

Note that, this patch also removes ISR related code.
The APB state still is maintained, for future use.

Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
Tested-by: Michael Scott <michael.scott@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-01-11 15:58:10 -08:00
Viresh Kumar
3b858df01f greybus: arche: Remove unwanted headers and rearrange others
This removes few unwanted headers related to irq, interrupt, regulator,
spinlock, etc.

Also arrange the rest in alphabetical order to make it more readable.

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>
2016-01-11 15:58:01 -08:00
Viresh Kumar
40989cf3c1 greybus: arche-apb: Drop unnecessary checks
wake_detect_gpio and resetn_gpio are guaranteed to be valid in
apb_ctrl_cleanup() and irq-handler, no need to check for their validity.

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>
2016-01-11 15:58:01 -08:00
Viresh Kumar
d258432fb2 greybus: arche-apb: Do cleanup within apb_ctrl_init_seq() for error cases
Relying on apb_ctrl_cleanup() to do the cleanup for errors that occurred
within apb_ctrl_init_seq() isn't a very clean idea. Handle that
separately within apb_ctrl_init_seq().

This will clean apb_ctrl_cleanup() in later patches.

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>
2016-01-11 15:58:01 -08:00
Viresh Kumar
a7a794ec54 greybus: arche-apb: Don't use gpio after failing to request it
If devm_gpio_request() returns an error, we shouldn't try to set the
direction of the same gpio.

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>
2016-01-11 15:58:01 -08:00
Viresh Kumar
db0cff554a greybus: arche-apb: Properly use dev_err/info/warn
Use dev_err for errors after which we need to abort the currently
running routine and dev_warn for resource allocation failure, with which
we can continue to work.

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>
2016-01-11 15:58:01 -08:00
Viresh Kumar
dcf77c3979 greybus: arche-apb: NULL is a valid regulator
Since NULL could in theory be a valid regulator we ought to check for
IS_ERR() rather than for NULL. In practice this is unlikely to be an
issue but it's better for neatness.

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>
2016-01-11 15:58:01 -08:00
Viresh Kumar
bd62fa5e10 greybus: arche-apb: devm_regulator_get() doesn't return NULL
And so we don't need to check for it.

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>
2016-01-11 15:58:01 -08:00
Viresh Kumar
7541c1a1c6 greybus: arche-apb: Replace gpio_is_valid() with gpio < 0 checks
There can be no invalid values in the DTS. The actual pin numbers are
assigned by gpiolib when the gpio controller is registered.

And so a simple 'gpio < 0' is enough instead of gpio_is_valid() which
also checks for 'gpio < ARCH_NR_GPIOS'.

This will make the usage of of_get_named_gpio() similar with how it is
done in arche-platform driver.

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>
2016-01-11 15:58:01 -08:00
Viresh Kumar
977ff25075 greybus: arche-apb: platform data 'apb' is guaranteed to be valid
Platform data 'apb' is guaranteed to be valid in arche_apb_ctrl_remove()
and so no need to check it.

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>
2016-01-11 15:58:01 -08:00
Viresh Kumar
3b538c399c greybus: arche-apb: Spelling and whitespace fixes
- s/premits/permits
- Remove blank lines at the end of the file

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>
2016-01-11 15:58:01 -08:00
Viresh Kumar
f1f251b59b greybus: arche-platform: propagate errors returned by gpiolib
Propagate errors returned by of_get_named_gpio() instead of sending
-ENODEV.

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>
2016-01-11 15:58:01 -08:00
Viresh Kumar
140741ec63 greybus: arche-platform: svc_reset_gpio can't be invalid in arche_platform_cleanup()
svc_reset_gpio is guaranteed to be valid in arche_platform_cleanup. Drop
the useless check.

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>
2016-01-11 15:58:01 -08:00
Viresh Kumar
72a8c24b6d greybus: arche-platform: Put APB in reset if of_platform_populate() fails
The current implementation around of_platform_populate() is not so
great. On error, we first print an error message, followed by a success
message and finally we return an error.

And over that we don't undo what we did initially.

This patch puts the APB back into reset and create a separate error
path to make things clear.

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>
2016-01-11 15:58:01 -08:00
Viresh Kumar
8adf71d1b4 greybus: arche-platform: Export GPIOs after populating APBs
Populating APBs operation can potentially fail and it would be better if
we export the GPIOs towards then end of the routine, so that we don't
need to unexport them on error cases.

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>
2016-01-11 15:58:01 -08:00
Viresh Kumar
73658f2a28 greybus: arche-platform: arche_pdata is guaranteed to be valid
arche_pdata is guaranteed to be valid in arche_platform_remove().

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>
2016-01-11 15:58:01 -08:00
Eli Sennesh
fc41c2da44 greybus: firmware/bootrom: debug output from bootrom protocol
The bootrom protocol issues no dynamic debugging messages when it functions
successfully.  Use dev_dbg() to fix that by issuing kernel logs when firmware
download works.

Signed-off-by: Eli Sennesh <esennesh@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-01-09 00:44:20 -08:00
Johan Hovold
4e6e3f5cff greybus: connection: fix version-request error handling
Use the host device and connection name when logging errors as the
version-request helper must not assume that all connection have a
bundle.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-01-09 00:41:46 -08:00
Johan Hovold
b77f9328f2 greybus: core: fix greybus device matching
The bus code should only match bundle devices for now, and must not
assume all greybus devices are bundles.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-01-09 00:41:46 -08:00
Johan Hovold
3c48d1b8a5 greybus: core: fix greybus driver registration
Add missing bus type to driver structure when registering a greybus
driver.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-01-09 00:41:46 -08:00
Johan Hovold
13da9e11e9 greybus: core: add drvdata accessors
Add greybus driver-data accessors.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-01-09 00:41:46 -08:00
Jacopo Mondi
b787d413e0 greybus: camera: Add support for flags to stream_configure
Add support for the flags field of the stream configure request that was
recently added to the camera protocol and update the debugfs arguments
parsing accordingly. The stream configure response layout is also
updated to the latest protocol specification.

Signed-off-by: Jacopo Mondi <jacopo.mondi@linaro.org>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-01-08 22:47:07 -08:00
Laurent Pinchart
aab4a1a368 greybus: svc: Replace link config hack with standard operation
The link config operation was a hack only designed to fulfill the camera
driver's needs. Now that a standard operation is defined for the same
purpose, implement it and remove the hack.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-01-08 22:14:08 -08:00
Vaibhav Hiremath
e49268cc33 greybus: arche-apb-ctrl: Do not bring APB out of reset in probe
With addition of handshaking between AP <=> SVC, driver
brings out APB out of reset only on reception of WAKE_MOD
signal from SVC. So remove the deassertion from probe.

Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-01-06 20:03:18 -08:00
Vaibhav Hiremath
ae0bf3a628 greybus: arche-apb-ctrl: Set wake_detect gpio to low initially
This patch enables handshaking of AP and SVC using wake_detect
gpio (WD_8A and WD_8B).
Note that WAKE_DETECT polarity is active-high, so in order to
enable handshaking between AP <=> SVC, we need to set wake_detect
gpio to low initially, so that driver can send WAKE_DET signal
(active-high) to SVC and then SVC can send back WAKE_MOD signal
(active-low).
And on reception of WAKE_MOD signal, driver would bring respective
APB out of reset.

  WD_8A => APB1
  WD_8B => APB2

Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-01-06 20:03:18 -08:00
Vaibhav Hiremath
6da86df3a4 greybus: arche-platform: Export gpio (reset & sys_boot) to user
In order to allow user to flash the firmware to,

SVC:
user need to assert the reset first, set sysboot pin and
deassert reset. And then issue a flashing command.

And APB:
User need to assert the reset first, and then issue flashing
command.

So this patch exports the gpio's to user.

Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-01-06 20:00:35 -08:00
Laurent Pinchart
1f67ee5c04 greybus: camera: Raise the CSI-2 bandwidth
Use 4 lanes at 960MHz to support camera modules requiring higher
bandwidths until we implement support for dynamic bandwidth calculation.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2016-01-06 17:43:09 -08:00
Greg Kroah-Hartman
1e5dd1f827 greybus: arche-platform: merge arche-apb-ctrl and arche-platform
No need to have two separate arche platform drivers, that's just crazy,
so merge them both together to be only one kernel module.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Reviewed-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
Tested-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
2016-01-04 16:05:25 -08:00
Vaibhav Hiremath
bc142bbb4c greybus: arche_platform: Remove child's platform device as part of _remove() fn
It seems we need to delete platform_dev of all childs explicitly,
in _remove() fn callback of parent driver.
There were some discussions about having of_platform_unpopulate(),
but it never made it to mainline.

https://lkml.org/lkml/2013/7/19/615

There are some drivers which are removing platform_dev explicitly,
as done in this patch.

Note that, without this, multiple insmod-rmmod won't work, as I see
driver probe gets invoked twice and leads to failure of probe.

Signed-off-by: Vaibhav Hiremath <hiremath_vaibhav@projectara.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-12-30 13:18:32 -08:00
Johan Hovold
41c2395855 greybus: camera: destroy data connection on link-config errors
Make sure to tear down the data connection also on failure to configure
the link by setting the data_connected flag immediately after creating
the connection.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-12-30 13:16:06 -08:00
Johan Hovold
b9f71bc854 greybus: camera: fix memory leak in capture-request handler
Fix memory leak in capture-request handler by making sure to release the
operation request buffer after sending the request.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-12-30 13:16:06 -08:00
Johan Hovold
12c8b0dcc8 greybus: camera: fix memory leak in configure-streams error path
Fix memory leak in configure-streams error path by making sure to
release the operation buffers before returning.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-12-30 13:16:06 -08:00
Viresh Kumar
d39bf704ac greybus: interface: Fetch and expose version of interface's firmware
The version of the currently running firmware on the module is useful
for userspace as it can be used to find if an update is available or
not. This patch fetches interface's version with a new control operation
and exposes the same in userspace.

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>
2015-12-30 13:13:04 -08:00
Viresh Kumar
57c6bcc635 greybus: interface: Receive serial-number on hotplug event
Two exactly same modules can be uniquely identified using module's
serial-number. This patch updates the interface hotplug event to also
receive the serial-number of the module.

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>
2015-12-30 13:13:04 -08:00
Viresh Kumar
63d742b68a greybus: svc: Set interface's hotplug attributes before using them
gb_svc_read_and_clear_module_boot_status() relies on the values of
ddbl1_manufacturer_id and ddbl1_product_id to distinguish between ES2
and ES3 chips, but those values are set for the interface structure only
after gb_svc_read_and_clear_module_boot_status() is called.

This makes ES2 module to fail with following errors:

greybus 1-2: Module not ready yet
greybus 1-svc: failed to clear boot status of interface 2: -19

Fix this by setting these values before calling
gb_svc_read_and_clear_module_boot_status().

Fixes: 51f1dc421b1f ("firmware and svc: detect the difference between ES2 and ES3 chips")
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>
2015-12-23 13:00:28 -08:00
Bryan O'Donoghue
72e53aed1d greybus: svc: Change GB_SVC_TYPE_LINK_CONFIG to 0x10
The greybus specification reserves SVC type 0x0d-0x0f for timesync.
53124d73 ('svc: Add support for the link config operation') allocated the
next available type 0x0d which conflicts with the specification. Change the
type to 0x10 to ensure kernel and specification agree.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-12-23 13:00:28 -08:00
Viresh Kumar
5b22521c89 greybus: control: Use Macro's instead of direct values for major/minor
We already have macro's defined for this, use them.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-12-22 18:20:39 -08:00