cascardo/linux.git
8 years agogreybus: svc: make svc a device
Johan Hovold [Wed, 25 Nov 2015 14:59:06 +0000 (15:59 +0100)]
greybus: svc: make svc a device

Make the svc object a child device of the host-device device and use
driver core to manage its lifetime.

The svc device name is "<bus_id>-svc", where bus_id is the dynamically
assigned id of the host device.

Note that there is exactly one svc-device per host device (bus).

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: bundle: rename bundle devices
Johan Hovold [Wed, 25 Nov 2015 14:59:05 +0000 (15:59 +0100)]
greybus: bundle: rename bundle devices

Rename bundle devices so that the new device names become
"<bus_id>-<intf_id>.<bundle_id>", where bus_id is the dynamically
allocated host-device bus id and intf_id the svc-allocated interface
id.

Using a period (.) rather than a colon (:) makes dev-messages easier to
read as as those already add a colon after the device name, for example:

greybus 1-4.15: failed to connect cport: -22

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: interface: make interfaces children of host devices
Johan Hovold [Wed, 25 Nov 2015 14:59:04 +0000 (15:59 +0100)]
greybus: interface: make interfaces children of host devices

Make interfaces child devices of host devices.

The new interface device name is "<bus_id>-<intf_id>", where bus_id is
the dynamically allocated bus id for the host device and intf_id is the
svc-allocated interface id.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: connection: drop parent parameter from connection create
Johan Hovold [Wed, 25 Nov 2015 14:59:03 +0000 (15:59 +0100)]
greybus: connection: drop parent parameter from connection create

The parent parameter was only used for debug messages and to name the
connection workqueue. Use the host-device device for this instead.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: hd: make host device a device
Johan Hovold [Wed, 25 Nov 2015 14:59:02 +0000 (15:59 +0100)]
greybus: hd: make host device a device

Make the host device a proper device in the kernel device model.

Host devices will be our new greybus-bus root devices.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: bundle: add bundle_id attribute
Johan Hovold [Wed, 25 Nov 2015 14:59:01 +0000 (15:59 +0100)]
greybus: bundle: add bundle_id attribute

Add a bundle_id attribute for the interface-unique id of a bundle that
user space can use for matching.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: bundle: use hexadecimal notation for class attribute
Johan Hovold [Wed, 25 Nov 2015 14:59:00 +0000 (15:59 +0100)]
greybus: bundle: use hexadecimal notation for class attribute

Use hexadecimal notation for class-attribute value.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: bundle: rename class attribute
Johan Hovold [Wed, 25 Nov 2015 14:58:59 +0000 (15:58 +0100)]
greybus: bundle: rename class attribute

Rename the bundle class-attribute "bundle_class" for consistency reasons
and to make it self documenting.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: interface: add interface_id attribute
Johan Hovold [Wed, 25 Nov 2015 14:58:58 +0000 (15:58 +0100)]
greybus: interface: add interface_id attribute

Add interface_id attribute that user space needs to identify an
interface.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: interface: remove device_id attribute
Johan Hovold [Wed, 25 Nov 2015 14:58:57 +0000 (15:58 +0100)]
greybus: interface: remove device_id attribute

The interface device_id attribute is an implementation detail that does
not need to be exported to user space.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: interface: rename vendor and product attributes
Johan Hovold [Wed, 25 Nov 2015 14:58:56 +0000 (15:58 +0100)]
greybus: interface: rename vendor and product attributes

Rename vendor and product attributes vendor_id and product_id.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: Documentation/sysfs-bus-greybus: update the bus ABI documentation
Johan Hovold [Wed, 25 Nov 2015 14:58:55 +0000 (15:58 +0100)]
greybus: Documentation/sysfs-bus-greybus: update the bus ABI documentation

Update the ABI documentation to match the new device model.

Note that the SVC unique_id and version attributes are not yet
implemented.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: Documentation/sysfs: update the example sysfs tree
Johan Hovold [Sun, 22 Nov 2015 09:24:08 +0000 (10:24 +0100)]
greybus: Documentation/sysfs: update the example sysfs tree

Update the example sysfs-tree layout under Documentation.

The new layout reflects changes to the kernel device-model that are
needed to eventually be able to handle multiple AP-bridges.

The example tree has two AP-bridges, each with its own view of the
UniPro network, the bus.

