• A
    base: soc: Introduce soc_device_match() interface · c97db7cc
    Arnd Bergmann 提交于
    We keep running into cases where device drivers want to know the exact
    version of the a SoC they are currently running on. In the past, this has
    usually been done through a vendor specific API that can be called by a
    driver, or by directly accessing some kind of version register that is
    not part of the device itself but that belongs to a global register area
    of the chip.
    
    Common reasons for doing this include:
    
    - A machine is not using devicetree or similar for passing data about
      on-chip devices, but just announces their presence using boot-time
      platform devices, and the machine code itself does not care about the
      revision.
    
    - There is existing firmware or boot loaders with existing DT binaries
      with generic compatible strings that do not identify the particular
      revision of each device, but the driver knows which SoC revisions
      include which part.
    
    - A prerelease version of a chip has some quirks and we are using the same
      version of the bootloader and the DT blob on both the prerelease and the
      final version. An update of the DT binding seems inappropriate because
      that would involve maintaining multiple copies of the dts and/or
      bootloader.
    
    This patch introduces the soc_device_match() interface that is meant to
    work like of_match_node() but instead of identifying the version of a
    device, it identifies the SoC itself using a vendor-agnostic interface.
    
    Unlike of_match_node(), we do not do an exact string compare but instead
    use glob_match() to allow wildcards in strings.
    Signed-off-by: NArnd Bergmann <arnd@arndb.de>
    Signed-off-by: NYangbo Lu <yangbo.lu@nxp.com>
    Signed-off-by: NGeert Uytterhoeven <geert+renesas@glider.be>
    Acked-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    c97db7cc
Kconfig 11.5 KB