[PATCH v2 2/3] misc: introduce Qcom GENI wrapper

Casey Connolly casey.connolly at linaro.org
Wed Jun 11 10:48:28 CEST 2025



On 6/11/25 00:59, Tom Rini wrote:
> On Tue, Jun 10, 2025 at 06:50:51PM +0200, Casey Connolly wrote:
> 
>> Qualcomm peripherals like UART, SPI, I2C, etc are all exposed under a
>> common GENI Serial Engine wrapper device. Replace the stub driver we use
>> for this currently with a full-on misc device and implement support for
>> loading peripheral firmware.
>>
>> Each of the peripherals has it's own protocol-specific firmware, this is
>> stored on the internal storage of the device with a well-known partition
>> type GUID.
>>
>> To support this, GENI will bind peripherals in two stages. First the
>> ones that already have firmware loaded (such as the serial port) are
>> bound in the typical way. But devices that require firmware loading are
>> deferred until EVT_LAST_STAGE_INIT. At this point we can be sure that
>> the storage device is available, so we load the firmware and then bind
>> and probe the remaining children.
>>
>> Child devices are expected to determine if firmware loading is necessary
>> and call qcom_geni_load_firmware().
>>
>> Since Linux currently doesn't support loading firmware (and firmware may
>> not be available), we probe all GENI peripherals to ensure that they
>> always load firmware if necessary.
>>
>> Signed-off-by: Casey Connolly <casey.connolly at linaro.org>
> [snip]
>> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
>> index 579c8acfcb466122c4fe66950ec7ca24c355b43a..5b83e3386be6ab7fa8d7f5306851d90a87fb75c3 100644
>> --- a/arch/arm/Kconfig
>> +++ b/arch/arm/Kconfig
>> @@ -1124,8 +1124,9 @@ config ARCH_SNAPDRAGON
>>   	select LINUX_KERNEL_IMAGE_HEADER if !ENABLE_ARM_SOC_BOOT0_HOOK
>>   	select SYSRESET
>>   	select SYSRESET_PSCI
>>   	select ANDROID_BOOT_IMAGE_IGNORE_BLOB_ADDR
>> +	select QCOM_GENI
>>   	imply OF_UPSTREAM
>>   	imply CMD_DM
>>   	imply DM_USB_GADGET
>>   
>> diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
>> index ffc5868c0dd3e884fddb98b10f4b878d3f08b43a..78aaf003852aab96450963d93678787d30892f1b 100644
>> --- a/drivers/misc/Kconfig
>> +++ b/drivers/misc/Kconfig
>> @@ -82,8 +82,17 @@ config GATEWORKS_SC
>>   	  Enable access for the Gateworks System Controller used on Gateworks
>>   	  boards to provide a boot watchdog, power control, temperature monitor,
>>   	  voltage ADCs, and EEPROM.
>>   
>> +config QCOM_GENI
>> +	bool "Qualcomm Generic Interface (GENI) driver"
>> +	depends on MISC
> 
> So, this can get tricky. In ARCH_SNAPDRAGON you do not select MISC.
> QCOM_GENI correctly depends on MISC. Therefore there's a possible
> dependency problem that Kconfig might start complaining about. In fact,

Oh good point... on reflection i don't think it's correct to select 
QCOM_GENI for ARCH_SNAPDRAGON anyways since some of the older platforms 
don't use GENI anyway.

I'll rework this so that the GENI peripherals themselves (i2c, spi, 
uart) depend on QCOM_GENI instead, then all these will be added to the 
defconfigs.

Thanks,

> using qconfig to poke at what has which things set:
> dragonboard410c dragonboard820c hmibsc qcom_ipq9574_mmc
> should all have some warning? But IIRC, annoyingly, we couldn't
> figure out how to make those kind of Kconfig warnings fatal in CI.

That's annoying... What about having a script that verifies that all the 
=y options in the defconfig are also present in the .config? I guess 
that solves a slightly different problem but may be useful regardless...

Thanks,

> 
-- 
Casey (she/they)



More information about the U-Boot mailing list