.
├── greybus1
│   ├── 1-2
│   │   ├── 1-2.1
│   │   │   ├── class
│   │   │   ├── id
│   │   │   └── state
│   │   ├── 1-2.2
│   │   │   ├── class
│   │   │   ├── id
│   │   │   └── state
│   │   ├── id
│   │   ├── product_id
│   │   ├── unique_id
│   │   └── vendor_id
│   ├── 1-4
│   │   ├── 1-4.2
│   │   │   ├── class
│   │   │   ├── gpbridge0
│   │   │   │   ├── gpio
│   │   │   │   │   └── gpiochip490
│   │   │   │   └── i2c-4
│   │   │   ├── id
│   │   │   └── state
│   │   ├── id
│   │   ├── product_id
│   │   ├── unique_id
│   │   └── vendor_id
│   └── 1-svc
│       ├── ap_intf_id
│       ├── eject
│       ├── endo_id
│       └── unique_id
└── greybus2
    ├── 2-3
    │   ├── 2-3.1
    │   │   ├── class
    │   │   ├── id
    │   │   └── state
    │   ├── id
    │   ├── product_id
    │   ├── unique_id
    │   └── vendor_id
    └── 2-svc
        ├── ap_intf_id
        ├── eject
        ├── endo_id
        └── unique_id

Every bus has exactly one svc device (1-svc and 2-svc). For our system,
the svc device of each bus will be a representation of the same
network-unique SVC device (e.g. endo_id and unique_id will be
identical).

The first bus has two registered interfaces (1-2 and 1-4), while the
second bus has a single interface (2-3). Note that the interface ids (2,
4, and 3) are necessarily unique as these are interfaces on the same
network.

Interface 1-2 has two bundles (1-2.1 and 1-2.2) and interface 1-4 has
a single bundle (1-4.2). The bundle ids are interface-unique and reflect
the ids found in each manifest.

In the example, bundle 1-4.2 has a gbbridge-device, which is the parent
device for a gpiochip device and an i2c bus.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: manifest: simplify descriptor address calculation
Sachin Pandhare [Tue, 24 Nov 2015 02:29:10 +0000 (07:59 +0530)]
greybus: manifest: simplify descriptor address calculation

This patch doesn't change any functionality. It just improves the
readability of the code.
Current code to get 'descriptors' pointer looks as if we are forcing the
pointer type change. To simplify the address calculations, use
'descriptors' member directly from greybus_manifest structure.

Signed-off-by: Sachin Pandhare <sachin.pandhare@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: hd: fix cport-count check
Johan Hovold [Sun, 22 Nov 2015 09:12:58 +0000 (10:12 +0100)]
greybus: hd: fix cport-count check

Fix off-by-one error when checking the number of cports a host-device
supports.

The CPORT_ID_MAX is the largest valid cport id so the maximum number of
cports a host-device can use is CPORT_ID_MAX + 1.

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>
8 years agogreybus: connection: fix cport-id range
Johan Hovold [Sat, 21 Nov 2015 09:51:58 +0000 (10:51 +0100)]
greybus: connection: fix cport-id range

Fix cport-id allocation that failed to include the highest port id in the
available cport-id range.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: Audio: Add skeleton code for GB virtual codec driver
Vaibhav Agarwal [Mon, 23 Nov 2015 10:27:45 +0000 (15:57 +0530)]
greybus: Audio: Add skeleton code for GB virtual codec driver

This patch adds gb-codec driver with static information for
DAPM widgets, controls & dapm_routes.

Including some changes in kernel code(machine driver):
- Able to register codec and glue it with existing sound card successfully.
- Able to view & modify mixer controls:
        (volume/mute[left/right][input/output])
- Able to view DAPM widgets registered via /debug interface.
- Able to establish DAPM path for playback.

Since, FE<->BE path not yet verified with default jetson build,
registering GB DAI as normal DAI link to verify GB virtual codec
specific DAPM path.

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>
8 years agogreybus: add class matching macro
Johan Hovold [Sat, 21 Nov 2015 09:52:04 +0000 (10:52 +0100)]
greybus: add class matching macro

Add matching macro for bundle class.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: move id-matching back to core
Johan Hovold [Sat, 21 Nov 2015 09:52:03 +0000 (10:52 +0100)]
greybus: move id-matching back to core

