summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-pxa/sharpsl_pm.c9
-rw-r--r--drivers/hwmon/max1111.c13
2 files changed, 22 insertions, 0 deletions
diff --git a/arch/arm/mach-pxa/sharpsl_pm.c b/arch/arm/mach-pxa/sharpsl_pm.c
index e804ae09370c..9427d8088395 100644
--- a/arch/arm/mach-pxa/sharpsl_pm.c
+++ b/arch/arm/mach-pxa/sharpsl_pm.c
@@ -132,8 +132,17 @@ int sharpsl_pm_pxa_read_max1111(int channel)
if (machine_is_tosa()) // Ugly, better move this function into another module
return 0;
+#ifdef CONFIG_SENSORS_MAX1111
+ extern int max1111_read_channel(int);
+
+ /* max1111 accepts channels from 0-3, however,
+ * it is encoded from 0-7 here in the code.
+ */
+ return max1111_read_channel(channel >> 1);
+#else
return corgi_ssp_max1111_get((channel << MAXCTRL_SEL_SH) | MAXCTRL_PD0 | MAXCTRL_PD1
| MAXCTRL_SGL | MAXCTRL_UNI | MAXCTRL_STR);
+#endif
}
void sharpsl_pm_pxa_init(void)
diff --git a/drivers/hwmon/max1111.c b/drivers/hwmon/max1111.c
index 12c05774a1c3..bfaa665ccf32 100644
--- a/drivers/hwmon/max1111.c
+++ b/drivers/hwmon/max1111.c
@@ -66,6 +66,16 @@ static int max1111_read(struct device *dev, int channel)
return (v1 << 2) | (v2 >> 6);
}
+#ifdef CONFIG_SHARPSL_PM
+static struct max1111_data *the_max1111;
+
+int max1111_read_channel(int channel)
+{
+ return max1111_read(&the_max1111->spi->dev, channel);
+}
+EXPORT_SYMBOL(max1111_read_channel);
+#endif
+
/*
* NOTE: SPI devices do not have a default 'name' attribute, which is
* likely to be used by hwmon applications to distinguish between
@@ -181,6 +191,9 @@ static int __devinit max1111_probe(struct spi_device *spi)
goto err_remove;
}
+#ifdef CONFIG_SHARPSL_PM
+ the_max1111 = data;
+#endif
return 0;
err_remove: