/* * Greybus endo code * * Copyright 2015 Google Inc. * Copyright 2015 Linaro Ltd. * * Released under the GPLv2 only. */ #ifndef __ENDO_H #define __ENDO_H /* Greybus "public" definitions" */ struct gb_svc_info { u8 serial_number[10]; u8 version[10]; }; /* Max ribs per Endo size */ #define ENDO_BACK_RIBS_MINI 0x4 #define ENDO_BACK_RIBS_MEDIUM 0x5 #define ENDO_BACK_RIBS_LARGE 0x6 /** * struct endo_layout - represents front/back ribs of the endo. * * @front_ribs: Mask of present ribs in front. * @left_ribs: Mask of present ribs in back (left). * @right_ribs: Mask of present ribs in back (right). * @max_ribs: Max ribs on endo back, possible values defined above. */ struct endo_layout { u8 front_ribs; u8 left_ribs; u8 right_ribs; u8 max_ribs; }; struct gb_endo { struct device dev; struct endo_layout layout; struct gb_svc_info svc_info; u16 dev_id; u16 id; u8 ap_intf_id; }; #define to_gb_endo(d) container_of(d, struct gb_endo, dev) /* Greybus "private" definitions */ struct greybus_host_device; int gb_endo_init(void); void gb_endo_exit(void); struct gb_endo *gb_endo_create(struct greybus_host_device *hd, u16 endo_id, u8 ap_intf_id); void gb_endo_remove(struct gb_endo *endo); u8 endo_get_module_id(struct gb_endo *endo, u8 interface_id); #endif /* __ENDO_H */