Move id-matching back to core and the bus code where it belongs.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: fix vendor and product matching
Johan Hovold [Sat, 21 Nov 2015 09:52:02 +0000 (10:52 +0100)]
greybus: fix vendor and product matching

Fix vendor and product matching by matching on the 32-bit Ara vendor and
product ids.

Remove the "fake" 16-bit vendor and product ids and export the Ara ids
using the "vendor" and "product" interface attributes instead.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: interface: remove unique id
Johan Hovold [Sat, 21 Nov 2015 09:52:01 +0000 (10:52 +0100)]
greybus: interface: remove unique id

Remove the unimplemented interface unique-id.

There will eventually be an interface-serial-number attribute provided,
but let's not export it or commit to a name for this attribute until we
need it.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: remove unique-id matching
Johan Hovold [Sat, 21 Nov 2015 09:52:00 +0000 (10:52 +0100)]
greybus: remove unique-id matching

Remove unique-id matching as it does not make much sense to have a
driver match a specific device serial number.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: fix bundle-id match macros
Johan Hovold [Sat, 21 Nov 2015 09:51:59 +0000 (10:51 +0100)]
greybus: fix bundle-id match macros

The matching flags were renamed over a year ago but the so far unused
id-macros were never updated.

Also rename the GREYBUS_ID_MATCH_DEVICE mask to use the common
GREYBUS_ID_MATCH-prefix.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: svc: fix missing version-request sanity checks
Johan Hovold [Thu, 19 Nov 2015 17:28:01 +0000 (18:28 +0100)]
greybus: svc: fix missing version-request sanity checks

Add missing sanity checks on version-request payload size.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: firmware: break long lines
Johan Hovold [Thu, 19 Nov 2015 17:28:00 +0000 (18:28 +0100)]
greybus: firmware: break long lines

Break lines longer than 80 cols, and clean up an error message while at
it.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: firmware: fix information leak
Johan Hovold [Thu, 19 Nov 2015 17:27:59 +0000 (18:27 +0100)]
greybus: firmware: fix information leak

Add missing sanity checks on get_firmware-request offset and size
parameters to fix potential information leaks.

This prevents remotely controlled information leaks as the requestor
currently controls both the 32-bit firmware-image offset and the amount
of data that is returned (up to host-device MTU).

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: loopback: allocate a response even for a 0-byte request
Bartosz Golaszewski [Thu, 19 Nov 2015 12:46:43 +0000 (13:46 +0100)]
greybus: loopback: allocate a response even for a 0-byte request

If payload length of a transfer packet is 0, no response is allocated.
Send a well-formed response even in that case.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: loopback: fix invalid response size
Alexandre Bailon [Thu, 19 Nov 2015 11:44:46 +0000 (12:44 +0100)]
greybus: loopback: fix invalid response size

The size of timestamps is not taken into account, which makes the
loopback driver in the firmware drop invalid packages.

Signed-off-by: Alexandre Bailon <abailon@baylibre.com>
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: manifest: fix bundle descriptor parse
Rui Miguel Silva [Mon, 16 Nov 2015 19:23:25 +0000 (19:23 +0000)]
greybus: manifest: fix bundle descriptor parse

The descriptor list is walked in two points, in the bundle parsing and
cport parsing, this can make the next descriptor pointer in bundle to be
already removed by the cport remove descriptor and become invalid.

So, just get the next bundle until there no more left.

Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: audio: Allocate protocol and class values
Mark Greer [Fri, 13 Nov 2015 21:44:13 +0000 (14:44 -0700)]
greybus: audio: Allocate protocol and class values

Allocate protocol and class values for the Audio Device Class
Protocol.  Two values of each type are allocated: one for Audio
Management Connections and one for Audio Data Connections.

Signed-off-by: Mark Greer <mgreer@animalcreek.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: es1: Remove the (now) unused es1 driver
Viresh Kumar [Fri, 13 Nov 2015 03:29:50 +0000 (08:59 +0530)]
greybus: es1: Remove the (now) unused es1 driver

This was used by gbsim earlier, but not anymore. Lets remove it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: es2: remove fake vendor/product ids
Viresh Kumar [Fri, 13 Nov 2015 03:29:49 +0000 (08:59 +0530)]
greybus: es2: remove fake vendor/product ids

