History log of /fuchsia/zircon/system/dev/board/vim/vim-gpio.c
Revision Date Author Comments
# 6c2ccb39 19-Sep-2018 Mike Voydanoff <voydanoff@google.com>

[gpio] Refactor the GPIO protocol

This is a first step in a move toward using protocols to represent
individual resources. A similar change will be made to the I2C protocol
to bring it in line with how I2C is used on x86 platforms.

From the client's point of view, an instance of the ZX_PROTOCOL_GPIO
protocol now represents a single pin. The protocol remains the same,
except the "uint32_t index" has been removed from all the protocol functions.

For devices that have only one GPIO resource assigned to them, the driver
can simply call device_get_protocol() to access the GPIO protocol for the pin.
To for devices with more than one GPIO pins, a new API in the platform bus called
pdev_get_protocol() must be used instead.

In addition, we add a new protocol ZX_PROTOCOL_GPIO_IMPL, which is now
implemented by the GPIO drivers. This protocol is essentially the same as
the old GPIO protocol, except "index" has been renamed "pin".
Board drivers may use this protocol directly when doing low level system
configuration, specifying pin numbers directly.

TEST: Booted on VIM2 and Hikey.
On VIM2, USB, display, ethernet and the GPIO test driver are working properly
On Hikey, the system boots and USB is functional.

Change-Id: I44f1bc11ad9793543361a2d19d7a2de4458c334b


# 0d71f953 21-Aug-2018 Mike Voydanoff <voydanoff@google.com>

[dev][platform-bus] Clean-up and simplify platform bus protocol:

- Remove "flags" parameter from pbus_device_add().
Now platform devices can only be started in new devhosts.

- Add new API pbus_protocol_device_add(), for binding drivers that implement
platform bus protocols like GPIO and I2C_IMPL.
pbus_protocol_device_add() is equivalent to pbus_device_add(PDEV_ADD_PBUS_DEVHOST)
followed by pbus_wait_protocol().

- Remove pbus_wait_protocol(). pbus_protocol_device_add() does the wait for you automatically.

- Rename pbus_set_protocol() to pbus_register_protocol()

These changes will hopefully make the platform bus protocol easier
to understand and use.
I found two places where people accidentally using PDEV_ADD_PBUS_DEVHOST
inappropriately (probably copy & paste errors), which resulted in
the entire network stack and storage stack running in the platform bus devhost.
Hopefully this change will make it impossible for mistakes like that to happen again.

While doing this I also noticed that the gauss nand driver and vim2 ethernet driver
were running in the platform bus devhost. This change fixes that.

Also removed some remnants of the pbus_device_enable() API, which has been removed previously.

TEST: boot up on qemu, VIM2, gauss and astro and verified platform devices all start up properly

Change-Id: I580269bc6f53a63348ba8ab580259b1ba56dd393


# f6c50a66 28-Apr-2018 Mike Voydanoff <voydanoff@google.com>

[vim] Remove support for the original Khadas VIM board

No active development has been going on
and VIM is lagging further and further behind VIM2.
Having both boards just adds confusion, so now we just support VIM2.

Change-Id: I5d0c89b92187330c3dbb15d7d724bd7e32c0b89c


# 3b7433be 17-Apr-2018 Brijen Raval <braval@google.com>

[gpio][interrupts] Add GPIO Interrupt Support

Change-Id: Ib9890ed4170fbb84c4c0bb657d716fb3ae983516


# dfbfc762 30-Mar-2018 Mike Voydanoff <voydanoff@google.com>

[board][vim] Move hard coded MMIO addresses and IRQ numbers to s912hw.h

Change-Id: I28b62204a56fbcbdd5c43771eac2662ca3778303


# 89474d5e 27-Feb-2018 Mike Voydanoff <voydanoff@google.com>

[dev][gpio-test] Replace board specific gpio-test drivers with a common driver

Change-Id: I1ec684d8bdd539d3a9d26a8183178016b7d5d129


# dbefd33f 31-Jan-2018 Mike Voydanoff <voydanoff@google.com>

[dev][gpio][aml-s912] GPIO driver for Amlogic S912 and S905X

Also integrate into the VIM board driver and add GPIO test driver
that blinks the LED at the back of the board.

Change-Id: I7e1f25cac5cb49347eaa7a3919c8791f97eea12b