r4301 - branches/src/target/kernel/2.6.24.x/patches
werner at sita.openmoko.org
werner at sita.openmoko.org
Wed Apr 2 23:14:54 CEST 2008
Author: werner
Date: 2008-04-02 23:14:52 +0200 (Wed, 02 Apr 2008)
New Revision: 4301
Modified:
branches/src/target/kernel/2.6.24.x/patches/gta02-acc.patch
Log:
add-lis302dl-gta02-a6-int1-only.patch
A6 uses int1 only and no pullup, adapt according to PCB revision
Signed-off-by: Andy Green <andy at openmoko.com>
[ Changed to use system_rev, like everyone else. ]
---
arch/arm/mach-s3c2440/mach-gta02.c | 17 +++++++++++++++--
drivers/input/misc/lis302dl.c | 11 ++++++++---
include/linux/lis302dl.h | 1 +
3 files changed, 24 insertions(+), 5 deletions(-)
Modified: branches/src/target/kernel/2.6.24.x/patches/gta02-acc.patch
===================================================================
--- branches/src/target/kernel/2.6.24.x/patches/gta02-acc.patch 2008-04-02 21:06:15 UTC (rev 4300)
+++ branches/src/target/kernel/2.6.24.x/patches/gta02-acc.patch 2008-04-02 21:14:52 UTC (rev 4301)
@@ -34,7 +34,7 @@
static struct glamo_spigpio_info glamo_spigpio_cfg = {
.pin_clk = GLAMO_GPIO10_OUTPUT,
-@@ -507,16 +510,97 @@
+@@ -507,16 +510,99 @@
/* SPI: Accelerometers attached to SPI of s3c244x */
@@ -117,7 +117,7 @@
-static const struct lis302dl_platform_data lis302_pdata[] = {
+
-+const struct lis302dl_platform_data lis302_pdata[] = {
++struct lis302dl_platform_data lis302_pdata[] = {
{
- .name = "lis302-1 (top)"
+ .name = "lis302-1 (top)",
@@ -125,6 +125,7 @@
+ .pin_clk = S3C2410_GPG7,
+ .pin_mosi = S3C2410_GPG6,
+ .pin_miso = S3C2410_GPG5,
++ .open_drain = 1, /* altered at runtime by PCB rev */
+ .lis302dl_bitbang_read = gat02_lis302dl_bitbang_read,
}, {
- .name = "lis302-2 (bottom)"
@@ -133,11 +134,12 @@
+ .pin_clk = S3C2410_GPG7,
+ .pin_mosi = S3C2410_GPG6,
+ .pin_miso = S3C2410_GPG5,
++ .open_drain = 1, /* altered at runtime by PCB rev */
+ .lis302dl_bitbang_read = gat02_lis302dl_bitbang_read,
},
};
-@@ -525,26 +609,75 @@
+@@ -525,26 +611,75 @@
.modalias = "lis302dl",
.platform_data = &lis302_pdata[0],
.irq = GTA02_IRQ_GSENSOR_1,
@@ -219,10 +221,20 @@
};
static struct resource gta02_led_resources[] = {
-@@ -786,10 +919,11 @@
+@@ -786,10 +921,21 @@
{
int rc;
++ switch (system_rev) {
++ case GTA02v6_SYSTEM_REV:
++ /* we need push-pull interrupt from motion sensors */
++ lis302_pdata[0].open_drain = 0;
++ lis302_pdata[1].open_drain = 0;
++ break;
++ default:
++ break;
++ }
++
+ spin_lock_init(&motion_irq_lock);
+
s3c_device_usb.dev.platform_data = >a02_usb_info;
@@ -232,7 +244,7 @@
/* Only GTA02v1 has a SD_DETECT GPIO. Since the slot is not
* hot-pluggable, this is not required anyway */
-@@ -801,6 +935,12 @@
+@@ -801,6 +947,12 @@
break;
}
@@ -245,7 +257,7 @@
INIT_WORK(>a02_udc_vbus_drawer.work, __gta02_udc_vbus_draw);
s3c24xx_udc_set_platdata(>a02_udc_cfg);
set_s3c2410ts_info(>a02_ts_cfg);
-@@ -829,6 +969,7 @@
+@@ -829,6 +981,7 @@
break;
}
@@ -580,7 +592,7 @@
}
static int __devinit lis302dl_probe(struct spi_device *spi)
-@@ -433,84 +281,133 @@
+@@ -433,84 +281,138 @@
int rc;
struct lis302dl_info *lis;
u_int8_t wai;
@@ -682,14 +694,19 @@
+ reg_write(lis, LIS302DL_REG_FF_WU_THS_1, 0x14);
+ reg_write(lis, LIS302DL_REG_FF_WU_DURATION_1, 0x00);
+ reg_write(lis, LIS302DL_REG_FF_WU_CFG_1, 0x95);
-
++
+ reg_write(lis, LIS302DL_REG_CTRL1, LIS302DL_CTRL1_Xen |
+ LIS302DL_CTRL1_Yen |
+ LIS302DL_CTRL1_Zen);
+
-+ /* switch interrupt to open collector, active-low */
-+ reg_write(lis, LIS302DL_REG_CTRL3, LIS302DL_CTRL3_PP_OD |
-+ LIS302DL_CTRL3_IHL);
++ if (pdata->open_drain)
++ /* switch interrupt to open collector, active-low */
++ reg_write(lis, LIS302DL_REG_CTRL3, LIS302DL_CTRL3_PP_OD |
++ LIS302DL_CTRL3_IHL);
++ else
++ /* push-pull, active-low */
++ reg_write(lis, LIS302DL_REG_CTRL3, LIS302DL_CTRL3_IHL);
++
+ lis302dl_int_mode(spi, 1, LIS302DL_INTMODE_DATA_READY);
+ lis302dl_int_mode(spi, 2, LIS302DL_INTMODE_DATA_READY);
+
@@ -697,7 +714,7 @@
+ reg_read(lis, LIS302DL_REG_FF_WU_SRC_1);
+ reg_read(lis, LIS302DL_REG_FF_WU_SRC_2);
+ reg_read(lis, LIS302DL_REG_CLICK_SRC);
-+
+
+ dev_info(&spi->dev, "Found %s\n", pdata->name);
+
+ lis->pdata = pdata;
@@ -741,7 +758,7 @@
dev_set_drvdata(&spi->dev, NULL);
kfree(lis);
-@@ -521,6 +418,10 @@
+@@ -521,6 +423,10 @@
static int lis302dl_suspend(struct spi_device *spi, pm_message_t state)
{
struct lis302dl_info *lis = dev_get_drvdata(&spi->dev);
@@ -752,7 +769,7 @@
/* save registers */
lis->regs[LIS302DL_REG_CTRL1] = reg_read(lis, LIS302DL_REG_CTRL1);
-@@ -561,12 +462,17 @@
+@@ -561,12 +467,17 @@
reg_write(lis, LIS302DL_REG_CTRL1, tmp);
}
@@ -770,7 +787,7 @@
/* restore registers after resume */
reg_write(lis, LIS302DL_REG_CTRL1, lis->regs[LIS302DL_REG_CTRL1]);
-@@ -597,6 +503,9 @@
+@@ -597,6 +508,9 @@
reg_write(lis, LIS302DL_REG_CLICK_WINDOW,
lis->regs[LIS302DL_REG_CLICK_WINDOW]);
@@ -847,7 +864,7 @@
===================================================================
--- linux-2.6.24.orig/include/linux/lis302dl.h
+++ linux-2.6.24/include/linux/lis302dl.h
-@@ -2,10 +2,111 @@
+@@ -2,10 +2,112 @@
#define _LINUX_LIS302DL_H
#include <linux/types.h>
@@ -863,6 +880,7 @@
+ unsigned long pin_clk;
+ unsigned long pin_mosi;
+ unsigned long pin_miso;
++ int open_drain;
+ void (*lis302dl_bitbang_read)(struct lis302dl_info *);
+};
+
More information about the commitlog
mailing list