These aren't used anymore, remove them.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: power_supply: rework and operation changes
Rui Miguel Silva [Thu, 12 Nov 2015 15:36:02 +0000 (15:36 +0000)]
greybus: power_supply: rework and operation changes

This is a major rework and changes to the current implementation of the
battery protocol. The previous implementation lack the support of a more
dynamic handle of power supply properties and updating of status. Also,
reflect the actual state of the greybus specification

So, with this new approach a set of operations to fetch the battery
module configuration and properties is add, new methods to cache and
update the values of properties, new operation to set properties if
declared writable and an event operation that can be triggered by the
module to force an update read on the properties values.

Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: makefile: add power_supply config check
Rui Miguel Silva [Thu, 12 Nov 2015 15:36:01 +0000 (15:36 +0000)]
greybus: makefile: add power_supply config check

Add check for POWER_SUPPLY config option to guarantee that it is enabled.

Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: battery: move implementation to power_supply
Rui Miguel Silva [Thu, 12 Nov 2015 15:36:00 +0000 (15:36 +0000)]
greybus: battery: move implementation to power_supply

Rename protocol to POWER_SUPPLY and implementation details from battery
to power_supply.

Also fix some tabs between define and macro name.

Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: battery: move battery file to power_supply
Rui Miguel Silva [Thu, 12 Nov 2015 15:35:59 +0000 (15:35 +0000)]
greybus: battery: move battery file to power_supply

Rename the battery.c to power_supply.c and update the makefile as the
Greybus protocol is being renamed from battery to power_supply.

Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: es2: Send cport-id in wValue field to usb_control_msg()
Viresh Kumar [Mon, 9 Nov 2015 09:35:03 +0000 (15:05 +0530)]
greybus: es2: Send cport-id in wValue field to usb_control_msg()

wIndex field has a special meaning, as that can be used by the core to
index into the possible USB interfaces. And that specifically broke with
gbsim, as it has a single USB interface.

Other similar requests (REQUEST_LATENCY_TAG_{EN|DIS}) are already using
wValue field for passing cport-id.

Fix cport_reset() by sending the cport-id in wValue field instead of
wIndex.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Tested-by: Fabien Parent <fparent@baylibre.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: svc: use bit-macro for cport flags
Johan Hovold [Wed, 11 Nov 2015 09:07:08 +0000 (10:07 +0100)]
greybus: svc: use bit-macro for cport flags

Use BIT-macro for cport flags.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: use decimal notation for interface and cport ids
Johan Hovold [Wed, 11 Nov 2015 09:07:07 +0000 (10:07 +0100)]
greybus: use decimal notation for interface and cport ids

Fix up the few places where hexadecimal rather than decimal notation was
used for interface and cport ids.

Note that this includes the endo sysfs-attribute for the AP interface
id.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: interface: fix obsolete comment
Johan Hovold [Wed, 11 Nov 2015 09:07:06 +0000 (10:07 +0100)]
greybus: interface: fix obsolete comment

