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.conno...@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)