Add an offloaded connection flag, which is used to mark a connection as
offloaded and prevent drivers from initiating operation over it.
This will be used for the audio and camera data connections.
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>
#define GB_CONNECTION_FLAG_CSD BIT(0)
#define GB_CONNECTION_FLAG_NO_FLOWCTRL BIT(1)
+#define GB_CONNECTION_FLAG_OFFLOADED BIT(2)
enum gb_connection_state {
GB_CONNECTION_STATE_INVALID = 0,
return connection->flags & GB_CONNECTION_FLAG_NO_FLOWCTRL;
}
+static inline bool gb_connection_is_offloaded(struct gb_connection *connection)
+{
+ return connection->flags & GB_CONNECTION_FLAG_OFFLOADED;
+}
+
static inline void *gb_connection_get_data(struct gb_connection *connection)
{
return connection->private;
unsigned int cycle;
int ret;
+ if (gb_connection_is_offloaded(connection))
+ return -EBUSY;
+
if (!callback)
return -EINVAL;
size_t msg_size;
u16 operation_id;
- if (connection->state != GB_CONNECTION_STATE_ENABLED &&
- connection->state != GB_CONNECTION_STATE_ENABLED_TX) {
+ if ((connection->state != GB_CONNECTION_STATE_ENABLED &&
+ connection->state != GB_CONNECTION_STATE_ENABLED_TX) ||
+ gb_connection_is_offloaded(connection)) {
dev_warn(dev, "%s: dropping %zu received bytes\n",
connection->name, size);
return;