Fix obsolete comment that was referring to "module" rather than
"interface".

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: interface: fix potential use-after-free at remove
Johan Hovold [Wed, 11 Nov 2015 09:07:05 +0000 (10:07 +0100)]
greybus: interface: fix potential use-after-free at remove

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>
8 years agogreybus: light: fix class-device parent
Johan Hovold [Wed, 11 Nov 2015 09:07:04 +0000 (10:07 +0100)]
greybus: light: fix class-device parent

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>
8 years agogreybus: battery: fix class-device parent
Johan Hovold [Wed, 11 Nov 2015 09:07:03 +0000 (10:07 +0100)]
greybus: battery: fix class-device parent

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>
8 years agogreybus: loopback: fix layer violation
Johan Hovold [Wed, 11 Nov 2015 09:07:02 +0000 (10:07 +0100)]
greybus: loopback: fix layer violation

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>
8 years agogreybus: hid: hid should not be part of the bridged-phy driver.
Greg Kroah-Hartman [Thu, 5 Nov 2015 04:46:14 +0000 (20:46 -0800)]
greybus: hid: hid should not be part of the bridged-phy driver.

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>
8 years agogreybus: es2: clean up es2 destructor
Johan Hovold [Wed, 4 Nov 2015 17:55:23 +0000 (18:55 +0100)]
greybus: es2: clean up es2 destructor

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>
8 years agogreybus: hd: fix host-device life time issues
Johan Hovold [Wed, 4 Nov 2015 17:55:22 +0000 (18:55 +0100)]
greybus: hd: fix host-device life time issues

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>
8 years agogreybus: es1: add more structure to probe error handling
Johan Hovold [Wed, 4 Nov 2015 17:55:21 +0000 (18:55 +0100)]
greybus: es1: add more structure to probe error handling

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>
8 years agogreybus: es2: add more structure to probe error handling
Johan Hovold [Wed, 4 Nov 2015 17:55:20 +0000 (18:55 +0100)]
greybus: es2: add more structure to probe error handling

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>
8 years agogreybus: es1: fix debugfs dentry leak
Johan Hovold [Wed, 4 Nov 2015 17:55:19 +0000 (18:55 +0100)]
greybus: es1: fix debugfs dentry leak

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>
8 years agogreybus: es2: fix debugfs dentry leak
Johan Hovold [Wed, 4 Nov 2015 17:55:18 +0000 (18:55 +0100)]
greybus: es2: fix debugfs dentry leak

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>
8 years agogreybus: es1: separate stopping and deallocating urbs
Johan Hovold [Wed, 4 Nov 2015 17:55:17 +0000 (18:55 +0100)]
greybus: es1: separate stopping and deallocating urbs

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>
8 years agogreybus: es2: separate stopping and deallocating urbs
Johan Hovold [Wed, 4 Nov 2015 17:55:16 +0000 (18:55 +0100)]
greybus: es2: separate stopping and deallocating urbs

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>
8 years agogreybus: es1: separate urb allocation and submission
Johan Hovold [Wed, 4 Nov 2015 17:55:15 +0000 (18:55 +0100)]
greybus: es1: separate urb allocation and submission

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>
8 years agogreybus: es2: separate urb allocation and submission
Johan Hovold [Wed, 4 Nov 2015 17:55:14 +0000 (18:55 +0100)]
greybus: es2: separate urb allocation and submission

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>
8 years agogreybus: es2: fix endpoint requirement check
Johan Hovold [Wed, 4 Nov 2015 17:55:13 +0000 (18:55 +0100)]
greybus: es2: fix endpoint requirement check

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>
8 years agogreybus: es2: fix use-after-free at disconnect
Johan Hovold [Wed, 4 Nov 2015 17:55:12 +0000 (18:55 +0100)]
greybus: es2: fix use-after-free at disconnect

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>
8 years agogreybus: i2s: Remove deprecated I2S Bridged-PHY Protocol
Mark Greer [Wed, 4 Nov 2015 16:47:22 +0000 (09:47 -0700)]
greybus: i2s: Remove deprecated I2S Bridged-PHY Protocol

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>
8 years agogreybus: audio: Remove I2S Bridged-PHY Protcol based audio driver
Mark Greer [Wed, 4 Nov 2015 16:47:21 +0000 (09:47 -0700)]
greybus: audio: Remove I2S Bridged-PHY Protcol based audio driver

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>
8 years agogreybus: hd: use common prefix for exported functions
Johan Hovold [Tue, 3 Nov 2015 17:03:25 +0000 (18:03 +0100)]
greybus: hd: use common prefix for exported functions

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>
8 years agogreybus: hd: rename host-driver structure
Johan Hovold [Tue, 3 Nov 2015 17:03:24 +0000 (18:03 +0100)]
greybus: hd: rename host-driver structure

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>
8 years agogreybus: hd: rename host-device structure
Johan Hovold [Tue, 3 Nov 2015 17:03:23 +0000 (18:03 +0100)]
greybus: hd: rename host-device structure

Rename host-device structure gb_host_device to match our other
structures.

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>
8 years agogreybus: create host-device compilation unit
Johan Hovold [Tue, 3 Nov 2015 17:03:22 +0000 (18:03 +0100)]
greybus: create host-device compilation unit

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>
8 years agogreybus: remove obsolete comment
Johan Hovold [Tue, 3 Nov 2015 17:03:21 +0000 (18:03 +0100)]
greybus: remove obsolete comment

