From: David Brownell <[EMAIL PROTECTED]>
Board support for the dm355evm_msp MFD driver. This provides I2C
initialization for new-style drivers, as used by that MFD driver
and by mainline drivers for this board's audio and video codecs.
It also updates the I2C bus to use 400 kHz. The 20 kHz value was
leftover from the DM6446 EVM, where the msp430 used an execrable
bit-banged I2C implementation. The msp430 on the DM355 EVM uses
hardware I2C, and appears to have no such problems.
Signed-off-by: David Brownell <[EMAIL PROTECTED]>
---
arch/arm/mach-davinci/board-dm355-evm.c | 26 +
drivers/mfd/Kconfig | 8
drivers/mfd/Makefile | 3
drivers/mfd/dm355evm_msp.c | 420 ++++++++++++++++++++++++++++++
include/linux/i2c/dm355evm_msp.h | 79 +++++
5 files changed, 530 insertions(+), 6 deletions(-)
--- a/arch/arm/mach-davinci/board-dm355-evm.c
+++ b/arch/arm/mach-davinci/board-dm355-evm.c
@@ -14,14 +14,16 @@
#include <linux/dma-mapping.h>
#include <linux/platform_device.h>
#include <linux/i2c.h>
-#include <asm/setup.h>
#include <linux/io.h>
-#include <asm/mach-types.h>
-#include <mach/hardware.h>
+#include <linux/gpio.h>
+#include <asm/setup.h>
+#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
#include <asm/mach/flash.h>
+
+#include <mach/hardware.h>
#include <mach/psc.h>
#include <mach/common.h>
#include <mach/board.h>
@@ -29,14 +31,28 @@
#include <mach/i2c.h>
#include <mach/serial.h>
+
static struct davinci_i2c_platform_data i2c_pdata = {
- .bus_freq = 20 /* kHz */,
- .bus_delay = 100 /* usec */,
+ .bus_freq = 400 /* kHz */,
+ .bus_delay = 0 /* usec */,
+};
+
+static struct i2c_board_info dm355evm_i2c_info[] = {
+ { I2C_BOARD_INFO("dm355evm_msp", 0x25), /* plus irq */ },
+ /* { I2C_BOARD_INFO("tlv320aic3x", 0x1b), }, */
+ /* { I2C_BOARD_INFO("tvp5146", 0x5d), }, */
};
static void __init evm_init_i2c(void)
{
davinci_init_i2c(&i2c_pdata);
+
+ gpio_request(5, "dm355evm_msp");
+ gpio_direction_input(5);
+ dm355evm_i2c_info[0].irq = gpio_to_irq(5);
+
+ i2c_register_board_info(1, dm355evm_i2c_info,
+ ARRAY_SIZE(dm355evm_i2c_info));
}
static struct platform_device *davinci_evm_devices[] __initdata = {
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source