// Copyright 2016 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// clang-format off

#ifndef DDK_PROTOCOL_DEF
#error Internal use only. Do not include.
#else
#ifndef PF_NOPUB
// Do not publish aliases in /dev/class/...
#define PF_NOPUB 1
#endif
DDK_PROTOCOL_DEF(BLOCK,          'pBLK', "block", 0)
DDK_PROTOCOL_DEF(BLOCK_IMPL,     'pBKC', "block-impl", 0)
DDK_PROTOCOL_DEF(CONSOLE,        'pCON', "console", 0)
DDK_PROTOCOL_DEF(DEVICE,         'pDEV', "device", 0)
DDK_PROTOCOL_DEF(DISPLAY_CONTROLLER, 'pDSC', "display-controller", 0)
DDK_PROTOCOL_DEF(DISPLAY_CONTROLLER_IMPL, 'pDCI', "display-controller-impl", PF_NOPUB)
DDK_PROTOCOL_DEF(ETHERNET,       'pETH', "ethernet", 0)
DDK_PROTOCOL_DEF(ETHMAC,         'pEMA', "ethmac", 0)
DDK_PROTOCOL_DEF(FRAMEBUFFER,    'pFRB', "framebuffer", 0)
DDK_PROTOCOL_DEF(GPIO,           'pGPO', "gpio", PF_NOPUB)
DDK_PROTOCOL_DEF(GPIO_IMPL,      'pGPI', "gpio-impl", PF_NOPUB)
DDK_PROTOCOL_DEF(HIDBUS,         'pHID', "hidbus", 0)
DDK_PROTOCOL_DEF(I2C,            'pI2C', "i2c", 0)
DDK_PROTOCOL_DEF(I2C_IMPL ,      'pI2I', "i2c-impl", 0)
DDK_PROTOCOL_DEF(INPUT,          'pINP', "input", 0)
DDK_PROTOCOL_DEF(ROOT,           'pAAA', "root", PF_NOPUB)
DDK_PROTOCOL_DEF(MISC,           'pMSC', "misc", PF_NOPUB)
DDK_PROTOCOL_DEF(MISC_PARENT,    'pMSP', "misc-parent", PF_NOPUB)
DDK_PROTOCOL_DEF(ACPI,           'pACP', "acpi", 0)
DDK_PROTOCOL_DEF(PCI,            'pPCI', "pci", 0)
DDK_PROTOCOL_DEF(PCIROOT,        'pPRT', "pci-root", PF_NOPUB)
DDK_PROTOCOL_DEF(TPM,            'pTPM', "tpm", 0)
DDK_PROTOCOL_DEF(USB,            'pUSB', "usb", PF_NOPUB)
DDK_PROTOCOL_DEF(USB_BUS,        'pUBS', "usb-bus", PF_NOPUB)
DDK_PROTOCOL_DEF(USB_COMPOSITE,  'pUBC', "usb-composite", PF_NOPUB)
DDK_PROTOCOL_DEF(USB_DCI,        'pUDC', "usb-dci", 0)  // Device Controller Interface
DDK_PROTOCOL_DEF(USB_DEVICE,     'pUSD', "usb-device", 0)
DDK_PROTOCOL_DEF(USB_PERIPHERAL, 'pUSP', "usb-peripheral", 0)
DDK_PROTOCOL_DEF(USB_FUNCTION,   'pUSF', "usb-function", 0)
DDK_PROTOCOL_DEF(USB_HCI,        'pUHI', "usb-hci", 0)  // Host Controller Interface
DDK_PROTOCOL_DEF(USB_MODE_SWITCH,'pUMS', "usb-mode-switch", 0)
DDK_PROTOCOL_DEF(USB_DBC,        'pUDB', "usb-dbc", 0) // Debug Capability
DDK_PROTOCOL_DEF(USB_TESTER,     'pUTR', "usb-tester", 0)
DDK_PROTOCOL_DEF(USB_TEST_FWLOADER, 'pUTF', "usb-test-fwloader", 0)
DDK_PROTOCOL_DEF(BT_HCI,         'pBHC', "bt-hci", 0)
DDK_PROTOCOL_DEF(BT_TRANSPORT,   'pBTR', "bt-transport", 0)
DDK_PROTOCOL_DEF(BT_HOST,        'pBTH', "bt-host", 0)
DDK_PROTOCOL_DEF(BT_GATT_SVC,    'pBGS', "bt-gatt-svc", 0)
DDK_PROTOCOL_DEF(AUDIO,          'pAUD', "audio", 0)
DDK_PROTOCOL_DEF(MIDI,           'pMID', "midi", 0)
DDK_PROTOCOL_DEF(SDHCI,          'pSDH', "sdhci", 0)
DDK_PROTOCOL_DEF(SDMMC,          'pSDM', "sdmmc", 0)
DDK_PROTOCOL_DEF(SDIO,           'pSDI', "sdio", 0)
DDK_PROTOCOL_DEF(WLANPHY,        'pWLP', "wlanphy", 0)
DDK_PROTOCOL_DEF(WLANPHY_IMPL,   'pWPI', "wlanphy-impl", 0)
DDK_PROTOCOL_DEF(WLANIF,         'pWLI', "wlanif", 0)
DDK_PROTOCOL_DEF(WLANIF_IMPL,    'pWII', "wlanif-impl", 0)
DDK_PROTOCOL_DEF(WLANMAC,        'pWLM', "wlanmac", 0)
DDK_PROTOCOL_DEF(AUDIO_INPUT,    'pAUI', "audio-input", 0)
DDK_PROTOCOL_DEF(AUDIO_OUTPUT,   'pAUO', "audio-output", 0)
DDK_PROTOCOL_DEF(CAMERA,         'pCAM', "camera", 0)
DDK_PROTOCOL_DEF(MEDIA_CODEC,    'pMCF', "media-codec", 0)
DDK_PROTOCOL_DEF(BATTERY,        'pBAT', "battery", 0)
DDK_PROTOCOL_DEF(POWER,          'pPWR', "power", 0)
DDK_PROTOCOL_DEF(THERMAL,        'pTHM', "thermal", 0)
DDK_PROTOCOL_DEF(GPU_THERMAL,    'pGPT', "gpu-thermal", 0)
DDK_PROTOCOL_DEF(PTY,            'pPTY', "pty", 0)
DDK_PROTOCOL_DEF(IHDA,           'pHDA', "intel-hda", 0)
DDK_PROTOCOL_DEF(IHDA_CODEC,     'pIHC', "intel-hda-codec", 0)
DDK_PROTOCOL_DEF(IHDA_DSP,       'piHD', "intel-hda-dsp", 0)
DDK_PROTOCOL_DEF(AUDIO_CODEC,    'pAUC', "audio-codec", 0)
DDK_PROTOCOL_DEF(TEST,           'pTST', "test", 0)
DDK_PROTOCOL_DEF(TEST_PARENT,    'pTSP', "test-parent", PF_NOPUB)
DDK_PROTOCOL_DEF(PBUS,           'pPBU', "platform-bus", 0)
DDK_PROTOCOL_DEF(PDEV,           'pPDV', "platform-dev", 0)
DDK_PROTOCOL_DEF(PLATFORM_PROXY, 'pPPR', "platform-proxy", PF_NOPUB)
DDK_PROTOCOL_DEF(I2C_HID,        'pIHD', "i2c-hid", 0)
DDK_PROTOCOL_DEF(SERIAL,         'pSer', "serial", 0)
DDK_PROTOCOL_DEF(SERIAL_IMPL,    'pSri', "serial-impl", 0)
DDK_PROTOCOL_DEF(CLK,            'pCLK', "clock", 0)
DDK_PROTOCOL_DEF(INTEL_GPU_CORE, 'pIGC', "intel-gpu-core", 0)
DDK_PROTOCOL_DEF(IOMMU,          'pIOM', "iommu", 0)
DDK_PROTOCOL_DEF(NAND,           'pNND', "nand", 0)
DDK_PROTOCOL_DEF(RAW_NAND,       'pRND', "rawnand", 0)
DDK_PROTOCOL_DEF(BAD_BLOCK,      'pBBL', "bad-block", PF_NOPUB)
DDK_PROTOCOL_DEF(MAILBOX,        'pMHU', "mailbox", PF_NOPUB)
DDK_PROTOCOL_DEF(SCPI,           'pSCP', "scpi", PF_NOPUB)
DDK_PROTOCOL_DEF(BACKLIGHT,      'pBKL', "backlight", 0)
DDK_PROTOCOL_DEF(AMLOGIC_CANVAS, 'pCAN', "aml-canvas", PF_NOPUB)
DDK_PROTOCOL_DEF(SKIP_BLOCK,     'pSKB', "skip-block", 0)
DDK_PROTOCOL_DEF(ETH_BOARD,      'pETB', "ethernet-board", PF_NOPUB)
DDK_PROTOCOL_DEF(ETH_MAC,        'pETM', "ethernet-mac", PF_NOPUB)
DDK_PROTOCOL_DEF(QMI_TRANSPORT,  'pQMI', "qmi-transport", 0)
DDK_PROTOCOL_DEF(MIPI_CSI,       'pMIP', "mipi-csi", PF_NOPUB)
// Protocol definition at garnet/magma/src/magma_util/platform/zircon/zircon_platform_ioctl.h
DDK_PROTOCOL_DEF(GPU,            'pGPU', "gpu", 0)
DDK_PROTOCOL_DEF(RTC,            'pRTC', "rtc", 0)
DDK_PROTOCOL_DEF(TEE,            'pTEE', "tee", 0)
DDK_PROTOCOL_DEF(VSOCK,          'pVSK', "vsock", 0)
#undef DDK_PROTOCOL_DEF
#endif