Remove obsolete comment about the driver model.

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>
8 years agogreybus: endo: fix ida memory leak
Johan Hovold [Tue, 3 Nov 2015 11:11:25 +0000 (12:11 +0100)]
greybus: endo: fix ida memory leak

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>
8 years agogreybus: connection: kill gb_hd_connections_exit
Johan Hovold [Tue, 3 Nov 2015 11:11:26 +0000 (12:11 +0100)]
greybus: connection: kill gb_hd_connections_exit

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>
8 years agogreybus: connection: fix potential null-deref when binding protocol
Johan Hovold [Tue, 3 Nov 2015 11:11:27 +0000 (12:11 +0100)]
greybus: connection: fix potential null-deref when binding protocol

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>
8 years agogreybus: connection: fix potential null-deref in connection create
Johan Hovold [Tue, 3 Nov 2015 11:11:28 +0000 (12:11 +0100)]
greybus: connection: fix potential null-deref in connection create

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>
8 years agogreybus: connection: fix potential null-deref in hd_cport_enable
Johan Hovold [Tue, 3 Nov 2015 11:11:29 +0000 (12:11 +0100)]
greybus: connection: fix potential null-deref in hd_cport_enable

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>
8 years agogreybus: connection: use bundle device for bundle error messages
Johan Hovold [Tue, 3 Nov 2015 11:11:30 +0000 (12:11 +0100)]
greybus: connection: use bundle device for bundle error messages

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>
8 years agogreybus: remove unused connection device type
Johan Hovold [Tue, 3 Nov 2015 11:11:31 +0000 (12:11 +0100)]
greybus: remove unused connection device type

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>
8 years agogreybus: remove unused host-device id
Johan Hovold [Tue, 3 Nov 2015 11:11:32 +0000 (12:11 +0100)]
greybus: remove unused host-device id

Remove unused device_id field from host-device structure.

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>
8 years agogreybus: es2: update obsolete bridge-device comments
Johan Hovold [Mon, 2 Nov 2015 10:56:57 +0000 (11:56 +0100)]
greybus: es2: update obsolete bridge-device comments

Update obsolete bridge-device comments to better describe our current
ES2 endpoint layout.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: control: remove unused request handler
Johan Hovold [Mon, 2 Nov 2015 10:56:59 +0000 (11:56 +0100)]
greybus: control: remove unused request handler

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>
8 years agogreybus: connection: remove unused time-stamp defines
Johan Hovold [Mon, 2 Nov 2015 10:56:58 +0000 (11:56 +0100)]
greybus: connection: remove unused time-stamp defines

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>
8 years agogreybus: audio-pcm: fix use of variable unitialized
Bryan O'Donoghue [Thu, 29 Oct 2015 16:58:29 +0000 (16:58 +0000)]
greybus: audio-pcm: fix use of variable unitialized

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>
8 years agogreybus: manifest: fix the placement of arguments to pr_err
Bryan O'Donoghue [Thu, 29 Oct 2015 16:58:24 +0000 (16:58 +0000)]
greybus: manifest: fix the placement of arguments to pr_err

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>
8 years agogreybus: es2: don't assume just one AP bridge
Alex Elder [Wed, 28 Oct 2015 03:18:41 +0000 (22:18 -0500)]
greybus: es2: don't assume just one AP bridge

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>
8 years agogreybus: es2: move logging dentries into es2 struct
Alex Elder [Wed, 28 Oct 2015 03:18:40 +0000 (22:18 -0500)]
greybus: es2: move logging dentries into es2 struct

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>
8 years agogreybus: es2: move logging fifo into es2 struct
Alex Elder [Wed, 28 Oct 2015 03:18:39 +0000 (22:18 -0500)]
greybus: es2: move logging fifo into es2 struct

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>
8 years agogreybus: es2: move APB log task into the es2_ap_dev struct
Alex Elder [Wed, 28 Oct 2015 03:18:38 +0000 (22:18 -0500)]
greybus: es2: move APB log task into the es2_ap_dev struct

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>
8 years agogreybus: es2: rename es2 data structures
Alex Elder [Wed, 28 Oct 2015 03:18:37 +0000 (22:18 -0500)]
greybus: es2: rename es2 data structures

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>
8 years agogreybus: es2: use official USB vendor/device id
Greg Kroah-Hartman [Thu, 22 Oct 2015 23:40:41 +0000 (16:40 -0700)]
greybus: es2: use official USB vendor/device id

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>
8 years agogreybus: db3-platform: get rid of redundant gpio tests
Alex Elder [Thu, 22 Oct 2015 18:03:26 +0000 (13:03 -0500)]
greybus: db3-platform: get rid of redundant gpio tests

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>
8 years agogreybus: db3-platform: Use dev_info for success messages
Viresh Kumar [Thu, 22 Oct 2015 14:36:57 +0000 (20:06 +0530)]
greybus: db3-platform: Use dev_info for success messages

