1 // Copyright 2017 The Fuchsia Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #pragma once
6 
7 #include <ddk/device.h>
8 #include <ddk/io-buffer.h>
9 #include <ddk/protocol/gpioimpl.h>
10 #include <ddk/protocol/iommu.h>
11 #include <ddk/protocol/platform/bus.h>
12 
13 // BTI IDs for our devices
14 enum {
15     BTI_BOARD,
16     BTI_USB_XHCI,
17     BTI_MALI,
18     BTI_DISPLAY,
19     BTI_VIDEO,
20     BTI_AUDIO,
21     BTI_EMMC,
22     BTI_SDIO,
23     BTI_CANVAS,
24 };
25 
26 typedef struct {
27     pbus_protocol_t pbus;
28     gpio_impl_protocol_t gpio;
29     zx_device_t* parent;
30     iommu_protocol_t iommu;
31 } vim_bus_t;
32 
33 // vim-gpio.c
34 zx_status_t vim_gpio_init(vim_bus_t* bus, bool enable_test);
35 
36 // vim-i2c.c
37 zx_status_t vim_i2c_init(vim_bus_t* bus);
38 
39 // vim-mali.c
40 zx_status_t vim_mali_init(vim_bus_t* bus, uint32_t bti_index);
41 
42 // vim-uart.c
43 zx_status_t vim_uart_init(vim_bus_t* bus);
44 
45 // vim-usb.c
46 zx_status_t vim_usb_init(vim_bus_t* bus);
47 
48 // vim-sd-emmc.c
49 zx_status_t vim_sd_emmc_init(vim_bus_t* bus);
50 
51 // vim-sd-emmc.c
52 zx_status_t vim_sdio_init(vim_bus_t* bus);
53 
54 // vim-eth.c
55 zx_status_t vim_eth_init(vim_bus_t* bus);
56 
57 // vim-fanctl.c
58 zx_status_t vim2_thermal_init(vim_bus_t* bus);
59 
60 // vim-display.c
61 zx_status_t vim_display_init(vim_bus_t* bus);
62 
63 // vim-video.c
64 zx_status_t vim_video_init(vim_bus_t* bus);
65 
66 // vim-led2472g.c
67 zx_status_t vim_led2472g_init(vim_bus_t* bus);
68 
69 // vim-rtc.c
70 zx_status_t vim_rtc_init(vim_bus_t* bus);
71 
72 // vim-canvas.c
73 zx_status_t vim2_canvas_init(vim_bus_t* bus);
74 
75 // vim-clk.c
76 zx_status_t vim_clk_init(vim_bus_t* bus);
77