]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
dm: i2c: allow disabling driver model in SPL
authorIgor Opaniuk <igor.opaniuk@foundries.io>
Tue, 9 Feb 2021 11:52:43 +0000 (13:52 +0200)
committerHeiko Schocher <hs@denx.de>
Sun, 21 Feb 2021 05:07:30 +0000 (06:07 +0100)
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

Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heiko Schocher <hs@denx.de>
Signed-off-by: Igor Opaniuk <igor.opaniuk@foundries.io>
Reviewed-by: Tom Rini <trini@konsulko.com>
drivers/i2c/Kconfig
drivers/i2c/Makefile
drivers/misc/Makefile

index f79b50fcf575d206b61a1b9c7039354c03f2197c..1844941eb21fedc7fbd2eabd10ccef924107afbb 100644 (file)
@@ -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
index 29aab0f9e3078bdbfb79e89d8c9018757be716d6..acd27ac29d218ec8aa922fa25f26fc653e213b38 100644 (file)
@@ -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
index d7372037045b99aa9e06b82217050adc34beba43..1a493960074d4bd5705a48ccab9bdc2435391b96 100644 (file)
@@ -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