Commit a7b434f7 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Ben Hutchings

ARM: davinci: make I2C support optional

commit 8e580411 upstream.

The davinci platform has tried to get support for the EEPROM right,
but failed to get a clean build so far. At the moment, we get
a warning whenever CONFIG_SYSFS is disabled, as that is needed by
EEPROM_AT24:

warning: (MACH_DAVINCI_EVM && MACH_SFFSDR && MACH_DAVINCI_DM6467_EVM && MACH_DAVINCI_DM365_EVM && MACH_DAVINCI_DA830_EVM && MACH_MITYOMAPL138 && MACH_MINI2440) selects EEPROM_AT24 which has unmet direct dependencies (I2C && SYSFS)

Kevin Hilman initially added the 'select' to ensure that EEPROM_AT24
is always enabled in machines that really want it for normal operation
(i.e. for reading the MAC address). This broke when I2C was disabled,
and Russell King followed up with another patch to select that as
well.

I now see that the SYSFS dependency is still missing, which leaves
us with three options:

a) add 'select SYSFS' in addition to the others
b) change AT24_EEPPROM to work without sysfs (should be possible)
c) remove all those selects again and get the files to build when
   I2C is disabled.

I would really hate to do a) because adding select statements that
hardwire user-selectable symbols is generally a bad idea. I first
tried b) but then ended up redoing the patch from scratch to approach
c), so we can also remove the other selects.

