svn commit: r363645 - head/sys/arm/broadcom/bcm2835

Andrew Turner andrew at FreeBSD.org
Tue Jul 28 11:13:38 UTC 2020


Author: andrew
Date: Tue Jul 28 11:13:37 2020
New Revision: 363645
URL: https://svnweb.freebsd.org/changeset/base/363645

Log:
  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

Modified:
  head/sys/arm/broadcom/bcm2835/bcm2835_firmware.h

Modified: head/sys/arm/broadcom/bcm2835/bcm2835_firmware.h
==============================================================================
--- head/sys/arm/broadcom/bcm2835/bcm2835_firmware.h	Tue Jul 28 10:58:37 2020	(r363644)
+++ head/sys/arm/broadcom/bcm2835/bcm2835_firmware.h	Tue Jul 28 11:13:37 2020	(r363645)
@@ -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


More information about the svn-src-head mailing list