aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuodong Xu <guodong.xu@linaro.org>2013-04-25 12:32:43 +0800
committerGuodong Xu <guodong.xu@linaro.org>2013-04-25 12:32:43 +0800
commit2a2b20bc26851c66ec6a856d0dc1b763f4bad9f3 (patch)
treec02a470838c62d4efce4550da967adee9738518f
parent2532daaaca4dcb8bf22cbcb9e6501de47d3da975 (diff)
parent6a55e756a0ca30231b7a692cf6f3fdbc22436cd7 (diff)
Merge remote-tracking branch 'origin/touch_4.24' into integration-linux-mainline
-rw-r--r--arch/arm/boot/dts/hi3620.dtsi4
-rw-r--r--drivers/i2c/busses/i2c-designware-hs.c14
-rw-r--r--drivers/input/touchscreen/atmel_mXT224E.c12
-rw-r--r--drivers/mmc/host/dw_mmc-hisilicon.c40
4 files changed, 59 insertions, 11 deletions
diff --git a/arch/arm/boot/dts/hi3620.dtsi b/arch/arm/boot/dts/hi3620.dtsi
index c2e7ea59ef48..2974dbaef18d 100644
--- a/arch/arm/boot/dts/hi3620.dtsi
+++ b/arch/arm/boot/dts/hi3620.dtsi
@@ -1483,7 +1483,7 @@
&dma0 19>; /* write channel */
dma-names = "rx", "tx";
status = "disabled";
- delay-reg = <0 1>;
+ delay-reg = <0 0>;
};
i2c1: i2c@fcb09000 {
@@ -1496,7 +1496,7 @@
dmas = <&dma0 20 /* read channel */
&dma0 21>; /* write channel */
dma-names = "rx", "tx";
- delay-reg = <0 2>;
+ delay-reg = <0 1>;
status = "disabled";
};
diff --git a/drivers/i2c/busses/i2c-designware-hs.c b/drivers/i2c/busses/i2c-designware-hs.c
index 9b8a3b6faa34..3d58cbc49fdf 100644
--- a/drivers/i2c/busses/i2c-designware-hs.c
+++ b/drivers/i2c/busses/i2c-designware-hs.c
@@ -84,9 +84,11 @@ static int hs_dw_i2c_probe(struct platform_device *pdev)
priv->delay_off = data[0];
priv->delay_bit = data[1];
+#ifdef I2C_DEALY_300NS
if (pctrl)
- writel(BIT((priv->delay_bit) << 16) | BIT(priv->delay_bit),
- pctrl + priv->delay_off);
+ writel_relaxed((BIT(priv->delay_bit) << 16) |
+ BIT(priv->delay_bit), pctrl + priv->delay_off);
+#endif
d->irq = platform_get_irq(pdev, 0);
if (d->irq < 0) {
@@ -164,11 +166,13 @@ err:
static int hs_dw_i2c_remove(struct platform_device *pdev)
{
struct dw_i2c_dev *d = platform_get_drvdata(pdev);
- struct hs_i2c_priv_data *priv = d->priv;
+#ifdef I2C_DEALY_300NS
+ struct hs_i2c_priv_data *priv = d->priv;
if (pctrl)
- writel(BIT((priv->delay_bit) << 16), pctrl + priv->delay_off);
-
+ writel_relaxed((BIT(priv->delay_bit) << 16),
+ pctrl + priv->delay_off);
+#endif
platform_set_drvdata(pdev, NULL);
i2c_del_adapter(&d->adapter);
put_device(&pdev->dev);
diff --git a/drivers/input/touchscreen/atmel_mXT224E.c b/drivers/input/touchscreen/atmel_mXT224E.c
index 0f629c8c64e7..4642fd49b2d3 100644
--- a/drivers/input/touchscreen/atmel_mXT224E.c
+++ b/drivers/input/touchscreen/atmel_mXT224E.c
@@ -30,6 +30,12 @@
#include <linux/of_gpio.h>
#include <linux/pinctrl/consumer.h>
+#ifdef TS_ATMEL_DEBUG
+#define TS_DEBUG_ATMEL(fmt, args...) pr_info(fmt, ##args)
+#else
+#define TS_DEBUG_ATMEL(fmt, args...)
+#endif
+
#define ATMEL_MXT224E_NAME "atmel_mxt224e"
#define INFO_BLK_FID 0
@@ -695,7 +701,6 @@ static void msg_process_multitouch(struct atmel_ts_data *ts, uint8_t *data, uint
}
}
if (!(ts->grip_suppression & BIT(idx))) {
- if (!ts->first_pressed)
ts->finger_count++;
ts->finger_pressed |= BIT(idx);
if (ts->id->version >= 0x10 && ts->pre_data[0] < 2) {
@@ -731,6 +736,8 @@ static void compatible_input_report(struct input_dev *idev,
input_report_key(idev, BTN_TOUCH, 1);
} else {
+ TS_DEBUG_ATMEL("k3ts, %s: Touch report_key x = %d, y = %d, z = %d, w = %d\n ", __func__,
+ fdata->x, fdata->y, fdata->z, fdata->w);
input_report_abs(idev, ABS_MT_TOUCH_MAJOR, fdata->z);
input_report_abs(idev, ABS_MT_WIDTH_MAJOR, fdata->w);
input_report_abs(idev, ABS_MT_POSITION_X, fdata->x);
@@ -1364,7 +1371,7 @@ static int atmel_ts_remove(struct i2c_client *client)
static int atmel_ts_suspend(struct i2c_client *client, pm_message_t mesg)
{
struct atmel_ts_data *ts = i2c_get_clientdata(client);
- struct atmel_i2c_platform_data *pdata = client->dev.platform_data;
+ struct atmel_i2c_platform_data *pdata = ts->pdata;
uint8_t data[7];
int ret = 0;
@@ -1443,7 +1450,6 @@ static int atmel_ts_resume(struct i2c_client *client)
pr_err("k3ts, %s: failed to write config T6\n", __func__);
mutex_unlock(&ts->lock);
- enable_irq(client->irq);
pr_info("[%s]: -\n", __func__);
diff --git a/drivers/mmc/host/dw_mmc-hisilicon.c b/drivers/mmc/host/dw_mmc-hisilicon.c
index 85c4271e2bd3..c09746689848 100644
--- a/drivers/mmc/host/dw_mmc-hisilicon.c
+++ b/drivers/mmc/host/dw_mmc-hisilicon.c
@@ -361,13 +361,51 @@ int dw_mci_hs_probe(struct platform_device *pdev)
return dw_mci_pltfm_register(pdev, drv_data);
}
+#ifdef CONFIG_PM_SLEEP
+static int dw_mci_hs_suspend(struct device *dev)
+{
+ int ret;
+ struct dw_mci *host = dev_get_drvdata(dev);
+
+ ret = dw_mci_suspend(host);
+ if (ret)
+ return ret;
+
+ return 0;
+}
+
+static int dw_mci_hs_resume(struct device *dev)
+{
+ int ret;
+ struct dw_mci *host = dev_get_drvdata(dev);
+ struct dw_mci_hs_priv_data *priv = host->priv;
+
+ if (priv->type == DW_MCI_TYPE_HI4511) {
+ int id = priv->id;
+
+ dw_mci_hs_tun(host, id, MMC_TIMING_LEGACY);
+ }
+
+ ret = dw_mci_resume(host);
+ if (ret)
+ return ret;
+
+ return 0;
+}
+#else
+#define dw_mci_hs_suspend NULL
+#define dw_mci_hs_resume NULL
+#endif /* CONFIG_PM_SLEEP */
+
+SIMPLE_DEV_PM_OPS(dw_mci_hs_pmops, dw_mci_hs_suspend, dw_mci_hs_resume);
+
static struct platform_driver dw_mci_hs_pltfm_driver = {
.probe = dw_mci_hs_probe,
.remove = dw_mci_pltfm_remove,
.driver = {
.name = DRIVER_NAME,
.of_match_table = of_match_ptr(dw_mci_hs_match),
- .pm = &dw_mci_pltfm_pmops,
+ .pm = &dw_mci_hs_pmops,
},
};