aboutsummaryrefslogtreecommitdiff
path: root/sys/arm
diff options
context:
space:
mode:
authorAndrew Turner <andrew@FreeBSD.org>2020-07-28 11:13:37 +0000
committerAndrew Turner <andrew@FreeBSD.org>2020-07-28 11:13:37 +0000
commitd9501cbab542bc875acba5396342a47b097e7e8d (patch)
tree86ae6bff433eebf62df3e6119a74ab1b96298e96 /sys/arm
parent8f11c997150d17d72a801874bd486aad1ef7c239 (diff)
downloadsrc-d9501cbab542bc875acba5396342a47b097e7e8d.tar.gz
src-d9501cbab542bc875acba5396342a47b097e7e8d.zip
Aadd Raspberry Pi firmware messages to manage GPIOs
Some GPIOs are managed by an external IO expaandder through the firmware. Add the message details for these. Sponsored by: Innovate UK
Notes
Notes: svn path=/head/; revision=363645
Diffstat (limited to 'sys/arm')
-rw-r--r--sys/arm/broadcom/bcm2835/bcm2835_firmware.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/sys/arm/broadcom/bcm2835/bcm2835_firmware.h b/sys/arm/broadcom/bcm2835/bcm2835_firmware.h
index c88b03e62d38..666e450914f8 100644
--- a/sys/arm/broadcom/bcm2835/bcm2835_firmware.h
+++ b/sys/arm/broadcom/bcm2835/bcm2835_firmware.h
@@ -142,6 +142,61 @@ union msg_set_turbo_body {
} resp;
};
+#define BCM2835_FIRMWARE_TAG_GET_GPIO_STATE 0x00030041
+#define BCM2835_FIRMWARE_TAG_SET_GPIO_STATE 0x00038041
+#define BCM2835_FIRMWARE_TAG_GET_GPIO_CONFIG 0x00030043
+#define BCM2835_FIRMWARE_TAG_SET_GPIO_CONFIG 0x00038043
+
+#define BCM2835_FIRMWARE_GPIO_IN 0
+#define BCM2835_FIRMWARE_GPIO_OUT 1
+
+union msg_get_gpio_state {
+ struct {
+ uint32_t gpio;
+ } req;
+ struct {
+ uint32_t gpio;
+ uint32_t state;
+ } resp;
+};
+
+union msg_set_gpio_state {
+ struct {
+ uint32_t gpio;
+ uint32_t state;
+ } req;
+ struct {
+ uint32_t gpio;
+ } resp;
+};
+
+union msg_get_gpio_config {
+ struct {
+ uint32_t gpio;
+ } req;
+ struct {
+ uint32_t gpio;
+ uint32_t dir;
+ uint32_t pol;
+ uint32_t term_en;
+ uint32_t term_pull_up;
+ } resp;
+};
+
+union msg_set_gpio_config {
+ struct {
+ uint32_t gpio;
+ uint32_t dir;
+ uint32_t pol;
+ uint32_t term_en;
+ uint32_t term_pull_up;
+ uint32_t state;
+ } req;
+ struct {
+ uint32_t gpio;
+ } resp;
+};
+
int bcm2835_firmware_property(device_t, uint32_t, void *, size_t);
#endif