/* Generic request types */
-#define GB_REQUEST_TYPE_PING 0x00
+#define GB_REQUEST_TYPE_CPORT_SHUTDOWN 0x00
#define GB_REQUEST_TYPE_INVALID 0x7f
-struct gb_protocol_version_request {
- __u8 major;
- __u8 minor;
+struct gb_cport_shutdown_request {
+ __u8 phase;
} __packed;
-struct gb_protocol_version_response {
- __u8 major;
- __u8 minor;
-} __packed;
/* Control Protocol */
#define GB_CONTROL_TYPE_BUNDLE_DEACTIVATE 0x11
#define GB_CONTROL_TYPE_BUNDLE_ACTIVATE 0x12
#define GB_CONTROL_TYPE_INTF_SUSPEND_PREPARE 0x13
+#define GB_CONTROL_TYPE_INTF_DEACTIVATE_PREPARE 0x14
+#define GB_CONTROL_TYPE_INTF_HIBERNATE_ABORT 0x15
struct gb_control_version_request {
__u8 major;
/* request to control the CSI transmitter */
#define GB_APB_REQUEST_CSI_TX_CONTROL 0x08
-/* request to control the CSI transmitter */
+/* request to control audio streaming */
#define GB_APB_REQUEST_AUDIO_CONTROL 0x09
-/* vendor requests to enable/disable CPort features */
-#define GB_APB_REQUEST_CPORT_FEAT_EN 0x0b
-#define GB_APB_REQUEST_CPORT_FEAT_DIS 0x0c
-
-/* TimeSync commands */
-#define REQUEST_TIMESYNC_ENABLE 0x0d
-#define REQUEST_TIMESYNC_DISABLE 0x0e
-#define REQUEST_TIMESYNC_AUTHORITATIVE 0x0f
-#define REQUEST_TIMESYNC_GET_LAST_EVENT 0x10
+/* TimeSync requests */
+#define GB_APB_REQUEST_TIMESYNC_ENABLE 0x0d
+#define GB_APB_REQUEST_TIMESYNC_DISABLE 0x0e
+#define GB_APB_REQUEST_TIMESYNC_AUTHORITATIVE 0x0f
+#define GB_APB_REQUEST_TIMESYNC_GET_LAST_EVENT 0x10
/* requests to set Greybus CPort flags */
#define GB_APB_REQUEST_CPORT_FLAGS 0x11
+/* ARPC request */
+#define GB_APB_REQUEST_ARPC_RUN 0x12
+
struct gb_apb_request_cport_flags {
- u32 flags;
+ __le32 flags;
#define GB_APB_CPORT_FLAG_CONTROL 0x01
#define GB_APB_CPORT_FLAG_HIGH_PRIO 0x02
} __packed;
#define GB_FW_DOWNLOAD_TYPE_FETCH_FIRMWARE 0x02
#define GB_FW_DOWNLOAD_TYPE_RELEASE_FIRMWARE 0x03
-#define GB_FIRMWARE_TAG_MAX_LEN 10
+#define GB_FIRMWARE_TAG_MAX_SIZE 10
/* firmware download find firmware request/response */
struct gb_fw_download_find_firmware_request {
- __u8 firmware_tag[GB_FIRMWARE_TAG_MAX_LEN];
+ __u8 firmware_tag[GB_FIRMWARE_TAG_MAX_SIZE];
} __packed;
struct gb_fw_download_find_firmware_response {
#define GB_FW_BACKEND_FW_STATUS_FAIL_FETCH 0x03
#define GB_FW_BACKEND_FW_STATUS_FAIL_WRITE 0x04
#define GB_FW_BACKEND_FW_STATUS_INT 0x05
+#define GB_FW_BACKEND_FW_STATUS_RETRY 0x06
+#define GB_FW_BACKEND_FW_STATUS_NOT_SUPPORTED 0x07
+
+#define GB_FW_BACKEND_VERSION_STATUS_SUCCESS 0x01
+#define GB_FW_BACKEND_VERSION_STATUS_NOT_AVAILABLE 0x02
+#define GB_FW_BACKEND_VERSION_STATUS_NOT_SUPPORTED 0x03
+#define GB_FW_BACKEND_VERSION_STATUS_RETRY 0x04
+#define GB_FW_BACKEND_VERSION_STATUS_FAIL_INT 0x05
/* firmware management interface firmware version request has no payload */
struct gb_fw_mgmt_interface_fw_version_response {
- __u8 firmware_tag[GB_FIRMWARE_TAG_MAX_LEN];
+ __u8 firmware_tag[GB_FIRMWARE_TAG_MAX_SIZE];
__le16 major;
__le16 minor;
} __packed;
struct gb_fw_mgmt_load_and_validate_fw_request {
__u8 request_id;
__u8 load_method;
- __u8 firmware_tag[GB_FIRMWARE_TAG_MAX_LEN];
+ __u8 firmware_tag[GB_FIRMWARE_TAG_MAX_SIZE];
} __packed;
/* firmware management load and validate firmware response has no payload*/
/* firmware management backend firmware version request/response */
struct gb_fw_mgmt_backend_fw_version_request {
- __u8 firmware_tag[GB_FIRMWARE_TAG_MAX_LEN];
+ __u8 firmware_tag[GB_FIRMWARE_TAG_MAX_SIZE];
} __packed;
struct gb_fw_mgmt_backend_fw_version_response {
__le16 major;
__le16 minor;
+ __u8 status;
} __packed;
/* firmware management backend firmware update request */
struct gb_fw_mgmt_backend_fw_update_request {
__u8 request_id;
- __u8 firmware_tag[GB_FIRMWARE_TAG_MAX_LEN];
+ __u8 firmware_tag[GB_FIRMWARE_TAG_MAX_SIZE];
} __packed;
/* firmware management backend firmware update response has no payload */
#define GB_POWER_SUPPLY_TYPE_SET_PROPERTY 0x06
#define GB_POWER_SUPPLY_TYPE_EVENT 0x07
-/* Should match up with battery technologies in linux/power_supply.h */
+/* Greybus power supply battery technologies types */
#define GB_POWER_SUPPLY_TECH_UNKNOWN 0x0000
#define GB_POWER_SUPPLY_TECH_NiMH 0x0001
#define GB_POWER_SUPPLY_TECH_LION 0x0002
#define GB_POWER_SUPPLY_TECH_NiCd 0x0005
#define GB_POWER_SUPPLY_TECH_LiMn 0x0006
-/* Should match up with power supply types in linux/power_supply.h */
+/* Greybus power supply types */
#define GB_POWER_SUPPLY_UNKNOWN_TYPE 0x0000
#define GB_POWER_SUPPLY_BATTERY_TYPE 0x0001
#define GB_POWER_SUPPLY_UPS_TYPE 0x0002
#define GB_POWER_SUPPLY_USB_CDP_TYPE 0x0006
#define GB_POWER_SUPPLY_USB_ACA_TYPE 0x0007
-/* Should match up with power supply health in linux/power_supply.h */
+/* Greybus power supply health values */
#define GB_POWER_SUPPLY_HEALTH_UNKNOWN 0x0000
#define GB_POWER_SUPPLY_HEALTH_GOOD 0x0001
#define GB_POWER_SUPPLY_HEALTH_OVERHEAT 0x0002
#define GB_POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE 0x0007
#define GB_POWER_SUPPLY_HEALTH_SAFETY_TIMER_EXPIRE 0x0008
-/* Should match up with battery status in linux/power_supply.h */
-#define GB_POWER_SUPPLY_STATUS_UNKNOWN 0x0000
-#define GB_POWER_SUPPLY_STATUS_CHARGING 0x0001
-#define GB_POWER_SUPPLY_STATUS_DISCHARGING 0x0002
-#define GB_POWER_SUPPLY_STATUS_NOT_CHARGING 0x0003
-#define GB_POWER_SUPPLY_STATUS_FULL 0x0004
+/* Greybus power supply status values */
+#define GB_POWER_SUPPLY_STATUS_UNKNOWN 0x0000
+#define GB_POWER_SUPPLY_STATUS_CHARGING 0x0001
+#define GB_POWER_SUPPLY_STATUS_DISCHARGING 0x0002
+#define GB_POWER_SUPPLY_STATUS_NOT_CHARGING 0x0003
+#define GB_POWER_SUPPLY_STATUS_FULL 0x0004
+
+/* Greybus power supply capacity level values */
+#define GB_POWER_SUPPLY_CAPACITY_LEVEL_UNKNOWN 0x0000
+#define GB_POWER_SUPPLY_CAPACITY_LEVEL_CRITICAL 0x0001
+#define GB_POWER_SUPPLY_CAPACITY_LEVEL_LOW 0x0002
+#define GB_POWER_SUPPLY_CAPACITY_LEVEL_NORMAL 0x0003
+#define GB_POWER_SUPPLY_CAPACITY_LEVEL_HIGH 0x0004
+#define GB_POWER_SUPPLY_CAPACITY_LEVEL_FULL 0x0005
+
+/* Greybus power supply scope values */
+#define GB_POWER_SUPPLY_SCOPE_UNKNOWN 0x0000
+#define GB_POWER_SUPPLY_SCOPE_SYSTEM 0x0001
+#define GB_POWER_SUPPLY_SCOPE_DEVICE 0x0002
struct gb_power_supply_get_supplies_response {
__u8 supplies_count;
#define GB_SVC_TYPE_TIMESYNC_WAKE_PINS_ACQUIRE 0x18
#define GB_SVC_TYPE_TIMESYNC_WAKE_PINS_RELEASE 0x19
#define GB_SVC_TYPE_TIMESYNC_PING 0x1a
-#define GB_SVC_TYPE_CONN_QUIESCING 0x1e
#define GB_SVC_TYPE_MODULE_INSERTED 0x1f
#define GB_SVC_TYPE_MODULE_REMOVED 0x20
#define GB_SVC_TYPE_INTF_VSYS_ENABLE 0x21
#define GB_SVC_TYPE_INTF_UNIPRO_ENABLE 0x25
#define GB_SVC_TYPE_INTF_UNIPRO_DISABLE 0x26
#define GB_SVC_TYPE_INTF_ACTIVATE 0x27
+#define GB_SVC_TYPE_INTF_RESUME 0x28
#define GB_SVC_TYPE_INTF_MAILBOX_EVENT 0x29
+#define GB_SVC_TYPE_INTF_OOPS 0x2a
/* Greybus SVC protocol status values */
#define GB_SVC_OP_SUCCESS 0x00
#define GB_INIT_UNTRUSTED_SPI_BOOT_FINISHED 0x04
#define GB_INIT_BOOTROM_UNIPRO_BOOT_STARTED 0x06
#define GB_INIT_BOOTROM_FALLBACK_UNIPRO_BOOT_STARTED 0x09
+#define GB_INIT_S2_LOADER_BOOT_STARTED 0x0D
struct gb_svc_route_create_request {
__u8 intf1_id;
__u8 intf_type;
} __packed;
+struct gb_svc_intf_resume_request {
+ __u8 intf_id;
+} __packed;
+
+struct gb_svc_intf_resume_response {
+ __u8 status;
+} __packed;
+
#define GB_SVC_INTF_MAILBOX_NONE 0x00
#define GB_SVC_INTF_MAILBOX_AP 0x01
#define GB_SVC_INTF_MAILBOX_GREYBUS 0x02
} __packed;
/* intf_mailbox_event response has no payload */
-struct gb_svc_conn_quiescing_request {
- __u8 intf1_id;
- __le16 cport1_id;
- __u8 intf2_id;
- __le16 cport2_id;
-} __packed;
-
-struct gb_svc_conn_quiescing_response {
- __u8 status;
+struct gb_svc_intf_oops_request {
+ __u8 intf_id;
+ __u8 reason;
} __packed;
+/* intf_oops response has no payload */
/* RAW */
/* see possible values below at vdd */
__le32 ocr;
- __le16 max_blk_count;
- __le16 max_blk_size;
__le32 f_min;
__le32 f_max;
+ __le16 max_blk_count;
+ __le16 max_blk_size;
} __packed;
/* set ios request: response has no payload */
__le16 format;
__u8 virtual_channel;
__u8 data_type[2];
- __u8 padding[3];
+ __le16 max_pkt_size;
+ __u8 padding;
__le32 max_size;
} __packed;
struct gb_camera_configure_streams_response {
__u8 num_streams;
- __u8 flags;
#define GB_CAMERA_CONFIGURE_STREAMS_ADJUSTED 0x01
- __u8 num_lanes;
- __u8 padding;
- __le32 bus_freq;
- __le32 lines_per_second;
+ __u8 flags;
+ __u8 padding[2];
+ __le32 data_rate;
struct gb_camera_stream_config_response config[0];
-} __packed;
+};
/* Greybus Camera Capture request payload - response has no payload */
struct gb_camera_capture_request {
#define GB_AUDIO_TYPE_GET_PCM 0x08
#define GB_AUDIO_TYPE_SET_PCM 0x09
#define GB_AUDIO_TYPE_SET_TX_DATA_SIZE 0x0a
-#define GB_AUDIO_TYPE_GET_TX_DELAY 0x0b
+ /* 0x0b unused */
#define GB_AUDIO_TYPE_ACTIVATE_TX 0x0c
#define GB_AUDIO_TYPE_DEACTIVATE_TX 0x0d
#define GB_AUDIO_TYPE_SET_RX_DATA_SIZE 0x0e
-#define GB_AUDIO_TYPE_GET_RX_DELAY 0x0f
+ /* 0x0f unused */
#define GB_AUDIO_TYPE_ACTIVATE_RX 0x10
#define GB_AUDIO_TYPE_DEACTIVATE_RX 0x11
#define GB_AUDIO_TYPE_JACK_EVENT 0x12
__u8 num_controls;
__u8 num_widgets;
__u8 num_routes;
- __u32 size_dais;
- __u32 size_controls;
- __u32 size_widgets;
- __u32 size_routes;
+ __le32 size_dais;
+ __le32 size_controls;
+ __le32 size_widgets;
+ __le32 size_routes;
/*
* struct gb_audio_dai dai[num_dais];
* struct gb_audio_control controls[num_controls];
__le16 size;
} __packed;
-struct gb_audio_get_tx_delay_request {
- __le16 data_cport;
-} __packed;
-
-struct gb_audio_get_tx_delay_response {
- __le32 delay;
-} __packed;
-
struct gb_audio_activate_tx_request {
__le16 data_cport;
} __packed;
__le16 size;
} __packed;
-struct gb_audio_get_rx_delay_request {
- __le16 data_cport;
-} __packed;
-
-struct gb_audio_get_rx_delay_response {
- __le32 delay;
-} __packed;
-
struct gb_audio_activate_rx_request {
__le16 data_cport;
} __packed;