Page 1 of 1

FreeBSD 12.2: ssc & HSUART ports

Posted: Mon Feb 15, 2021 1:19 am
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 },

Re: FreeBSD 12.2: ssc & HSUART ports

Posted: Sat Jul 10, 2021 8:22 pm
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.