1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- .. SPDX-License-Identifier: GPL-2.0+
- .. (C) Copyright 2020
- .. Texas Instruments Incorporated - http://www.ti.com/
- SOC ID Framework
- ================
- Introduction
- ------------
- The driver-model SOC ID framework is able to provide identification
- information about a specific SoC in use at runtime, and also provide matching
- from a set of identification information from an array. This can be useful for
- enabling small quirks in drivers that exist between SoC variants that are
- impractical to implement using device tree flags. It is based on UCLASS_SOC.
- UCLASS_SOC:
- - drivers/soc/soc-uclass.c
- - include/soc.h
- Configuration:
- - CONFIG_SOC_DEVICE is selected by drivers as needed.
- Implementing a UCLASS_SOC provider
- ----------------------------------
- The purpose of this framework is to allow UCLASS_SOC provider drivers to supply
- identification information about the SoC in use at runtime. The framework
- allows drivers to define soc_ops that return identification strings. All
- soc_ops need not be defined and can be left as NULL, in which case the
- framework will return -ENOSYS and not consider the value when doing an
- soc_device_match.
- It is left to the driver implementor to decide how the information returned is
- determined, but in general the same SOC should always return the same set of
- identifying information. Information returned must be in the form of a NULL
- terminated string.
- See include/soc.h for documentation of the available soc_ops and the intended
- meaning of the values that can be returned. See drivers/soc/soc_sandbox.c for
- an example UCLASS_SOC provider driver.
- Using a UCLASS_SOC driver
- -------------------------
- The framework provides the ability to retrieve and use the identification
- strings directly. It also has the ability to return a match from a list of
- different sets of SoC data using soc_device_match.
- An array of 'struct soc_attr' can be defined, each containing ID information
- for a specific SoC, and when passed to soc_device_match, the identifier values
- for each entry in the list will be compared against the values provided by the
- UCLASS_SOC driver that is in use. The first entry in the list that matches all
- non-null values will be returned by soc_device_match.
- An example of various uses of the framework can be found at test/dm/soc.c.
- Describing the device using device tree
- ---------------------------------------
- .. code-block:: none
- chipid: chipid {
- compatible = "sandbox,soc";
- };
- All that is required in a DT node is a compatible for a corresponding
- UCLASS_SOC driver.
|