blob: 50b0317d267e6621e4d02452cef3a842a82e25ee [file] [log] [blame]
Alex Elder8c12cde2014-10-01 21:54:12 -05001/*
2 * Greybus interfaces
3 *
4 * Copyright 2014 Google Inc.
5 *
6 * Released under the GPLv2 only.
7 */
8
9#ifndef __INTERFACE_H
10#define __INTERFACE_H
11
12#include <linux/list.h>
13
14struct gb_interface {
Greg Kroah-Hartmanf0f61b92014-10-24 17:34:46 +080015 struct device dev;
Alex Elder8c12cde2014-10-01 21:54:12 -050016 struct gb_module *gmod;
Alex Elder63cc9322014-10-02 12:30:02 -050017 u8 id;
Matt Porter1a4c0132014-10-21 22:43:30 -040018 u8 device_id;
Alex Elder748e1232014-10-03 14:14:22 -050019 struct list_head connections;
Alex Elder8c12cde2014-10-01 21:54:12 -050020
21 struct list_head links; /* module->interfaces */
22};
Greg Kroah-Hartmanf0f61b92014-10-24 17:34:46 +080023#define to_gb_interface(d) container_of(d, struct gb_interface, dev)
Alex Elder8c12cde2014-10-01 21:54:12 -050024
25struct gb_interface *gb_interface_create(struct gb_module *gmod, u8 module_id);
Greg Kroah-Hartmanf0f61b92014-10-24 17:34:46 +080026void gb_interface_destroy(struct gb_module *gmod);
Alex Elder8c12cde2014-10-01 21:54:12 -050027
Matt Porter1a4c0132014-10-21 22:43:30 -040028struct gb_interface *gb_interface_find(struct gb_module *gmod, u8 interface_id);
29
Alex Elder574341c2014-10-16 06:35:35 -050030int gb_interface_connections_init(struct gb_interface *interface);
Alex Elder697e55d2014-10-20 23:01:04 -050031void gb_interface_connections_exit(struct gb_interface *interface);
Alex Elder574341c2014-10-16 06:35:35 -050032
Alex Elder8c12cde2014-10-01 21:54:12 -050033#endif /* __INTERFACE_H */