#include <stddef.h>

#include "pb.h"

#include "hdaudio.pb.h"

static const struct pb_field hdaudio_fgrp_info__fgrp_fields[] = {
	{
		.pbf_quant = PBQ_REQUIRED,
		.pbf_qu = { .required = {
			.offset = offsetof(struct hdaudio_fgrp_info__fgrp,
			    type),
		} },
		.pbf_type = { .pbt_type = PB_TYPE_ENUM },
		.pbf_name = "type",
		.pbf_tag = 1,
	},
	{
		.pbf_quant = PBQ_REQUIRED,
		.pbf_qu = { .required = {
			.offset = offsetof(struct hdaudio_fgrp_info__fgrp,
			    nid),
		} },
		.pbf_type = { .pbt_type = PB_TYPE_UINT32 },
		.pbf_name = "nid",
		.pbf_tag = 2,
	},
	{
		.pbf_quant = PBQ_REQUIRED,
		.pbf_qu = { .required = {
			.offset = offsetof(struct hdaudio_fgrp_info__fgrp,
			    codecid),
		} },
		.pbf_type = { .pbt_type = PB_TYPE_UINT32 },
		.pbf_name = "codecid",
		.pbf_tag = 3,
	},
	{
		.pbf_quant = PBQ_REQUIRED,
		.pbf_qu = { .required = {
			.offset = offsetof(struct hdaudio_fgrp_info__fgrp,
			    vendor_id),
		} },
		.pbf_type = { .pbt_type = PB_TYPE_UINT32 },
		.pbf_name = "vendor_id",
		.pbf_tag = 4,
	},
	{
		.pbf_quant = PBQ_REQUIRED,
		.pbf_qu = { .required = {
			.offset = offsetof(struct hdaudio_fgrp_info__fgrp,
			    product_id),
		} },
		.pbf_type = { .pbt_type = PB_TYPE_UINT32 },
		.pbf_name = "product_id",
		.pbf_tag = 5,
	},
	{
		.pbf_quant = PBQ_REQUIRED,
		.pbf_qu = { .required = {
			.offset = offsetof(struct hdaudio_fgrp_info__fgrp,
			    subsystem_id),
		} },
		.pbf_type = { .pbt_type = PB_TYPE_UINT32 },
		.pbf_name = "subsystem_id",
		.pbf_tag = 6,
	},
	{
		.pbf_quant = PBQ_OPTIONAL,
		.pbf_qu = { .optional = {
			.present_offset = offsetof(
			    struct hdaudio_fgrp_info__fgrp,
			    device.present),
			.value_offset = offsetof(
			    struct hdaudio_fgrp_info__fgrp,
			    device.value),
		} },
		.pbf_type = { .pbt_type = PB_TYPE_STRING },
		.pbf_name = "device",
		.pbf_tag = 7,
	},
};

const struct pb_msgdesc hdaudio_fgrp_info__fgrp_msgdesc = {
	.pbmd_name = "hdaudio_fgrp_info.fgrp",
	.pbmd_size = sizeof(struct hdaudio_fgrp_info__fgrp),
	.pbmd_fields = hdaudio_fgrp_info__fgrp_fields,
	.pbmd_nfields = __arraycount(hdaudio_fgrp_info__fgrp_fields),
};

static const struct pb_field hdaudio_fgrp_info_fields[] = {
	{
		.pbf_quant = PBQ_REPEATED,
		.pbf_qu = { .repeated = {
			.hdr_offset = offsetof(struct hdaudio_fgrp_info,
			    fgrps.repeated),
			.ptr_offset = offsetof(struct hdaudio_fgrp_info,
			    fgrps.item),
			.maximum = 128,
		} },
		.pbf_type = {
			.pbt_type = PB_TYPE_MSG,
			.pbt_u = { .msg = {
				.msgdesc = &hdaudio_fgrp_info__fgrp_msgdesc,
			} },
		},
		.pbf_name = "fgrps",
		.pbf_tag = 1,
	},
};

const struct pb_msgdesc hdaudio_fgrp_info_msgdesc = {
	.pbmd_name = "hdaudio_fgrp_info",
	.pbmd_size = sizeof(struct hdaudio_fgrp_info),
	.pbmd_fields = hdaudio_fgrp_info_fields,
	.pbmd_nfields = __arraycount(hdaudio_fgrp_info_fields),
};

static const struct pb_field hdaudio_fgrp_pin_config__pin_fields[] = {
	{
		.pbf_quant = PBQ_REQUIRED,
		.pbf_qu = { .required = {
			.offset = offsetof(struct hdaudio_fgrp_pin_config__pin,
			    nid),
		} },
		.pbf_type = { .pbt_type = PB_TYPE_UINT32 },
		.pbf_name = "nid",
		.pbf_tag = 1,
	},
	{
		.pbf_quant = PBQ_REQUIRED,
		.pbf_qu = { .required = {
			.offset = offsetof(struct hdaudio_fgrp_pin_config__pin,
			    config),
		} },
		.pbf_type = { .pbt_type = PB_TYPE_UINT32 },
		.pbf_name = "config",
		.pbf_tag = 2,
	},
};

