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

Commit 56931d73 authored by Finn Thain's avatar Finn Thain Committed by Geert Uytterhoeven
Browse files

m68k/mac: Make SCC reset work more reliably



For SCC initialization we cannot assume that the control register is in
the correct state to accept a register pointer. So first read from the
control register in order to "sync" up.

Signed-off-by: default avatarFinn Thain <fthain@telegraphics.com.au>
Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
parent a0b7b242
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -2915,7 +2915,9 @@ func_start serial_init,%d0/%d1/%a0/%a1

#if defined(MAC_USE_SCC_A) || defined(MAC_USE_SCC_B)
	movel	%pc@(L(mac_sccbase)),%a0
	/* Reset SCC device */
	/* Reset SCC register pointer */
	moveb	%a0@(mac_scc_cha_a_ctrl_offset),%d0
	/* Reset SCC device: write register pointer then register value */
	moveb	#9,%a0@(mac_scc_cha_a_ctrl_offset)
	moveb	#0xc0,%a0@(mac_scc_cha_a_ctrl_offset)
	/* Wait for 5 PCLK cycles, which is about 68 CPU cycles */