aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/linux/linux-davinci/0002-tps6507x_regulator_da850_integration.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/linux/linux-davinci/0002-tps6507x_regulator_da850_integration.patch')
-rw-r--r--recipes/linux/linux-davinci/0002-tps6507x_regulator_da850_integration.patch83
1 files changed, 83 insertions, 0 deletions
diff --git a/recipes/linux/linux-davinci/0002-tps6507x_regulator_da850_integration.patch b/recipes/linux/linux-davinci/0002-tps6507x_regulator_da850_integration.patch
new file mode 100644
index 0000000000..0cf24d3eb4
--- /dev/null
+++ b/recipes/linux/linux-davinci/0002-tps6507x_regulator_da850_integration.patch
@@ -0,0 +1,83 @@
+Index: git/arch/arm/mach-davinci/board-da850-evm.c
+===================================================================
+--- git.orig/arch/arm/mach-davinci/board-da850-evm.c 2010-01-06 16:23:17.000000000 -0600
++++ git/arch/arm/mach-davinci/board-da850-evm.c 2010-01-12 08:54:24.921995195 -0600
+@@ -17,6 +17,7 @@
+ #include <linux/i2c.h>
+ #include <linux/i2c/at24.h>
+ #include <linux/i2c/pca953x.h>
++#include <linux/mfd/tps6507x.h>
+ #include <linux/gpio.h>
+ #include <linux/platform_device.h>
+ #include <linux/mtd/mtd.h>
+@@ -643,10 +644,14 @@
+ },
+ };
+
++static struct tps6507x_board tps_board = {
++ .tps6507x_pmic_init_data = &tps65070_regulator_data[0],
++};
++
+ static struct i2c_board_info __initdata da850evm_tps65070_info[] = {
+ {
+ I2C_BOARD_INFO("tps6507x", 0x48),
+- .platform_data = &tps65070_regulator_data[0],
++ .platform_data = &tps_board,
+ },
+ };
+
+Index: git/drivers/regulator/tps6507x-regulator.c
+===================================================================
+--- git.orig/drivers/regulator/tps6507x-regulator.c 2010-01-12 08:43:00.561370246 -0600
++++ git/drivers/regulator/tps6507x-regulator.c 2010-01-12 08:53:30.261440110 -0600
+@@ -502,6 +502,7 @@
+ struct regulator_init_data *init_data;
+ struct regulator_dev *rdev;
+ struct tps_pmic *tps;
++ struct tps6507x_board *tps_board;
+ int i;
+
+ if (!i2c_check_functionality(client->adapter,
+@@ -509,10 +510,21 @@
+ return -EIO;
+
+ /**
++ * tps_board points to tps6507x related constants
++ * coming from the board-evm file.
++ */
++
++ tps_board = (struct tps6507x_board *)client->dev.platform_data;
++
++ if (!tps_board)
++ return -EIO;
++
++ /**
+ * init_data points to array of regulator_init structures
+ * coming from the board-evm file.
+ */
+- init_data = client->dev.platform_data;
++
++ init_data = tps_board->tps6507x_pmic_init_data;
+
+ if (!init_data)
+ return -EIO;
+Index: git/include/linux/mfd/tps6507x.h
+===================================================================
+--- git.orig/include/linux/mfd/tps6507x.h 2010-01-12 08:43:00.561370246 -0600
++++ git/include/linux/mfd/tps6507x.h 2010-01-12 08:53:59.849433723 -0600
+@@ -131,4 +131,15 @@
+ /* VDCDC MASK */
+ #define TPS6507X_DEFDCDCX_DCDC_MASK 0X3F
+
++/**
++ * struct tps6507x_board - packages regulator and touchscreen init data
++ * @tps6507x_regulator_data: regulator initialization values
++ *
++ * Board data may be used to initialize regulator and touchscreen.
++ */
++
++struct tps6507x_board {
++ struct regulator_init_data *tps6507x_pmic_init_data;
++};
++
+ #endif /* __LINUX_MFD_TPS6507X_H */