2 * Greybus GPBridge phy driver
4 * Copyright 2016 Google Inc.
6 * Released under the GPLv2 only.
12 struct gpbridge_device {
14 struct greybus_descriptor_cport *cport_desc;
15 struct gb_bundle *bundle;
16 struct list_head list;
19 #define to_gpbridge_dev(d) container_of(d, struct gpbridge_device, dev)
21 static inline void *gb_gpbridge_get_data(struct gpbridge_device *gdev)
23 return dev_get_drvdata(&gdev->dev);
26 static inline void gb_gpbridge_set_data(struct gpbridge_device *gdev, void *data)
28 dev_set_drvdata(&gdev->dev, data);
31 struct gpbridge_device_id {
35 #define GPBRIDGE_PROTOCOL(p) \
38 struct gpbridge_driver {
40 int (*probe)(struct gpbridge_device *,
41 const struct gpbridge_device_id *id);
42 void (*remove)(struct gpbridge_device *);
43 const struct gpbridge_device_id *id_table;
45 struct device_driver driver;
47 #define to_gpbridge_driver(d) container_of(d, struct gpbridge_driver, driver)
49 int gb_gpbridge_get_version(struct gb_connection *connection);
50 int gb_gpbridge_register_driver(struct gpbridge_driver *driver,
51 struct module *owner, const char *mod_name);
52 void gb_gpbridge_deregister_driver(struct gpbridge_driver *driver);
54 #define gb_gpbridge_register(driver) \
55 gb_gpbridge_register_driver(driver, THIS_MODULE, KBUILD_MODNAME)
56 #define gb_gpbridge_deregister(driver) \
57 gb_gpbridge_deregister_driver(driver)
59 #define gb_gpbridge_builtin_driver(__driver) \
60 int __init gb_##__driver##_init(void) \
62 return gb_gpbridge_register(&__driver); \
64 void gb_##__driver##_exit(void) \
66 gb_gpbridge_deregister(&__driver); \
69 extern int gb_gpio_protocol_init(void);
70 extern void gb_gpio_protocol_exit(void);
72 extern int gb_pwm_protocol_init(void);
73 extern void gb_pwm_protocol_exit(void);
75 extern int gb_uart_protocol_init(void);
76 extern void gb_uart_protocol_exit(void);
78 extern int gb_sdio_protocol_init(void);
79 extern void gb_sdio_protocol_exit(void);
81 extern int gb_usb_protocol_init(void);
82 extern void gb_usb_protocol_exit(void);
84 extern int gb_i2c_protocol_init(void);
85 extern void gb_i2c_protocol_exit(void);
87 extern int gb_spi_protocol_init(void);
88 extern void gb_spi_protocol_exit(void);
90 #endif /* __GPBRIDGE_H */