Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4cebec60 authored by James Hogan's avatar James Hogan Committed by Ralf Baechle
Browse files

TTY: Add MIPS EJTAG Fast Debug Channel TTY driver



Add TTY driver and consoles for the MIPS EJTAG Fast Debug Channel (FDC),
which is found on the per-CPU MIPS Common Device Mapped Memory (CDMM)
bus.

The FDC is a per-CPU device which is used to communicate with an EJTAG
probe. RX and TX FIFOs exist, containing 32-bits of data and 4-bit
channel numbers. 16 general data streams are implemented on this for TTY
and console use by encoding up to 4 bytes on each 32-bit FDC word.

The TTY devices are named e.g. /dev/ttyFDC3c2 for channel 2 of the FDC
attached to logical CPU 3.

These can be used for getting the kernel log, a login prompt, or as a
GDB remote transport, all over EJTAG and without needing a serial port.

It can have an interrupt to notify of when incoming data is available in
the RX FIFO or when the TX FIFO is no longer full. The detection of this
interrupt occurs in architecture / platform code, but it may be shared
with the timer and/or performance counter interrupt.

Due to the per-CPU nature of the hardware, all outgoing TTY data is
written out from a kthread which is pinned to the appropriate CPU.

The console is not bound to a specific CPU, so output will appear on the
chosen channel on whichever CPU the code is executing on. Enable with
e.g. console=fdc1 in kernel arguments. /dev/console is bound to the same
channel on the boot CPU's FDC if it exists.

Signed-off-by: default avatarJames Hogan <james.hogan@imgtec.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Jiri Slaby <jslaby@suse.cz>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/9146/


Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
parent e38df288
Loading
Loading
Loading
Loading
+18 −0
Original line number Original line Diff line number Diff line
@@ -419,4 +419,22 @@ config DA_CONSOLE
	help
	help
	  This enables a console on a Dash channel.
	  This enables a console on a Dash channel.


config MIPS_EJTAG_FDC_TTY
	bool "MIPS EJTAG Fast Debug Channel TTY"
	depends on MIPS_CDMM
	help
	  This enables a TTY and console on the MIPS EJTAG Fast Debug Channels,
	  if they are present. This can be useful when working with an EJTAG
	  probe which supports it, to get console output and a login prompt via
	  EJTAG without needing to connect a serial cable.

	  TTY devices are named e.g. ttyFDC3c2 (for FDC channel 2 of the FDC on
	  CPU3).

	  The console can be enabled with console=fdc1 (for FDC channel 1 on all
	  CPUs). Do not use the console unless there is a debug probe attached
	  to drain the FDC TX FIFO.

	  If unsure, say N.

endif # TTY
endif # TTY
+1 −0
Original line number Original line Diff line number Diff line
@@ -29,5 +29,6 @@ obj-$(CONFIG_SYNCLINK) += synclink.o
obj-$(CONFIG_PPC_EPAPR_HV_BYTECHAN) += ehv_bytechan.o
obj-$(CONFIG_PPC_EPAPR_HV_BYTECHAN) += ehv_bytechan.o
obj-$(CONFIG_GOLDFISH_TTY)	+= goldfish.o
obj-$(CONFIG_GOLDFISH_TTY)	+= goldfish.o
obj-$(CONFIG_DA_TTY)		+= metag_da.o
obj-$(CONFIG_DA_TTY)		+= metag_da.o
obj-$(CONFIG_MIPS_EJTAG_FDC_TTY) += mips_ejtag_fdc.o


obj-y += ipwireless/
obj-y += ipwireless/
+1126 −0

File added.

Preview size limit exceeded, changes collapsed.