diff --git a/arch/arm/include/asm/arch-am33xx/i2c.h b/arch/arm/include/asm/arch-am33xx/i2c.h
index a34282adc8c6461fa3d95b36d160892b64248aaa..16e9a9945716e56c18dc514e6199ebe04dba1b29 100644
--- a/arch/arm/include/asm/arch-am33xx/i2c.h
+++ b/arch/arm/include/asm/arch-am33xx/i2c.h
@@ -10,7 +10,6 @@
 #define  I2C_BASE1		0x44E0B000
 #define  I2C_BASE2		0x4802A000
 #define  I2C_BASE3		0x4819C000
-#define	 CONFIG_SYS_I2C_BUS_MAX		3
 
 #define I2C_DEFAULT_BASE		I2C_BASE1
 
diff --git a/arch/arm/include/asm/arch-omap3/i2c.h b/arch/arm/include/asm/arch-omap3/i2c.h
index d1421757dbc7f3228fd55d7c9f5da266dd677f76..48676dd7565ee12bccd06b711a9f5e7073b1286e 100644
--- a/arch/arm/include/asm/arch-omap3/i2c.h
+++ b/arch/arm/include/asm/arch-omap3/i2c.h
@@ -7,7 +7,6 @@
 #ifndef _OMAP3_I2C_H_
 #define _OMAP3_I2C_H_
 
-#define CONFIG_SYS_I2C_BUS_MAX	3
 #define I2C_DEFAULT_BASE	I2C_BASE1
 
 struct i2c {
diff --git a/arch/arm/include/asm/arch-omap4/i2c.h b/arch/arm/include/asm/arch-omap4/i2c.h
index 1c5ed9b17ace162a24420e0a7ffbd4229aa0b9c3..96c095436ad2e3549057d8b46c07d9d14c65ad46 100644
--- a/arch/arm/include/asm/arch-omap4/i2c.h
+++ b/arch/arm/include/asm/arch-omap4/i2c.h
@@ -7,7 +7,6 @@
 #ifndef _OMAP4_I2C_H_
 #define _OMAP4_I2C_H_
 
-#define CONFIG_SYS_I2C_BUS_MAX	4
 #define I2C_DEFAULT_BASE	I2C_BASE1
 
 struct i2c {
diff --git a/arch/arm/include/asm/arch-omap5/i2c.h b/arch/arm/include/asm/arch-omap5/i2c.h
index 5122cd6aa498e06da999d7f5b1ad11712e119387..6d620dc32e3062a268d3646466c287245bf53f3f 100644
--- a/arch/arm/include/asm/arch-omap5/i2c.h
+++ b/arch/arm/include/asm/arch-omap5/i2c.h
@@ -7,7 +7,6 @@
 #ifndef _OMAP5_I2C_H_
 #define _OMAP5_I2C_H_
 
-#define CONFIG_SYS_I2C_BUS_MAX	5
 #define I2C_DEFAULT_BASE	I2C_BASE1
 
 struct i2c {
diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig
index d2d9367bfc46653a0608398bcb3b7d39bbc72c2f..c296985d9baaaf6d7817cf4e144fd3459bef48d1 100644
--- a/drivers/i2c/Kconfig
+++ b/drivers/i2c/Kconfig
@@ -227,6 +227,16 @@ config TEGRA186_BPMP_I2C
 	  by the BPMP, and can only be accessed by the main CPU via IPC
 	  requests to the BPMP. This driver covers the latter case.
 
+config SYS_I2C_BUS_MAX
+	int "Max I2C busses"
+	depends on ARCH_KEYSTONE || ARCH_OMAP2PLUS || ARCH_SOCFPGA
+	default 2 if TI816X
+	default 3 if OMAP34XX || AM33XX || AM43XX || ARCH_KEYSTONE
+	default 4 if ARCH_SOCFPGA || OMAP44XX || TI814X
+	default 5 if OMAP54XX
+	help
+	  Define the maximum number of available I2C buses.
+
 source "drivers/i2c/muxes/Kconfig"
 
 endmenu
diff --git a/include/configs/socfpga_common.h b/include/configs/socfpga_common.h
index 175b01ef84a9f12565b3d29529b30cbdcb9becd8..73a9744176085933ee6e1d1d7bfd8091a4d35522 100644
--- a/include/configs/socfpga_common.h
+++ b/include/configs/socfpga_common.h
@@ -156,7 +156,6 @@
  * I2C support
  */
 #define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_BUS_MAX		4
 #define CONFIG_SYS_I2C_BASE		SOCFPGA_I2C0_ADDRESS
 #define CONFIG_SYS_I2C_BASE1		SOCFPGA_I2C1_ADDRESS
 #define CONFIG_SYS_I2C_BASE2		SOCFPGA_I2C2_ADDRESS
diff --git a/include/configs/ti_armv7_keystone2.h b/include/configs/ti_armv7_keystone2.h
index f3563446c1fabda3484a55ef9107d3a92216ec22..2b2b85d085b4d4f3b7520e410c7e6b429202ec13 100644
--- a/include/configs/ti_armv7_keystone2.h
+++ b/include/configs/ti_armv7_keystone2.h
@@ -160,7 +160,6 @@
 #define CONFIG_SYS_DAVINCI_I2C_SLAVE1	0x10 /* SMBus host address */
 #define CONFIG_SYS_DAVINCI_I2C_SPEED2	100000
 #define CONFIG_SYS_DAVINCI_I2C_SLAVE2	0x10 /* SMBus host address */
-#define CONFIG_SYS_I2C_BUS_MAX			3
 
 /* EEPROM definitions */
 #define CONFIG_SYS_I2C_EEPROM_ADDR_LEN		2