1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * Copyright (c) 2013 Google, Inc
4  *
5  * (C) Copyright 2012
6  * Pavel Herrmann <morpheus.ibis@gmail.com>
7  *
8  * Copyright 2022-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
9  *
10  * Authors:
11  *   Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
12  */
13 
14 #ifndef _DM_UCLASS_ID_H
15 #define _DM_UCLASS_ID_H
16 
17 /* TODO(sjg@chromium.org): this could be compile-time generated */
18 enum uclass_id {
19 	/* These are used internally by driver model */
20 	UCLASS_ROOT = 0,
21 	UCLASS_DEMO,
22 	UCLASS_TEST,
23 	UCLASS_TEST_FDT,
24 	UCLASS_TEST_FDT_MANUAL,
25 	UCLASS_TEST_BUS,
26 	UCLASS_TEST_PROBE,
27 	UCLASS_TEST_DUMMY,
28 	UCLASS_TEST_DEVRES,
29 	UCLASS_TEST_ACPI,
30 	UCLASS_SPI_EMUL,	/* sandbox SPI device emulator */
31 	UCLASS_I2C_EMUL,	/* sandbox I2C device emulator */
32 	UCLASS_I2C_EMUL_PARENT,	/* parent for I2C device emulators */
33 	UCLASS_PCI_EMUL,	/* sandbox PCI device emulator */
34 	UCLASS_PCI_EMUL_PARENT,	/* parent for PCI device emulators */
35 	UCLASS_USB_EMUL,	/* sandbox USB bus device emulator */
36 	UCLASS_AXI_EMUL,	/* sandbox AXI bus device emulator */
37 
38 	/* U-Boot uclasses start here - in alphabetical order */
39 	UCLASS_ACPI_PMC,	/* (x86) Power-management controller (PMC) */
40 	UCLASS_ADC,		/* Analog-to-digital converter */
41 	UCLASS_AES,		/* AES cryptographic engine */
42 	UCLASS_AHCI,		/* SATA disk controller */
43 	UCLASS_AUDIO_CODEC,	/* Audio codec with control and data path */
44 	UCLASS_AXI,		/* AXI bus */
45 	UCLASS_BLK,		/* Block device */
46 	UCLASS_BLKMAP,		/* Composable virtual block device */
47 	UCLASS_BOOTCOUNT,       /* Bootcount backing store */
48 	UCLASS_BOOTDEV,		/* Boot device for locating an OS to boot */
49 	UCLASS_BOOTMETH,	/* Bootmethod for booting an OS */
50 	UCLASS_BOOTSTD,		/* Standard boot driver */
51 	UCLASS_BUTTON,		/* Button */
52 	UCLASS_CACHE,		/* Cache controller */
53 	UCLASS_CLK,		/* Clock source, e.g. used by peripherals */
54 	UCLASS_CPU,		/* CPU, typically part of an SoC */
55 	UCLASS_CROS_EC,		/* Chrome OS EC */
56 	UCLASS_DISPLAY,		/* Display (e.g. DisplayPort, HDMI) */
57 	UCLASS_DMA,		/* Direct Memory Access */
58 	UCLASS_DSA,		/* Distributed (Ethernet) Switch Architecture */
59 	UCLASS_DSI_HOST,	/* Display Serial Interface host */
60 	UCLASS_ECDSA,		/* Elliptic curve cryptographic device */
61 	UCLASS_EFI_LOADER,	/* Devices created by UEFI applications */
62 	UCLASS_EFI_MEDIA,	/* Devices provided by UEFI firmware */
63 	UCLASS_ETH,		/* Ethernet device */
64 	UCLASS_ETH_PHY,		/* Ethernet PHY device */
65 	UCLASS_EXTCON,		/* External Connector Class */
66 	UCLASS_FFA,		/* Arm Firmware Framework for Armv8-A */
67 	UCLASS_FFA_EMUL,		/* sandbox FF-A device emulator */
68 	UCLASS_FIRMWARE,	/* Firmware */
69 	UCLASS_FPGA,		/* FPGA device */
70 	UCLASS_FUZZING_ENGINE,	/* Fuzzing engine */
71 	UCLASS_FS_FIRMWARE_LOADER,		/* Generic loader */
72 	UCLASS_FWU_MDATA,	/* FWU Metadata Access */
73 	UCLASS_GPIO,		/* Bank of general-purpose I/O pins */
74 	UCLASS_HASH,		/* Hash device */
75 	UCLASS_HWSPINLOCK,	/* Hardware semaphores */
76 	UCLASS_HOST,		/* Sandbox host device */
77 	UCLASS_I2C,		/* I2C bus */
78 	UCLASS_I2C_EEPROM,	/* I2C EEPROM device */
79 	UCLASS_I2C_GENERIC,	/* Generic I2C device */
80 	UCLASS_I2C_MUX,		/* I2C multiplexer */
81 	UCLASS_I2S,		/* I2S bus */
82 	UCLASS_I3C,		/* I3C bus */
83 	UCLASS_IDE,		/* IDE device */
84 	UCLASS_IOMMU,		/* IOMMU */
85 	UCLASS_IRQ,		/* Interrupt controller */
86 	UCLASS_KEYBOARD,	/* Keyboard input device */
87 	UCLASS_LED,		/* Light-emitting diode (LED) */
88 	UCLASS_LPC,		/* x86 'low pin count' interface */
89 	UCLASS_MAILBOX,		/* Mailbox controller */
90 	UCLASS_MASS_STORAGE,	/* Mass storage device */
91 	UCLASS_MDIO,		/* MDIO bus */
92 	UCLASS_MDIO_MUX,	/* MDIO MUX/switch */
93 	UCLASS_MEMORY,		/* Memory Controller device */
94 	UCLASS_SM,		/* Secure Monitor driver */
95 	UCLASS_MISC,		/* Miscellaneous device */
96 	UCLASS_MMC,		/* SD / MMC card or chip */
97 	UCLASS_MOD_EXP,		/* RSA Mod Exp device */
98 	UCLASS_MTD,		/* Memory Technology Device (MTD) device */
99 	UCLASS_MUX,		/* Multiplexer device */
100 	UCLASS_NOP,		/* No-op devices */
101 	UCLASS_NORTHBRIDGE,	/* Intel Northbridge / SDRAM controller */
102 	UCLASS_NVME,		/* NVM Express device */
103 	UCLASS_NVMXIP,		/* NVM XIP devices */
104 	UCLASS_P2SB,		/* (x86) Primary-to-Sideband Bus */
105 	UCLASS_PANEL,		/* Display panel, such as an LCD */
106 	UCLASS_PANEL_BACKLIGHT,	/* Backlight controller for panel */
107 	UCLASS_PARTITION,	/* Logical disk partition device */
108 	UCLASS_PCH,		/* x86 platform controller hub */
109 	UCLASS_PCI,		/* PCI bus */
110 	UCLASS_PCI_EP,		/* PCI endpoint device */
111 	UCLASS_PCI_GENERIC,	/* Generic PCI bus device */
112 	UCLASS_PHY,		/* Physical Layer (PHY) device */
113 	UCLASS_PINCONFIG,	/* Pin configuration node device */
114 	UCLASS_PINCTRL,		/* Pinctrl (pin muxing/configuration) device */
115 	UCLASS_PMIC,		/* PMIC I/O device */
116 	UCLASS_POWER_DOMAIN,	/* (SoC) Power domains */
117 	UCLASS_PVBLOCK,		/* Xen virtual block device */
118 	UCLASS_PWM,		/* Pulse-width modulator */
119 	UCLASS_PWRSEQ,		/* Power sequence device */
120 	UCLASS_QFW,		/* QEMU firmware config device */
121 	UCLASS_RAM,		/* RAM controller */
122 	UCLASS_REBOOT_MODE,	/* Reboot mode */
123 	UCLASS_REGULATOR,	/* Regulator device */
124 	UCLASS_REMOTEPROC,	/* Remote Processor device */
125 	UCLASS_RESET,		/* Reset controller device */
126 	UCLASS_RKMTD,		/* Rockchip MTD device */
127 	UCLASS_RNG,		/* Random Number Generator */
128 	UCLASS_RTC,		/* Real time clock device */
129 	UCLASS_SCMI_AGENT,	/* Interface with an SCMI server */
130 	UCLASS_SCMI_BASE,	/* Interface for SCMI Base protocol */
131 	UCLASS_SCSI,		/* SCSI device */
132 	UCLASS_SERIAL,		/* Serial UART */
133 	UCLASS_SIMPLE_BUS,	/* Bus with child devices */
134 	UCLASS_SMEM,		/* Shared memory interface */
135 	UCLASS_SOC,		/* SOC Device */
136 	UCLASS_SOUND,		/* Playing simple sounds */
137 	UCLASS_SPI,		/* SPI bus */
138 	UCLASS_SPI_FLASH,	/* SPI flash */
139 	UCLASS_SPI_GENERIC,	/* Generic SPI flash target */
140 	UCLASS_SPMI,		/* System Power Management Interface bus */
141 	UCLASS_SYSCON,		/* System configuration device */
142 	UCLASS_SYSINFO,		/* Device information from hardware */
143 	UCLASS_SYSRESET,	/* System reset device */
144 	UCLASS_TCPM,		/* TypeC port manager */
145 	UCLASS_TEE,		/* Trusted Execution Environment device */
146 	UCLASS_THERMAL,		/* Thermal sensor */
147 	UCLASS_TIMER,		/* Timer device */
148 	UCLASS_TPM,		/* Trusted Platform Module TIS interface */
149 	UCLASS_UFS,		/* Universal Flash Storage */
150 	UCLASS_USB,		/* USB bus */
151 	UCLASS_USB_DEV_GENERIC,	/* USB generic device */
152 	UCLASS_USB_HUB,		/* USB hub */
153 	UCLASS_USB_GADGET_GENERIC,	/* USB generic device */
154 	UCLASS_VIDEO,		/* Video or LCD device */
155 	UCLASS_VIDEO_BRIDGE,	/* Video bridge, e.g. DisplayPort to LVDS */
156 	UCLASS_VIDEO_CONSOLE,	/* Text console driver for video device */
157 	UCLASS_VIDEO_OSD,	/* On-screen display */
158 	UCLASS_VIRTIO,		/* VirtIO transport device */
159 	UCLASS_W1,		/* Dallas 1-Wire bus */
160 	UCLASS_W1_EEPROM,	/* one-wire EEPROMs */
161 	UCLASS_WDT,		/* Watchdog Timer driver */
162 
163 	UCLASS_COUNT,
164 	UCLASS_INVALID = -1,
165 };
166 
167 #endif
168