linux/include/linux/greybus/control.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * Greybus CPort control protocol
   4 *
   5 * Copyright 2015 Google Inc.
   6 * Copyright 2015 Linaro Ltd.
   7 */
   8
   9#ifndef __CONTROL_H
  10#define __CONTROL_H
  11
  12#include <linux/types.h>
  13#include <linux/device.h>
  14
  15struct gb_control {
  16        struct device dev;
  17        struct gb_interface *intf;
  18
  19        struct gb_connection *connection;
  20
  21        u8 protocol_major;
  22        u8 protocol_minor;
  23
  24        bool has_bundle_activate;
  25        bool has_bundle_version;
  26
  27        char *vendor_string;
  28        char *product_string;
  29};
  30#define to_gb_control(d) container_of(d, struct gb_control, dev)
  31
  32struct gb_control *gb_control_create(struct gb_interface *intf);
  33int gb_control_enable(struct gb_control *control);
  34void gb_control_disable(struct gb_control *control);
  35int gb_control_suspend(struct gb_control *control);
  36int gb_control_resume(struct gb_control *control);
  37int gb_control_add(struct gb_control *control);
  38void gb_control_del(struct gb_control *control);
  39struct gb_control *gb_control_get(struct gb_control *control);
  40void gb_control_put(struct gb_control *control);
  41
  42int gb_control_get_bundle_versions(struct gb_control *control);
  43int gb_control_connected_operation(struct gb_control *control, u16 cport_id);
  44int gb_control_disconnected_operation(struct gb_control *control, u16 cport_id);
  45int gb_control_disconnecting_operation(struct gb_control *control,
  46                                       u16 cport_id);
  47int gb_control_mode_switch_operation(struct gb_control *control);
  48void gb_control_mode_switch_prepare(struct gb_control *control);
  49void gb_control_mode_switch_complete(struct gb_control *control);
  50int gb_control_get_manifest_size_operation(struct gb_interface *intf);
  51int gb_control_get_manifest_operation(struct gb_interface *intf, void *manifest,
  52                                      size_t size);
  53int gb_control_bundle_suspend(struct gb_control *control, u8 bundle_id);
  54int gb_control_bundle_resume(struct gb_control *control, u8 bundle_id);
  55int gb_control_bundle_deactivate(struct gb_control *control, u8 bundle_id);
  56int gb_control_bundle_activate(struct gb_control *control, u8 bundle_id);
  57int gb_control_interface_suspend_prepare(struct gb_control *control);
  58int gb_control_interface_deactivate_prepare(struct gb_control *control);
  59int gb_control_interface_hibernate_abort(struct gb_control *control);
  60#endif /* __CONTROL_H */
  61