__u8    type;           /* E.g GB_I2C_TYPE_* or GB_GPIO_TYPE_* */
        __u8    result;         /* Result of request (in responses only) */
        __u8    pad[2];         /* must be zero (ignore when read) */
-};
+} __packed;
 
 
 /* Generic request numbers supported by all modules */
 struct gb_protocol_version_response {
        __u8    major;
        __u8    minor;
-};
+} __packed;
 
 /* Control Protocol */
 
 /* Control protocol manifest get size request has no payload*/
 struct gb_control_get_manifest_size_response {
        __le16                  size;
-};
+} __packed;
 
 /* Control protocol manifest get request has no payload */
 struct gb_control_get_manifest_response {
        __u8                    data[0];
-};
+} __packed;
 
 /* Control protocol [dis]connected request */
 struct gb_control_connected_request {
        __le16                  cport_id;
-};
+} __packed;
 
 struct gb_control_disconnected_request {
        __le16                  cport_id;
-};
+} __packed;
 /* Control protocol [dis]connected response has no payload */
 
 
 
 struct gb_battery_technology_response {
        __le32  technology;
-};
+} __packed;
 
 /* Should match up with battery status in linux/power_supply.h */
 #define GB_BATTERY_STATUS_UNKNOWN              0x0000
 
 struct gb_battery_status_response {
        __le16  battery_status;
-};
+} __packed;
 
 struct gb_battery_max_voltage_response {
        __le32  max_voltage;
-};
+} __packed;
 
 struct gb_battery_capacity_response {
        __le32  capacity;
-};
+} __packed;
 
 struct gb_battery_temperature_response {
        __le32  temperature;
-};
+} __packed;
 
 struct gb_battery_voltage_response {
        __le32  voltage;
-};
+} __packed;
 
 
 /* HID */
 struct gb_hid_get_report_request {
        __u8                            report_type;
        __u8                            report_id;
-};
+} __packed;
 
 /* HID set report request */
 struct gb_hid_set_report_request {
        __u8                            report_type;
        __u8                            report_id;
        __u8                            report[0];
-};
+} __packed;
 
 /* HID input report request, via interrupt pipe */
 struct gb_hid_input_report_request {
        __u8                            report[0];
-};
+} __packed;
 
 
 /* I2C */
 /* functionality request has no payload */
 struct gb_i2c_functionality_response {
        __le32  functionality;
-};
+} __packed;
 
 struct gb_i2c_timeout_request {
        __le16  msec;
-};
+} __packed;
 /* timeout response has no payload */
 
 struct gb_i2c_retries_request {
        __u8    retries;
-};
+} __packed;
 /* retries response has no payload */
 
 /*
        __le16  addr;
        __le16  flags;
        __le16  size;
-};
+} __packed;
 
 struct gb_i2c_transfer_request {
        __le16                          op_count;
        struct gb_i2c_transfer_op       ops[0];         /* op_count of these */
-};
+} __packed;
 struct gb_i2c_transfer_response {
        __u8                            data[0];        /* inbound data */
-};
+} __packed;
 
 
 /* GPIO */
 /* line count request has no payload */
 struct gb_gpio_line_count_response {
        __u8    count;
-};
+} __packed;
 
 struct gb_gpio_activate_request {
        __u8    which;
-};
+} __packed;
 /* activate response has no payload */
 
 struct gb_gpio_deactivate_request {
        __u8    which;
-};
+} __packed;
 /* deactivate response has no payload */
 
 struct gb_gpio_get_direction_request {
        __u8    which;
-};
+} __packed;
 struct gb_gpio_get_direction_response {
        __u8    direction;
-};
+} __packed;
 
 struct gb_gpio_direction_in_request {
        __u8    which;
-};
+} __packed;
 /* direction in response has no payload */
 
 struct gb_gpio_direction_out_request {
        __u8    which;
        __u8    value;
-};
+} __packed;
 /* direction out response has no payload */
 
 struct gb_gpio_get_value_request {
        __u8    which;
-};
+} __packed;
 struct gb_gpio_get_value_response {
        __u8    value;
-};
+} __packed;
 
 struct gb_gpio_set_value_request {
        __u8    which;
        __u8    value;
-};
+} __packed;
 /* set value response has no payload */
 
 struct gb_gpio_set_debounce_request {
 struct gb_gpio_irq_type_request {
        __u8    which;
        __u8    type;
-};
+} __packed;
 /* irq type response has no payload */
 
 struct gb_gpio_irq_mask_request {
        __u8    which;
-};
+} __packed;
 /* irq mask response has no payload */
 
 struct gb_gpio_irq_unmask_request {
        __u8    which;
-};
+} __packed;
 /* irq unmask response has no payload */
 
 /* irq event requests originate on another module and are handled on the AP */
 struct gb_gpio_irq_event_request {
        __u8    which;
-};
+} __packed;
 /* irq event has no response */
 
 
 /* pwm count request has no payload */
 struct gb_pwm_count_response {
        __u8    count;
-};
+} __packed;
 
 struct gb_pwm_activate_request {
        __u8    which;
-};
+} __packed;
 
 struct gb_pwm_deactivate_request {
        __u8    which;
-};
+} __packed;
 
 struct gb_pwm_config_request {
        __u8    which;
 struct gb_pwm_polarity_request {
        __u8    which;
        __u8    polarity;
-};
+} __packed;
 
 struct gb_pwm_enable_request {
        __u8    which;
-};
+} __packed;
 
 struct gb_pwm_disable_request {
        __u8    which;
-};
+} __packed;
 
 /* I2S */
 
        __u8    ll_wclk_tx_edge;
        __u8    ll_wclk_rx_edge;
        __u8    ll_data_offset;
