Message ID | 20210205151058.1037793-2-igor.opaniuk@gmail.com |
---|---|
State | Superseded |
Delegated to: | Heiko Schocher |
Headers | show |
Series | Allow disabling driver model for I2C in SPL | expand |
On Fri, 5 Feb 2021 at 08:11, Igor Opaniuk <igor.opaniuk@foundries.io> wrote: > > From: Igor Opaniuk <igor.opaniuk@foundries.io> > > At present if U-Boot proper uses driver model for I2C, then SPL has to > also. While this is desirable, it places a significant barrier to moving > to driver model in some cases. For example, with a space-constrained SPL > it may be necessary to enable CONFIG_SPL_OF_PLATDATA which involves > adjusting some drivers. > > This patch introduces a separate Kconfig symbols for enabling DM_I2C and > DM_I2C_GPIO support in SPL. > > This will also help to get away from dirty workarounds to > achieve non-DM I2C support for SPL, which is currently used in some > board header files like: > > ifdef CONFIG_SPL_BUILD > undef CONFIG_DM_I2C > endif > > Signed-off-by: Igor Opaniuk <igor.opaniuk@foundries.io> > --- > > drivers/i2c/Kconfig | 21 +++++++++++++++++++++ > drivers/i2c/Makefile | 4 ++-- > drivers/misc/Makefile | 2 +- > 3 files changed, 24 insertions(+), 3 deletions(-) Reviewed-by: Simon Glass <sjg@chromium.org>
Hello Igor, On 05.02.21 16:10, Igor Opaniuk wrote: > From: Igor Opaniuk <igor.opaniuk@foundries.io> > > At present if U-Boot proper uses driver model for I2C, then SPL has to > also. While this is desirable, it places a significant barrier to moving > to driver model in some cases. For example, with a space-constrained SPL > it may be necessary to enable CONFIG_SPL_OF_PLATDATA which involves > adjusting some drivers. > > This patch introduces a separate Kconfig symbols for enabling DM_I2C and > DM_I2C_GPIO support in SPL. > > This will also help to get away from dirty workarounds to > achieve non-DM I2C support for SPL, which is currently used in some > board header files like: > > ifdef CONFIG_SPL_BUILD > undef CONFIG_DM_I2C > endif > > Signed-off-by: Igor Opaniuk <igor.opaniuk@foundries.io> > --- > > drivers/i2c/Kconfig | 21 +++++++++++++++++++++ > drivers/i2c/Makefile | 4 ++-- > drivers/misc/Makefile | 2 +- > 3 files changed, 24 insertions(+), 3 deletions(-) Reviewed-by: Heiko Schocher <hs@denx.de> bye, Heiko
diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig index 403602fddf..5fce14122d 100644 --- a/drivers/i2c/Kconfig +++ b/drivers/i2c/Kconfig @@ -14,6 +14,17 @@ config DM_I2C device (bus child) info is kept as parent plat. The interface is defined in include/i2c.h. +config SPL_DM_I2C + bool "Enable Driver Model for I2C drivers in SPL" + depends on SPL_DM && DM_I2C + default y + help + Enable driver model for I2C. The I2C uclass interface: probe, read, + write and speed, is implemented with the bus drivers operations, + which provide methods for bus setting and data transfer. Each chip + device (bus child) info is kept as parent platdata. The interface + is defined in include/i2c.h. + config I2C_CROS_EC_TUNNEL tristate "Chrome OS EC tunnel I2C bus" depends on CROS_EC @@ -61,6 +72,16 @@ config DM_I2C_GPIO bindings are supported. Binding info: doc/device-tree-bindings/i2c/i2c-gpio.txt +config SPL_DM_I2C_GPIO + bool "Enable Driver Model for software emulated I2C bus driver in SPL" + depends on SPL_DM && DM_I2C_GPIO && SPL_DM_GPIO && SPL_GPIO_SUPPORT + default y + help + Enable the i2c bus driver emulation by using the GPIOs. The bus GPIO + configuration is given by the device tree. Kernel-style device tree + bindings are supported. + Binding info: doc/device-tree-bindings/i2c/i2c-gpio.txt + config SYS_I2C_AT91 bool "Atmel I2C driver" depends on DM_I2C && ARCH_AT91 diff --git a/drivers/i2c/Makefile b/drivers/i2c/Makefile index 29aab0f9e3..acd27ac29d 100644 --- a/drivers/i2c/Makefile +++ b/drivers/i2c/Makefile @@ -2,9 +2,9 @@ # # (C) Copyright 2000-2007 # Wolfgang Denk, DENX Software Engineering, wd@denx.de. -obj-$(CONFIG_DM_I2C) += i2c-uclass.o +obj-$(CONFIG_$(SPL_)DM_I2C) += i2c-uclass.o ifdef CONFIG_ACPIGEN -obj-$(CONFIG_DM_I2C) += acpi_i2c.o +obj-$(CONFIG_$(SPL_)DM_I2C) += acpi_i2c.o endif obj-$(CONFIG_$(SPL_)DM_I2C_GPIO) += i2c-gpio.o obj-$(CONFIG_$(SPL_)I2C_CROS_EC_TUNNEL) += cros_ec_tunnel.o diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile index d737203704..1a49396007 100644 --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile @@ -17,7 +17,7 @@ obj-$(CONFIG_SANDBOX) += p2sb_sandbox.o p2sb_emul.o obj-$(CONFIG_SANDBOX) += swap_case.o endif -ifdef CONFIG_DM_I2C +ifdef CONFIG_$(SPL_)DM_I2C ifndef CONFIG_SPL_BUILD obj-$(CONFIG_SANDBOX) += i2c_eeprom_emul.o endif