From: Bin Meng Date: Tue, 26 Feb 2019 09:52:19 +0000 (-0800) Subject: x86: Make sure i8254 is setup correctly before generating beeps X-Git-Url: http://git.dujemihanovic.xyz/login.html?a=commitdiff_plain;h=7d0a53a40cee6e40c173b782f26f5a2317cf39b5;p=u-boot.git x86: Make sure i8254 is setup correctly before generating beeps The i8254 timer control IO port (0x43) should be setup correctly by using PIT counter 2 to generate beeps, however in U-Boot other codes like TSC driver utilizes PIT for TSC frequency calibration and configures the counter 2 to a different mode that does not beep. Fix this by always ensuring the PIT counter 2 is correctly initialized so that the i8254 beeper driver works as expected. Signed-off-by: Bin Meng Reviewed-by: Simon Glass --- diff --git a/arch/x86/lib/i8254.c b/arch/x86/lib/i8254.c index d0227954b1..0f97538910 100644 --- a/arch/x86/lib/i8254.c +++ b/arch/x86/lib/i8254.c @@ -51,6 +51,10 @@ int i8254_enable_beep(uint frequency_hz) if (!frequency_hz) return -EINVAL; + /* make sure i8254 is setup correctly before generating beeps */ + outb(PIT_CMD_CTR2 | PIT_CMD_BOTH | PIT_CMD_MODE3, + PIT_BASE + PIT_COMMAND); + i8254_set_beep_freq(frequency_hz); setio_8(SYSCTL_PORTB, PORTB_BEEP_ENABLE);