Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1948400AbdDYOqX (ORCPT ); Tue, 25 Apr 2017 10:46:23 -0400 Received: from mail-wr0-f173.google.com ([209.85.128.173]:35842 "EHLO mail-wr0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1948324AbdDYOp3 (ORCPT ); Tue, 25 Apr 2017 10:45:29 -0400 From: Gary Bisson To: rtc-linux@googlegroups.com Cc: linux-kernel@vger.kernel.org, alexandre.belloni@free-electrons.com, a.zummo@towertech.it, Gary Bisson Subject: [PATCH 3/4] rtc: m41t80: remove sqw sysfs entry Date: Tue, 25 Apr 2017 16:45:16 +0200 Message-Id: <20170425144517.15962-4-gary.bisson@boundarydevices.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170425144517.15962-1-gary.bisson@boundarydevices.com> References: <20170425144517.15962-1-gary.bisson@boundarydevices.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2737 Lines: 110 In order to use the proper clock framework to control this feature. Signed-off-by: Gary Bisson --- drivers/rtc/rtc-m41t80.c | 88 ------------------------------------------------ 1 file changed, 88 deletions(-) diff --git a/drivers/rtc/rtc-m41t80.c b/drivers/rtc/rtc-m41t80.c index 0c142653c309..2bdf494a9bd4 100644 --- a/drivers/rtc/rtc-m41t80.c +++ b/drivers/rtc/rtc-m41t80.c @@ -387,96 +387,8 @@ static ssize_t flags_show(struct device *dev, } static DEVICE_ATTR_RO(flags); -static ssize_t sqwfreq_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - struct i2c_client *client = to_i2c_client(dev); - struct m41t80_data *clientdata = i2c_get_clientdata(client); - int val, reg_sqw; - - if (!(clientdata->features & M41T80_FEATURE_SQ)) - return -EINVAL; - - reg_sqw = M41T80_REG_SQW; - if (clientdata->features & M41T80_FEATURE_SQ_ALT) - reg_sqw = M41T80_REG_WDAY; - val = i2c_smbus_read_byte_data(client, reg_sqw); - if (val < 0) - return val; - val = (val >> 4) & 0xf; - switch (val) { - case 0: - break; - case 1: - val = 32768; - break; - default: - val = 32768 >> val; - } - return sprintf(buf, "%d\n", val); -} - -static ssize_t sqwfreq_store(struct device *dev, - struct device_attribute *attr, - const char *buf, size_t count) -{ - struct i2c_client *client = to_i2c_client(dev); - struct m41t80_data *clientdata = i2c_get_clientdata(client); - int almon, sqw, reg_sqw, rc; - unsigned long val; - - rc = kstrtoul(buf, 0, &val); - if (rc < 0) - return rc; - - if (!(clientdata->features & M41T80_FEATURE_SQ)) - return -EINVAL; - - if (val) { - if (!is_power_of_2(val)) - return -EINVAL; - val = ilog2(val); - if (val == 15) - val = 1; - else if (val < 14) - val = 15 - val; - else - return -EINVAL; - } - /* disable SQW, set SQW frequency & re-enable */ - almon = i2c_smbus_read_byte_data(client, M41T80_REG_ALARM_MON); - if (almon < 0) - return almon; - reg_sqw = M41T80_REG_SQW; - if (clientdata->features & M41T80_FEATURE_SQ_ALT) - reg_sqw = M41T80_REG_WDAY; - sqw = i2c_smbus_read_byte_data(client, reg_sqw); - if (sqw < 0) - return sqw; - sqw = (sqw & 0x0f) | (val << 4); - - rc = i2c_smbus_write_byte_data(client, M41T80_REG_ALARM_MON, - almon & ~M41T80_ALMON_SQWE); - if (rc < 0) - return rc; - - if (val) { - rc = i2c_smbus_write_byte_data(client, reg_sqw, sqw); - if (rc < 0) - return rc; - - rc = i2c_smbus_write_byte_data(client, M41T80_REG_ALARM_MON, - almon | M41T80_ALMON_SQWE); - if (rc < 0) - return rc; - } - return count; -} -static DEVICE_ATTR_RW(sqwfreq); - static struct attribute *attrs[] = { &dev_attr_flags.attr, - &dev_attr_sqwfreq.attr, NULL, }; -- 2.11.0