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/gpio-impl.h>
10#include <ddk/protocol/iommu.h>
11#include <ddk/protocol/platform-bus.h>
12
13// BTI IDs for our devices
14enum {
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
26typedef struct {
27    platform_bus_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
34zx_status_t vim_gpio_init(vim_bus_t* bus);
35
36// vim-i2c.c
37zx_status_t vim_i2c_init(vim_bus_t* bus);
38
39// vim-mali.c
40zx_status_t vim_mali_init(vim_bus_t* bus, uint32_t bti_index);
41
42// vim-uart.c
43zx_status_t vim_uart_init(vim_bus_t* bus);
44
45// vim-usb.c
46zx_status_t vim_usb_init(vim_bus_t* bus);
47
48// vim-sd-emmc.c
49zx_status_t vim_sd_emmc_init(vim_bus_t* bus);
50
51// vim-sd-emmc.c
52zx_status_t vim_sdio_init(vim_bus_t* bus);
53
54// vim-eth.c
55zx_status_t vim_eth_init(vim_bus_t* bus);
56
57// vim-fanctl.c
58zx_status_t vim2_thermal_init(vim_bus_t* bus);
59
60// vim-display.c
61zx_status_t vim_display_init(vim_bus_t* bus);
62
63// vim-video.c
64zx_status_t vim_video_init(vim_bus_t* bus);
65
66// vim-led2472g.c
67zx_status_t vim_led2472g_init(vim_bus_t* bus);
68
69// vim-rtc.c
70zx_status_t vim_rtc_init(vim_bus_t* bus);
71
72// vim-canvas.c
73zx_status_t vim2_canvas_init(vim_bus_t* bus);
74
75// vim-clk.c
76zx_status_t vim_clk_init(vim_bus_t* bus);
77