-};
+} __packed;
 
 /* get supported configurations request has no payload */
 struct gb_i2s_mgmt_get_supported_configurations_response {
        __u8                                    config_count;
        __u8                                    pad[3];
        struct gb_i2s_mgmt_configuration        config[0];
-};
+} __packed;
 
 struct gb_i2s_mgmt_set_configuration_request {
        struct gb_i2s_mgmt_configuration        config;
-};
+} __packed;
 /* set configuration response has no payload */
 
 struct gb_i2s_mgmt_set_samples_per_message_request {
        __le16  samples_per_message;
-};
+} __packed;
 /* set samples per message response has no payload */
 
 /* get processing request delay has no payload */
 struct gb_i2s_mgmt_get_processing_delay_response {
        __le32  microseconds;
-};
+} __packed;
 
 struct gb_i2s_mgmt_set_start_delay_request {
        __le32  microseconds;
-};
+} __packed;
 /* set start delay response has no payload */
 
 struct gb_i2s_mgmt_activate_cport_request {
        __le16  cport;
-};
+} __packed;
 /* activate cport response has no payload */
 
 struct gb_i2s_mgmt_deactivate_cport_request {
        __le16  cport;
-};
+} __packed;
 /* deactivate cport response has no payload */
 
 struct gb_i2s_mgmt_report_event_request {
        __u8    event;
-};
+} __packed;
 /* report event response has no payload */
 
 #define GB_I2S_DATA_TYPE_SEND_DATA                     0x02
        __le32  sample_number;
        __le32  size;
        __u8    data[0];
-};
+} __packed;
 /* send data has no response at all */
 
 
 /* mode request has no payload */
 struct gb_spi_mode_response {
        __le16  mode;
-};
+} __packed;
 
 /* flags request has no payload */
 struct gb_spi_flags_response {
        __le16  flags;
-};
+} __packed;
 
 /* bits-per-word request has no payload */
 struct gb_spi_bpw_response {
        __le32  bits_per_word_mask;
-};
+} __packed;
 
 /* num-chipselects request has no payload */
 struct gb_spi_chipselect_response {
        __le16  num_chipselect;
-};
+} __packed;
 
 /**
  * struct gb_spi_transfer - a read/write buffer pair
        __le16          delay_usecs;
        __u8            cs_change;
        __u8            bits_per_word;
-};
+} __packed;
 
 struct gb_spi_transfer_request {
        __u8                    chip_select;    /* of the spi device */
        __u8                    mode;           /* of the spi device */
        __le16                  count;
        struct gb_spi_transfer  transfers[0];   /* count of these */
