FreeBSD 12.2: ssc & HSUART ports

Moderator: Andrey.Mazlin

Post Reply
David.Blake
Posts: 11
Joined: Mon Jan 18, 2021 9:51 pm

FreeBSD 12.2: ssc & HSUART ports

Post by David.Blake »

{from my partner on this project..}


The BIOS configuration to disable the SCC devices is no longer needed once one has a
kernel with the scc device included. You can re-enable the three BIOS options, and the
SD card will appear. I was able to read a card, but I have not tested exhaustively.

To add the scc driver, add the following to your kernel config file, and recompile:

device scc # Serial Communications Controllers (SCC) devices

To enable the kernel to recognize the HSUART based serial ports, add the following to
/usr/src/sys/dev/uart/uart_bus_pci.c, at about line 168, and recompile. I have put in a
FreeBSD PR (number 253494) so perhaps this will be more permanently addressed soon.


{ 0x8086, 0x5abc, 0xffff, 0, "Celeron N3350/Pentium N4200/Atom E3900 Series HSUART#0", 0x10,
24 * DEFAULT_RCLK, 2 },
{ 0x8086, 0x5abe, 0xffff, 0, "Celeron N3350/Pentium N4200/Atom E3900 Series HSUART#1", 0x10,
24 * DEFAULT_RCLK, 2 },
{ 0x8086, 0x5ac0, 0xffff, 0, "Celeron N3350/Pentium N4200/Atom E3900 Series HSUART#2", 0x10,
24 * DEFAULT_RCLK, 2 },
{ 0x8086, 0x5aee, 0xffff, 0, "Celeron N3350/Pentium N4200/Atom E3900 Series HSUART#3", 0x10,
24 * DEFAULT_RCLK, 2 },

jlduran
Posts: 3
Joined: Sat Jan 13, 2018 4:31 pm

Re: FreeBSD 12.2: ssc & HSUART ports

Post by jlduran »

I have replied in the PR. But essentially, you could use the serial console on FreeBSD by setting in /boot/loader.conf:

Code: Select all

hw.uart.console="mm:0xfea10000,rs:2"
This will configure the memory-mapped serial console.

The base address is obtained by issuing:

Code: Select all

# pciconf -l -b pci0:24:2
uart2@pci0:0:24:2:	class=0x118000 rev=0x0b hdr=0x00 vendor=0x8086 device=0x5ac0 subvendor=0x8086 subdevice=0x7270
    bar   [10] = type Memory, range 64, base 0xfea10000, size 4096, enabled
    bar   [18] = type Memory, range 64, base 0, size 4096, enabled
From uart_subr.c:

Code: Select all

The specification is a list of attributes
separated by commas. Each attribute is a tag-value pair with the tag and
value separated by a colon. Supported tags are:

	bd = Busy Detect
	br = Baudrate
	ch = Channel
	db = Data bits
	dt = Device type
	io = I/O port address
	mm = Memory mapped I/O address
	pa = Parity
	rs = Register shift
	sb = Stopbits
	xo = Device clock (xtal oscillator)

The io and mm tags are mutually exclusive.

Post Reply

Return to “General fitlet2 questions”