blob: 0776df65e4b6e15edabe589dee430d91ba28f930 [file] [log] [blame]
Greg Kroah-Hartmane1308c12014-12-24 13:01:43 -08001/*
2 * Greybus GP Bridge driver
3 *
4 * Copyright 2014 Google Inc.
5 * Copyright 2014 Linaro Ltd.
6 *
7 * Released under the GPLv2 only.
8 */
9
10#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
11
12#include <linux/types.h>
13#include <linux/module.h>
14#include <linux/moduleparam.h>
15#include <linux/kernel.h>
16#include <linux/slab.h>
17#include <linux/device.h>
18
19#include "greybus.h"
20
21
22static int __init gpbridge_init(void)
23{
24 if (gb_gpio_protocol_init()) {
25 pr_err("error initializing gpio protocol\n");
26 goto error_gpio;
27 }
28 if (gb_pwm_protocol_init()) {
29 pr_err("error initializing pwm protocol\n");
30 goto error_pwm;
31 }
32 if (gb_uart_protocol_init()) {
33 pr_err("error initializing uart protocol\n");
34 goto error_uart;
35 }
36 if (gb_sdio_protocol_init()) {
37 pr_err("error initializing sdio protocol\n");
38 goto error_sdio;
39 }
40 if (gb_usb_protocol_init()) {
41 pr_err("error initializing usb protocol\n");
42 goto error_usb;
43 }
Greg Kroah-Hartman2c078172014-12-24 13:01:44 -080044 if (gb_i2c_protocol_init()) {
45 pr_err("error initializing usb protocol\n");
46 goto error_i2c;
47 }
Greg Kroah-Hartmane1308c12014-12-24 13:01:43 -080048 return 0;
49
Greg Kroah-Hartman2c078172014-12-24 13:01:44 -080050error_i2c:
51 gb_usb_protocol_exit();
Greg Kroah-Hartmane1308c12014-12-24 13:01:43 -080052error_usb:
53 gb_sdio_protocol_exit();
54error_sdio:
55 gb_uart_protocol_exit();
56error_uart:
57 gb_pwm_protocol_exit();
58error_pwm:
59 gb_gpio_protocol_exit();
60error_gpio:
61 return -EPROTO;
62}
63
64static void __exit gpbridge_exit(void)
65{
Greg Kroah-Hartman2c078172014-12-24 13:01:44 -080066 gb_i2c_protocol_exit();
Greg Kroah-Hartmane1308c12014-12-24 13:01:43 -080067 gb_usb_protocol_exit();
68 gb_sdio_protocol_exit();
69 gb_uart_protocol_exit();
70 gb_pwm_protocol_exit();
71 gb_gpio_protocol_exit();
72}
73
74module_init(gpbridge_init);
75module_exit(gpbridge_exit);
76
77MODULE_LICENSE("GPL");