[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