2018-05-06 21:58:06 +00:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0+ */
|
2014-02-26 22:59:18 +00:00
|
|
|
/*
|
|
|
|
* Copyright (c) 2013 Google, Inc
|
|
|
|
*
|
|
|
|
* (C) Copyright 2012
|
|
|
|
* Pavel Herrmann <morpheus.ibis@gmail.com>
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _DM_UCLASS_ID_H
|
|
|
|
#define _DM_UCLASS_ID_H
|
|
|
|
|
|
|
|
/* TODO(sjg@chromium.org): this could be compile-time generated */
|
|
|
|
enum uclass_id {
|
|
|
|
/* These are used internally by driver model */
|
|
|
|
UCLASS_ROOT = 0,
|
|
|
|
UCLASS_DEMO,
|
|
|
|
UCLASS_TEST,
|
|
|
|
UCLASS_TEST_FDT,
|
2014-07-23 12:55:18 +00:00
|
|
|
UCLASS_TEST_BUS,
|
2017-04-24 02:10:44 +00:00
|
|
|
UCLASS_TEST_PROBE,
|
2018-03-12 13:53:33 +00:00
|
|
|
UCLASS_TEST_DUMMY,
|
2019-12-30 04:19:25 +00:00
|
|
|
UCLASS_TEST_DEVRES,
|
2014-10-14 05:41:53 +00:00
|
|
|
UCLASS_SPI_EMUL, /* sandbox SPI device emulator */
|
2014-12-10 15:55:49 +00:00
|
|
|
UCLASS_I2C_EMUL, /* sandbox I2C device emulator */
|
2018-11-18 15:14:33 +00:00
|
|
|
UCLASS_I2C_EMUL_PARENT, /* parent for I2C device emulators */
|
2015-03-05 19:25:28 +00:00
|
|
|
UCLASS_PCI_EMUL, /* sandbox PCI device emulator */
|
pci: sandbox: Move the emulators into their own node
Sandbox pci works using emulation drivers which are currently children of
the pci device:
pci-controller {
pci@1f,0 {
compatible = "pci-generic";
reg = <0xf800 0 0 0 0>;
emul@1f,0 {
compatible = "sandbox,swap-case";
};
};
};
In this case the emulation device is attached to pci device on address
f800 (device 1f, function 0) and provides the swap-case functionality.
However this is not ideal, since every device on a PCI bus has a child
device. This is only really the case for sandbox, but we want to avoid
special-case code for sandbox.
Worse, child devices cannot be probed before their parents. This forces
us to use 'find' rather than 'get' to obtain the emulator device. In fact
the emulator devices are never probed. There is code in
sandbox_pci_emul_post_probe() which tries to track when emulators are
active, but at present this does not work.
A better approach seems to be to add a separate node elsewhere in the
device tree, an 'emulation parent'. This could be given a bogus address
(such as -1) to hide the emulators away from the 'pci' command, but it
seems better to keep it at the root node to avoid such hacks.
Then we can use a phandle to point from the device to the correct
emulator, and only on sandbox. The code to find an emulator does not
interfere with normal pci operation.
Add a new UCLASS_PCI_EMUL_PARENT uclass which allows finding an emulator
given a bus, and finding a bus given an emulator. Update the existing
device trees and the code for finding an emulator.
This brings PCI emulators more into line with I2C.
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
[bmeng: fix 3 typos in the commit message;
encode bus number in the labels of swap_case_emul nodes;
mention commit 4345998ae9df in sandbox_pci_get_emul()]
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
2019-09-25 14:56:10 +00:00
|
|
|
UCLASS_PCI_EMUL_PARENT, /* parent for PCI device emulators */
|
2015-03-25 18:22:37 +00:00
|
|
|
UCLASS_USB_EMUL, /* sandbox USB bus device emulator */
|
2018-08-09 12:51:18 +00:00
|
|
|
UCLASS_AXI_EMUL, /* sandbox AXI bus device emulator */
|
2014-02-26 22:59:18 +00:00
|
|
|
|
2015-04-15 03:03:19 +00:00
|
|
|
/* U-Boot uclasses start here - in alphabetical order */
|
2019-12-07 04:41:53 +00:00
|
|
|
UCLASS_ACPI_PMC, /* (x86) Power-management controller (PMC) */
|
2015-10-27 12:08:00 +00:00
|
|
|
UCLASS_ADC, /* Analog-to-digital converter */
|
2016-05-01 17:35:52 +00:00
|
|
|
UCLASS_AHCI, /* SATA disk controller */
|
2018-12-10 17:37:33 +00:00
|
|
|
UCLASS_AUDIO_CODEC, /* Audio codec with control and data path */
|
2018-11-25 18:38:54 +00:00
|
|
|
UCLASS_AXI, /* AXI bus */
|
2016-02-29 22:25:55 +00:00
|
|
|
UCLASS_BLK, /* Block device */
|
2018-07-31 09:44:11 +00:00
|
|
|
UCLASS_BOARD, /* Device information from hardware */
|
2018-11-27 22:00:18 +00:00
|
|
|
UCLASS_BOOTCOUNT, /* Bootcount backing store */
|
2019-04-23 21:55:03 +00:00
|
|
|
UCLASS_CACHE, /* Cache controller */
|
2015-06-23 21:39:15 +00:00
|
|
|
UCLASS_CLK, /* Clock source, e.g. used by peripherals */
|
2015-04-15 03:03:19 +00:00
|
|
|
UCLASS_CPU, /* CPU, typically part of an SoC */
|
|
|
|
UCLASS_CROS_EC, /* Chrome OS EC */
|
2016-01-22 02:45:00 +00:00
|
|
|
UCLASS_DISPLAY, /* Display (e.g. DisplayPort, HDMI) */
|
2019-10-07 13:29:05 +00:00
|
|
|
UCLASS_DSI_HOST, /* Display Serial Interface host */
|
2016-02-15 10:01:37 +00:00
|
|
|
UCLASS_DMA, /* Direct Memory Access */
|
2018-01-21 18:29:30 +00:00
|
|
|
UCLASS_EFI, /* EFI managed devices */
|
2015-04-15 03:03:19 +00:00
|
|
|
UCLASS_ETH, /* Ethernet device */
|
2018-11-25 18:38:54 +00:00
|
|
|
UCLASS_FIRMWARE, /* Firmware */
|
2018-07-06 08:28:03 +00:00
|
|
|
UCLASS_FS_FIRMWARE_LOADER, /* Generic loader */
|
2014-07-23 12:55:17 +00:00
|
|
|
UCLASS_GPIO, /* Bank of general-purpose I/O pins */
|
2018-11-27 12:49:50 +00:00
|
|
|
UCLASS_HWSPINLOCK, /* Hardware semaphores */
|
2014-12-10 15:55:47 +00:00
|
|
|
UCLASS_I2C, /* I2C bus */
|
2014-12-10 15:55:54 +00:00
|
|
|
UCLASS_I2C_EEPROM, /* I2C EEPROM device */
|
2015-04-15 03:03:19 +00:00
|
|
|
UCLASS_I2C_GENERIC, /* Generic I2C device */
|
2015-08-03 14:19:21 +00:00
|
|
|
UCLASS_I2C_MUX, /* I2C multiplexer */
|
2018-12-10 17:37:34 +00:00
|
|
|
UCLASS_I2S, /* I2S bus */
|
2017-09-10 12:12:51 +00:00
|
|
|
UCLASS_IDE, /* IDE device */
|
2016-01-20 04:32:25 +00:00
|
|
|
UCLASS_IRQ, /* Interrupt controller */
|
2015-09-08 17:15:11 +00:00
|
|
|
UCLASS_KEYBOARD, /* Keyboard input device */
|
2015-06-23 21:38:45 +00:00
|
|
|
UCLASS_LED, /* Light-emitting diode (LED) */
|
2015-04-15 03:03:19 +00:00
|
|
|
UCLASS_LPC, /* x86 'low pin count' interface */
|
2016-05-13 21:50:29 +00:00
|
|
|
UCLASS_MAILBOX, /* Mailbox controller */
|
2015-04-15 03:03:19 +00:00
|
|
|
UCLASS_MASS_STORAGE, /* Mass storage device */
|
2019-06-03 16:10:30 +00:00
|
|
|
UCLASS_MDIO, /* MDIO bus */
|
2019-07-12 07:13:50 +00:00
|
|
|
UCLASS_MDIO_MUX, /* MDIO MUX/switch */
|
2015-10-07 12:20:51 +00:00
|
|
|
UCLASS_MISC, /* Miscellaneous device */
|
2015-06-23 21:38:48 +00:00
|
|
|
UCLASS_MMC, /* SD / MMC card or chip */
|
2015-01-23 10:31:52 +00:00
|
|
|
UCLASS_MOD_EXP, /* RSA Mod Exp device */
|
2015-11-07 06:20:31 +00:00
|
|
|
UCLASS_MTD, /* Memory Technology Device (MTD) device */
|
2019-07-05 07:33:57 +00:00
|
|
|
UCLASS_NOP, /* No-op devices */
|
2016-01-17 23:11:14 +00:00
|
|
|
UCLASS_NORTHBRIDGE, /* Intel Northbridge / SDRAM controller */
|
2017-08-03 09:30:56 +00:00
|
|
|
UCLASS_NVME, /* NVM Express device */
|
2019-12-07 04:41:55 +00:00
|
|
|
UCLASS_P2SB, /* (x86) Primary-to-Sideband Bus */
|
2016-01-22 02:44:58 +00:00
|
|
|
UCLASS_PANEL, /* Display panel, such as an LCD */
|
2016-01-22 02:44:56 +00:00
|
|
|
UCLASS_PANEL_BACKLIGHT, /* Backlight controller for panel */
|
2015-04-15 03:03:19 +00:00
|
|
|
UCLASS_PCH, /* x86 platform controller hub */
|
2015-03-05 19:25:25 +00:00
|
|
|
UCLASS_PCI, /* PCI bus */
|
2019-04-27 08:15:21 +00:00
|
|
|
UCLASS_PCI_EP, /* PCI endpoint device */
|
2015-03-05 19:25:25 +00:00
|
|
|
UCLASS_PCI_GENERIC, /* Generic PCI bus device */
|
2017-04-24 09:51:27 +00:00
|
|
|
UCLASS_PHY, /* Physical Layer (PHY) device */
|
pinctrl: add pin control uclass support
This creates a new framework for handling of pin control devices,
i.e. devices that control different aspects of package pins.
This uclass handles pinmuxing and pin configuration; pinmuxing
controls switching among silicon blocks that share certain physical
pins, pin configuration handles electronic properties such as pin-
biasing, load capacitance etc.
This framework can support the same device tree bindings, but if you
do not need full interface support, you can disable some features to
reduce memory foot print. Typically around 1.5KB is necessary to
include full-featured uclass support on ARM board (CONFIG_PINCTRL +
CONFIG_PINCTRL_FULL + CONFIG_PINCTRL_GENERIC + CONFIG_PINCTRL_PINMUX),
for example.
We are often limited on code size for SPL. Besides, we still have
many boards that do not support device tree configuration. The full
pinctrl, which requires OF_CONTROL, does not make sense for those
boards. So, this framework also has a Do-It-Yourself (let's say
simple pinctrl) interface. With CONFIG_PINCTRL_FULL disabled, the
uclass itself provides no systematic mechanism for identifying the
peripheral device, applying pinctrl settings, etc. They must be
done in each low-level driver. In return, you can save much memory
footprint and it might be useful especially for SPL.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Acked-by: Simon Glass <sjg@chromium.org>
2015-08-27 03:44:29 +00:00
|
|
|
UCLASS_PINCONFIG, /* Pin configuration node device */
|
2016-06-22 09:29:47 +00:00
|
|
|
UCLASS_PINCTRL, /* Pinctrl (pin muxing/configuration) device */
|
2015-05-22 21:42:14 +00:00
|
|
|
UCLASS_PMIC, /* PMIC I/O device */
|
2016-07-13 19:45:31 +00:00
|
|
|
UCLASS_POWER_DOMAIN, /* (SoC) Power domains */
|
2018-11-25 18:38:54 +00:00
|
|
|
UCLASS_PWM, /* Pulse-width modulator */
|
2016-01-22 02:43:31 +00:00
|
|
|
UCLASS_PWRSEQ, /* Power sequence device */
|
2016-06-22 09:29:47 +00:00
|
|
|
UCLASS_RAM, /* RAM controller */
|
2015-05-22 21:42:14 +00:00
|
|
|
UCLASS_REGULATOR, /* Regulator device */
|
2015-09-17 20:42:39 +00:00
|
|
|
UCLASS_REMOTEPROC, /* Remote Processor device */
|
2016-06-17 15:43:58 +00:00
|
|
|
UCLASS_RESET, /* Reset controller device */
|
2019-12-28 18:28:27 +00:00
|
|
|
UCLASS_RNG, /* Random Number Generator */
|
2015-04-15 03:03:19 +00:00
|
|
|
UCLASS_RTC, /* Real time clock device */
|
2016-09-08 13:06:45 +00:00
|
|
|
UCLASS_SCSI, /* SCSI device */
|
2015-04-15 03:03:19 +00:00
|
|
|
UCLASS_SERIAL, /* Serial UART */
|
2018-11-18 15:14:32 +00:00
|
|
|
UCLASS_SIMPLE_BUS, /* Bus with child devices */
|
2018-07-01 23:57:55 +00:00
|
|
|
UCLASS_SMEM, /* Shared memory interface */
|
2018-12-10 17:37:36 +00:00
|
|
|
UCLASS_SOUND, /* Playing simple sounds */
|
2015-04-15 03:03:19 +00:00
|
|
|
UCLASS_SPI, /* SPI bus */
|
|
|
|
UCLASS_SPI_FLASH, /* SPI flash */
|
2015-05-22 21:42:14 +00:00
|
|
|
UCLASS_SPI_GENERIC, /* Generic SPI flash target */
|
2018-11-25 18:38:54 +00:00
|
|
|
UCLASS_SPMI, /* System Power Management Interface bus */
|
2015-06-23 21:38:43 +00:00
|
|
|
UCLASS_SYSCON, /* System configuration device */
|
2016-05-12 18:03:35 +00:00
|
|
|
UCLASS_SYSRESET, /* System reset device */
|
2018-09-25 14:40:09 +00:00
|
|
|
UCLASS_TEE, /* Trusted Execution Environment device */
|
2015-04-15 03:03:19 +00:00
|
|
|
UCLASS_THERMAL, /* Thermal sensor */
|
2015-10-09 05:46:34 +00:00
|
|
|
UCLASS_TIMER, /* Timer device */
|
2015-08-23 00:31:31 +00:00
|
|
|
UCLASS_TPM, /* Trusted Platform Module TIS interface */
|
2019-10-15 12:54:36 +00:00
|
|
|
UCLASS_UFS, /* Universal Flash Storage */
|
2015-03-25 18:21:59 +00:00
|
|
|
UCLASS_USB, /* USB bus */
|
2015-03-25 18:22:31 +00:00
|
|
|
UCLASS_USB_DEV_GENERIC, /* USB generic device */
|
2015-04-15 03:03:19 +00:00
|
|
|
UCLASS_USB_HUB, /* USB hub */
|
2018-11-29 09:52:46 +00:00
|
|
|
UCLASS_USB_GADGET_GENERIC, /* USB generic device */
|
2016-01-19 02:52:15 +00:00
|
|
|
UCLASS_VIDEO, /* Video or LCD device */
|
2015-07-03 00:16:08 +00:00
|
|
|
UCLASS_VIDEO_BRIDGE, /* Video bridge, e.g. DisplayPort to LVDS */
|
2016-01-19 02:52:17 +00:00
|
|
|
UCLASS_VIDEO_CONSOLE, /* Text console driver for video device */
|
2018-09-27 07:19:29 +00:00
|
|
|
UCLASS_VIDEO_OSD, /* On-screen display */
|
2018-10-15 09:21:00 +00:00
|
|
|
UCLASS_VIRTIO, /* VirtIO transport device */
|
2018-09-18 07:35:24 +00:00
|
|
|
UCLASS_W1, /* Dallas 1-Wire bus */
|
2018-09-18 07:35:27 +00:00
|
|
|
UCLASS_W1_EEPROM, /* one-wire EEPROMs */
|
2019-02-17 19:48:04 +00:00
|
|
|
UCLASS_WDT, /* Watchdog Timer driver */
|
2014-02-26 22:59:18 +00:00
|
|
|
|
|
|
|
UCLASS_COUNT,
|
|
|
|
UCLASS_INVALID = -1,
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|