#include <linux/device.h>
#include <linux/mod_devicetable.h>

struct gio_device_id {
	__u8 id;
};

struct gio_device {
	struct device	dev;
	struct resource resource;
	unsigned int	irq;
	unsigned int	slotno;

	const char	*name;
	struct gio_device_id id;
	unsigned	id32:1;
	unsigned	gio64:1;
};
#define to_gio_device(d) container_of(d, struct gio_device, dev)

struct gio_driver {
	const char    *name;
	struct module *owner;
	const struct gio_device_id *id_table;

	int  (*probe)(struct gio_device *, const struct gio_device_id *);
	void (*remove)(struct gio_device *);
	int  (*suspend)(struct gio_device *, pm_message_t);
	int  (*resume)(struct gio_device *);
	void (*shutdown)(struct gio_device *);

	struct device_driver driver;
};
#define to_gio_driver(drv) container_of(drv, struct gio_driver, driver)

extern const struct gio_device_id *gio_match_device(const struct gio_device_id *,
						    const struct gio_device *);
extern struct gio_device *gio_dev_get(struct gio_device *);
extern void gio_dev_put(struct gio_device *);

extern int gio_device_register(struct gio_device *);
extern void gio_device_unregister(struct gio_device *);
extern void gio_release_dev(struct device *);

static inline void gio_device_free(struct gio_device *dev)
{
	gio_release_dev(&dev->dev);
}

extern int gio_register_driver(struct gio_driver *);
extern void gio_unregister_driver(struct gio_driver *);

#define gio_get_drvdata(_dev)	     drv_get_drvdata(&(_dev)->dev)
#define gio_set_drvdata(_dev, data)  drv_set_drvdata(&(_dev)->dev, (data))

extern void gio_set_master(struct gio_device *);