const struct pb_msgdesc hdaudio_fgrp_pin_config__pin_msgdesc = {
	.pbmd_name = "hdaudio_fgrp_pin_config.pin",
	.pbmd_size = sizeof(struct hdaudio_fgrp_pin_config__pin),
	.pbmd_fields = hdaudio_fgrp_pin_config__pin_fields,
	.pbmd_nfields = __arraycount(hdaudio_fgrp_pin_config__pin_fields),
};

static const struct pb_field hdaudio_fgrp_pin_config_fields[] = {
	{
		.pbf_quant = PBQ_REPEATED,
		.pbf_qu = { .repeated = {
			.hdr_offset = offsetof(struct hdaudio_fgrp_pin_config,
				pins.repeated),
			.ptr_offset = offsetof(struct hdaudio_fgrp_pin_config,
				pins.item),
			.maximum = 128,
		} },
		.pbf_type = {
			.pbt_type = PB_TYPE_MSG,
			.pbt_u = { .msg = {
				.msgdesc =
				    &hdaudio_fgrp_pin_config__pin_msgdesc,
			} },
		},
		.pbf_name = "pins",
		.pbf_tag = 1,
	},
};

const struct pb_msgdesc hdaudio_fgrp_pin_config_msgdesc = {
	.pbmd_name = "hduadio_fgrp_pin_config",
	.pbmd_size = sizeof(struct hdaudio_fgrp_pin_config),
	.pbmd_fields = hdaudio_fgrp_pin_config_fields,
	.pbmd_nfields = __arraycount(hdaudio_fgrp_pin_config_fields),
};

static const struct pb_field hdaudio_fgrp_getconfig_request_fields[] = {
	{
		.pbf_quant = PBQ_REQUIRED,
		.pbf_qu = { .required = {
			.offset = offsetof(
			    struct hdaudio_fgrp_getconfig_request,
			    codecid)
		} },
		.pbf_type = { .pbt_type = PB_TYPE_UINT32 },
		.pbf_name = "codecid",
		.pbf_tag = 1,
	},
	{
		.pbf_quant = PBQ_REQUIRED,
		.pbf_qu = { .required = {
			.offset = offsetof(
			    struct hdaudio_fgrp_getconfig_request,
			    nid)
		} },
		.pbf_type = { .pbt_type = PB_TYPE_UINT32 },
		.pbf_name = "nid",
		.pbf_tag = 2,
	},
	{
		.pbf_quant = PBQ_OPTIONAL,
		.pbf_qu = { .optional = {
			.present_offset = offsetof(
			    struct hdaudio_fgrp_getconfig_request,
			    start.present),
			.value_offset = offsetof(
			    struct hdaudio_fgrp_getconfig_request,
			    start.value)
		} },
		.pbf_type = { .pbt_type = PB_TYPE_UINT32 },
		.pbf_name = "start",
		.pbf_tag = 3,
	},
	{
		.pbf_quant = PBQ_OPTIONAL,
		.pbf_qu = { .optional = {
			.present_offset = offsetof(
			    struct hdaudio_fgrp_getconfig_request,
			    end.present),
			.value_offset = offsetof(
			    struct hdaudio_fgrp_getconfig_request,
			    end.value),
		} },
		.pbf_type = { .pbt_type = PB_TYPE_UINT32 },
		.pbf_name = "end",
		.pbf_tag = 3,
	},
};

const struct pb_msgdesc hdaudio_fgrp_getconfig_request_msgdesc = {
	.pbmd_name = "hdaudio_fgrp_getconfig_request",
	.pbmd_size = sizeof(struct hdaudio_fgrp_getconfig_request),
	.pbmd_fields = hdaudio_fgrp_getconfig_request_fields,
	.pbmd_nfields = __arraycount(hdaudio_fgrp_getconfig_request_fields),
};

static const struct pb_field hdaudio_fgrp_getconfig_response_fields[] = {
	{
		.pbf_quant = PBQ_REQUIRED,
		.pbf_qu = { .required = {
			.offset = offsetof(
			    struct hdaudio_fgrp_getconfig_response,
			    pin_config),
		} },
		.pbf_type = {
			.pbt_type = PB_TYPE_MSG,
			.pbt_u = { .msg = {
				.msgdesc = &hdaudio_fgrp_pin_config_msgdesc
			} },
		},
		.pbf_name = "pin_config",
		.pbf_tag = 1,
	},
};

const struct pb_msgdesc hdaudio_fgrp_getconfig_response_msgdesc = {
	.pbmd_name = "hdaudio_fgrp_getconfig_response",
	.pbmd_size = sizeof(struct hdaudio_fgrp_getconfig_response),
	.pbmd_fields = hdaudio_fgrp_getconfig_response_fields,
	.pbmd_nfields = __arraycount(hdaudio_fgrp_getconfig_response_fields),
};