[PATCH 07/10] MACH/Samsung/Mini2440: add hwmon capabilities to mini2440
Juergen Beisert
jbe at pengutronix.de
Sun Jul 8 13:12:21 EDT 2012
This adds the internal 8 ADC channels to the sysfs. They can be reached via:
/sys/devices/platform/s3c24xx-adc/s3c-hwmon
Signed-off-by: Juergen Beisert <jbe at pengutronix.de>
---
arch/arm/mach-s3c24xx/Kconfig | 1 +
arch/arm/mach-s3c24xx/mach-mini2440.c | 50 +++++++++++++++++++++++++++++++++
2 files changed, 51 insertions(+)
diff --git a/arch/arm/mach-s3c24xx/Kconfig b/arch/arm/mach-s3c24xx/Kconfig
index 0e65445..4f42b7e 100644
--- a/arch/arm/mach-s3c24xx/Kconfig
+++ b/arch/arm/mach-s3c24xx/Kconfig
@@ -406,6 +406,7 @@ config MACH_MINI2440
select S3C_DEV_NAND
select S3C_DEV_USB_HOST
select TOUCHSCREEN_S3C2410
+ select S3C_DEV_HWMON
help
Say Y here to select support for the MINI2440. Is a 10cm x 10cm board
available via various sources. It can come with a 3.5" or 7" touch LCD.
diff --git a/arch/arm/mach-s3c24xx/mach-mini2440.c b/arch/arm/mach-s3c24xx/mach-mini2440.c
index fd5fe9d..36149ed 100644
--- a/arch/arm/mach-s3c24xx/mach-mini2440.c
+++ b/arch/arm/mach-s3c24xx/mach-mini2440.c
@@ -57,6 +57,7 @@
#include <plat/clock.h>
#include <plat/devs.h>
#include <plat/cpu.h>
+#include <plat/hwmon.h>
#include <sound/s3c24xx_uda134x.h>
@@ -548,6 +549,53 @@ static struct s3c2410_ts_mach_info mini2440_ts_cfg __initdata = {
.oversampling_shift = 0,
};
+static struct s3c_hwmon_chcfg mini2440_adc_chcfg[8] = {
+ {
+ .name = "AIN0", /* connected to CON4/5 and W1 */
+ .mult = 3300,
+ .div = 1023,
+ }, {
+ .name = "AIN1", /* connected to CON4/6 */
+ .mult = 3300,
+ .div = 1023,
+ }, {
+ .name = "AIN2", /* connected to CON4/7 */
+ .mult = 3300,
+ .div = 1023,
+ }, {
+ .name = "AIN3", /* connected to CON4/8 */
+ .mult = 3300,
+ .div = 1023,
+ }, {
+ .name = "TSYM",
+ .mult = 3300,
+ .div = 1023,
+ }, {
+ .name = "TSYP",
+ .mult = 3300,
+ .div = 1023,
+ }, {
+ .name = "TSXM",
+ .mult = 3300,
+ .div = 1023,
+ }, {
+ .name = "TSXP",
+ .mult = 3300,
+ .div = 1023,
+ },
+};
+
+static struct s3c_hwmon_pdata mini2440_adc __initdata = {
+ .in[0] = &mini2440_adc_chcfg[0],
+ .in[1] = &mini2440_adc_chcfg[1],
+ .in[2] = &mini2440_adc_chcfg[2],
+ .in[3] = &mini2440_adc_chcfg[3],
+ .in[4] = &mini2440_adc_chcfg[4],
+ .in[5] = &mini2440_adc_chcfg[5],
+ .in[6] = &mini2440_adc_chcfg[6],
+ .in[7] = &mini2440_adc_chcfg[7],
+};
+
static struct platform_device *mini2440_devices[] __initdata = {
&s3c_device_ohci,
&s3c_device_wdt,
@@ -564,6 +612,7 @@ static struct platform_device *mini2440_devices[] __initdata = {
&mini2440_audio,
&samsung_asoc_dma,
&s3c_device_adc,
+ &s3c_device_hwmon,
};
static void __init mini2440_map_io(void)
@@ -721,6 +770,7 @@ static void __init mini2440_init(void)
s3c_nand_set_platdata(&mini2440_nand_info);
s3c_i2c0_set_platdata(NULL);
s3c24xx_ts_set_platdata(&mini2440_ts_cfg);
+ s3c_hwmon_set_platdata(&mini2440_adc);
i2c_register_board_info(0, mini2440_i2c_devs,
ARRAY_SIZE(mini2440_i2c_devs));
--
1.7.10
More information about the linux-arm-kernel
mailing list