Fix resources (accessible through sysfs) being released before interface
is deregistered.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Greybus bundle drivers should register their class devices as children
to the bundle device that they bind to.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Greybus bundle drivers should register their class devices as children
to the bundle device that they bind to.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
A bundle (protocol) driver has no business creating sysfs entries for an
ancestor device.
Move the sysfs entries to the bundle device for now.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
HID is a stand-alone greybus protocol, not part of the bridged-phy
protocols, so make it a stand-alone kernel module.
Note, some hard-coded android init script might need to be changed to
load the gb-hid.ko kernel module now.
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Now that the host-device is deregistered separately from deallocation,
we can simplify the cport_to_ep-array deallocation.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Fix host-device life time issues by separating host-device allocation
from registration.
This is needed both to make sure that all host-device resources are
available before registering the device and to prevent such resources
from being deallocated while the device is still in use during device
removal.
This specifically fixes the following warnings during es1 and es2
disconnect:
usb 1-1.1: No free CPort OUT urbs, having to dynamically allocate one!
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Add more structure to probe error handling rather than use the big
hammer and call disconnect directly.
This is needed to fix some host-device life-time issues.
Note that there was never any need to clear the USB interface data as
this will be done by driver core.
Compile-only tested.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Add more structure to probe error handling rather than use the big
hammer and call disconnect directly.
This is needed to fix some host-device life-time issues.
Note that there was never any need to clear the USB interface data as
this will be done by driver core.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Fix dentry leak due to failure to remove debugfs file.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Fix dentry leak due to failure to remove debugfs file.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Separate stopping and deallocating our in-urbs.
This will facilitate implementing proper host-device life-time management.
Compile-only tested.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Separate stopping and deallocating our in-urbs.
This will facilitate implementing proper host-device life-time management.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Separate in-urb allocation and submission.
This is needed for the driver-model rework.
Compile-tested only.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Refactor in-urb submission, and make sure to separate allocation and
submission.
Eventually we'll be submitting the urbs at cport enable rather than at
probe, and this is also needed for the driver-model rework.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
The current es2 implementation only checks for no IN or OUT bulk
endpoints, but still assumes there are precisely NUM_BULKS of each.
Specifically, urbs could be allocated and initialised to default values,
which amounts to bulk urbs being submitted to the control endpoint.
We should be able to handle any number of endpoints, but for now let's
just require NUM_BULKS of each.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
The interface private data is released as part of host-device removal
and must not be accessed afterwards.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
The Greybus I2S Bridged-PHY Protocol is deprecated so remove
all support for it from the Greybus code.
CC: Vaibhav Agarwal <vaibhav.agarwal@linaro.org>
Signed-off-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
The Greybus I2S Bridged-PHY Protocol is now deprecated so remove
the audio driver that is based on it.
CC: Vaibhav Agarwal <vaibhav.agarwal@linaro.org>
Signed-off-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Rename the exported functions using the common gb_-prefix.
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>
Rename host-driver structure to gb_hd_driver to more clearly separate it
from the host-device structure.
Also remove an outdated description of the struct.
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>
Move everything host-device related to hd.c and hd.h.
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>
Fix yet another ida memory leak due to failure to call the destructor.
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>
Connections are destroyed as part of interface tear down. If we fail to
do that properly it's a bug that should be fixed rather than papered
over by a fall-back clean up function.
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>
We can have connections without bundles so we must not use the bundle
device for error messages when failing to look up a protocol.
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>
We allow connections without bundles so we must not use the bundle
device for error messages after binding the protocol.
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>
Use parent of host device for error messages as the connections bundle
may be NULL.
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>
It is safe to use the bundle device for error messages when we know we
have a bundle.
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>
The connection device type is no longer used.
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>
Remove request handler for control protocol that makes no sense as we do
not have any incoming control requests defined.
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>
Remove unused time-stamp defines, that were left in when the time-stamp
fifo was removed.
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>
Compiling with clang shows that period_elapsed will be used as a branch
conditional unitialized whenever snd_dev->transfer_done <
runtime->period_size. Since stack can grow up/down as we proceed though
the call stack this should be fixed. This patch fixes by explicitly
initalizing period_elapsed to zero.
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Alex Elder <elder@linaro.org>
Reviewed-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
We're one character out here in the placement of the inputs to pr_err().
Later patches show this up when pushing through checkpatch.pl. This patch
fixes by moving the offending variables one character left.
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Previously we had only one AP bridge connected to the AP. We will
now have two. Now that the have moved the logging related symbols
into the AP device, we can stop assuming there's only on of them.
Specifically, rename symbols like "apb1_*" to be just "apb_*",
because the "1" is no longer meaningful.
Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Finish moving the logging data structures into the es2 AP data
structure rather than having it be a single global. This patch
moves the two dentries related to logging.
Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Continue moving the logging data structures into the es2 AP data
structure rather than having it be a single global. This patch
moves the fifo.
Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
If an APB has a logging task it is associated with that APB. Move
the task pointer into the es2_ap_dev structure rather than having it
be a single global.
Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
I tried this once before and Greg NAK'd it because at that point the
es2 code was nearly identical to the es1 code. This is no longer
the case, and we need to diverge further, so I think it's time to go
down that path.
The ap_dev structure changed significantly for ES2 versus ES1 as of
this commit:
667f8d3 es2.c: create dedicated struct for cport_in and cport_out
Since the structures are no longer the same, they should not have
the same name.
This patch renames three data structures so the "1" is replaced with
a "2", to reflect the Toshiba AP bridge chip revision we are working
with. The structures are:
es1_ap_dev -> es2_ap_dev
es1_cport_in -> es2_cport_in
es1_cport_out -> es2_cport_out
It changes names of symbols having this type as well. To finish the
job, all references "ES1" (in comments and in symbol names) have
been switched to use "ES2" instead.
The result is a lot of changes, but they amount to a global search
and replace of "es1" with "es2" (and "ES1" with "ES2"), and the
result has been compile tested.
Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
We now have an officially assigned Google USB device id for the
APBridge, so add in support for it in the es2 driver. The old entry can
be removed once the firmware has caught up and uses the new number.
We should use the version field to determine ES1/ES2/ES3, but that will
come later, for now, grab anything with this device id.
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
In apb_ctrl_get_devtree_data(), the value returned by
of_get_named_gpio() has a redundant test for a negative
return value. GPIO numbers are non-negative, so this
test is redundant--testing gpio_is_valid() is sufficient.
Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Fix misspelled "mandatory," and use "GPIOs" for the plural form (no
apostrophe and capitalized) in comments.
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>
The code that fetches the reset GPIO for an AP bridge suffers
from an apparent copy/paste error. Fix it.
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>
It belongs to the endo layer and should be placed in endo.c instead. Do
it.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
The module will be released by gb_module_release() once all references
for the module are dropped. And so there is no need to free it in the
error path specially.
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
The interface will be released by gb_interface_release() once all
references for the interface are dropped. And so there is no need to
free it in the error path specially.
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>