Used dev_err() by mistake, fix it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: db3-platform: fix some typos
Alex Elder [Thu, 22 Oct 2015 13:58:17 +0000 (08:58 -0500)]
greybus: db3-platform: fix some typos

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>
8 years agogreybus: db3-platform: fix code that fetches reset GPIO
Alex Elder [Thu, 22 Oct 2015 13:58:16 +0000 (08:58 -0500)]
greybus: db3-platform: fix code that fetches reset GPIO

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>
8 years agogreybus: endo: move greybus_endo_setup() to endo.c
Viresh Kumar [Wed, 21 Oct 2015 10:12:44 +0000 (15:42 +0530)]
greybus: endo: move greybus_endo_setup() to endo.c

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>
8 years agogreybus: module: fix double freeing of module structure
Viresh Kumar [Wed, 21 Oct 2015 09:56:45 +0000 (15:26 +0530)]
greybus: module: fix double freeing of module structure

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>
8 years agogreybus: interface: fix double freeing of interface structure
Viresh Kumar [Wed, 21 Oct 2015 09:56:44 +0000 (15:26 +0530)]
greybus: interface: fix double freeing of interface structure

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>
8 years agogreybus: bundle: fix double freeing of bundle structure
Viresh Kumar [Wed, 21 Oct 2015 09:56:43 +0000 (15:26 +0530)]
greybus: bundle: fix double freeing of bundle structure

The bundle will be released by gb_bundle_release() once all references
for the bundle 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>
8 years agogreybus: endo: fix device-id allocation
Johan Hovold [Wed, 21 Oct 2015 09:51:43 +0000 (11:51 +0200)]
greybus: endo: fix device-id allocation

During endo registration, a unique device id was allocated but then
never used. Instead the default dev_id 0 (due to kzalloc) was used for
device-generation and later for id-deallocation.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: endo: fix use-after-free in error path
Johan Hovold [Wed, 21 Oct 2015 09:51:42 +0000 (11:51 +0200)]
greybus: endo: fix use-after-free in error path

Fix use-after-free in endo-registration error path by moving the
id-release to the device release function.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: platform: Add platform driver for DB3 AP bridge
Vaibhav Hiremath [Wed, 21 Oct 2015 11:20:20 +0000 (16:50 +0530)]
greybus: platform: Add platform driver for DB3 AP bridge

With DB3, we now have AP as a master as far as AP bridges are concerned.
SVC will talk only to AP and AP will control bridges; unlike other
module interfaces.

So AP supposed to manage/control bridges in all power states including
power on reset.

During power on reset AP should follow below sequence -

Sequence (treated as a Cold Boot)

