summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorEvan Wilson <evan@oliodevices.com>2015-12-11 16:55:48 -0800
committerEvan Wilson <evan@oliodevices.com>2015-12-11 16:55:48 -0800
commit606779d73f51a0ebe81f691bd7c173fc1740be24 (patch)
tree42e68bd40f3a375dfbb5ba940c6de9b4591f9016 /drivers
parentb6602fe7788593d7c5e02ae7bb5616ebc6f63f2c (diff)
parentb258e74fe4251438954e0fc08575f4b15ab35605 (diff)
downloadolio-linux-3.10-606779d73f51a0ebe81f691bd7c173fc1740be24.tar.xz
olio-linux-3.10-606779d73f51a0ebe81f691bd7c173fc1740be24.zip
Merge remote-tracking branch 'olio/android-3.10-bringup' into 1.1.45
Conflicts: drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_core.c drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_trigger.c drivers/power/bq27x00_battery.c Change-Id: Iafb1129617680cd2705bc05eb49faaafff325692
Diffstat (limited to 'drivers')
-rw-r--r--drivers/cpufreq/omap-cpufreq.c7
-rw-r--r--drivers/leds/leds-lm3530.c6
-rw-r--r--drivers/mfd/tps65910.c21
-rw-r--r--drivers/power/bq27x00_battery.c1
-rw-r--r--drivers/video/omap2/omapfb/omapfb-main.c31
5 files changed, 59 insertions, 7 deletions
diff --git a/drivers/cpufreq/omap-cpufreq.c b/drivers/cpufreq/omap-cpufreq.c
index 0279d18a57f..3bdb1d9c786 100644
--- a/drivers/cpufreq/omap-cpufreq.c
+++ b/drivers/cpufreq/omap-cpufreq.c
@@ -246,16 +246,19 @@ static struct cpufreq_driver omap_driver = {
static int omap_cpufreq_probe(struct platform_device *pdev)
{
+ printk ("%s: OLIO: Entered\n", __FUNCTION__);
+
mpu_dev = get_cpu_device(0);
if (!mpu_dev) {
pr_warning("%s: unable to get the mpu device\n", __func__);
return -EINVAL;
}
- mpu_reg = regulator_get(mpu_dev, "vcc");
+ mpu_reg = regulator_get(mpu_dev, "vdd_mpu_iva"); /* OLIO: Orig "vcc" */
if (IS_ERR(mpu_reg)) {
- pr_warning("%s: unable to get MPU regulator\n", __func__);
+ pr_warning("%s: unable to get MPU regulator, will try again in a bit\n", __func__);
mpu_reg = NULL;
+ return -EPROBE_DEFER;
} else {
/*
* Ensure physical regulator is present.
diff --git a/drivers/leds/leds-lm3530.c b/drivers/leds/leds-lm3530.c
index fda0efb4f88..89499d369ea 100644
--- a/drivers/leds/leds-lm3530.c
+++ b/drivers/leds/leds-lm3530.c
@@ -449,7 +449,11 @@ static int lm3530_probe(struct i2c_client *client,
i2c_set_clientdata(client, drvdata);
- drvdata->regulator = devm_regulator_get(&client->dev, "vin");
+ /* OLIO: The regulator name should be passed through the platform_data
+ * structure. Fixme.
+ */
+
+ drvdata->regulator = devm_regulator_get(&client->dev, "vdds_dsi");
if (IS_ERR(drvdata->regulator)) {
dev_err(&client->dev, "regulator get failed\n");
err = PTR_ERR(drvdata->regulator);
diff --git a/drivers/mfd/tps65910.c b/drivers/mfd/tps65910.c
index 1e7ef2a2e35..0e0412b3bfb 100644
--- a/drivers/mfd/tps65910.c
+++ b/drivers/mfd/tps65910.c
@@ -363,8 +363,13 @@ static int tps65910_sleepinit(struct tps65910 *tps65910,
dev = tps65910->dev;
- if (!pmic_pdata->en_dev_slp)
- return 0;
+ /* set polarity of SLLEEPSIG requst ot enter OFF mode */
+ ret = tps65910_reg_set_bits(tps65910, TPS65910_DEVCTRL2,
+ DEVCTRL2_SLEEPSIG_POL_MASK);
+ if (ret < 0) {
+ dev_err(dev, "set sleepsig_pol failed: %d\n", ret);
+ goto err_sleep_init;
+ }
/*
* set polarity of SLLEEPSIG requst to enter OFF mode
@@ -385,6 +390,18 @@ static int tps65910_sleepinit(struct tps65910 *tps65910,
goto err_sleep_init;
}
+ ret = tps65910_reg_set_bits(tps65910, TPS65910_SLEEP_KEEP_RES_ON,
+ SLEEP_KEEP_RES_ON_CLKOUT32K_KEEPON_MASK);
+ if (ret < 0) {
+ dev_err(dev, "set sleep_keep_res_on failed: %d\n", ret);
+ goto err_sleep_init;
+ }
+
+/* Return if there is no sleep keepon data. */
+/* This can't really happen... */
+/* if (pmic_pdata.slp_keepon) */
+/* return 0; */
+
if (pmic_pdata->slp_keepon.therm_keepon) {
ret = tps65910_reg_set_bits(tps65910,
TPS65910_SLEEP_KEEP_RES_ON,
diff --git a/drivers/power/bq27x00_battery.c b/drivers/power/bq27x00_battery.c
index 646ed08b95c..c26859a2f84 100644
--- a/drivers/power/bq27x00_battery.c
+++ b/drivers/power/bq27x00_battery.c
@@ -1430,6 +1430,7 @@ static irqreturn_t bq27x00_chg_isr(int irq, void *dev) {
wake_lock_timeout(&chg_wake_lock, msecs_to_jiffies(500));
/* dev_dbg(ps->dev, "%s: Updating battery status\n", __func__); Don't
do i/o in interrupt! */
+
bq27x00_external_power_changed(ps);
return IRQ_HANDLED;
diff --git a/drivers/video/omap2/omapfb/omapfb-main.c b/drivers/video/omap2/omapfb/omapfb-main.c
index 13733c8bb1b..98c645429bd 100644
--- a/drivers/video/omap2/omapfb/omapfb-main.c
+++ b/drivers/video/omap2/omapfb/omapfb-main.c
@@ -2640,8 +2640,8 @@ static int omapfb_probe(struct platform_device *pdev)
r = omapfb_init_display(fbdev, def_display);
if (r) {
dev_err(fbdev->dev,
- "failed to initialize default "
- "display\n");
+ "failed to initialize default "
+ "display\n");
goto cleanup;
}
}
@@ -2687,9 +2687,36 @@ static int __exit omapfb_remove(struct platform_device *pdev)
return 0;
}
+/* Need to add suspend / wake pair of functions here.
+ * All we really need is for the suspend function to clear the screen
+ * to black.
+ */
+
+static int omapfb_suspend (struct platform_device * pdev, pm_message_t state)
+{
+ struct omapfb2_device *fbdev = platform_get_drvdata(pdev);
+ struct fb_info * fbi;
+
+ fbi = fbdev->fbs[0];
+
+ if (fbi != NULL)
+ omapfb_clear_fb(fbi);
+
+ return 0;
+}
+
+static int omapfb_resume (struct platform_device * pdev)
+{
+ /* No need to do anything, I think */
+
+ return 0;
+}
+
static struct platform_driver omapfb_driver = {
.probe = omapfb_probe,
.remove = __exit_p(omapfb_remove),
+ .suspend = omapfb_suspend,
+ .resume = omapfb_resume,
.driver = {
.name = "omapfb",
.owner = THIS_MODULE,