greybus: replace Ara references
[cascardo/linux.git] / drivers / staging / greybus / interface.h
1 /*
2  * Greybus Interface Block code
3  *
4  * Copyright 2014 Google Inc.
5  * Copyright 2014 Linaro Ltd.
6  *
7  * Released under the GPLv2 only.
8  */
9
10 #ifndef __INTERFACE_H
11 #define __INTERFACE_H
12
13 enum gb_interface_type {
14         GB_INTERFACE_TYPE_INVALID = 0,
15         GB_INTERFACE_TYPE_UNKNOWN,
16         GB_INTERFACE_TYPE_DUMMY,
17         GB_INTERFACE_TYPE_UNIPRO,
18         GB_INTERFACE_TYPE_GREYBUS,
19 };
20
21 #define GB_INTERFACE_QUIRK_NO_CPORT_FEATURES            BIT(0)
22 #define GB_INTERFACE_QUIRK_NO_INIT_STATUS               BIT(1)
23 #define GB_INTERFACE_QUIRK_NO_GMP_IDS                   BIT(2)
24 #define GB_INTERFACE_QUIRK_FORCED_DISABLE               BIT(3)
25 #define GB_INTERFACE_QUIRK_LEGACY_MODE_SWITCH           BIT(4)
26 #define GB_INTERFACE_QUIRK_NO_BUNDLE_ACTIVATE           BIT(5)
27 #define GB_INTERFACE_QUIRK_NO_PM                        BIT(6)
28
29 struct gb_interface {
30         struct device dev;
31         struct gb_control *control;
32
33         struct list_head bundles;
34         struct list_head module_node;
35         struct list_head manifest_descs;
36         u8 interface_id;        /* Physical location within the Endo */
37         u8 device_id;
38         u8 features;            /* Feature flags set in the manifest */
39
40         enum gb_interface_type type;
41
42         u32 ddbl1_manufacturer_id;
43         u32 ddbl1_product_id;
44         u32 vendor_id;
45         u32 product_id;
46         u64 serial_number;
47
48         struct gb_host_device *hd;
49         struct gb_module *module;
50
51         unsigned long quirks;
52
53         struct mutex mutex;
54
55         bool disconnected;
56
57         bool ejected;
58         bool removed;
59         bool active;
60         bool enabled;
61         bool mode_switch;
62         bool dme_read;
63
64         struct work_struct mode_switch_work;
65         struct completion mode_switch_completion;
66 };
67 #define to_gb_interface(d) container_of(d, struct gb_interface, dev)
68
69 struct gb_interface *gb_interface_create(struct gb_module *module,
70                                          u8 interface_id);
71 int gb_interface_activate(struct gb_interface *intf);
72 void gb_interface_deactivate(struct gb_interface *intf);
73 int gb_interface_enable(struct gb_interface *intf);
74 void gb_interface_disable(struct gb_interface *intf);
75 int gb_interface_timesync_enable(struct gb_interface *intf, u8 count,
76                                  u64 frame_time, u32 strobe_delay, u32 refclk);
77 int gb_interface_timesync_authoritative(struct gb_interface *intf,
78                                         u64 *frame_time);
79 int gb_interface_timesync_disable(struct gb_interface *intf);
80 int gb_interface_add(struct gb_interface *intf);
81 void gb_interface_del(struct gb_interface *intf);
82 void gb_interface_put(struct gb_interface *intf);
83 void gb_interface_mailbox_event(struct gb_interface *intf, u16 result,
84                                                                 u32 mailbox);
85
86 int gb_interface_request_mode_switch(struct gb_interface *intf);
87
88 #endif /* __INTERFACE_H */