- 07 Jun, 2016 3 commits
-
-
Bryan O'Donoghue authored
This patch adds the core timesync functionality. 0. arche-platform.c/arche-apb-ctrl.c Modifies the platform layer to hook the incoming TIME_SYNC signal up to the timesync strobe IRQ handler. If the arche-platform driver can't satisfy the request for the wake-detect line, it will return -EAGAIN and the calling work-queue must reschedule the attempt to get exclusive access to the wake-detect pin logic. A private data field is added to the arche-platform driver to enable passing of a timesync pointer to the ISR responsible for synchronizing time. 1. timesync.c A new file added which contains all of the logic associated with sending greybus commands to SVC, APBx or Interfaces to enable, disable and disseminate timing information. 2. timesync_platform.c Any platform/arch specific code goes into timesync_platform.c. Originally the idea was to keep the x86 and ARM arch dependencies in a timesync_platform_arch.c file - however with further refinement that's currently not necessary however just-in-case it becomes necessary to resuscitate arch or platform specific methods for accessing timer resources that access shouldn't be part of the core timesync.c logic and so for the moment we access these timer resources through a thin access layer in timesync_platform.c. Expect this to go away long term ideally. Signed-off-by:
Bryan O'Donoghue <bryan.odonoghue@linaro.org> Acked-by:
Alex Elder <elder@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Vaibhav Agarwal authored
Reporting DISCONNECT event immediately on module removal causes race condition while re-populating mixer controls by above HAL. The original intent was to avoid any (invalid) mixer control modification request from above layer. Ideally, it should report 'MODULE_NOT_READY' on module plug-out and DISCONNECT after resource cleanup. This would involve changes in GB Audio manager and HAL layer. Since we already have a plan to remove GB Audio manager, I'm making this change in GB codec driver to avoid any race condition. Also, codec driver already ensures mixer control modifcations for disconnected modules are not triggered to AP Bridge audio FW & reported invalid. 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 authored
Added warning message in find_gb_module(). This will help to identify invalid mixer control/widget modification triggered from above layer. 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>
-
- 04 Jun, 2016 11 commits
-
-
Alex Elder authored
The original message trace events were defined long before the recent tracing updates. It records information that's not really directly related to a message. Change the information recorded and reported for message events to just be the content of the message header. Signed-off-by:
Alex Elder <elder@linaro.org> Reviewed-by:
Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Alex Elder authored
Bryan reports he used certain message traces to determine when time sync messages transit the boundary between the Greybus core and the host device. This patch adds two trace events--one a message event for outbound messages (because it indicates its operation and its destination), and one host device event for incoming messages (because message information isn't available as early as desired). These events are being created to allow the same sort of analysis of messages without having to store extra information for every message trace. (The next patch changes the information a message trace records.) Signed-off-by:
Alex Elder <elder@linaro.org> Reviewed-by:
Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Alex Elder authored
Define a new gb_connection trace point event class, used to trace events associated with the connection abstraction. Define four basic trace events for this--creation, drop of last reference, and when adding or dropping any other reference. There are certainly more events that we might want to add, but aim is to just get the basic framework in place. Signed-off-by:
Alex Elder <elder@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Alex Elder authored
Define a new gb_bundle trace point event class, used to trace events associated with the bundle abstraction. Define four basic trace points for this--creation time, drop of last reference, before adding it to its interface and when removed when its interface is destroyed. Signed-off-by:
Alex Elder <elder@linaro.org> Reviewed-by:
Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Alex Elder authored
Add the value of an interface's mode_switch field to the information tracked and reported for tracing. Signed-off-by:
Alex Elder <elder@linaro.org> Reviewed-by:
Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Alex Elder authored
Most abstractions to be traced will have a sort of "parent" object it is associated with, and an identifier for that parent is stored with the as trace event data. For example, the parent of a message is the operation it's a part of, and the parent of an operation is the connection it uses. We'll arrange to define that parent id first in all events. Most abstractions already do this. Move an interface's module id so it's defined and assigned first. The message traces are going to be changed soon, so leave that one alone. Signed-off-by:
Alex Elder <elder@linaro.org> Reviewed-by:
Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Alex Elder authored
A module's num_interfaces field is included in the data to be recorded for tracing, but it's never assigned or reported. Fix its type to be size_t, to match its definition in the gb_module structure. Also correct a format length modifier used for a host device's num_cports field. Signed-off-by:
Alex Elder <elder@linaro.org> Reviewed-by:
Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Alex Elder authored
Move the definition of the module trace events below those for the interface. We'll define them in an order that represents a sort of layering of the abstractions (note not all of these are defined yet): message operation connection bundle interface module host device Other tracepoints (like perhaps some tied to timesync) will go at the beginning or end. Signed-off-by:
Alex Elder <elder@linaro.org> Reviewed-by:
Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Alex Elder authored
The type of the gb_host_device num_cports field is size_t. Correct the num_cports data recorded with a host device event so its type matches that; fix the format length modifier used for it as well. Signed-off-by:
Alex Elder <elder@linaro.org> Reviewed-by:
Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Alex Elder authored
Define a bundle ID that means "no bundle". This will be used for tracing connection events during the portion of a connection's lifetime when it has no bundle associated with it. Don't allow any bundle to be created using that ID. Signed-off-by:
Alex Elder <elder@linaro.org> Reviewed-by:
Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Alex Elder authored
Some of the trace buffer fields were defined as Booleans. This leads to two problems reported by "make check": - the __field() macro (or some descendent macro) performs a sizeof(bool) operation, which results in a warning - The TP_printk() macro, which specifies a printf() style format string, produces a warning when one attempts to format a Boolean as an integer. Fix both problems implicitly converting Boolean values from the data structures into integers in the trace buffer. Signed-off-by:
Alex Elder <elder@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
- 03 Jun, 2016 3 commits
-
-
Evgeniy Borisov authored
In explanation: The main idea for implementing reference counting is to not block exit until any other modules are in use. Camera responsibility is to handle properly any additional calls after camera exit and that what this patch is doing: 1. Free camera module when reference count is zero. 2. After camera cleanup handle properly any additional ongoing transaction. Return error if connection is destroyed. Signed-off-by:
Evgeniy Borisov <eborisov@mm-sol.com> Reviewed-by:
Gjorgji Rosikopulos <grosikopulos@mm-sol.com> Reviewed-by:
Laurent Pinchart <laurent.pinchart@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Evgeniy Borisov authored
Add additional information in gb camera module. - interface ID - reference count - release handle Signed-off-by:
Evgeniy Borisov <eborisov@mm-sol.com> Reviewed-by:
Gjorgji Rosikopulos <grosikopulos@mm-sol.com> Reviewed-by:
Laurent Pinchart <laurent.pinchart@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Evgeniy Borisov authored
Add description for all interface structures in gb-camera.h. Signed-off-by:
Evgeniy Borisov <eborisov@mm-sol.com> Reviewed-by:
Gjorgji Rosikopulos <grosikopulos@mm-sol.com> Reviewed-by:
Laurent Pinchart <laurent.pinchart@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
- 02 Jun, 2016 4 commits
-
-
Viresh Kumar authored
Add a comment to describe the purpose of the flag. Suggested-by:
Vaibhav Hiremath <vaibhav.hiremath@linaro.org> 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 authored
Mode switch takes just over a second to complete and the current timeout of one second isn't sufficient. Mode-switch logs from EVT 1.5: [ 56.709082] gb-firmware 1-3.3.1: Requested firmware package 'ara_00000126_00001002_fffe0001_ff980067_03.tftf' [ 57.003968] gb_control_mode_switch_operation: 176 [ 58.041616] greybus 1-3.3: mode switch detected Increase the timeout to two seconds. Tested with EVT 1.5 with gpbridge-test module. Signed-off-by:
Viresh Kumar <viresh.kumar@linaro.org> Tested-by:
Karthik Ravi Shankar <karthikrs@google.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Viresh Kumar authored
The operation layer allows only the 'core' operations on a connection, which is in its 'disconnecting' state. Mode switch is sent at the very end of interface-disable sequence, and the control connection is already in its 'disconnecting' state at that time. And so gb_operation_get_active() always fail with error -ENOTCONN. The operation core already has support for such 'core' operations, just that we were missing the needed flag while creating the mode switch operation. Fix that. Tested on EVT 1.5 with gpbridge-test module. Signed-off-by:
Viresh Kumar <viresh.kumar@linaro.org> Tested-by:
Karthik Ravi Shankar <karthikrs@google.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Viresh Kumar authored
This is the last step to required to finish the mode switch story. That is, call the hook provided by Interface layer to accomplish mode switch. Tested on EVT 1.5 with gpbridge-test module. Signed-off-by:
Viresh Kumar <viresh.kumar@linaro.org> Tested-by:
Karthik Ravi Shankar <karthikrs@google.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
- 01 Jun, 2016 8 commits
-
-
Viresh Kumar authored
We should be using the generic version handling at bundle level, instead of at protocol level for bridged PHY devices as well. The bundle version handling is already in place, though it is *not* used today as we haven't bumped the version of control protocol yet. Remove protocol specific handling for bridged PHY devices. Tested on EVT 1.5 with gpbridge-test module. No nuttx changes are required with this. 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 authored
We don't use these anymore. Drop them. Note that some macro's specific to bridged PHY devices aren't removed in the patch, as gbsim will break otherwise. They will be removed separately. Compile tested. Signed-off-by:
Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Axel Haslam authored
We should try to wait until all credits are accounted for before returning from shutdown. For this purpose add a helper function that will wait on completion, and call it form the shutdown. This helper will also be useful when "wait until sent" is implemented. Signed-off-by:
Axel Haslam <ahaslam@baylibre.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Axel Haslam authored
Data may be held pening in the hardware because of flow control mechanisms. When the port is closed, we need to flush all data that was not sent. For this, use the greybus message GB_UART_TYPE_FLUSH_FIFOS which will flush all data queued on the module but not yet sent on the data line. Suggested-by:
Johan Hovold <johan@hovoldconsulting.com> Signed-off-by:
Axel Haslam <ahaslam@baylibre.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Axel Haslam authored
To avoid polling the firmware for space, a credit based system is implemented. The host will keep track of how many credits (bytes) it has sent to the firmware, and stop sending data when the quota is filled. The host will be informed that the firmware has more room for data when it handles the receive_credits request message from the firmware, and will continue to write data as credits become available. The firmware and the host may implement an algorithm to aggregate credits, and avoid extra greybus traffic. Suggested-by:
Johan Hovold <johan@hovoldconsulting.com> Signed-off-by:
Axel Haslam <ahaslam@baylibre.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Axel Haslam authored
The firmware now buffers data instead of blocking while the transfer is sent, and the write operation cannot sleep. Instead of using gb_transfer_sync (which sleeps) in the write callback, buffer data in a fifo and send it from from a work queue. The write_room callback will will report 1 byte less that what is really available in the fifo, to leave space for extra characters that may be added by the tty layer. Signed-off-by:
Axel Haslam <ahaslam@baylibre.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Axel Haslam authored
Dtr_dts allows the tty layer to set the flow control lines to the correct state during open and close. Note that locking for newctrl is missing throughout the driver and will be addressed on a separate patch. Suggested-and-reviewed-by:
Johan Hovold <johan@hovoldconsulting.com> Signed-off-by:
Axel Haslam <ahaslam@baylibre.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Axel Haslam authored
Handle the CRTSCTS flag in set_termios, so that auto flow control can be turned off. For this, add a new flag in the line coding request specifically for this purpose. Reviewed-by:
Johan Hovold <johan@hovoldconsulting.com> Signed-off-by:
Axel Haslam <ahaslam@baylibre.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
- 27 May, 2016 11 commits
-
-
Johan Hovold authored
The recently added gb_hd_release tracepoint was added to the wrong function. Signed-off-by:
Johan Hovold <johan@hovoldconsulting.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Johan Hovold authored
Fix some whitespace issues introduced by the recent tracepoint changes. Signed-off-by:
Johan Hovold <johan@hovoldconsulting.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Johan Hovold authored
Now that firmware has made the switch to the new interface boot sequence, we can remove support for the deprecated hotplug and hot-unplug operations. Reviewed-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 authored
Add a generic interface for bundle drivers to use to request that a mode switch is carried out on its behalf. Mode switching involves tearing down all connections to an interface, sending a unidirectional mode-switch request, and waiting for a mailbox event that triggers deferred control connection reset and re-enumeration of the interface. In case of a timeout waiting for the interface mailbox event, or on other errors, the interface is powered off. All of this needs to be done by core from work-queue context in order not to block incoming SVC requests and bundle-device tear down. Care must also be taken to serialise against concurrent module removal events and eject requests. Special handling of legacy mode-switching is also added in order to continue to support the ES3 bootrom. Signed-off-by:
Johan Hovold <johan@hovoldconsulting.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Johan Hovold authored
Print an informative error message in case sending the mode-switch request fails. Signed-off-by:
Johan Hovold <johan@hovoldconsulting.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Johan Hovold authored
Backport upstream reinit_completion() to pre-3.13 kernels. Reviewed-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 authored
Add a new host-device callback to flush any host-device queues, including any ongoing transfers, as part of connection tear down. The host-device buffers are flushed after the disconnecting operation have completed and the AP queues have been emptied. This can be used to flush already queued messages which upon reception would have been discarded by the remote end anyway. Note that this does not remove the need to flush any host-device queues as part of CPort disable which needs to make the CPort ready for reuse after deallocating all associated state and resetting the port. Suggested-by:
Mitchell Tasman <tasman@leaflabs.com> Signed-off-by:
Johan Hovold <johan@hovoldconsulting.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Johan Hovold authored
Implement proper connection closure, which includes sending ping requests on the connection being tore down while coordinating with the remote interface as well as the SVC. This specifically implements the new ping operation, which in case of offloaded connections is handled by the host-device driver in an implementation-defined manner through a new callback. Note that the normal connection tear-down procedure is executed in case of failed connection establishment due to failed connected operation. Specifically, the disconnecting request is sent also in case the connected operation never succeeded. This is needed since the interface may have enabled FCT flow upon receiving the connected request. Signed-off-by:
Johan Hovold <johan@hovoldconsulting.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Johan Hovold authored
Add a new core operation flag and a helper that core can use to create core operations. This will be used to implement the ping operations that core sends as part of connection tear down. Note that a new trace point is also added. Signed-off-by:
Johan Hovold <johan@hovoldconsulting.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Johan Hovold authored
Restructure the operation activation state handling in preparation for a new disconnecting state. Signed-off-by:
Johan Hovold <johan@hovoldconsulting.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-
Johan Hovold authored
Now that the legacy invalid state is gone, clean up the early connection-state check in the receive path and explicitly drop incoming messages for disabled connection. Signed-off-by:
Johan Hovold <johan@hovoldconsulting.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@google.com>
-