Stage-1
=======
AP:
 - Power On (Power up from PMIC to AP)
 - AP start booting
   Since power to AP bridges are controlled through gpio, power is gated
   to APB1 & 2
   No ref_clk to APB available (under SVC's control)
 - AP configures USB hub to enable HSIC interface to APB
 - As part of platform driver probe, AP follow below sequence
   - Set the pinctrl in default state
   - Hold APBs in reset by pulling down reset pin
   - Enable power to APB by enabling regulator and switches
   - De-assert (set 'low') 'boot_ret' signal
 - AP will assert (set 'high') the wake_detect signal, triggering
   connect/detect event to the SVC
 - AP waits for wake pulse from SVC

 SVC:
 - Power On (power up from PMIC to SVC)
 - SVC starts booting
 - SVC will de-assert reset signal to unipro switch
   - Switch starts booting
 - SVC confirms switch boot status using SPI (or something)
 - SVC waits for 300 msec (ES2 known issue)
 - SVC waits for detect/connect event from AP

Stage-2
=======
SVC:
 - ON connect/detect event, SVC send back wake pulse (cold boot)
   to AP over wake_detect pin, if SVC boot is completed.

AP:
 - On wake pulse from SVC (for cold boot), AP de-asserts (set high')
   reset signal to APB 1 and/or 2
 - Bridges starts booting
 - Eventually Unipro linkup occurs

Testing:

 - Build tested against Helium kernel
 - Due to unavailability of MSM and DB3 platform, only minimal testing
   has been done.
 - Code has been modified for validation on Helium + SDB platform.
    Mostly dts changes for gpio numbers
    And debug messages to check gpio values
 - On Helium + SDB platform, with addition of debug messages validated
   the sequence.

TODO list:

 - Currently _only_ supports power on sequence (cold boot).
   Both warm and cold boot support. Cold and Warm boot is
   differentiated based on pulse width of wake_detect signal
      >=5 msec = Cold boot else Warm boot
 - No support for Power management
   So the "power-down", "power-off", "wake_in" and "wake_out"
   signals are not explored/implemented.
 - Support for Work thread
    repetitive wake signal if no response from peer
    May required for PM support, as we have delays in the sequences
 - pinctrl states, specially to make sure we enable right pullup or pulldown
   when we set wake_detect pin to input
 - Convert gpio list into an array, and associated xxx-gpio-name property

Signed-off-by: Vaibhav Hiremath <vaibhav.hiremath@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
8 years agogreybus: svc: don't trust any struct devices
Greg Kroah-Hartman [Fri, 16 Oct 2015 23:53:31 +0000 (16:53 -0700)]
greybus: svc: don't trust any struct devices

As the svc code is "odd" in how things are set up at initial connection
time, we can't always "know" that we have a valid bundle to use for
error messages.  So just punt and always use pr_*() calls to ensure that
we never incorrectly dereference a pointer.

This will get fixed up soon, but for now, let's just live with a bit
messier error messages in the log.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Alex Elder <elder@linaro.org>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
8 years agogreybus: core: remove uevent handling for gb_connection
Greg Kroah-Hartman [Fri, 16 Oct 2015 23:53:46 +0000 (16:53 -0700)]
greybus: core: remove uevent handling for gb_connection

As we are going to be removing the struct device from gb_connection,
there is no need to do anything for uevents for them.  So just remove
the code.  It wasn't doing anything anyway, so no functionality is lost
here at all.

As is_gb_connection() is no longer used, that is also removed in this
patch.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Alex Elder <elder@linaro.org>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
8 years agogreybus: bundle.h: add a private field to struct gb_bundle
Greg Kroah-Hartman [Fri, 16 Oct 2015 23:54:00 +0000 (16:54 -0700)]
greybus: bundle.h: add a private field to struct gb_bundle

The gb_bundle structure needs a private field if we are going to be able
to replace the gb_connection device with this one for all use cases.

Ideally we could use the private pointer within the struct device, but
for now let's just try to mirror how people were using the gb_connection
structure to make the patches simpler, and the logic the same.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Alex Elder <elder@linaro.org>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
8 years agogreybus: protocol: use the bundle struct device instead of the connector
Greg Kroah-Hartman [Fri, 16 Oct 2015 23:54:18 +0000 (16:54 -0700)]
greybus: protocol: use the bundle struct device instead of the connector

We are removing struct device from the gb_connection structure in the
near future.  The gb_bundle structure's struct device should be used as
a replacement.

This patch moves the protocol code to use the bundle pointer instead of
the connection pointer when printing out error messages.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Alex Elder <elder@linaro.org>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
8 years agogreybus: greybus_trace: use the bundle struct device instead of the connector
Greg Kroah-Hartman [Fri, 16 Oct 2015 23:55:29 +0000 (16:55 -0700)]
greybus: greybus_trace: use the bundle struct device instead of the connector

We are removing struct device from the gb_connection structure in the
near future.  The gb_bundle structure's struct device should be used as
a replacement.

This patch moves the greybus trace code to use the bundle pointer
instead of the connection pointer when printing out tracing messages.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Alex Elder <elder@linaro.org>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
8 years agogreybus: loopback: use the bundle struct device instead of the connector
Greg Kroah-Hartman [Fri, 16 Oct 2015 23:55:46 +0000 (16:55 -0700)]
greybus: loopback: use the bundle struct device instead of the connector

We are removing struct device from the gb_connection structure in the
near future.  The gb_bundle structure's struct device should be used as
a replacement.

This patch moves the loopback driver to use the bundle pointer instead
of the connection pointer.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Alex Elder <elder@linaro.org>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>