-};
+} __packed;
 
 struct gb_spi_transfer_response {
        __u8                    data[0];        /* inbound data */
-};
+} __packed;
 
 /* Version of the Greybus SVC protocol we support */
 #define GB_SVC_VERSION_MAJOR           0x00
 struct gb_raw_send_request {
        __le32  len;
        __u8    data[0];
-};
+} __packed;
 
 
 /* UART */
 struct gb_uart_send_data_request {
        __le16  size;
        __u8    data[0];
-};
+} __packed;
 
 /* recv-data-request flags */
 #define GB_UART_RECV_FLAG_FRAMING              0x01    /* Framing error */
 
 struct gb_uart_set_control_line_state_request {
        __u8    control;
-};
+} __packed;
 
 struct gb_uart_set_break_request {
        __u8    state;
-};
+} __packed;
 
 /* input control lines and line errors */
 #define GB_UART_CTRL_DCD                       0x01
 
 struct gb_uart_serial_state_request {
        __u8    control;
-};
+} __packed;
 
 /* Loopback */
 
 struct gb_loopback_transfer_request {
        __le32  len;
        __u8    data[0];
-};
+} __packed;
 
 struct gb_loopback_transfer_response {
        __u8    data[0];
-};
+} __packed;
 
 /* SDIO */
 /* Version of the Greybus sdio protocol we support */
        __le32 ocr;
        __le16 max_blk_count;
        __le16 max_blk_size;
-};
+} __packed;
 
 /* set ios request: response has no payload */
 struct gb_sdio_set_ios_request {
 
 struct gb_sdio_command_response {
        __le32  resp[4];
-};
+} __packed;
 
 /* transfer request */
 struct gb_sdio_transfer_request {
        __le16  data_blocks;
        __le16  data_blksz;
        __u8    data[0];
-};
+} __packed;
 
 /* event request: generated by module and is defined as unidirectional */
 struct gb_sdio_event_request {
 #define GB_SDIO_CARD_INSERTED  0x01
 #define GB_SDIO_CARD_REMOVED   0x02
 #define GB_SDIO_WP             0x04
-};
+} __packed;
 
 /* Lights */
 
 /* get count of lights in module */
 struct gb_lights_get_lights_response {
        __u8    lights_count;
-};
+} __packed;
 
 /* light config request payload */
 struct gb_lights_get_light_config_request {
        __u8    id;
-};
+} __packed;
 
 /* light config response payload */
 struct gb_lights_get_light_config_response {
        __u8    channel_count;
        __u8    name[32];
-};
+} __packed;
 
 /* channel config request payload */
 struct gb_lights_get_channel_config_request {
        __u8    light_id;
        __u8    channel_id;
-};
+} __packed;
 
 /* channel flash config request payload */
 struct gb_lights_get_channel_flash_config_request {
        __u8    light_id;
        __u8    channel_id;
-};
+} __packed;
 
 /* channel config response payload */
 struct gb_lights_get_channel_config_response {
        __le32  timeout_min_us;
        __le32  timeout_max_us;
        __le32  timeout_step_us;
-};
+} __packed;
 
 /* blink request payload: response have no payload */
 struct gb_lights_blink_request {
        __u8    channel_id;
        __le16  time_on_ms;
        __le16  time_off_ms;
-};
+} __packed;
 
 /* set brightness request payload: response have no payload */
 struct gb_lights_set_brightness_request {
        __u8    light_id;
        __u8    channel_id;
        __u8    brightness;
-};
+} __packed;
 
 /* set color request payload: response have no payload */
 struct gb_lights_set_color_request {
        __u8    channel_id;
        __u8    fade_in;
        __u8    fade_out;
-};
+} __packed;
 
 /* event request: generated by module */
 struct gb_lights_event_request {
        __u8    light_id;
        __u8    event;
 #define GB_LIGHTS_LIGHT_CONFIG         0x01
-};
+} __packed;
 
 /* set flash intensity request payload: response have no payload */
 struct gb_lights_set_flash_intensity_request {
        __u8    light_id;
        __u8    channel_id;
        __u8    state;
-};
+} __packed;
 
 /* set flash timeout request payload: response have no payload */
 struct gb_lights_set_flash_timeout_request {
 struct gb_lights_get_flash_fault_request {
        __u8    light_id;
        __u8    channel_id;
-};
+} __packed;
 
 /* get flash fault response payload */
 struct gb_lights_get_flash_fault_response {
 #define GB_LIGHTS_FLASH_FAULT_UNDER_VOLTAGE            0x00000020
 #define GB_LIGHTS_FLASH_FAULT_INPUT_VOLTAGE            0x00000040
 #define GB_LIGHTS_FLASH_FAULT_LED_OVER_TEMPERATURE     0x00000080
-};
+} __packed;
 
 #endif /* __GREYBUS_PROTOCOLS_H */