mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 04:31:50 +00:00
5bc7f990cd
On the Turris Mox router different modules can be connected to the main CPU board: currently a module with a SFP cage, a module with MiniPCIe connector, a PCIe pass-through MiniPCIe connector module, a 4-port switch module, an 8-port switch module, and a 4-port USB3 module. For example: [CPU]-[PCIe-pass-through]-[PCIe]-[8-port switch]-[8-port switch]-[SFP] Each of this modules has an input and output shift register, and these are connected via SPI to the CPU board. Via SPI we are able to discover which modules are connected, in which order, and we can also read some information about the modules (eg. their interrupt status), and configure them. From each module 8 bits can be read (of which low 4 bits identify the module) and 8 bits can be written. For example from the module with a SFP cage we can read the LOS, TX-FAULT and MOD-DEF0 signals, while we can write TX-DISABLE and RATE-SELECT signals. This driver creates a new bus type, called "moxtet". For each Mox module it finds via SPI, it creates a new device on the moxtet bus so that drivers can be written for them. It also implements a virtual interrupt controller for the modules which send their interrupt status over the SPI shift register. These modules do this in addition to sending their interrupt status via the shared interrupt line. When the shared interrupt is triggered, we read from the shift register and handle IRQs for all devices which are in interrupt. The topology of how Mox modules are connected can then be read by listing /sys/bus/moxtet/devices. Link: https://lore.kernel.org/r/20190812161118.21476-2-marek.behun@nic.cz Signed-off-by: Marek Behún <marek.behun@nic.cz> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
197 lines
5.9 KiB
Plaintext
197 lines
5.9 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Bus Devices
|
|
#
|
|
|
|
menu "Bus devices"
|
|
|
|
config ARM_CCI
|
|
bool
|
|
|
|
config ARM_CCI400_COMMON
|
|
bool
|
|
select ARM_CCI
|
|
|
|
config ARM_CCI400_PORT_CTRL
|
|
bool
|
|
depends on ARM && OF && CPU_V7
|
|
select ARM_CCI400_COMMON
|
|
help
|
|
Low level power management driver for CCI400 cache coherent
|
|
interconnect for ARM platforms.
|
|
|
|
config BRCMSTB_GISB_ARB
|
|
bool "Broadcom STB GISB bus arbiter"
|
|
depends on ARM || ARM64 || MIPS
|
|
default ARCH_BRCMSTB || BMIPS_GENERIC
|
|
help
|
|
Driver for the Broadcom Set Top Box System-on-a-chip internal bus
|
|
arbiter. This driver provides timeout and target abort error handling
|
|
and internal bus master decoding.
|
|
|
|
config MOXTET
|
|
tristate "CZ.NIC Turris Mox module configuration bus"
|
|
depends on SPI_MASTER && OF
|
|
help
|
|
Say yes here to add support for the module configuration bus found
|
|
on CZ.NIC's Turris Mox. This is needed for the ability to discover
|
|
the order in which the modules are connected and to get/set some of
|
|
their settings. For example the GPIOs on Mox SFP module are
|
|
configured through this bus.
|
|
|
|
config HISILICON_LPC
|
|
bool "Support for ISA I/O space on HiSilicon Hip06/7"
|
|
depends on ARM64 && (ARCH_HISI || COMPILE_TEST)
|
|
select INDIRECT_PIO
|
|
help
|
|
Driver to enable I/O access to devices attached to the Low Pin
|
|
Count bus on the HiSilicon Hip06/7 SoC.
|
|
|
|
config IMX_WEIM
|
|
bool "Freescale EIM DRIVER"
|
|
depends on ARCH_MXC
|
|
help
|
|
Driver for i.MX WEIM controller.
|
|
The WEIM(Wireless External Interface Module) works like a bus.
|
|
You can attach many different devices on it, such as NOR, onenand.
|
|
|
|
config MIPS_CDMM
|
|
bool "MIPS Common Device Memory Map (CDMM) Driver"
|
|
depends on CPU_MIPSR2
|
|
help
|
|
Driver needed for the MIPS Common Device Memory Map bus in MIPS
|
|
cores. This bus is for per-CPU tightly coupled devices such as the
|
|
Fast Debug Channel (FDC).
|
|
|
|
For this to work, either your bootloader needs to enable the CDMM
|
|
region at an unused physical address on the boot CPU, or else your
|
|
platform code needs to implement mips_cdmm_phys_base() (see
|
|
asm/cdmm.h).
|
|
|
|
config MVEBU_MBUS
|
|
bool
|
|
depends on PLAT_ORION
|
|
help
|
|
Driver needed for the MBus configuration on Marvell EBU SoCs
|
|
(Kirkwood, Dove, Orion5x, MV78XX0 and Armada 370/XP).
|
|
|
|
config OMAP_INTERCONNECT
|
|
tristate "OMAP INTERCONNECT DRIVER"
|
|
depends on ARCH_OMAP2PLUS
|
|
|
|
help
|
|
Driver to enable OMAP interconnect error handling driver.
|
|
|
|
config OMAP_OCP2SCP
|
|
tristate "OMAP OCP2SCP DRIVER"
|
|
depends on ARCH_OMAP2PLUS
|
|
help
|
|
Driver to enable ocp2scp module which transforms ocp interface
|
|
protocol to scp protocol. In OMAP4, USB PHY is connected via
|
|
OCP2SCP and in OMAP5, both USB PHY and SATA PHY is connected via
|
|
OCP2SCP.
|
|
|
|
config QCOM_EBI2
|
|
bool "Qualcomm External Bus Interface 2 (EBI2)"
|
|
depends on HAS_IOMEM
|
|
depends on ARCH_QCOM || COMPILE_TEST
|
|
default ARCH_QCOM
|
|
help
|
|
Say y here to enable support for the Qualcomm External Bus
|
|
Interface 2, which can be used to connect things like NAND Flash,
|
|
SRAM, ethernet adapters, FPGAs and LCD displays.
|
|
|
|
config SIMPLE_PM_BUS
|
|
tristate "Simple Power-Managed Bus Driver"
|
|
depends on OF && PM
|
|
help
|
|
Driver for transparent busses that don't need a real driver, but
|
|
where the bus controller is part of a PM domain, or under the control
|
|
of a functional clock, and thus relies on runtime PM for managing
|
|
this PM domain and/or clock.
|
|
An example of such a bus controller is the Renesas Bus State
|
|
Controller (BSC, sometimes called "LBSC within Bus Bridge", or
|
|
"External Bus Interface") as found on several Renesas ARM SoCs.
|
|
|
|
config SUN50I_DE2_BUS
|
|
bool "Allwinner A64 DE2 Bus Driver"
|
|
default ARM64
|
|
depends on ARCH_SUNXI
|
|
select SUNXI_SRAM
|
|
help
|
|
Say y here to enable support for Allwinner A64 DE2 bus driver. It's
|
|
mostly transparent, but a SRAM region needs to be claimed in the SRAM
|
|
controller to make the all blocks in the DE2 part accessible.
|
|
|
|
config SUNXI_RSB
|
|
tristate "Allwinner sunXi Reduced Serial Bus Driver"
|
|
default MACH_SUN8I || MACH_SUN9I || ARM64
|
|
depends on ARCH_SUNXI
|
|
select REGMAP
|
|
help
|
|
Say y here to enable support for Allwinner's Reduced Serial Bus
|
|
(RSB) support. This controller is responsible for communicating
|
|
with various RSB based devices, such as AXP223, AXP8XX PMICs,
|
|
and AC100/AC200 ICs.
|
|
|
|
config TEGRA_ACONNECT
|
|
tristate "Tegra ACONNECT Bus Driver"
|
|
depends on ARCH_TEGRA_210_SOC
|
|
depends on OF && PM
|
|
select PM_CLK
|
|
help
|
|
Driver for the Tegra ACONNECT bus which is used to interface with
|
|
the devices inside the Audio Processing Engine (APE) for Tegra210.
|
|
|
|
config TEGRA_GMI
|
|
tristate "Tegra Generic Memory Interface bus driver"
|
|
depends on ARCH_TEGRA
|
|
help
|
|
Driver for the Tegra Generic Memory Interface bus which can be used
|
|
to attach devices such as NOR, UART, FPGA and more.
|
|
|
|
config TI_SYSC
|
|
bool "TI sysc interconnect target module driver"
|
|
depends on ARCH_OMAP2PLUS
|
|
help
|
|
Generic driver for Texas Instruments interconnect target module
|
|
found on many TI SoCs.
|
|
|
|
config TS_NBUS
|
|
tristate "Technologic Systems NBUS Driver"
|
|
depends on SOC_IMX28
|
|
depends on OF_GPIO && PWM
|
|
help
|
|
Driver for the Technologic Systems NBUS which is used to interface
|
|
with the peripherals in the FPGA of the TS-4600 SoM.
|
|
|
|
config UNIPHIER_SYSTEM_BUS
|
|
tristate "UniPhier System Bus driver"
|
|
depends on ARCH_UNIPHIER && OF
|
|
default y
|
|
help
|
|
Support for UniPhier System Bus, a simple external bus. This is
|
|
needed to use on-board devices connected to UniPhier SoCs.
|
|
|
|
config VEXPRESS_CONFIG
|
|
bool "Versatile Express configuration bus"
|
|
default y if ARCH_VEXPRESS
|
|
depends on ARM || ARM64
|
|
depends on OF
|
|
select REGMAP
|
|
help
|
|
Platform configuration infrastructure for the ARM Ltd.
|
|
Versatile Express.
|
|
|
|
config DA8XX_MSTPRI
|
|
bool "TI da8xx master peripheral priority driver"
|
|
depends on ARCH_DAVINCI_DA8XX
|
|
help
|
|
Driver for Texas Instruments da8xx master peripheral priority
|
|
configuration. Allows to adjust the priorities of all master
|
|
peripherals.
|
|
|
|
source "drivers/bus/fsl-mc/Kconfig"
|
|
|
|
endmenu
|