diff --git a/drivers/staging/greybus/Makefile b/drivers/staging/greybus/Makefile index 5d73aede91df..8e6551b08a93 100644 --- a/drivers/staging/greybus/Makefile +++ b/drivers/staging/greybus/Makefile @@ -14,11 +14,11 @@ gpbridge-y := gpb.o \ uart-gb.o \ pwm-gb.o \ gpio-gb.o \ + i2c-gb.o \ usb-gb.o obj-m += greybus.o obj-m += gpbridge.o -obj-m += i2c-gb.o obj-m += vibrator-gb.o obj-m += battery-gb.o obj-m += es1-ap-usb.o diff --git a/drivers/staging/greybus/gpb.c b/drivers/staging/greybus/gpb.c index 0c4f46c4d458..0776df65e4b6 100644 --- a/drivers/staging/greybus/gpb.c +++ b/drivers/staging/greybus/gpb.c @@ -41,8 +41,14 @@ static int __init gpbridge_init(void) pr_err("error initializing usb protocol\n"); goto error_usb; } + if (gb_i2c_protocol_init()) { + pr_err("error initializing usb protocol\n"); + goto error_i2c; + } return 0; +error_i2c: + gb_usb_protocol_exit(); error_usb: gb_sdio_protocol_exit(); error_sdio: @@ -57,6 +63,7 @@ error_gpio: static void __exit gpbridge_exit(void) { + gb_i2c_protocol_exit(); gb_usb_protocol_exit(); gb_sdio_protocol_exit(); gb_uart_protocol_exit(); diff --git a/drivers/staging/greybus/i2c-gb.c b/drivers/staging/greybus/i2c-gb.c index d430beac9d5c..b78de6b4be10 100644 --- a/drivers/staging/greybus/i2c-gb.c +++ b/drivers/staging/greybus/i2c-gb.c @@ -438,6 +438,12 @@ static struct gb_protocol i2c_protocol = { .request_recv = NULL, /* no incoming requests */ }; -gb_protocol_driver(&i2c_protocol); +int gb_i2c_protocol_init(void) +{ + return gb_protocol_register(&i2c_protocol); +} -MODULE_LICENSE("GPL v2"); +void gb_i2c_protocol_exit(void) +{ + gb_protocol_deregister(&i2c_protocol); +} diff --git a/drivers/staging/greybus/protocol.h b/drivers/staging/greybus/protocol.h index 1f6fd74a946f..2d4fcfac8052 100644 --- a/drivers/staging/greybus/protocol.h +++ b/drivers/staging/greybus/protocol.h @@ -66,6 +66,9 @@ extern void gb_sdio_protocol_exit(void); extern int gb_usb_protocol_init(void); extern void gb_usb_protocol_exit(void); +extern int gb_i2c_protocol_init(void); +extern void gb_i2c_protocol_exit(void); + #define gb_protocol_driver(__protocol) \ static int __init protocol_init(void) \ { \