Vaibhav Agarwal [Wed, 13 Jan 2016 21:07:54 +0000 (14:07 -0700)]
greybus: audio: cleanup unnecessary dev_err messages
Replace unnecessary dev_err msg with dev_dbg.
Same were added during development to trace topology
parser progress.
Signed-off-by: Vaibhav Agarwal <vaibhav.agarwal@linaro.org>
Signed-off-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Vaibhav Agarwal [Wed, 13 Jan 2016 21:07:53 +0000 (14:07 -0700)]
greybus: audio: Report uevent on GB codec module insertion/removal
GB-Audio-manager module is currently used to report uevent
to above layer in response to any codec module inserted or
removed.
Signed-off-by: Vaibhav Agarwal <vaibhav.agarwal@linaro.org>
Signed-off-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Vaibhav Agarwal [Wed, 13 Jan 2016 21:07:52 +0000 (14:07 -0700)]
greybus: audio: Add GB Audio class protocol functionality in GB codec DAI ops
GB Audio class driver provides APIs to configure GB codec module.
This patch adds relevant operations in DAI ops callback functions to
configure codec module as per DAPM sequence triggered.
Signed-off-by: Vaibhav Agarwal <vaibhav.agarwal@linaro.org>
Signed-off-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Vaibhav Agarwal [Wed, 13 Jan 2016 21:07:51 +0000 (14:07 -0700)]
greybus: audio: Add topology parser for GB codec
For each GB codec module inserted, DAPM widgets, kcontrols, routes
and DAIs can be fetched through greybus in a binary chunk and parsed
locally to create & populate DAPM graph for the specific module.
It is required by each codec module to populate a minimum set of
kcontrols with fixed names to support basic audio usecase.
To support advanced features of codec module, the same can be polpulated
with existing topology parser. However, to use them for different usecase
separate mechanism (may be via MSP) is required to inform userspace about
their configuration value & enable/disable sequence.
ToDos:
Currently, support for enumerated kcontrol/dapm control is hardcoded.
Need to add complete logic within the parser.
Signed-off-by: Vaibhav Agarwal <vaibhav.agarwal@linaro.org>
Signed-off-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Vaibhav Agarwal [Wed, 13 Jan 2016 21:07:50 +0000 (14:07 -0700)]
greybus: audio: Use greybus connection device for codec registration
Use GB Audio mgmt, data protocol ids to register codec module with
GB protocol. And in response to mgmt->connection_init(), register
GB codec driver with ASoC.
Now, using msm8994 machine to register DAI link dynamically on
codec insertion.
ToDos:
- snd_soc_register_codec() uses driver->name to identify device id.
However, for GB device, .driver{} is not yet populated by GB core.
Thus, defining dummy structure within codec driver. This should
come from GB core itself.
Even existing .driver{} may cause problem in case of multiple
modules inserted or inserted at a different slot.
- Fix logic for gbcodec->dais & gbcodec->dailinks. Current
implementation contains some hard coded data with assumption of
count=1.
- Evaluate definition of 'gbaudio_dailink.be_id' in case of multiple
DAI links.
Signed-off-by: Vaibhav Agarwal <vaibhav.agarwal@linaro.org>
Signed-off-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Greg Kroah-Hartman [Thu, 14 Jan 2016 00:18:36 +0000 (16:18 -0800)]
greybus: Makefile: fix up build test for gb-audio-codec.ko
We really only want to build the module if the config is set, not all
the time like the current code does.
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Vaibhav Agarwal [Wed, 13 Jan 2016 21:07:49 +0000 (14:07 -0700)]
greybus: audio: Build audio module conditionally
Added CONFIG_XXX flag check before compiling audio module.
Once we add dynamic DAI link registration from audio driver,
this check wil be required to avoid compilation failures with
other kernel revisions.
Also, renamed header file to better align with .c file name.
Signed-off-by: Vaibhav Agarwal <vaibhav.agarwal@linaro.org>
Signed-off-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Svetlin Ankov [Wed, 13 Jan 2016 21:07:48 +0000 (14:07 -0700)]
greybus: audio: Add Audio Manager
This is a simple module that keeps a list of connected GB audio
modules.
Whenever a device is attached, an appropriate uevent is sent to
userspace:
UDEV [4941.803215] add /kernel/gb_audio_manager/0 (gb_audio_manager)
ACTION=add
CPORT=99
DEVICES=0x10
DEVPATH=/kernel/gb_audio_manager/0
NAME=naim
PID=64
SEQNUM=1828
SLOT=2
SUBSYSTEM=gb_audio_manager
USEC_INITIALIZED=802416
VID=128
And whenever removed:
UDEV [4941.836588] remove /kernel/gb_audio_manager/0 (gb_audio_manager)
ACTION=remove
DEVPATH=/kernel/gb_audio_manager/0
SEQNUM=1833
SUBSYSTEM=gb_audio_manager
USEC_INITIALIZED=835681
The API consists of functions for adding, removing and inspecting
added device module descriptions (struct gb_audio_module):
int gb_audio_manager_add(struct gb_audio_module_descriptor *desc);
int gb_audio_manager_remove(int id);
int gb_audio_manager_remove_all(void);
struct gb_audio_module* gb_audio_manager_get_module(int id);
void gb_audio_manager_put_module(struct gb_audio_module *module);
int gb_audio_manager_dump_module(int id);
void gb_audio_manager_dump_all(void);
Devices can be inspected through sysfs in /sys/kernel/gb_audio_manager/{id}/*
If GB_AUDIO_MANAGER_SYSFS is exported as 'true', managing devices can be done
via the SYSFS as well. For instance:
echo name=naim slot=2 vid=128 pid=64 cport=99 devices=0x10 > /sys/kernel/gb_audio_manager/add
echo all > /sys/kernel/gb_audio_manager/dump
echo 2 > /sys/kernel/gb_audio_manager/dump
echo 2 > /sys/kernel/gb_audio_manager/remove
Signed-off-by: Svetlin Ankov <ankov_svetlin@projectara.com>
Signed-off-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Mark Greer [Wed, 13 Jan 2016 21:07:47 +0000 (14:07 -0700)]
greybus: audio: Add direct audio streaming control for APBridgeA
The latest audio architecture does not stream audio data over the
USB link between the AP and APBridgeA. Instead, audio data is
streamed directly over the I2S link between the two.
To support the Greybus audio driver in setting up the I2S port and
controling packeting/depacketizing of audio data to/from Greybus
audio messages, define a set of commands and their parameters.
These commands and parameters will be placed into a request and sent
over the USB control channel to APBridgeA. A corresponding driver
on APBridgeA will receive and process the requests.
Signed-off-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Mark Greer [Wed, 13 Jan 2016 21:07:46 +0000 (14:07 -0700)]
greybus: audio: Add Greybus Audio Device Class Protocol helper routines
Add helper routines to make communicating with audio modules easier.
Signed-off-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Mark Greer [Wed, 13 Jan 2016 21:07:45 +0000 (14:07 -0700)]
greybus: audio: Add Audio Device Class Protocol definitions
Add the macros and structures for the Greybus Audio Device
Class Protocol.
Signed-off-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Mark Greer [Wed, 13 Jan 2016 21:07:44 +0000 (14:07 -0700)]
greybus: audio: Use underscore in file name
For consistency with most other files in the Greybus repository,
change 'audio-codec.c' to use an underscore instead of a hyphen
in its name.
Signed-off-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Vaibhav Hiremath [Wed, 13 Jan 2016 20:36:47 +0000 (02:06 +0530)]
greybus: arche-apb-ctrl: Enable the clocks after regulator enable
It makes more sense to enable the clock after power is enabled
to the device, so move clock enable code after regulator_enable
and setting up BOOT_RET pin.
Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
Tested-by: Michael Scott <michael.scott@linaro.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@linaro.org>
Tested-by: Laurent Pinchart <laurent.pinchart@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Gjorgji Rosikopulos [Wed, 13 Jan 2016 19:52:38 +0000 (21:52 +0200)]
greybus: camera: HACK: Register gb camera to the HOST camera
This change implements gb camera interface and register
gb camera to the HOST driver.
This implementation need to be reworked after the demo.
Tested with db3 with two camera modules.
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>
Gjorgji Rosikopulos [Wed, 13 Jan 2016 19:52:37 +0000 (21:52 +0200)]
greybus: camera: HACK: Export GB camera interface
Gb camera need to communicate with HOST driver.
as temporary solution there will be shared header
between gb camera HOST camera.
Both need to be in sync since gb drivers are compiled
out of the kernel tree.
Gb camera register camera operation functions when is created.
Currently unregister is not supported.
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>
Rui Miguel Silva [Tue, 12 Jan 2016 14:35:49 +0000 (14:35 +0000)]
greybus: lights: remove sync operation and work queue
In kernel v4.5 there is a change in LED api, which remove the need for
individual work queue and rename the set_sync operation to set_blocking.
This patch add the handling of this case and avoid compilation failure
for this kernel versions.
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Rui Miguel Silva [Tue, 12 Jan 2016 14:35:48 +0000 (14:35 +0000)]
greybus: kernel_ver: add handle for lights in 4.5
In v4.5 the LED API is changed related to the set brightness
operations, set_sync is removed and the workqueue handling is now done
by leds core, so no need for individual drivers to have one.
This will be done by removing the SET_SYNC macro and add a new
SET_BLOCKING.
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Greg Kroah-Hartman [Tue, 12 Jan 2016 03:24:54 +0000 (19:24 -0800)]
greybus: uevent: add GREYBUS_ID to uevent
This adds the GREYBUS_ID environment variable to all interface uevents
to let userspace know the vendor/product id of the module interface that
has been added or removed from the system.
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Rui Miguel Silva [Wed, 13 Jan 2016 14:39:55 +0000 (14:39 +0000)]
greybus: makefile: add requirement for CONFIG_INPUT
To support key events coming from the svc (ara key) it is needed to add
the input core as an required config option.
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Fri, 8 Jan 2016 19:13:46 +0000 (20:13 +0100)]
greybus: connection: refactor connection enable and disable
Refactor connection enable and disable.
This is a step towards removing the legacy-protocol handling from core.
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 [Fri, 8 Jan 2016 19:13:45 +0000 (20:13 +0100)]
greybus: connection: fix connection-state handling
Set connection state to ENABLE before sending the control connected
message, and set state DISABLE after sending the control disconnected
event.
Remove the now unused ERROR connection state.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Rui Miguel Silva [Mon, 11 Jan 2016 13:46:33 +0000 (13:46 +0000)]
greybus: svc: add intf_eject attribute
Add a new write-only svc attribute to send an eject request to the svc
giving the interface number.
So, doing:
echo 3 > /sys/bus/greybus/devices/1-svc/intf_eject
will force eject the module on interface 3 (module slot 1 on EVT1).
This can take some seconds as the pulse width for module release is
large.
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>
Rui Miguel Silva [Mon, 11 Jan 2016 13:46:31 +0000 (13:46 +0000)]
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>
Rui Miguel Silva [Tue, 12 Jan 2016 14:38:21 +0000 (14:38 +0000)]
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>
Greg Kroah-Hartman [Thu, 31 Dec 2015 19:14:33 +0000 (11:14 -0800)]
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>
Greg Kroah-Hartman [Wed, 23 Dec 2015 02:21:51 +0000 (18:21 -0800)]
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>
Rui Miguel Silva [Fri, 8 Jan 2016 13:53:47 +0000 (13:53 +0000)]
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>
Rui Miguel Silva [Fri, 8 Jan 2016 13:53:46 +0000 (13:53 +0000)]
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>
Rui Miguel Silva [Fri, 8 Jan 2016 13:53:45 +0000 (13:53 +0000)]
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>
Rui Miguel Silva [Fri, 8 Jan 2016 13:53:44 +0000 (13:53 +0000)]
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>
Rui Miguel Silva [Fri, 8 Jan 2016 13:53:43 +0000 (13:53 +0000)]
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>
Rui Miguel Silva [Fri, 8 Jan 2016 13:53:42 +0000 (13:53 +0000)]
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>
Johan Hovold [Thu, 7 Jan 2016 11:28:29 +0000 (12:28 +0100)]
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>
Vaibhav Hiremath [Mon, 11 Jan 2016 12:11:24 +0000 (17:41 +0530)]
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>
Vaibhav Hiremath [Mon, 11 Jan 2016 12:11:23 +0000 (17:41 +0530)]
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>
Vaibhav Hiremath [Mon, 11 Jan 2016 12:11:22 +0000 (17:41 +0530)]
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>
Viresh Kumar [Mon, 11 Jan 2016 05:59:17 +0000 (11:29 +0530)]
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>
Viresh Kumar [Mon, 11 Jan 2016 05:59:16 +0000 (11:29 +0530)]
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>
Viresh Kumar [Mon, 11 Jan 2016 05:59:15 +0000 (11:29 +0530)]
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>
Viresh Kumar [Mon, 11 Jan 2016 05:59:14 +0000 (11:29 +0530)]
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>
Viresh Kumar [Mon, 11 Jan 2016 05:59:13 +0000 (11:29 +0530)]
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>
Viresh Kumar [Mon, 11 Jan 2016 05:59:12 +0000 (11:29 +0530)]
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>
Viresh Kumar [Mon, 11 Jan 2016 05:59:11 +0000 (11:29 +0530)]
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>
Viresh Kumar [Mon, 11 Jan 2016 05:59:10 +0000 (11:29 +0530)]
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>
Viresh Kumar [Mon, 11 Jan 2016 05:59:09 +0000 (11:29 +0530)]
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>
Viresh Kumar [Mon, 11 Jan 2016 05:59:08 +0000 (11:29 +0530)]
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>
Viresh Kumar [Mon, 11 Jan 2016 05:59:07 +0000 (11:29 +0530)]
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>
Viresh Kumar [Mon, 11 Jan 2016 05:59:06 +0000 (11:29 +0530)]
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>
Viresh Kumar [Mon, 11 Jan 2016 05:59:05 +0000 (11:29 +0530)]
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>
Viresh Kumar [Mon, 11 Jan 2016 05:59:04 +0000 (11:29 +0530)]
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>
Viresh Kumar [Mon, 11 Jan 2016 05:59:03 +0000 (11:29 +0530)]
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>
Eli Sennesh [Fri, 8 Jan 2016 19:11:29 +0000 (14:11 -0500)]
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>
Johan Hovold [Fri, 8 Jan 2016 19:13:40 +0000 (20:13 +0100)]
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>
Johan Hovold [Fri, 8 Jan 2016 19:13:41 +0000 (20:13 +0100)]
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>
Johan Hovold [Fri, 8 Jan 2016 19:13:42 +0000 (20:13 +0100)]
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>
Johan Hovold [Fri, 8 Jan 2016 19:13:43 +0000 (20:13 +0100)]
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>
Jacopo Mondi [Fri, 8 Jan 2016 16:13:20 +0000 (18:13 +0200)]
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>
Laurent Pinchart [Wed, 6 Jan 2016 14:16:46 +0000 (16:16 +0200)]
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>
Vaibhav Hiremath [Wed, 6 Jan 2016 18:16:46 +0000 (23:46 +0530)]
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>
Vaibhav Hiremath [Wed, 6 Jan 2016 18:16:45 +0000 (23:46 +0530)]
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>
Vaibhav Hiremath [Wed, 6 Jan 2016 06:01:20 +0000 (11:31 +0530)]
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>
Laurent Pinchart [Thu, 31 Dec 2015 02:20:56 +0000 (04:20 +0200)]
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>
Greg Kroah-Hartman [Wed, 30 Dec 2015 21:38:33 +0000 (13:38 -0800)]
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>
Vaibhav Hiremath [Mon, 28 Dec 2015 14:36:32 +0000 (20:06 +0530)]
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>
Johan Hovold [Wed, 30 Dec 2015 10:23:51 +0000 (11:23 +0100)]
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>
Johan Hovold [Wed, 30 Dec 2015 10:08:01 +0000 (11:08 +0100)]
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>
Johan Hovold [Wed, 30 Dec 2015 10:08:00 +0000 (11:08 +0100)]
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>
Viresh Kumar [Mon, 28 Dec 2015 06:29:01 +0000 (11:59 +0530)]
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>
Viresh Kumar [Mon, 28 Dec 2015 06:29:00 +0000 (11:59 +0530)]
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>
Viresh Kumar [Wed, 23 Dec 2015 03:37:42 +0000 (09:07 +0530)]
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>
Bryan O'Donoghue [Wed, 23 Dec 2015 16:48:59 +0000 (16:48 +0000)]
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>
Viresh Kumar [Wed, 16 Dec 2015 10:59:29 +0000 (16:29 +0530)]
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>
Vaibhav Hiremath [Wed, 16 Dec 2015 10:59:20 +0000 (16:29 +0530)]
greybus: arche-apb-ctrl: Assert reset to APB at the end of probe
Until we have proper handshake mechanism implemented with SVC
assert reset to APB at the end of probe.
We are safe here to do that, as SVC always enables clock to APB's
currently.
And also from EVT1 perspective, we should be good, as clock control
signals are now moved to AP.
Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Vaibhav Hiremath [Wed, 16 Dec 2015 10:59:19 +0000 (16:29 +0530)]
greybus: arche-apb-ctrl: Add APB control driver
It was messy to integrate both SVC, APB (and any other arche
platform specific control) into one single driver. Especially
due to cross-dependency.
AP first needs to bringup SVC, as SVC should enable clock to APB.
APB should come up before HUB, as due to some reason HUB wouldn't
enumerate APB's is APB comes up later.
And on top of that we should have clean picture of hardware description
in DT file.
So this patch introduces APB control driver. Mostly copied from original
arche-platform driver + fixed boot sequence.
Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Vaibhav Hiremath [Wed, 16 Dec 2015 10:59:18 +0000 (16:29 +0530)]
greybus: arche-platform: Rename db3-platform to arche-platform
With multiple platforms getting rolled into ara,
db3 name is confusing. And this driver is applicable
to all arche platforms, so make sense to rename it to
arche-platform.c. Also rename all internal functions
accordingly.
Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Vaibhav Hiremath [Wed, 16 Dec 2015 10:59:17 +0000 (16:29 +0530)]
greybus: db3(arche)-platform: Remove all APB control code
Current db3(arche)-platform driver was only handling APB control signals,
which is where it all started. But now with completion of DB3/EVT1 bringup
we know that platform driver is more than APB control.
We have to bring SVC up before APB, as SVC supposed to enable
clock to APB's. Note that, in EVT1, AP will have direct control over
APB's clock.
Then we have dependency between APB and USB HUB, where, APB should be
brought up before USB HUB (note that this needs to rootcaused).
This patch cleanup the db3(arche)-platform driver to remove all APB control
code. The idea here is create another driver for APB control
(arche-apb-ctrl.c), which will deal with APB.
And this driver will have generic/common platform specific support,
currently manages SVC resources.
This patch also takes in all the changes from factory branch, discovered
during bringup.
Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Eli Sennesh [Tue, 22 Dec 2015 22:26:57 +0000 (17:26 -0500)]
greybus: firmware and svc: detect the difference between ES2 and ES3 chips
The Greybus SVC code needs to read and clear the module boot status upon
hotplug; this requires reading two different attributes depending on whether
we're running on ES2 or ES3. On Marti Bolivar's (mbolivar@leaflabs.com)
advice, we detect ES2 using the unique ES2_DDBL1_MFR_ID and ES2_DDBL1_PROD_ID
for ES2 hardware, and treat all other chips as ES3 appropriately. This patch
detects the difference and adds the appropriate definitions for ES3 hardware.
Signed-off-by: Eli Sennesh <esennesh@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Viresh Kumar [Tue, 22 Dec 2015 16:34:34 +0000 (22:04 +0530)]
greybus: interface: Expose DDBL1 manufacturing and production id in sysfs
These ids are already fetched from the SVC, but were never exposed to
sysfs. Userspace may be interested in using these values and hence these
must be exposed to it.
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 [Tue, 22 Dec 2015 16:34:33 +0000 (22:04 +0530)]
greybus: interface: Prefix DDBL1 attributes with ddbl1_ instead of unipro_
The Device descriptor block Level 1 (DDBL1) attributes are specified by
the MIPI standard and prefixing them with 'unipro_' isn't the best thing
to do. They should be prefixed with DDBL1 instead.
To make it more readable/clear:
- rename macros and variable by prefixing them with ddbl1_.
- write full names for mfg and prod ids as manufacturer and product ids.
- replace mfg (manufacturing) with mfr (manufacturer)
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>
Johan Hovold [Tue, 22 Dec 2015 16:55:53 +0000 (17:55 +0100)]
greybus: es2: clean up csi-config request
Use __packed and __u8 for csi-config request that is going out on the
wire.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Johan Hovold [Tue, 22 Dec 2015 16:55:52 +0000 (17:55 +0100)]
greybus: svc: drop copy-pasted function header
Drop function header that was copied but never updated or removed when
adding gb_svc_link_config.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Viresh Kumar [Fri, 18 Dec 2015 09:34:27 +0000 (15:04 +0530)]
greybus: interface: Prefix hexadecimal values with '0x'
In order to clearly specify the base of values printed using sysfs
files, prefix hexadecimal values with '0x'. Also force the minimum width
(to be printed) for hexadecimal values to their sizes.
To make it more readable make the second argument to gb_interface_attr()
a proper string.
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>
Laurent Pinchart [Tue, 22 Dec 2015 01:00:37 +0000 (03:00 +0200)]
greybus: es2: Don't use stack memory as USB request data
USB request data must be DMAble memory, allocate it with kzalloc()
instead of declaring it as a local variable.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Laurent Pinchart [Tue, 22 Dec 2015 01:00:36 +0000 (03:00 +0200)]
greybus: es2: Fix endian conversion issues
Convert all USB request fields between CPU and protocol endianness.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Laurent Pinchart [Tue, 22 Dec 2015 01:00:35 +0000 (03:00 +0200)]
greybus: camera: Fix remaining endian conversion issues
Convert all Greybus operation fields between CPU and protocol
endianness.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Laurent Pinchart [Sat, 19 Dec 2015 06:38:56 +0000 (08:38 +0200)]
greybus: camera: Set link power mode to HS-G2 with 2 lanes
HS-G1 isn't enough for all camera modules. The gear will need to be
computed dynamically, but for now hardcode it to 2 with 2 lanes.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Laurent Pinchart [Fri, 18 Dec 2015 19:23:25 +0000 (21:23 +0200)]
greybus: camera: Configure the bridge CSI transmitter
Start or stop the CSI transmitter when configuring and unconfiguring the
streams respectively. The CSI configuration parameters are currently
hardcoded.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Laurent Pinchart [Fri, 18 Dec 2015 19:23:24 +0000 (21:23 +0200)]
greybus: es2: Add support for CSI transmitter configuration
Export a function from the es2 driver to configure the CSI transmitter
through the corresponding USB vendor control request.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Laurent Pinchart [Fri, 18 Dec 2015 19:23:23 +0000 (21:23 +0200)]
greybus: camera: Configure link speed for the data connection
Hardcode the speed to HS-G1 for now.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Laurent Pinchart [Fri, 18 Dec 2015 19:23:22 +0000 (21:23 +0200)]
greybus: svc: Add support for the link config operation
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Laurent Pinchart [Fri, 18 Dec 2015 19:23:21 +0000 (21:23 +0200)]
greybus: camera: Fix endian conversion issues
Convert all Greybus operation fields between CPU and protocol
endianness.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reported-by: Rui Silva <rui.silva@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Greg Kroah-Hartman [Fri, 18 Dec 2015 06:32:03 +0000 (22:32 -0800)]
greybus: tools: don't always build them.
This breaks the kernel-only build as it can't find any userspace headers
with the cross-compiler, so don't build the tools by "default" unless
you ask for them.
Reported-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Greg Kroah-Hartman [Tue, 15 Dec 2015 21:57:22 +0000 (13:57 -0800)]
greybus: loopback_test: null terminate the dict structure
This lets us test for any number of entries, no need to do an
ARRAY_SIZE-type comparison. This fixes a build warning of comparing
signed/unsigned values.)
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Greg Kroah-Hartman [Tue, 15 Dec 2015 21:55:05 +0000 (13:55 -0800)]
greybus: loopback_test: fix warning about signed/unsigned comparison
We read an int, don't treat it as a unsigned value, especially when
comparing it to a signed value.
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Greg Kroah-Hartman [Tue, 15 Dec 2015 20:46:22 +0000 (12:46 -0800)]
greybus: tools: Add tools directory to greybus repo and add loopback
Move the loopback test to the greybus main repo, as we will be adding
more tests over time and it doesn't need to be burried in the gbsim
repo.
This moves the latest version from gbsim to this repo and fixes up the
Makefile to be a bit more "smart" when building the code.
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Rui Miguel Silva [Thu, 17 Dec 2015 19:56:23 +0000 (19:56 +0000)]
greybus: camera: fix data types of operations
In some operations definitions it was introduce some new fields with
the wrong data types, u8, instead of __u8. And because of this gbsim
build was broken.
Fixes:
3a1d7aa15bf6 ("greybus: Add camera protocol definition")
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Rui Miguel Silva [Tue, 15 Dec 2015 19:09:57 +0000 (19:09 +0000)]
greybus: spi: fix and cleanup spi devices handling
Cleanup and remove the spi_devices from the greybus spi handling as they
are not needed and they were completely misused.
With this the gb_spi_init does not make sense to exist anymore, so just
remove it and handle the master config directly from connection init.
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Reported-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Rui Miguel Silva [Tue, 15 Dec 2015 19:09:56 +0000 (19:09 +0000)]
greybus: spi: unregister master on device add fail
When registering devices if any of it fail, just cleanup and release spi
master.
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Reported-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Rui Miguel Silva [Tue, 15 Dec 2015 19:09:55 +0000 (19:09 +0000)]
greybus: spi: validate spi master register
Check for error in registering spi master, even though the current code
will fail a little more ahead when trying to register devices in the
master.
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Reported-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Rui Miguel Silva [Tue, 15 Dec 2015 19:09:54 +0000 (19:09 +0000)]
greybus: spi: rename label to undo operation
Rename error path label to a more significant name related to the free
operation done.
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Reported-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>