I checked that CONFIG_I2C is still enabled with davinci_all_defconfig,
so that does not have to change.
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Fixes: 45b146d7 ("ARM: Davinci: Fix I2C build errors")
Fixes: 22ca4668 ("davinci: kconfig: select at24 eeprom for selected boards")
Signed-off-by: default avatarSekhar Nori <nsekhar@ti.com>
Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
parent 3f7b679d
...@@ -65,8 +65,6 @@ config MACH_DAVINCI_EVM ...@@ -65,8 +65,6 @@ config MACH_DAVINCI_EVM
bool "TI DM644x EVM" bool "TI DM644x EVM"
default ARCH_DAVINCI_DM644x default ARCH_DAVINCI_DM644x
depends on ARCH_DAVINCI_DM644x depends on ARCH_DAVINCI_DM644x
select EEPROM_AT24
select I2C
help help
Configure this option to specify the whether the board used Configure this option to specify the whether the board used
for development is a DM644x EVM for development is a DM644x EVM
...@@ -74,8 +72,6 @@ config MACH_DAVINCI_EVM ...@@ -74,8 +72,6 @@ config MACH_DAVINCI_EVM
config MACH_SFFSDR config MACH_SFFSDR
bool "Lyrtech SFFSDR" bool "Lyrtech SFFSDR"
depends on ARCH_DAVINCI_DM644x depends on ARCH_DAVINCI_DM644x
select EEPROM_AT24
select I2C
help help
Say Y here to select the Lyrtech Small Form Factor Say Y here to select the Lyrtech Small Form Factor
Software Defined Radio (SFFSDR) board. Software Defined Radio (SFFSDR) board.
...@@ -106,8 +102,6 @@ config MACH_DAVINCI_DM6467_EVM ...@@ -106,8 +102,6 @@ config MACH_DAVINCI_DM6467_EVM
bool "TI DM6467 EVM" bool "TI DM6467 EVM"
default ARCH_DAVINCI_DM646x default ARCH_DAVINCI_DM646x
depends on ARCH_DAVINCI_DM646x depends on ARCH_DAVINCI_DM646x
select EEPROM_AT24
select I2C
select MACH_DAVINCI_DM6467TEVM select MACH_DAVINCI_DM6467TEVM
help help
Configure this option to specify the whether the board used Configure this option to specify the whether the board used
...@@ -120,8 +114,6 @@ config MACH_DAVINCI_DM365_EVM ...@@ -120,8 +114,6 @@ config MACH_DAVINCI_DM365_EVM
bool "TI DM365 EVM" bool "TI DM365 EVM"
default ARCH_DAVINCI_DM365 default ARCH_DAVINCI_DM365
depends on ARCH_DAVINCI_DM365 depends on ARCH_DAVINCI_DM365
select EEPROM_AT24
select I2C
help help
Configure this option to specify whether the board used Configure this option to specify whether the board used
for development is a DM365 EVM for development is a DM365 EVM
...@@ -130,9 +122,7 @@ config MACH_DAVINCI_DA830_EVM ...@@ -130,9 +122,7 @@ config MACH_DAVINCI_DA830_EVM
bool "TI DA830/OMAP-L137/AM17x Reference Platform" bool "TI DA830/OMAP-L137/AM17x Reference Platform"
default ARCH_DAVINCI_DA830 default ARCH_DAVINCI_DA830
depends on ARCH_DAVINCI_DA830 depends on ARCH_DAVINCI_DA830
select EEPROM_AT24 select GPIO_PCF857X if I2C
select GPIO_PCF857X
select I2C
help help
Say Y here to select the TI DA830/OMAP-L137/AM17x Evaluation Module. Say Y here to select the TI DA830/OMAP-L137/AM17x Evaluation Module.
...@@ -212,8 +202,6 @@ config DA850_WL12XX ...@@ -212,8 +202,6 @@ config DA850_WL12XX
config MACH_MITYOMAPL138 config MACH_MITYOMAPL138
bool "Critical Link MityDSP-L138/MityARM-1808 SoM" bool "Critical Link MityDSP-L138/MityARM-1808 SoM"
depends on ARCH_DAVINCI_DA850 depends on ARCH_DAVINCI_DA850
select EEPROM_AT24
select I2C
help help
Say Y here to select the Critical Link MityDSP-L138/MityARM-1808 Say Y here to select the Critical Link MityDSP-L138/MityARM-1808
System on Module. Information on this SoM may be found at System on Module. Information on this SoM may be found at
......
...@@ -267,7 +267,7 @@ static struct platform_device rtc_dev = { ...@@ -267,7 +267,7 @@ static struct platform_device rtc_dev = {
static struct snd_platform_data dm644x_evm_snd_data; static struct snd_platform_data dm644x_evm_snd_data;
/*----------------------------------------------------------------------*/ /*----------------------------------------------------------------------*/
#ifdef CONFIG_I2C
/* /*
* I2C GPIO expanders * I2C GPIO expanders
*/ */
...@@ -614,6 +614,7 @@ static void __init evm_init_i2c(void) ...@@ -614,6 +614,7 @@ static void __init evm_init_i2c(void)
i2c_add_driver(&dm6446evm_msp_driver); i2c_add_driver(&dm6446evm_msp_driver);
i2c_register_board_info(1, i2c_info, ARRAY_SIZE(i2c_info)); i2c_register_board_info(1, i2c_info, ARRAY_SIZE(i2c_info));
} }
#endif
#define VENC_STD_ALL (V4L2_STD_NTSC | V4L2_STD_PAL) #define VENC_STD_ALL (V4L2_STD_NTSC | V4L2_STD_PAL)
...@@ -783,7 +784,9 @@ static __init void davinci_evm_init(void) ...@@ -783,7 +784,9 @@ static __init void davinci_evm_init(void)
pr_warn("%s: Cannot configure AEMIF.\n", pr_warn("%s: Cannot configure AEMIF.\n",
__func__); __func__);
#ifdef CONFIG_I2C
evm_leds[7].default_trigger = "nand-disk"; evm_leds[7].default_trigger = "nand-disk";
#endif
if (HAS_NOR) if (HAS_NOR)
pr_warning("WARNING: both NAND and NOR flash " pr_warning("WARNING: both NAND and NOR flash "
"are enabled; disable one of them.\n"); "are enabled; disable one of them.\n");
...@@ -793,9 +796,10 @@ static __init void davinci_evm_init(void) ...@@ -793,9 +796,10 @@ static __init void davinci_evm_init(void)
platform_add_devices(davinci_evm_devices, platform_add_devices(davinci_evm_devices,
ARRAY_SIZE(davinci_evm_devices)); ARRAY_SIZE(davinci_evm_devices));
#ifdef CONFIG_I2C
evm_init_i2c(); evm_init_i2c();
davinci_setup_mmc(0, &dm6446evm_mmc_config); davinci_setup_mmc(0, &dm6446evm_mmc_config);
#endif
dm644x_init_video(&dm644xevm_capture_cfg, &dm644xevm_display_cfg); dm644x_init_video(&dm644xevm_capture_cfg, &dm644xevm_display_cfg);
davinci_serial_init(dm644x_serial_device); davinci_serial_init(dm644x_serial_device);
......
...@@ -122,6 +122,7 @@ static struct platform_device davinci_nand_device = { ...@@ -122,6 +122,7 @@ static struct platform_device davinci_nand_device = {
#define HAS_ATA IS_ENABLED(CONFIG_BLK_DEV_PALMCHIP_BK3710) #define HAS_ATA IS_ENABLED(CONFIG_BLK_DEV_PALMCHIP_BK3710)
#ifdef CONFIG_I2C
/* CPLD Register 0 bits to control ATA */ /* CPLD Register 0 bits to control ATA */
#define DM646X_EVM_ATA_RST BIT(0) #define DM646X_EVM_ATA_RST BIT(0)
#define DM646X_EVM_ATA_PWD BIT(1) #define DM646X_EVM_ATA_PWD BIT(1)
...@@ -317,6 +318,7 @@ static struct at24_platform_data eeprom_info = { ...@@ -317,6 +318,7 @@ static struct at24_platform_data eeprom_info = {
.setup = davinci_get_mac_addr, .setup = davinci_get_mac_addr,
.context = (void *)0x7f00, .context = (void *)0x7f00,
}; };
#endif
static u8 dm646x_iis_serializer_direction[] = { static u8 dm646x_iis_serializer_direction[] = {
TX_MODE, RX_MODE, INACTIVE_MODE, INACTIVE_MODE, TX_MODE, RX_MODE, INACTIVE_MODE, INACTIVE_MODE,
...@@ -347,6 +349,7 @@ static struct snd_platform_data dm646x_evm_snd_data[] = { ...@@ -347,6 +349,7 @@ static struct snd_platform_data dm646x_evm_snd_data[] = {
}, },
}; };
#ifdef CONFIG_I2C
static struct i2c_client *cpld_client; static struct i2c_client *cpld_client;
static int cpld_video_probe(struct i2c_client *client, static int cpld_video_probe(struct i2c_client *client,
...@@ -714,6 +717,7 @@ static void __init evm_init_i2c(void) ...@@ -714,6 +717,7 @@ static void __init evm_init_i2c(void)
evm_init_cpld(); evm_init_cpld();
evm_init_video(); evm_init_video();
} }
#endif
#define CDCE949_XIN_RATE 27000000 #define CDCE949_XIN_RATE 27000000
...@@ -795,7 +799,10 @@ static __init void evm_init(void) ...@@ -795,7 +799,10 @@ static __init void evm_init(void)
if (ret) if (ret)
pr_warn("%s: GPIO init failed: %d\n", __func__, ret); pr_warn("%s: GPIO init failed: %d\n", __func__, ret);
#ifdef CONFIG_I2C
evm_init_i2c(); evm_init_i2c();
#endif
davinci_serial_init(dm646x_serial_device); davinci_serial_init(dm646x_serial_device);
dm646x_init_mcasp0(&dm646x_evm_snd_data[0]); dm646x_init_mcasp0(&dm646x_evm_snd_data[0]);
dm646x_init_mcasp1(&dm646x_evm_snd_data[1]); dm646x_init_mcasp1(&dm646x_evm_snd_data[1]);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment