On Tue, May 13, 2025 at 04:54:22PM +0100, Casey Connolly wrote:
> Hi Sumit,
> 
> On 5/12/25 08:01, Sumit Garg wrote:
> > On Fri, May 09, 2025 at 04:54:43PM +0200, Stephan Gerhold wrote:
> > > On Fri, May 09, 2025 at 12:45:20PM +0200, Casey Connolly wrote:
> > > > On 5/8/25 12:32, Sumit Garg wrote:
> > > > > From: Sumit Garg <sumit.g...@oss.qualcomm.com>
> > > > > 
> > > > > When debug serial port isn't connected, it is at least reported on RB1
> > > > > that autoboot gets interrupted. It is probably due to random 
> > > > > characters
> > > > > on the UART RX line when disconnected. Lets try to fix this 
> > > > > inconsistent
> > > > > behaviour via enabling AUTOBOOT_KEYED such that the autoboot gets
> > > > > interrupted only when the <SPACE> key gets pressed.
> > > > 
> > > > Honestly I'd much rather fix the bug in the UART driver, maybe it's 
> > > > broken
> > > > pinctrl?
> > > > 
> > > > The older UART driver (for msm8916) had a similar but that Stephen was 
> > > > able
> > > > to fix with better configuration.
> > > > 
> > > > Anyhow, this is a sensible enough workaround if nobody wants to look 
> > > > into
> > > > GENI...
> > > > 
> > > 
> > > Well, the main fix I did for that isn't related to the UART driver at
> > > all, it's simply adding bias-pull-up for the RX pin so that it isn't
> > > left floating when UART is not connected.
> > > 
> > > For RB1, qcm2290.dtsi &qup_uart4_default currently has bias-disable for
> > > both RX and TX pins. So please try applying bias-pull-up + bootph-all
> > > for the GPIO that belongs to RX.
> > > 
> > > For details, please see the following patch series for MSM8916:
> > > https://lore.kernel.org/linux-arm-msm/20250422-msm8916-console-pinctrl-v2-0-f345b7a53...@linaro.org/T/
> > 
> > Thanks for this reference but unfortunately this doesn't fix the issue
> > on RB1. I have tried the diff below [1]. It seems most likely due the
> > chainloading via ABL on RB1 as compared to U-Boot running as primary
> > bootloader on db410c. The RX line seems to be floating even before the
> > U-Boot starts which is causing the autoboot to stop. So for the
> > chainloading configuration, we need to enable AUTOBOOT_KEYED. I think
> > it should be the default sane configuration on Qcom platforms rather
> > than allowing autoboot stopped via any random character on RX line.
> 
> I dug into it and the rogue inputs actually come from the button-kbd driver,
> maybe the buttons are slightly misconfigured. This explains why it only
> happens on some boards.
> 
> So the right solution here is to fix the buttons, or disable button-kbd if
> you don't need it.

I tried disabling button-kbd using following patch but still the
autoboot gets stopped on RB1 with disconnected serial cable. It is most
likely caused by rougue chars on serial sue to floating RX line before the
boot flow reached U-Boot. I am even able to reproduce the same issue on
db845c in chainloaded config.

So, AUTOBOOT_KEYED seems to be the best possible solution here for
chainloaded config.

diff --git a/board/qualcomm/default.env b/board/qualcomm/default.env
index 87703b5a643..eab153d6879 100644
--- a/board/qualcomm/default.env
+++ b/board/qualcomm/default.env
@@ -1,4 +1,4 @@
-stdin=serial,button-kbd
+stdin=serial
 stdout=serial,vidconsole
 stderr=serial,vidconsole
 preboot=scsi scan; usb start
diff --git a/configs/qcom_defconfig b/configs/qcom_defconfig
index e3dac23f1d0..45a203ddf78 100644
--- a/configs/qcom_defconfig
+++ b/configs/qcom_defconfig
@@ -80,8 +77,6 @@ CONFIG_DM_I2C=y
 CONFIG_SYS_I2C_QUP=y
 CONFIG_SYS_I2C_GENI=y
 CONFIG_I2C_MUX=y
-CONFIG_DM_KEYBOARD=y
-CONFIG_BUTTON_KEYBOARD=y
 CONFIG_IOMMU=y
 CONFIG_QCOM_HYP_SMMU=y
 CONFIG_MISC=y

-Sumit

Reply via email to