aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Osterland <Denis.Osterland@diehl.com>2018-07-24 07:31:21 -0400
committerAlexandre Belloni <alexandre.belloni@bootlin.com>2018-08-14 17:22:27 -0400
commitcfa30622c854747aba9c920c7dd30e5a123a414f (patch)
treee35910bd34a1b2bef86cf12bff773eb3aafb3190
parent9ece7cd833a3e5e0740e2b681abe6ce5e6af6885 (diff)
rtc: isl1208: set ev-evienb bit from device tree
Add support to disable event in pull-up. Signed-off-by: Denis Osterland <Denis.Osterland@diehl.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
-rw-r--r--drivers/rtc/rtc-isl1208.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/drivers/rtc/rtc-isl1208.c b/drivers/rtc/rtc-isl1208.c
index f4eb3e11de28..ea18a8f4bce0 100644
--- a/drivers/rtc/rtc-isl1208.c
+++ b/drivers/rtc/rtc-isl1208.c
@@ -44,6 +44,7 @@
44#define ISL1208_REG_INT_IM (1<<7) /* interrupt/alarm mode */ 44#define ISL1208_REG_INT_IM (1<<7) /* interrupt/alarm mode */
45#define ISL1219_REG_EV 0x09 45#define ISL1219_REG_EV 0x09
46#define ISL1219_REG_EV_EVEN (1<<4) /* event detection enable */ 46#define ISL1219_REG_EV_EVEN (1<<4) /* event detection enable */
47#define ISL1219_REG_EV_EVIENB (1<<7) /* event in pull-up disable */
47#define ISL1208_REG_ATR 0x0a 48#define ISL1208_REG_ATR 0x0a
48#define ISL1208_REG_DTR 0x0b 49#define ISL1208_REG_DTR 0x0b
49 50
@@ -777,8 +778,22 @@ isl1208_probe(struct i2c_client *client, const struct i2c_device_id *id)
777 "please set clock.\n"); 778 "please set clock.\n");
778 779
779 if (id->driver_data == TYPE_ISL1219) { 780 if (id->driver_data == TYPE_ISL1219) {
780 rc = i2c_smbus_write_byte_data(client, ISL1219_REG_EV, 781 struct device_node *np = client->dev.of_node;
781 ISL1219_REG_EV_EVEN); 782 u32 evienb;
783
784 rc = i2c_smbus_read_byte_data(client, ISL1219_REG_EV);
785 if (rc < 0) {
786 dev_err(&client->dev, "failed to read EV reg\n");
787 return rc;
788 }
789 rc |= ISL1219_REG_EV_EVEN;
790 if (!of_property_read_u32(np, "isil,ev-evienb", &evienb)) {
791 if (evienb)
792 rc |= ISL1219_REG_EV_EVIENB;
793 else
794 rc &= ~ISL1219_REG_EV_EVIENB;
795 }
796 rc = i2c_smbus_write_byte_data(client, ISL1219_REG_EV, rc);
782 if (rc < 0) { 797 if (rc < 0) {
783 dev_err(&client->dev, "could not enable tamper detection\n"); 798 dev_err(&client->dev, "could not enable tamper detection\n");
784 return rc; 799 return rc;
@@ -786,7 +801,7 @@ isl1208_probe(struct i2c_client *client, const struct i2c_device_id *id)
786 rc = rtc_add_group(rtc, &isl1219_rtc_sysfs_files); 801 rc = rtc_add_group(rtc, &isl1219_rtc_sysfs_files);
787 if (rc) 802 if (rc)
788 return rc; 803 return rc;
789 evdet_irq = of_irq_get_byname(client->dev.of_node, "evdet"); 804 evdet_irq = of_irq_get_byname(np, "evdet");
790 } 805 }
791 806
792 rc = sysfs_create_group(&client->dev.kobj, &isl1208_rtc_sysfs_files); 807 rc = sysfs_create_group(&client->dev.kobj, &isl1208_rtc_sysfs_files);