On Sat, Jul 11, 2026 at 01:52:26AM +0200, Jonas Karlman wrote: > Hi Tom, > > On 7/10/2026 5:56 PM, Tom Rini wrote: > > On Fri, Jul 10, 2026 at 05:39:08PM +0200, Jonas Karlman wrote: > >> Hi Tom, > >> > >> On 7/10/2026 3:50 PM, Tom Rini wrote: > >>> On Thu, Jul 09, 2026 at 09:12:24AM +0200, Jonas Karlman wrote: > >>>> Hi Tom, > >>>> > >>>> On 7/9/2026 3:52 AM, Tom Rini wrote: > >>>>> On Wed, Jul 08, 2026 at 10:05:34PM +0000, Jonas Karlman wrote: > >>>>> > >>>>>> Change to depend on the xPL symbol instead of the SUPPORT_xPL symbol to > >>>>>> only make the xPL_SYS_I2C_LEGACY symbols available when xPL is enabled. > >>>>>> > >>>>>> Signed-off-by: Jonas Karlman <[email protected]> > >>>>>> --- > >>>>>> drivers/i2c/Kconfig | 4 ++-- > >>>>>> 1 file changed, 2 insertions(+), 2 deletions(-) > >>>>>> > >>>>>> diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig > >>>>>> index ab5af17858c8..125dc84819e6 100644 > >>>>>> --- a/drivers/i2c/Kconfig > >>>>>> +++ b/drivers/i2c/Kconfig > >>>>>> @@ -78,14 +78,14 @@ config SYS_I2C_LEGACY > >>>>>> > >>>>>> config SPL_SYS_I2C_LEGACY > >>>>>> bool "Enable legacy I2C subsystem and drivers in SPL" > >>>>>> - depends on SUPPORT_SPL && !SPL_DM_I2C > >>>>>> + depends on SPL && !SPL_DM_I2C > >>>>>> help > >>>>>> Enable the legacy I2C subsystem and drivers in SPL. This is > >>>>>> useful > >>>>>> in some size constrained situations. > >>>>>> > >>>>>> config TPL_SYS_I2C_LEGACY > >>>>>> bool "Enable legacy I2C subsystem and drivers in TPL" > >>>>>> - depends on SUPPORT_TPL && !SPL_DM_I2C > >>>>>> + depends on TPL && !TPL_DM_I2C > >>>>>> help > >>>>>> Enable the legacy I2C subsystem and drivers in TPL. This is > >>>>>> useful > >>>>>> in some size constrained situations. > >>>>> > >>>>> Building on the last email, I think these might need to be > >>>>> [ST]PL_FRAMEWORK not [ST]PL. > >>>>> > >>>> > >>>> I have mostly tested this series with additional changes that alias > >>>> putc()/puts() to printch()/printascii() in xPL builds when > >>>> common/console.o is unavailable and DEBUG_UART=y, patches that will > >>>> be sent as a separate series. > >>>> > >>>> It is possible such change may have hidden some latent issues, now > >>>> trying to push a branch that contains changes that ends at the patches > >>>> included in this series, but due to timeouts it was not possible prior > >>>> to sending this reply. > >>>> > >>>> This patch can also be dropped if it causes any issues, I only added it > >>>> after a search for SUPPORT_xPL and noticed that these depends seem to be > >>>> incorrect. SUPPORT_xPL is used to tell if xPL can be enabled or not, > >>>> not if xPL is enabled/disabled. > >>> > >>> I don't want to drop this, but there are a handful of platforms that > >>> change: > >>> 10: Kconfig: i2c: Depend on correct xPL symbol > >>> aarch64: (for 1/1 boards) all -60.0 text -60.0 > >>> ls1043aqds_tfa : all -60 text -60 > >>> u-boot: add: 0/-1, grow: 0/-1 bytes: 0/-60 (-60) > >>> function old new > >>> delta > >>> board_early_init_f 68 64 > >>> -4 > >>> i2c_early_init_f 56 - > >>> -56 > >>> > >>> Can you please look in to it and see what needs to be changed? Thanks. > >> > >> From a quick look this size change may be caused due to use of an > >> 'imply SPL_SYS_I2C_LEGACY' instead of using an 'imply SYS_I2C_LEGACY' > >> in arch/arm/cpu/armv8/fsl-layerscape/Kconfig. > >> > >> 'config MACH_SUN8I_R40' is another platform that also possible miss > >> an 'imply SYS_I2C_LEGACY' to match other similar sunxi platforms. > > I have now done some more digging and it looks like SYS_I2C_EARLY_INIT > is the culprit. > > config SYS_I2C_EARLY_INIT > bool "Enable legacy I2C subsystem early in boot" > depends on BOARD_EARLY_INIT_F && SPL_SYS_I2C_LEGACY && SYS_I2C_MXC > help > Add the function prototype for i2c_early_init_f which is called in > board_early_init_f. > > Not sure what to do here, it is possible that just dropping > SPL_SYS_I2C_LEGACY from depends would ensure the code is restored.
Ah, good work. Yes, this is tricky. > However, that also feels strange as the intent of i2c_early_init_f() is > to initialize I2C_LEGACY, and most of the affected boards use DM_I2C: > > > tools/qconfig.py -f ~SPL SYS_I2C_EARLY_INIT > 5 matches > ls1043aqds_tfa_SECURE_BOOT ls1043aqds_tfa ls1046aqds_tfa_SECURE_BOOT > ls1046aqds_tfa ls2080aqds_qspi > > > tools/qconfig.py -f ~SPL SYS_I2C_EARLY_INIT ~DM_I2C > 1 matches > ls2080aqds_qspi > > (Please note that my qconfig.db does not cover 100% of all defconfigs.) > > All other code seem to be protected by CONFIG_IS_ENABLED(SYS_I2C_LEGACY) > so I am not expecting any other change for targets that use xPL=n. This is tricky, yes. Looking at all the boards which *have* SYS_I2C_EARLY_INIT guards for calling i2c_early_init_f some presumably used to, but do not now, set SPL_SYS_I2C_LEGACY. And going back to my initial conversion of this symbol to Kconfig, I'm not sure it's 100% right, now. I think we need to add SPL_SYS_I2C_EARLY_INIT and make both of these symbols be "select ..." in the right board Kconfig, rather than a prompted question. And with that, we should have: ls1043aqds_tfa_SECURE_BOOT ls1043aqds_tfa ls1046aqds_tfa_SECURE_BOOT ls1046aqds_tfa be "select SPL_SYS_I2C_EARLY_INIT" and then: ls2080aqds_nand ls2080aqds_qspi be doing both "select SPL_SYS_I2C_EARLY_INIT" and "select SYS_I2C_EARLY_INIT". There's also (and so I've cc'd Peng) some dead code to remove on other layerscape platforms that don't call i2c_early_init_f (they're both full and SPL DM i2c) and so have some dead code now. -- Tom
signature.asc
Description: PGP signature

