/*
 * Greybus interfaces
 *
 * Copyright 2014 Google Inc.
 *
 * Released under the GPLv2 only.
 */

#ifndef __INTERFACE_H
#define __INTERFACE_H

#include <linux/list.h>

struct gb_interface {
	struct device		dev;
	struct gb_module	*gmod;
	u8			id;
	u8			device_id;
	struct list_head	connections;

	struct list_head	links;	/* module->interfaces */
};
#define to_gb_interface(d) container_of(d, struct gb_interface, dev)

struct gb_interface *gb_interface_create(struct gb_module *gmod, u8 module_id);
void gb_interface_destroy(struct gb_module *gmod);

struct gb_interface *gb_interface_find(struct gb_module *gmod, u8 interface_id);

int gb_interface_connections_init(struct gb_interface *interface);
void gb_interface_connections_exit(struct gb_interface *interface);

#endif /* __INTERFACE_H */
